Linux内核编译步骤(基于Ubuntu10.04+2.6.35.2 Kernel)

是日,闲暇之余研究了一下Linux的Kernel的编译。以前都是在Windows平台工作,几乎无机会用Linux,于是也想凑热闹玩一下。平台是最新的Ubuntu 10.04 LTS,Kernel也是最新下载的2.6.35.2版本。其实现在Kernel的编译比过去方便的多,用menuconfig的话几乎不用人工配置,命令也不用敲多少行。编译内核算是学Linux Kernel最开始的部分。

 

编译步骤:

 

1. 到http://www.kernel.org/ 上下载最新的内核源代码linux-2.6.35.2.tar.bz2(目前最新的版本),然后放在/usr/src目录下。

 

2. 为了使编译过程方便,建议进入root账户进行操作,这样做使你不用每次都用sudo命令。(我还不太了解这样做安全性是否可靠)

    进入Terminal,执行:su root   然后输入你的Password,这样就在root账户权限下进行剩下的操作了。

 

3. 下载的Linux源码是压缩包,需要解压到目录下:tar -j x vf linux-2.6.35.2.tar.bz2 -C /usr/src

 

4. 进入解压后的目录:cd /usr/src/linux-2.6.35.2

 

5. 检查有无不正确的.o文件和依赖关系: make mrproper (其实这一步可以省略,因为是刚下载好的源码,一定是干净的;如果使用的是已经编译过的code,则需要做这一步)

 

6. 配置Kernal选项:make menuconfig (这一步很重要,它决定了你可以个人定制化你的Kernel。当你使用menuconfig时,会有一些选择列出来) 主列表如下:

 

    General Setup: 常规的配置,比如Kernel config, CPU Group,Aduiting等等

    Loadable module support: 定制你要加载哪些modules

    Enable the block layer: 主要是块设备和大文件的设置

    Processor type and features: 处理器配置和定制化

    Power management options: 电源管理的定制化,比如Hibernate这样的

    Bus options: PCI总线的定制

    Executable file formats: 主要是设置ELF的配置

    Networking support: 定制网络选项,包括Wireless,Bluetooth和Network选项

    Device Drivers: 定制你需要加载的设备驱动

    Fireware Drivers: BIOS和EFI这样的固件驱动设置

    File System: 文件系统的设置,包括EXT3, EXT4, FAT, CD/DVD...等等N种

    Kernel hacking: 主要是设置Kernel debugging的,做内核调试会有用

    Security options: 安全选项

    Cryptographic API: 加密设置,包括MD5, SHA1, CRC等等N种加密算法的配置

    Virtualization: 虚拟化设置

    Library routines: 主要定制CRC校验的function

 

    上面是16大项,每一项都有N多小项,说真的这个里面每一项都够研究一阵子的。不过对内核编译而言,你可以全部采用默认选项(会延长编译时间)。设置好了menuconfig,保存退出。

 

7. 建立Modules依赖关系: make dep

 

8. 删除配置后剩下的不适用的文件:make clean

 

9. 编译内核:make bzImage (这个会花些时间,看机器情况和menuconfig的定义而言。我采用默认的设置,编译时间花了20分钟左右。如果Kernel小于512K,可以用make zImage 命令)

 

10. 编译内核模块:make modules (这个也会花点时间,要看你定制的modules数量而言。采用默认设置,花了大约25分钟。你可以用make -j<n> 加快编译速度,n代表你CPU的数量)

 

11. 安装内核模块:make modules_install

 

12. 安装内核:make install

 

13. 创建initrd文件:(1) cd/ (2)输入:mkinitramfs 2.6.35.2 -o /boot/initrd.img-2.6.35.2-generic

 

14. 拷贝编译好的内核image: cp /usr/src/linux-2.6.35.2/arch/i386/boot/bzImage /boot/vmlinuz-2.6.35.2-generic

 

15. 最后一步,修改Grub,更新启动列表:update-grub (如需手动编辑grub.cfg, 则在root账户下使用gedit就可以了)

 

(注:Ubuntu10.04已经使用了Grub2来管理启动设置,而不是Grub,所以在以往的/boot/grub路径下你是找不到menu.lst的, 因为Grub2已经使用了/boot/grub/grub.cfg来管理配置启动设置,不过最好不要手动编译这个文件,具体的方式是编辑/etc/default/grub和/etc/grub.d下的脚本文件。有关Grub2的详细教程,请参考https://docs.google.com/Doc?docid=0AeVQ5PqmbeaoZGc0czgyOWtfMjRjbWo0ODVoYw&hl=en )

 

16. Reboot机器,然后Enjoy it!

 

 

 

你可能感兴趣的:(linux,Hibernate,ubuntu,networking,debugging,linux内核)