我正在读罗伯特·洛夫的书Linux内核开发为了更多地了解 Linux 内核开发!
但在第 2 章:内核入门,我被指示下载并安装内核。这让我很困惑。 “构建内核很容易”,他说。然而,在 Linux 环境中安装 Linux 内核的想法对我来说没有意义——就好像我会虚拟地运行这个新的 Linux 一样?
他给出的步骤是获取内核源码
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
$ git pull
然后解压压缩包(如果是 GNU zip,则有两种不同的方法,但这里是 bzip2 方法),
$ tar xvjf linux-x.y.z.tar.bz2
然后从那里你构建内核通过在、、等make
上运行menuconfig
deconfig
oldconfig
然后你安装新内核。他解释说,安装是“架构和引导加载程序相关的”,并且“请查阅[我的]引导加载程序的说明,了解将内核映像复制到哪里。”然后他提供了一个示例,说明人们可以在哪里复制图像然后运行
$ make modules_install
然后本章就不再继续介绍安装内核的教程。
这就是我迷路的地方。到目前为止,我已经了解了所有命令(我已经使用 Fedora 几年了,用C等),但我不明白在我已有的 Linux 环境中“安装”Linux 内核的概念。没有解释这里发生了什么(也许他稍后会详细介绍)或如何实际让内核运行。我要把它放在新硬盘上吗?我像虚拟机一样运行吗?我是否在 BIOS 中选择某些启动选项?我如何实际运行它?此步骤不在本章中,也不在第 3 章或第 4 章中。
答案1
make install
只需将内核映像复制到 /boot 目录即可。 make modules_install
将模块复制到 /lib/modules/kernel-version/。如今,大多数 Linux 发行版都使用 grub 启动,因此您需要运行update-grub
以注意到 /boot 中的新内核映像,并将其启动条目添加到 grub 配置文件中,以便您可以选择使用该内核启动。通常,您还需要一个 initrd,其中包含访问启动硬件和一些启动脚本所需的模块,并且至少在基于 Debian 的发行版上,您可以通过在update-initramfs -k kernelversion
运行 之前运行 来生成它update-grub
。