kernel编译
由于需要在kernel中添加patch,所以需要重新编译一份ubuntu的linux kernel。具体过程如下:
- 1. uname -r。查看目前使用的kernel版本
- 2. sudo apt-cache search linux-source。 查看可用apt-get install的kernel版本。对于不同发行版的ubuntu,可用的kernel都是不同的。
$ sudo apt-cache search linux-source linux-source - Linux kernel source with Ubuntu patches linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches
- 3. sudo apt-install linux-source-3.2.0 。下载最新的kernel。在/usr/src目录下
- 4. cd /usr/src。解压下载的kernel source code
- 5. cd到kernel source code目录下。以下所有的操作都是在root权限下进行的
- 6. make menuconfig。
- 需要修改其中的CONFIG_DEBUG_SECTION_MISMATCH变量为y。否则在编译时候会出现问题,具体见下面的问题与分析
- 在此需要配置下相关的需要编译的kernel模块。特别是driver,把不需要的driver都disable,比如直接把driver中的staging都给disable。
- 如果按照默认的ubuntu的配置,会加载所有的driver。但是这样在编译的时候会耗费很长的时间,同时占用很大的硬盘空间(第一次编译占用了6G的硬盘)
- 7. make bzImage。 直接进行编译,生成linux kernel文件:arch/x86/boot/bzImage
- 8. make modules。 编译module
- 9. make modules_install。 安装编译的module到/lib/modules目录下
- 10. make install。 安装linux kernel。
- 在此,会把第7步中生成的bzImage安装到/boot/vmlinuz-3.2.42。还有System.map
- 同时使用命令initramfs-tools生成initrd.img文件到/boot/initrd.img-3.2.42
- 最后会更新grub.cfg文件,让系统从新编译的kernel启动。