此文不介绍Linux内核的编译及编译配置,只讲述在编译完成之后的内核部署相关内容,此文环境 CentOS 7,内核源码版本 4.4.12 。注意编译安装完成后 /usr/src/linux-4.4.12 目录不能删除
内核编译完成,编译所在目录 /usr/src ,接下来执行
make modules_install
他会将编译后的文件拷贝到 /lib/modules/4.4.12 目录,接下来拷贝内核
cp /usr/src/linux-4.4.12/arch/x86_64/boot/bzImage /boot/vmlinuz-4.4.12.x86_64
进入 /boot 目录并开始创建临时文件系统
cd /boot mkinitrd initramfs-4.4.12.img 4.4.12
将会从 /lib/modules/4.4.12 目录生成 initramfs-4.4.12.x86_64.img 文件,便是临时文件系统,我们可以看到该目录下的文件目录
➜ 4.4.12 ls -al drwxr-xr-x. 3 root root 4096 6月 7 22:31 . drwxr-xr-x. 4 root root 47 6月 7 21:44 .. lrwxrwxrwx. 1 root root 21 6月 7 21:44 build -> /usr/src/linux-4.4.12 drwxr-xr-x. 13 root root 4096 6月 7 22:31 kernel lrwxrwxrwx. 1 root root 21 6月 7 22:30 source -> /usr/src/linux-4.4.12
可以看到build目录链接到 /usr/src/linux-4.4.12 ,因此上面说不能删除该源码目录,重命名 img 文件
mv initramfs-4.4.12.img initramfs-4.4.12.x86_64.img
为何我们要将这些文件名命名成这样呢,我们可以看到 boot 目录下的文件如下
➜ /boot ls config-3.10.0-327.el7.x86_64 grub grub2 initramfs-0-rescue-a21a5e0aa76b4b0c85aeb76161573b23.img initramfs-3.10.0-327.el7.x86_64.img initramfs-3.10.0-327.el7.x86_64kdump.img initramfs-4.4.12.x86_64.img initrd-plymouth.img symvers-3.10.0-327.el7.x86_64.gz System.map-3.10.0-327.el7.x86_64 vmlinuz-0-rescue-a21a5e0aa76b4b0c85aeb76161573b23 vmlinuz-3.10.0-327.el7.x86_64 vmlinuz-4.4.12.x86_64
可以发现,centos 7 系统原来的内核命名已经临时文件系统命名是有规律的,vmlinuz-<version>.<arc> 是内核命名规则,initramfs-<version>.<arc>.img 是文件系统文件名。这么有规律的文件名是因为 centos 7 的 grub2 的默认配置文件中是按照这种规则自动搜索内核的,所以,centos 7 中如此命名新的内核可以不必额外配置 grub2 的配置文件,当然如果你熟悉 grub2 的配置,你也可以任意命名,在配置文件中写入正确的配置即可。
参考文献:
[1] http://blog.chinaunix.net/uid-24782829-id-3211008.html