您的位置:首页 > 运维架构 > Linux

(Mark) (Ubuntu)Ubuntu 12.04 LTS 编译内核 (Linux) (内核)

2014-03-07 16:23 726 查看
编译环境为Ubuntu 12.04 LTS 64 Bit 内核版本3.2.0-59

1.https://www.kernel.org/下载内核和补丁linux-3.13.6.tar.xzpatch-3.13.6.xz

2.安装编译时需要的工具,构建编译环境

sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-headers


注:

build-essential (基本的编程库(gcc, make等)

kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具)

libncurses5-dev (meke menuconfig要调用的)

libqt3-headers (make xconfig要调用的)

3.解压内核到/usr/src/下,补丁到/usr/src/linux-3.13.6/下

sudo tar xvf linux-3.13.6.tar.xz -C /usr/src/
xz -d patch-3.13.6.xz
sudo cp patch-3.13.6 /usr/src/linux-3.13.6/


4.净化内核

cd /usr/src/linux-3.13.6/
sudo make mrproper


注:

make mrproper

删除之前编译所生成的文件和配置文件,备份文件,如.config配置文件。如果你是第一次编译,可不执行。

5.为内核打上补丁,用file 命令查看补丁

file patch-3.13.6


输出:patch-3.13.6: unified diff output, ASCII text

此处Patch文件使用diff 做的,因此使用diff命令打补丁

sudo diff -rN patch-3.13.6 ./


注:如果patch文件是patch做成的,那么就相应的用:patch -p1 < xxxx.patch

5.配置内核

  对于内核配置可不是那么熟练什么的,可以用原来系统中存在的配置文件。原来系统中的配置文件,位置有两种情况:一是放在/boot下面的,一个是放在/usr/src/linux-headers-xxxxx-generic/下面.

  本机是把/usr/src/linux-headers-xxx-generic/下面的.config复制到要编译的内核路径下

sudo cp ../linux-headers-3.2.0-59-generic/.config ./


或者 sudo cp /boot/config-3.2.0-59-generic ./.config

6.清理编译中间文件

sudo make clean


注: 删除绝大多数编译生产的文件并保留配置文件。如果你是第一次编译,可不执行

7.在menuconfig中配置内核

sudo make menuconfig


默认会加载.config的配置,也可根据自己的需求在界面中修改。然后 Exit --->Yes

8.编译

sudo make -j4


注:make命令可以理解为 make bzImage(编译内核) 和make modules (编译模块)

-j4 表示jobs=4,同时最多跑4个进程。make自己会协调,如果CPU等资源不够可能小于4个。不过一般瓶颈都在硬盘,所以一般能看到4个进程一起跑。

9.安装模块,将编译好的模块安装到/lib/modules/下

sudo make modules_install


10.创建创建initrd 文件

sudo mkinitramfs -o /boot/initrd.img-3.13.6-generic


注:如果linux系统安装在scsi磁盘上,这步是必须的,否则可以跳过。

11.安装内核

sudo make install


注:此步包含如下操作

cp /usr/src/linux-3.13.6/arch/x86/boot/bzImage /boot/vmlinuz-3.13.6-generic
cp/usr/src/linux-3.13.6/System.map /boot/System.map-3.13.6-generic


12.更新grub

update-grub2


到此完成内核编译安装完成

注:使用命令查看grub添加的信息 3.13.6 为新编的内核

sudo gedit /boot/grub/grub.cfg


查看信息中包含如下配置描述

menuentry 'Ubuntu,Linux 3.13.6-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos8)'
search --no-floppy --fs-uuid --set=root 67f03453-7d9b-4a50-9441-ce3af69abc42
linux    /boot/vmlinuz-3.13.6-generic root=UUID=67f03453-7d9b-4a50-9441-ce3af69abc42 ro   quiet splash $vt_handoff
initrd    /boot/initrd.img-3.13.6-generic
}


重新编译可从第6步开始,如要清除配置文件从第4步开始。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: