Linux 内核编译

Linux 内核编译

最近心血来潮,准备好好学习下Linux 知识,重温大学美妙时光。深入学习linux,从编译内核开始,我选择基于ubuntu10.04,以及内核版本2.6.39.4.tar.bz2。 为什么选择ubuntu10.04 和 linux2.6? 因为ubuntu10.04自带内核是2.6.32,与我们要编译的内核版本接近,而2.6.39.4.tar.bz2 是官网找到的最后一个2.6的版本,这个版本网上的学习资料相对于其它的较多,对于学习来讲,实在是不二选择。(其实我之前用了个2.6.35.tar.bz 来源于第三方公司,可能有修改,因为第三方编译时需要合入补丁,直接编译出了一大堆错误,解决的不厌其烦,官网下载的这版本相当有魅力,一遍就过,不会出错)
软件版本可以从官网下载,也可以选择 我的百度网盘分享 提取码:g0vk

查看系统环境
linus@ubuntu:~$ uname -a
Linux ubuntu 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux

拿到版本后,做一些不相关的操作,百度一下,更换下apt工具的源,方便我们能下载需要的工具。

1、环境和源码准备
apt-get install libncurses5-dev

1、下载源码并解压缩到/usr/src
tar -jxf linux-2.6.39.4.tar.bz2 -C /usr/src/
2、开始编译并安装
cd /usr/src/linux-2.6.39.4/
make menuconfig
make
make install
make modules
make modules_install
mkinitramfs -o /boot/initrd.img-2.6.39

修改/boot/apt/grub.cfg、在启动项的地方新增我们的内核
####### BEGIN /etc/grub.d/10_linux ###
menuentry ‘Ubuntu, with Linux 2.6.39.4’ --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root=’(hd0,1)’
search --no-floppy --fs-uuid --set 499b286f-e90d-43ff-baba-b1dddef87f0a
linux /boot/vmlinuz-2.6.39.4 root=UUID=499b286f-e90d-43ff-baba-b1dddef87f0a ro quiet splash
initrd /boot/initrd.img-2.6.39.4
}
menuentry ‘Ubuntu, with Linux 2.6.39.4 (recovery mode)’ --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root=’(hd0,1)’
search --no-floppy --fs-uuid --set 499b286f-e90d-43ff-baba-b1dddef87f0a
echo ‘Loading Linux 2.6.39.4 …’
linux /boot/vmlinuz-2.6.39.4 root=UUID=499b286f-e90d-43ff-baba-b1dddef87f0a ro single
echo ‘Loading initial ramdisk …’
initrd /boot/initrd.img-2.6.39.4
}

据说修改完成后,需要运行update-grub来更新配置,上面是我运行命令后就多出以上两项,但是这个时候不能重启,否则会进入initramfs,rootfs未挂载,暂时不清楚怎么解决,还需要做以下工作。
cd /boot
cp initrd.img-2.6.39.4 initrd-2.6.39.4.old
depmod -a
update-initramfs -k 2.6.39.4 -c
cd /tmp
gzip -dc /boot/initrd.img-2.6.39.4| cpio -id
touch lib/modules/2.6.39.4/modules.dep
find ./ | cpio -H newc -o > /boot/initrd.img-2.6.39.4.new
gzip /boot/initrd.img-2.6.39.4.new
cd /boot
mv initrd.img-2.6.39.4.new.gz initrd.img-2.6.39.4

安装完成后,重启,就可以看到内核已经更新了。
linus@ubuntu:~$ uname -a
Linux ubuntu 2.6.39.4 #1 SMP Mon Mar 30 07:43:03 PDT 2020 i686 GNU/Linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值