今天突发奇想——在自己的Ubuntu上编译一下下Linux内核吧,看自己能不能成功,一下便是本人编译内核的全过程,完全是“照葫芦画瓢”,尽供和我一样的菜鸟参考借鉴。
1. 首先在http://www.kernel.org/下载最新版本的Linux内核,我下的是2.6.39版本,然后解压到自己喜欢的文件夹下,我是解压到了/root下,最后生成了/root/linux-2.6.39,一下的操作就是在此目录下执行的。
2. 安装一些必要的工具的包:
sudo apt-get install build-essential bin86 kernel-package sudo apt-get install libqt3-headers libqt3-mt-dev
3. 查看系统是否有这样的两个命令
mkinitramfs mkisofs
这两个工具在编译内核时用来生成 *.img文件的。如果没有就需安装。
4. 编译前的准备 察看当前内核的版本
uname -a
建议最好下载比当前已安装版本高的内核。
5. sudo make xconfig
保存后会在当前目录下有个.config文件,不过我喜欢从arch中复制默认配置,然后修改。
6. 执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行)
执行:sudo make (编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度)
然后:sudo make install
再:sudo make modules (编译模块)
再:sudo make modules_install (安装模块)
最后创建initrd文件:
mkinitramfs -o /boot/initrd.img-2.6.39 在/boot分区中生成启动内存磁盘镜像文件
7. Ubuntu从9.04版本后就没有menu.lst了,改成了grub.cfg。可以通过修改此文件来将新系统加到启动菜单中,但Ubuntu中有 个“update-grub”命令,其可以自动更新grub,但这样之后我们在重启后还是看不到启动菜单的,所以还要对一下两个文件做进
一步修改:
修改/etc/default/grub文件中 GRUB_HIDDEN_TIMEOUT=1 GRUB_TIMEOUT=n 这里n表示菜单显示超时时间,默认是10,
这里改成自己喜欢的时间。
但是这时候菜单的超时时间还是0,还需要 修改/etc/grub.d/30_os-prober:
if [ /${timeout} != -1 ]; then if keystatus; then if keystatus --shift; then set timeout=-1 else set timeout=n fi else if sleep$verbose --interruptible 3 ; then set timeout=n fi fi fi EOF elsecat << EOFif [ /${timeout} != -1 ]; then if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then set timeout=n fi fi
把上面代码中的所有的n都改为GRUB_TIMEOUT的值,然后保存,输入命令“update-grub”
8. reboot
PS:其实这个都是在其他blog中摘抄的,真正的本质还是不了解,在以后的日子里,要好好研究他们的本质是什么