答案1
1.使用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.原始版本
加粗的差异包括所有 Ubuntu/Debian 定制。
2. 要使用自己的内核构建库存内核.config
,请使用“老式”的 Debianmake-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 条目等。
答案2
步骤如下。此程序基于nixCraft的如何编译 Linux 内核 2.6——但却实现了相当大的现代化。
下载并提取您想要构建的内核的源代码。
你可以得到上游内核源代码位于内核网站。 版本3.16.1(本文撰写时的最新稳定内核)将在此使用。因此,如果您使用的是其他版本,则可能需要修改这些命令。
内核源代码目前在 中提供。柏油。西泽档案,因此请单击您想要的版本的“tar.xz”链接:
tar xf linux-3.16.1.tar.xz
安装必要的构建工具并执行内核配置。
要获取 Ubuntu 的工具链(gcc
、make
等等)安装构建必需品元包:
sudo apt-get update
sudo apt-get install build-essential
make
目标xconfig
和提供了两种相当用户友好的方式来配置内核的内容menuconfig
。
xconfig
运行图形配置实用程序,而menuconfig
基于文本(即其界面完全显示在终端内)。每个都需要一些额外的软件不是由...提供构建必需品。
图形化配置, 安装libqt4-dev和pkg 配置并运行make xconfig
:
sudo apt-get install libqt4-dev pkg-config
make xconfig
在终端中配置,安装libncurses5-dev
(感谢韩努获取此信息)并运行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
。
最终设置,因此内核可以启动并引导系统:
本节部分基于内核/编译。
现在内核已经达到了它需要的位置,它需要:
中的条目引导加载程序的配置,因此您可以选择并从中启动。
一个初始 RAM 文件系统,内核加载驱动程序并挂载
/
文件系统。(如果你正在安装旧内核或者已经配置了内核使用 devfs 代替较新的 udev,你可能需要或希望建立一个初始虚拟磁盘如果你知道你需要的是这个,请参阅
man initrd
。
生成 initramfs和mkinitramfs
:
cd /boot
sudo mkinitramfs -ko initrd.img-3.16.1 3.16.1
当你更新 GRUB2 引导加载程序的配置时——该配置已Ubuntu 中的默认设置自 9.10 起——应该自动检测新内核并添加从其启动的选项。
sudo update-grub
尝试一下你的内核。
现在您可以重新启动以测试新内核。您可能需要在启动过程中按住Shift或Esc按以查看 GRUB 启动菜单,您可以在其中选择已安装的不同内核。
要将你的内核(或其他内核)设为默认内核,请参见如何更改 GRUB 启动顺序?
答案3
构建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
答案4
Ubuntu git 内核存储库
遵循以下想法https://help.ubuntu.com/community/Kernel/Compile并进一步解释为什么我认为配置看起来正确我可以在哪里获得 11.04 内核 .config 文件?:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git linux
cd linux
git checkout Ubuntu-4.15.0-36.39
fakeroot debian/rules clean
debian/rules updateconfigs
fakeroot debian/rules build-generic
cp debian/build/build-generic/.config .
make -j `nproc`
在 Ubuntu 18.04 中测试。