近日按照《Linux内核的设计与实现》尝试编译内核,遇到很多问题,也学到不少经验。
1. 由于需要使用一个较老版本的内核,而后从别人处拷贝的tag.bz2是损坏的。原先并没有在http://www.kernel.org/看到所需要的内核,通过搜索知道较旧的内核可以从类似于http://www.kernel.org/pub/linux/kernel/v2.6/命名规则的页面下载。
2. 如果已经安装Win7且磁盘系统转换为NTFS,用EasyBCD硬盘安装Win7+Ubuntu双系统不可行
3. 2.6.13内核需要2.95.3版本的gcc
4. 练习内核编译时,可以使用比系统自带内核稍微新一些的,比如Ubuntu自带2.6.32.21,下载2.6.32.24进行练习比较简单。内核编译涉及的诸如gcc等程序的版本,过老的内核可能在新版gcc下无法编译通过。
5. make config、make、make modules_install、make install后可能需要对grub进行配置:
a.把源码根目录下System.map拷贝至/boot下并改名为System.map-2.6.32.24;
b.把源码目录下arch/x86/boot/bzImage拷贝到/boot目录下;
c.使用bzImage生成img文件initrd.img-2.6.32.24:
update-initramfs -c -k 2.6.32.24