Ubuntu 下编译内核笔记

Ubuntu 下编译内核笔记

本次笔记在参考了众多前辈的帖子和文章实验处理,固然要弄清内核的配置过程也是须要至关长的时间和耐心,这回先记录一下操做成功的步骤,待往后补充。html

前提环境:Win7+VirsualBox+Ubuntu12.04linux

 

一,下载内核源码

  官网:https://www.kernel.org/,这里我下载的是最新稳定版本linux-3.12.6.tar.xz
ubuntu

  注意要在root角色下进行下面的操做ui

 

二,解压源码

1,把源码拷贝到/usr/src目录下

sudo cp linux-3.12.6.tar.xz /usr/src

2,解压源码

sudo tar -vxf linux-3.12.6.tar.xz

 

三,配置和编译

1,清理上一次编译残留的文件,第一次编译能够跳过

sudo make mrproper 
sudo make clean

2,制做配置文件

能够从拷贝系统的config文件,改为.config并拷贝到源码根目录,也能够运行spa

sudo make menuconfig

这里就是配置内核的选项菜单界面,能够根据你的须要,选择要加载的模块,裁剪内核。操作系统

若是要完全弄清每个选项,则须要更多的精力去研究了,http://lamp.linux.gov.cn/Linux/kernel_options.html,做者:金步国。我也正在研究这边文章中...code

这里我直接ESC推出,选择保存,会生成.config默认原始的配置文件。htm

3,简化 kernel 的配置

这一步我是参考网上的帖子作的,听说Linux 2.6.32 开始引入了一个 make localmodconfig 用于简化 kernel 的配置。blog

sudo make localmodconfig

make localmodconfig 会执行 lsmod 命令查看当前系统中加载了哪些模块 (Modules), 并最后将原来的 .config 中不须要的模块去掉,仅保留前面 lsmod 出来的这些模块,从而简化了内核的配置过程。 内存

4,编译内核镜像

sudo make bzImage

5,编译模块

sudo make modlues

6,安装模块

sudo make modules_install 

7,安装内核

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
}

 

 8.修改grub.cfg

这一步主要是为了重启的时候进入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

 

 9,重启系统

sudo reboot

重启后直接进入启动选项菜单,即grub菜单,选择你要加载的内核。

相关文章
相关标签/搜索