1
6
2014
0

编译内核总结 及 修改开机启动项内核顺序

1.现在内核的压缩文件。把下载到的内核放到u盘里,把u盘插在linux系统上,把u盘mount上去

 mount -t vfat /dev/sdb4 /mnt/udisk 其中vfat是u盘文件系统格式,sdb4是u盘中带有*号的标号。用fdisk -l可以看到,u盘*号标号对应编号。

2.把u盘里的linux内核压缩文件放到linux的某个文件夹下

3.tar -xvzf linux-2.** -C /usr/src  解压缩到/usr/src这个文件夹下(一定要在linux下指令解压缩,window下解压缩后拖进去会出来问题,可能make menuconfig 不能执行)

4.cd /usr/src/linux-2.**

5.make menuconfig(若在这里提示了错误,缺少ncurses的library,则需要输入apt-get install libncurses5-dev)

6.make 也可以make -j 4哦 更快

7.make modules_install

8.make install

9reboot

 

注意如果你在reboot后没有进入不同系统的选项,而是直接进入了未编译的内核。则要修改以下文件

1.在root权限下vim /etc/default/grub

把里面的GRUB_TIMEOUT设置为GRUB_TIMEOUT=20

然后输入 update-grub

再reboot。

若reboot还没有选项,而是直接进入之前的内核,则

2.修改 vim /etc/grub.d/30_os_prober

把里面三个else   set timeout=0的地方 改为=20

然后在 update-grub

在reboot !

如果reboot后,还是没有进入如下界面,可以再reboot时按住shift键,进入到开机该内核选择界面。


按照如上操作还出现该问题:点击进入刚刚编译的内核后,提示root目录无法挂载(忘记截图了),解决方法:

step1:查看/boot目录下,发现没有刚刚编译的内核的启动项,如下,只有我原有内核版本initrd.img-2.6.32-38-generic的启动项。而没有我所需要的2.6.34.14版本的启动项。所以你需要做一个启动项。

step2:进入/lib/modules下与你编译的内核所对应的文件夹。运行update-initramfs -c -k 2.6.34.14 (该步骤我用mkinitramfs -o /boot/initrd.img-2.6.34.14指令后还是不能成功,建议用update-initramfs -c -k指令)。执行完此步骤后,就可以在/boot目录下,发现刚刚编译的内核的启动项了。如下图

step3: 输入update-grub。然后reboot,就ok了

现在应该大功告成啦!!啦啦啦

补充:

我今天又编译了一次内核,经过上面几次的总结,我觉得我已经肯定确定会了。。结果还是遇到了蛋疼的问题。。

编译内核的背景:

我在机房的服务器上编译的,这个服务器的环境本来就已经搭建好了,而且有不止一个内核。这几个内核装在不同的磁盘上,我运行其中一个版本的内核,并在此内核中编译我需要的内核,一切进展都很顺利,但是在最后开机重启时没有看到我需要的内核,但是在ls /boot 下已经有我需要的内核版本的启动项,即对应的initrd.img-...文件。重启开机的画面如下所示

我需要的内核版本是2.6.34.14.这里面没有。

 

解决:

其实这个内核版本已经有了,不过在previous linux version这个选项的子菜单中。隐藏得好深。哎。。。亏我当时想了各种原因,我还以为每个已经有的内核版本都需要重新编译一次2.6.34.14这个内核呢~~~~。。

 

如何把2.6.34.14内核变成系统启动屏幕上默认的启动的内核呢?

vi /boot/grub/grub.cfg

menuentry 'Ubuntu, with Linux 2.6.34.14' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos2)'
        search --no-floppy --fs-uuid --set=root 347d81cc-7111-45ea-b851-e53cc0fa1173
        linux   /boot/vmlinuz-2.6.34.14 root=UUID=347d81cc-7111-45ea-b851-e53cc0fa1173 ro   
        initrd  /boot/initrd.img-2.6.34.14
}
menuentry 'Ubuntu, with Linux 2.6.34.14 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos2)'
        search --no-floppy --fs-uuid --set=root 347d81cc-7111-45ea-b851-e53cc0fa1173
        echo    'Loading Linux 2.6.34.14 ...'
        linux   /boot/vmlinuz-2.6.34.14 root=UUID=347d81cc-7111-45ea-b851-e53cc0fa1173 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-2.6.34.14
}
menuentry 'Ubuntu, with Linux 2.6.34.14.old' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos2)'
        search --no-floppy --fs-uuid --set=root 347d81cc-7111-45ea-b851-e53cc0fa1173
        linux   /boot/vmlinuz-2.6.34.14.old root=UUID=347d81cc-7111-45ea-b851-e53cc0fa1173 ro   
        initrd  /boot/initrd.img-2.6.34.14
}
menuentry 'Ubuntu, with Linux 2.6.34.14.old (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos2)'
        search --no-floppy --fs-uuid --set=root 347d81cc-7111-45ea-b851-e53cc0fa1173
        echo    'Loading Linux 2.6.34.14.old ...'
        linux   /boot/vmlinuz-2.6.34.14.old root=UUID=347d81cc-7111-45ea-b851-e53cc0fa1173 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-2.6.34.14
}

 

如上所示,该文件中,有许多顺序出现的menuentry启动项。这里的顺利也就是启动时屏幕出现的启动项的顺序。把你想默认开机的启动项复制粘贴到第一位,即可以达到设定默认开机启动项的顺序。

Category: Linux | Tags: | Read Count: 3805

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com