一、操作环境
二、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
这样就解包了。
参考网页:
http://www.linuxdiyf.com/viewarticle.php?id=90677
http://www.chineselinuxuniversity.net/articles/8761.shtml