快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰游戏881_龟发之家论坛



每一个Linux发行版都有自己专门的对象去构建自定义的内核. 本文主要先容在Ubuntu平台上编译内核, 若何从www.kernel.org(也叫vanilla kernel)得到最新且未篡改的内核源代码来构建一个自定义的内核, 这样你可以应用自己的内核而不是发行版的内核, 别的也先容了若何给内核打补丁, 从而方便增添新的功能.

下面的事情我都在Ubuntu 6.10 Server ("Edgy Eft")和Ubuntu 6.06 Desktop ("Dapper Drake")上颠最后测试.澳门新葡亰游戏881

我想首先要说的是文章中构建自定义内核的要领不是独一的, 还有许多其它的要领, 这不过是我习气的要领. 我不能包管应用后不会呈现任何问题.

1. 预备事情

我保举应用root用户履行下面所有的步骤. 假如你还没有创建root登岸口令, 请运行下面的敕令:

sudo passwd root

然后, 以root身份登岸:

su

假如你想应用一样平常用户来替代root用户, 记着在本文所有敕令前输入sudo, 比如当我运行

apt-get update

你必要运行下面的敕令来替代, 等.

sudo apt-get update

1.1 Ubuntu 6.10上的/bin/sh ("Edgy Eft")

在Ubuntu 6.10, /bin/sh缺省是一个链接到/bin/dash的字符链接. 当你编译软件源代码的时刻, /bin/dash彷佛还存在问题. 至少我已经碰到了一些问题. 以是我把/bin/sh链接到了/bin/bash.

假如你应用Ubuntu 6.10, 现在你可以运行:

rm -f /bin/sh

ln -s /bin/bash /bin/sh

2 安装必需的软件包 (为内核编译做筹备)

首先我们进级软件(包)库:

apt-get update

然后我们安装所有必要的软件包:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

3 下载内核源代码

接下来我们下载必要的内核到/usr/src目录(去www.kernel.org网站下载你必要的内核版本, 比如. linux-2.6.18.1tar.bz2(你可以从这里下载所有的2.6内核: http://www.kernel.org/pub/linux/kernel/v2.6/). 然后下载到/usr/src目录:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

然后解压内核源代码, 创建一个指向内核源代码目录的linux字符链接:

tar xjf linux-2.6.18.1.tar.bz2

ln -s linux-2.6.18.1 linux

cd /usr/src/linux

4 给内核源代码打补丁(可选)

无意偶尔你的缺省内核不支持新买的设备, 你必要安装新的驱动. 或者你必要应用虚拟技巧或其它高档的技巧, 而这些现有的内核都不支持. 这样环境下你必要给给内核源代码打补丁(当然补丁已经宣布..)

现在我们假设你已经下载必要的补丁(以下例子我叫它patch.bz2)到/usr/s澳门新葡亰游戏881rc. 运行下面的敕令给内核源代码直接打上补丁(你的用户必须位于/usr/src/linux目录):

bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run

bzip2 -dc /usr/src/patch.bz2 | patch -p1

第一个敕令用于测试, 对内核没有任何影响. 假如没有显示差错, 你可以运行第二个敕令给内核打补丁. 假如第一个敕令有误, 请务继承的操作!

你也能够经由过程内核的prep澳门新葡亰游戏881atches要领打补丁. 比如, 假如你必要一个功能, 而这个功能仅存在于2.6.19-rc4中, 正式完备的内核版本仍没有宣布, 而patch-2.6.19-rc4.biz2已经宣布. 你可以把这个补丁打到2.6.18的内核源代码中, 但请不要达到2.6.18.1或2.6.18.2, 等. 这个规则在接下来的网页中注明: http://kernel.org/patchtypes/pre.html

prepatches等同于linux中的测试发行; 他们位于存档的测试目录中, 我们可以应用patch(1)对象对上一个完备发行版(版本号分三部分)打补丁(例如, 2.6.12-rc4 prepatch只可以给2.6.11内核源代码打补丁, 而不是2.6.11.10.)

以是假如你想编译2.6.19-rc4内核, 你必须在步骤3.1下载2.6.18(http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2)替代2.6.18.1内核源代码!

下面是若何给2.6.18打上2.6.19-rc4补丁:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2

cd /usr/src/linux

bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 --dry-run

bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1

5. 设置设置设备摆设摆设内核

应用当前事情内核的设置设置设备摆设摆设文件做为新内核设置设置设备摆设摆设文件的根基是一个很好的主见. 是以我们拷贝已存的设置设置设备摆设摆设文件到/usr/src/linux:

cp /boot/config-`uname -r` ./.config

然后运行

make menuconfig

然后我们看到内核的设置设置设备摆设摆设菜单. 移动绿色光标到 Load an Alternate Configuration File 行后选择.config澳门新葡亰游戏881文件(包孕了当前事情内核的设置设置设备摆设摆设)做为设置设置设备摆设摆设文件:

然后浏览内核设置设置设备摆设摆设菜单, 选择你必要的功能. 完成设置设置设备摆设摆设后, 选择Exit, 回答下面的问题(Do you wish to save your new kernel configuration? 你盼望保存新的内核设置设置设备摆设摆设吗?), 选择Yes:

6 构建内核

履行下面敕令来构建内核:

make-kpkg clean

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image

kernel_headers

在--append-to-version= 后面你可以写上任何字符串来差别内核版本, 然则必须以" - "符号开始而且后面不包括任何空格.

维持耐心, 内核编译必要必然光阴, 主要看你的内核设置设置设备摆设摆设和处置惩罚器速率.

7 安装新内核

在成功构建内核后, 你在/usr/src目录能发明两个.deb软件包.

cd /usr/src

ls -l

在我的测试系统上, 他们分手名为 linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (包孕了实际的内核) 和 linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb (包孕了必要的文件, 用于今后必要编译额外的内核模块). 我是这样安装的:

dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

(现在你以致能够拷贝这两个.deb文件到其它的Ubuntu系统, 经由过程上面的要领安装. 你将不再必要编译内核.)

然后反省 /boot/grub/menu.lst文件, 现在你将能发明新内核应用的两个向导设置设置设备摆设摆设块:

vi /boot/grub/menu.lst

在我测试系统上已经添加好的向导设置设置设备摆设摆设块是这样的:

title Ubuntu, kernel 2.6.18.1-custom

root (hd0,0)

kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash

initrd /boot/initrd.img-2.6.18.1-custom

savedefault

boot

title Ubuntu, kernel 2.6.18.1-custom (recovery mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single

initrd /boot/initrd.img-2.6.18.1-custom

boot

现在重启系统:

shutdown -r now

假如统统进展顺利, 你的新内核正常事情. 你还可以经由过程运行下面敕令来反省新内核是否运行:

uname -r

这将会显示如:

2.6.18.1-custom

假如系统没有起来, 重启一下, 你会看到:

按ESC进入GRUB菜单:

选择你曩昔的内核启动系统, 现在你能再次考试测验编译新的事情内核. 不要忘怀从/boot/grub/menu.1st文件中移去不必要的向导内核信息.

参考链接:

Ubuntu: http://www.ubuntu.com

The Linux Kernel Archives: http://www.kernel.org

原文链接:http://bl澳门新葡亰游戏881og.zhaoke.com/7.html#more-7

您可能还会对下面的文章感兴趣: