最近在阅读ELDD,此书偏向于实战,但是有些年代了,才看了不到几页,便遇到了一些坑。
内核源码的获取
现在,大家使用的linux内核的操作系统,多为各大发行版,在ELDD一书中,第一章便要让大家去直接下载kernel.org提供的源码,略作修改后,用该内核启动。然后不知是不是中文版翻译的问题,这里作者的本意应该是使用和现有的内核相同的版本,然后生成bzImage,这样不就用去管initrd,直接把grub中使用的内核镜像(vmlinuz)路径改为自己的即可正常启动。
这里要注意的一点是,发行版的内核即使版本号和官网相同或接近,差异也可能较大,所以获取内核源码尽量去下载发行版的源码,下面以centOS为例。(因为ELDD一书中使用的是2.6.23/24的代码,但是发行版没怎么看到使用这个版本的内核镜像,干脆就用了centOS6.9,2.6.32的内核)
获取内核rpm
centOS的内核源码可在 http://vault.centos.org/ 处获取,使用uname -a
查看自己的内核版本,找到对应的版本后,下载之。
获取内核spec文件
得到.rpm文件后,使用rpm -i XXX.rpm
命令,可以得到一个 rpmbuild/SPECS/kernel.spec 文件
获取源码
使用rpmbuild -bp --target=$(uname -m) kernel.spec
命令,就可在 rpm/BUILD 目录下找到kernel对应的文件姐,其内便是源码
内核安装
有了源码,并肆无忌惮(划掉)的修改后,就可以开始着手内核的编译和安装了。
需要的文件
首先,让我们列出安装新内核需要的文件:
bzImage:内核的压缩镜像
System.map:内核符号表
initramfs.XXX.img:initial ram filesystem,关于initramfs的说明请见我另外一篇文章。
/lib/modules/X.Y.Z:内核模块文件夹
grub