ubuntu上编译kernel

本文详细介绍了如何在Ubuntu 10.04上编译内核,包括检查可用内核版本、安装源码、配置编译、生成initramfs以及处理init ram disk的解包问题。编译过程涉及make oldconfig、make bzImage、make modules等步骤,需要注意在生成initrd.img时指定正确的内核版本。此外,还提供了错误排查方法,如解压initrd.img检查问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、操作环境

二、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值