怎样使用新编译的内核进行启动

如题所述

step 1

准备:(1). 所需的内核源码

step2:

    切换到源码所在的目录,make distclean 命令:删除生产的.o 和 .config 文件

    编译内核之前需要一份配置文件,并在此基础上修改,故借用本地/boot/config-3.13.0-24-generic 配置文件,命令: cp /boot/config-3.13.0-24-generic /home/yangqi/code/linux/linux-4.2.3/.config

    该配置文件.config 即是对内核裁剪的配置,不用直接打开修改,系统提供menu界面修改,命令:make menuconfig (如果此命令报错,说明需要装ncurses库,安装命令:sudo apt-get install libncurses5-dev) (menu目录如下:)

    配置完,保存即可。

    接下来,根据配置文件,编译内核:  make bzImage V=1 (V=1 会显示编译的过程),编译时间大概1个小时

    编译完内核,得到的bzImage会存放在linux-4.2.3/arch/x86_64 内,(x86_64为你选择的系统架构,配置的时候,你选择什么架构,编译好的内核文件就存放在对应的以架构命名的文件夹下)(下图为:以架构命名的文件夹)

    接下来,编译模块: make modules 大约需要2个小时

    将编译后的模块文件注入到系统的/lib/modules 下,命令: make modules_install (成功如图:  ,存放在4.2.3文件夹下)

    接下来,制作init ramdisk文件 : RedHat 下使用mkinitrd init-4.2.3 4.2.3  + cp init4.2.3 /boot/init4.2.3 (init-4.2.3为自拟,后一个参数4.2.3 必须与/lib/modules下的文件4.2.3一致,这是内核的版本号);ubutun下使用mkinitramfs 4.2.3 -o /boot/init-4.2.3

    然后,还需要将第6步编译好的bzImage (linux-4.2.3/arch/x86_64/boot/下)拷贝到/boot/下:cp /home/yangqi/code/linux/linux-4.2.3/arch/x86_64/boot  /root/vmlinux-4.2.3  (保证bzImage 和 initrd-4.2.3 都放在/boot/下)

    最后,修改系统启动配置文件:(RedHat下修改/etc/grub.conf或者/etc/lilo.conf)
    ubuntu下修改/boot/grub/grub.cfg 文件,命令:sudo gedit /boot/grub/grub.cfg (如下图修改:                          menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-cfd7566c-18ef-47bf-9b04-b285d20564ee' {
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod ntfs
    set root='hd1,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  FA5CCE605CCE1773
    else
    search --no-floppy --fs-uuid --set=root FA5CCE605CCE1773
    fi
    loopback loop0 /ubuntu/disks/root.disk
    set root=(loop0)
    linux    /boot/vmlinuz-3.13.0-24-generic root=UUID=FA5CCE605CCE1773 loop=/ubuntu/disks/root.disk rw rootflags=sync  quiet splash $vt_handoff
    initrd    /boot/initrd.img-3.13.0-24-generic
    }
    menuentry 'Ubuntu My Linux-4.2.3' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-cfd7566c-18ef-47bf-9b04-b285d20564ee' {
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod ntfs
    set root='hd1,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  FA5CCE605CCE1773
    else
    search --no-floppy --fs-uuid --set=root FA5CCE605CCE1773
    fi
    loopback loop0 /ubuntu/disks/root.disk
    set root=(loop0)
    linux    /boot/vmlinux-4.2.3 root=UUID=FA5CCE605CCE1773 loop=/ubuntu/disks/root.disk rw rootflags=sync  quiet splash $vt_handoff
    initrd    /boot/initrd-4.2.3
    }

    修改说明:蓝色为一开始就存在的代码,红色是复制蓝色的部分,并在此基础之上加以修改的,修改的地方为绿色部分。(注:menuentry命令为在开机启动时候,通过enter键键入那一刻,触发的命令)

    12.  最后,还需要将该文件set default="0"(旧)修改 set default="1"(新),应该表示的是系统数目。

    13.  保存完毕,重启电脑就可以看到新添加的选项。 进入系统后,使用 uname -r 即可查看到新的内核4.2.3

温馨提示:答案为网友推荐,仅供参考