Answers:
apt-get source
用于下载内核的Ubuntu版本apt-get source linux-image-$(uname -r)
提供一个包含以下内容的文件夹:
linux-3.2.0 linux_3.2.0-26.41.dsc linux_3.2.0-26.41.diff.gz linux_3.2.0.orig.tar.gz
粗体的差异包括所有Ubuntu / Debian定制。
.config
使用自己的库构建内核,请使用“老式的” Debian make-kpkg
方法这是Wiki中描述的另一种老式方式:
sudo apt-get install kernel-package
如果是第一次编译内核:
sudo apt-get build-dep linux-image-$(uname -r)
然后cd
进入源目录(此处为linux-3.2.0
),然后运行make oldconfig
以.config
运行内核的配置来创建文件,或者将第三部分复制.config
到该目录中。
根据需要文本还是图形配置,安装:
(文本)
sudo apt-get install libncurses5 libncurses5-dev
(图示)
sudo apt-get install qt3-dev-tools libqt3-mt-dev
然后运行:
(文本)
make menuconfig
(图示)
make xconfig
完成后,只需运行:
fakeroot make-kpkg -j N --initrd --append-to-version=my-very-own-kernel kernel-image kernel-headers
N
并行运行多少个作业(通常是您拥有的CPU数量)在哪里,并且my-very-own-kernel
是用于标识此构建的自定义字符串。
完成后,内核映像和头文件将作为父目录中的debs准备好;您可以使用安装它们sudo dpkg -i
,这也将添加GRUB条目等。
linux-3.2.0
目录并运行patch -p1 <../patch.diff
?
apt-get source ...
已经为您做到了!
fakeroot debian/rules editconfigs
,fakeroot debian/rules clean
,fakeroot debian/rules binary
是正确的,没有问题的方式。
步骤如下。该过程基于nixCraft的 “ 如何:编译Linux内核2.6”-但已相当现代化。
您可以从kernel.org获取上游内核源代码。这里将使用版本3.16.1(截至撰写本文时最新的稳定内核)。因此,如果您使用的是其他版本,则可能需要修改这些命令。
当前在中提供了内核源代码。焦油。xz存档,因此请按所需的任何版本单击“ tar.xz”链接:
之后cd
荷兰国际集团到您下载档案的目录,你可以提取它tar
:
tar xf linux-3.16.1.tar.xz
要获得Ubuntu的工具链(gcc
,make
等),请安装build-essential元软件包:
sudo apt-get update
sudo apt-get install build-essential
make
target xconfig
和提供了两种合理的用户友好方式来配置进入内核的内容menuconfig
。
xconfig
运行menuconfig
基于文本的图形配置实用程序(即,其界面完全显示在终端中)。每个都需要一些build-essential 没有提供的附加软件。
要以图形方式进行配置,请安装 libqt4-dev和 pkg-config并运行make xconfig
:
sudo apt-get install libqt4-dev pkg-config
make xconfig
要在终端中进行配置,请安装libncurses5-dev
(感谢 Hannu提供此信息)并运行make menuconfig
:
sudo apt-get install libncurses5-dev
make menuconfig
首先运行它来编译内核并创建vmlinuz
:
make
vmlinuz
是“内核”。具体来说,它将是GRUB或您使用的任何其他引导加载程序解压缩并加载到内存中的内核映像。
然后构建可加载的内核模块:
make modules
假设这些make
命令成功完成,是时候安装新内核了。首先安装模块:
sudo make modules_install
然后安装内核本身:
sudo make install
将vmlinuz-3.16.1
(的副本vmlinuz
),config-3.16.1
(存储内核配置参数的文本文件)和System.map-3.16.1
(内核符号查找表)放入/boot
。有关更多详细信息,请参阅Hadron和撰写的这篇comp.os.linux.misc帖子man installkernel
。
本部分部分基于Kernel / Compile中的信息。
有了现在需要的内核,它需要:
引导加载程序配置中的一个条目,因此您可以选择它并从中引导。
在初始RAM文件系统,环境从内核加载驱动程序和坐骑的/
文件系统。
(如果您正在安装旧内核或已将内核配置为使用devfs而不是较新的udev,则可能需要或希望设置一个初始ramdisk。如果您知道需要,请参阅参考资料man initrd
。)
生成您的initramfs有mkinitramfs
:
cd /boot
sudo mkinitramfs -ko initrd.img-3.16.1 3.16.1
更新GRUB2引导加载程序的配置时(自9.10 开始,这是Ubuntu中的默认设置),应自动检测新内核并添加一个选项以从中引导。
sudo update-grub
现在,您可以重新启动以测试新内核。您可能需要在启动过程中按住Shift或按下Esc以查看GRUB引导菜单,您可以在其中选择已安装的不同内核。
要使您的内核(或另一个内核)成为默认内核,请参阅如何更改GRUB引导顺序?
make menuconfig
要求apt get install libncurses5-dev
可以在这里找到构建Ubuntu内核(而不是vanilla)的快速说明:https : //wiki.ubuntu.com/Kernel/BuildYourOwnKernel。
我不会复制整个Wiki,但是将列出编译当前已安装的Ubuntu内核版本的最小步骤。(要获取最新版本,请克隆即将发布的Ubuntu版本的内核git存储库。)在Ubuntu 16.04上进行了测试。
# Get source code
apt-get source linux-image-$(uname -r)
# Install dependencies
sudo apt-get build-dep linux-image-$(uname -r)
# Compile
cd linux-4.4.0
fakeroot debian/rules clean
fakeroot debian/rules binary
# Install (obviously the versions will be different)
cd ..
sudo dpkg -i linux-image-4.4.0-38-generic_4.4.0-38.57_amd64.deb linux-headers-4.4.0-38_4.4.0-38.57_all.deb linux-headers-4.4.0-38-generic_4.4.0-38.57_amd64.deb