> Ubuntu >

ubuntu上编译kernel

一、操作环境

二、kernel 编译

三、init ram disk 解包

四、参考网页





操作环境:

virtualbox上安装ubuntu10.04,可正常连接网络

kernel编译:

源码默认在/usr/src/目录下,默认安装情况下,只有头文件,没有code。编译完成后会在/lib/modules/下生成一些文件,可用来生成initramfs。

先查下在ubuntu的源中可下载哪些kernel版本:

sudo apt-cache search linux-source

选择一个版本安装:(转到/usr/src/目录下)

sudo apt-get install linux-source-source_version

完成后会在/usr/src/目录下生成kernel的gz包,解包然后编译:

先配置kernel,建议使用默认config,以免编译出错:make oldconfig

make

make bzImage

make install

这时vmlinux已经安装到到了/boot目录下,下面是编译和生成initramfs

make modules

make modules_install

cd /lib/modules/source_path/

mkinitramfs -o /boot/initrd.img-source_version -v source_version(这条命令要注意。默认情况下mkinitramfs会根据当前运行的内核版本来生成initrd,但很多情况下我们下载的内核和正在运行的内核版本是有些差异的,这时要用-v加上你编译的内核版本号。)

然后copy initrd到/boot目录,并修改grub的配置文件。再重启。

init ram disk 解包:

这次使用自己编译的boot image,很多次都报错,主要就是initramdisk的生成出错了。这时候需要解压开initrd.img来看看到底哪里出错(其实就是mkinitramfs时没加-v)。

先copy initrd.img到一个临时目录,重命名后缀为gz,然后gunzip 解压;在

cpio -i < initrd.img-xxx

这样就解包了。




(责任编辑:IT)