本次笔记在参考了众多前辈的帖子和文章实验处理,固然要弄清内核的配置过程也是须要至关长的时间和耐心,这回先记录一下操做成功的步骤,待往后补充。html
前提环境:Win7+VirsualBox+Ubuntu12.04linux
官网:https://www.kernel.org/,这里我下载的是最新稳定版本linux-3.12.6.tar.xz
ubuntu
注意要在root角色下进行下面的操做ui
sudo cp linux-3.12.6.tar.xz /usr/src
sudo tar -vxf linux-3.12.6.tar.xz
sudo make mrproper
sudo make clean
能够从拷贝系统的config文件,改为.config并拷贝到源码根目录,也能够运行spa
sudo make menuconfig
这里就是配置内核的选项菜单界面,能够根据你的须要,选择要加载的模块,裁剪内核。操作系统
若是要完全弄清每个选项,则须要更多的精力去研究了,http://lamp.linux.gov.cn/Linux/kernel_options.html,做者:金步国。我也正在研究这边文章中...code
这里我直接ESC推出,选择保存,会生成.config默认原始的配置文件。htm
这一步我是参考网上的帖子作的,听说Linux 2.6.32 开始引入了一个 make localmodconfig 用于简化 kernel 的配置。blog
sudo make localmodconfig
make localmodconfig 会执行 lsmod 命令查看当前系统中加载了哪些模块 (Modules), 并最后将原来的 .config 中不须要的模块去掉,仅保留前面 lsmod 出来的这些模块,从而简化了内核的配置过程。 内存
sudo make bzImage
sudo make modlues
sudo make modules_install
sudo make install
内核安装完毕,grub2会自动更新,会在/boot/grub/下更新grub.config代码。查看代码得知,加入了新的内核引导代码。
menuentry 'Ubuntu,Linux 3.12.6' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root f48e9fc9-9d77-4c7e-9897-6d493abe32c4
linux /boot/vmlinuz-3.12.6 root=UUID=f48e9fc9-9d77-4c7e-9897-6d493abe32c4 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.12.6
}
menuentry 'Ubuntu, with Linux 3.12.6 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root f48e9fc9-9d77-4c7e-9897-6d493abe32c4
echo '载入 Linux 3.12.6 ...'
linux /boot/vmlinuz-3.12.6 root=UUID=f48e9fc9-9d77-4c7e-9897-6d493abe32c4 ro recovery nomodeset
echo '载入初始化内存盘...'
initrd /boot/initrd.img-3.12.6
}
这一步主要是为了重启的时候进入grub菜单,这样就能够选择进入那个内核了。此时机器上有两个内核,一老一新。
sudo gedit /etc/default/grub
修改这三句代码代码:
#############################
此配置将影响菜单显示。若设置此选项,将在此时间内隐藏菜单而显示引导画面。
菜单将会被隐藏,除非在此行开头加上一个 # 符号。(# GRUB_HIDDEN_TIMEOUT=0)。
GRUB 2 第一次执行时将会寻找其余操做系统。若没有其余操做系统被检测到,菜单将会配置为隐藏。若辨认出其余操做系统,菜单将会显示。
如果大于 0 的整数,系统将会依此配置的秒数暂停,但不会显示菜单。
0 则菜单不会显示,也不会有延迟。
使用者能够在启动时按住 SHIFT 键不放以强制显示菜单。
启动过程当中,系统将会检查 SHIFT 键状态。若没法辨识按键状态,会有一个短期的延迟让使用者可经过按下 ESC 键来显示菜单
#############################
#GRUB_HIDDEN_TIMEOUT=0
#############################
true 不显示倒计时。屏幕将会是空白的。
false 在 GRUB_HIDDEN_TIMEOUT 中配置的时间,空白屏幕上会有一个倒数计时器。
#############################
GRUB_HIDDEN_TIMEOUT_QUIET=false
#############################
此命令将顺从 GRUB_HIDDEN_TIMEOUT 配置,除非 GRUB_HIDDEN_TIMEOUT 被注释掉(#)。若 GRUB_HIDDEN_TIMEOUT 启用,则当菜单显示时,GRUB_TIMEOUT 将会只执行一次。
配置此值为 -1 将会致使菜单一直显示,直到用户选择。
GRUB 2 菜单默认为隐藏,除非其余操做系统被系统检测到。若没有其余操做系统,此行将会被注释掉,除非使用者修改它。为了在每次启动时显示菜单,去掉此行的注释并使用 1 或更大的值。
#############################
GRUB_TIMEOUT=10
完成后记得运行命令:
sudo update-grub grub.cfg
sudo reboot
重启后直接进入启动选项菜单,即grub菜单,选择你要加载的内核。