原文地址:http://hi.baidu.com/lcplj123/item/d47fc1d6000b554efb5768aa
当前电脑状态:
系统:Ubuntu 10.04.4 LTS
kernel信息:2.6.32-38-generic
网址:http://www.kernel.org/
我下载的文件:linux-2.6.32.61.tar.xz
如何解压这个文件:
首先,xz -d linux-2.6.32.61.tar.xz,会生成linux-2.6.32.61.tar文件
然后,tar xvf linux-2.6.32.61.tar,就成功解压。
解压目录:解压到一般的目录下就可以,没什么特别的。
我解压后的目录:/home/yutao/yutao/linux/linux-2.6.32.61
你现在就可以看这个版本的kernel的源码了,如果你不需要编译,后面的就不用看了。
进入到/home/yutao/yutao/linux/linux-2.6.32.61目录下,在终端中执行make mrproper
注:如果你是第一次编译,跳过此步。
它的含义是将上一次编译的.o和.config等相关文件删除掉,它是更深层次的清除你上次编译内核的东西
如果你对如何配置内核比较了解,你可以执行make menuconfig命令
你或许也可以尝试make defconfig命令,它会基于默认的配置为你的体系结构创建一个配置。
推荐使用下面的方法,来利用系统已经存在的内核配置文件:
cp /boot/config-`uname -r` ./.config
以我的为例:cp /boot/config-2.6.32-38-generic ./.config
make bzImage //编译大内核,编译小内核用make zImage 我用了10mins
make modules //编译模块 我用了40mins
make install modules_install //将内核与模块相关的文件复制到系统位置 很快,几分钟吧
上面是我编译前后的/boot文件夹下的对比,我存在的问题是,我缺少了一个文件:initrd.img-2.6.32.61,而这是非常重要的一个文件。
解决方法:http://blog.csdn.net/mayouyang/article/details/3997849
首先进入到/lib/modules/,在这个目录下有一个2.6.32.61,应该是之前编译生成的,具体不详
mkinitramfs 2.6.32.61 -o /boot/initrd.img-2.6.32.61
这样,我的问题就解决了。
仿照已存在的项添加即可:
sudo gedit /boot/grub/grub.cfg
### yutao add begin 20140213
menuentry 'Ubuntu, with Linux 2.6.32.61 yutao' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,6)'
search --no-floppy --fs-uuid --set cd48f9e1-634a-4e4c-9ae6-a9851f69a5ef
linux /boot/vmlinuz-2.6.32.61 root=UUID=cd48f9e1-634a-4e4c-9ae6-a9851f69a5ef ro quiet splash
initrd /boot/initrd.img-2.6.32.61
}
### yutao add end 20140213
开机后,进入开机引导项后,就可以看到多了一个Ubuntu, with Linux 2.6.32.61 yutao,选择它就ok啦。
进入系统后,查看内核版本号,发现已经不是之前的2.6.32.-38-generic
yutao@yutao:~$ uname -r
2.6.32.61
yutao@yutao:~$