[zz]Debian下编译内核

在 Ubuntu 下编译 2.6.17 内核

简单的介绍怎样在 Ubuntu 下编译新的 2.6.17 内核,这里的方法也
可以用于别的基于 Debian 的系统。

基本原则:
1)尽量用 Debian 系统提供的工具,比如 fakeroot, make-kpkg
2)如果某种设备(主要也就是声卡和显卡)有专门的驱动程序,则
尽量不要用内核带的驱动。
3)Simple is powerful 也就是用不着的东西就不装

进入 root 帐户:

> sudo -s -H


安装必要的工具:

> apt-get install build-essential
(安装 gcc, make 等)
> apt-get install libncurses-dev
(安装 make menuconfig 时必须的库文件)
> apt-get install kernel-package, fakeroot
(Debian 系统里生成 kernel-image 的一些配置文件和工具)
> apt-get install initramfs-tools, module-init-tools
(顾名思义)


安装 kernel-source:

可以从 Ubuntu 的源安装,这样的好处是简单,而且安装的内核
Debian 化了的,缺点是内核不是最新的内核

> apt-get install linux-source

也可以从 www.kernel.org 下载内核安装。kernel.org 的境象应该
很多,选一个最快的来下载,因为要下载的文件很大。我这里介绍的
是安装 2.6.17 的内核,加上了 ck 的补丁。

下载 linux-2.6.17.tar.bz2 和 patch-2.6.17-ck1.bz2 ,并且把它
们都存放在 /usr/src 目录下。

> tar xvjf linux-2.6.17.tar.bz2
> ln -s linux-2.6.17 linux
(如果已经有了 linux 目录,则要先将其删除)
> cd linux
> bzcat ../patch-2.6.17-ck1.bz2 | patch -p1

至此,内核源文件以及补丁就都安装好了。


安装声卡和显卡驱动:(可选)

> apt-get install alsa-source
(可能会建议安装 kernel-source-2.4.**, 选择不安装这个
kernel-2.4.**)

该命令会在目录下生成一个 alsa-driver.tar.bz2 文件。

> cd /usr/src
> tar xvjf alsa-driver.tar.bz2

该命令会在 /usr/src/modules 目录下生成 alsa-driver 目录

> dpkg-reconfigure
(选择你机器上有的声卡)

因为我的显卡是 nvidia 所以我就只介绍如何安装 nvidia 的驱动

> apt-get install nvidia-kernel-source
> cd /usr/src
> tar xvzf nvidia-kernel-source.tar.gz

在 /usr/src/modules 目录下生成了 nvidia-kernel 目录


配置内核

> cd /usr/src/linux
> make menuconfig

也可以在执行 make menuconfig 之前从 /boot 目录拷贝一个
config 文件

> cp /boot/config-2.6.15-25-386 .config

怎样配置内核是一个大学问,你如果有时间,可以一项一项的看帮
助,然后决定如何配置。

以下是一些你可以考虑的优化选项:

a. Block layer --> Support for Large Block Devices
(我想大家应该没有那么有钱能有那么大的设备,所以可以不选)
b. Processor type and features --> Subarchitecture type
Processor type and features --> Processor family
(不用多说,大家都明白)
c. Processor type and features --> High Memory Support
(如果你的机器没有4G的内存,可以不选)
d. Power Management Options 里可以 disable 掉所有非 ACPI 的选
项。当然如果你的机子够老则另当别论。
e. Networking --> Networking options 里的大部分我都 disable
了,只留下了我必须的,比如: Packet socket, Unix domain
sockets, TCP/IP networking 等,事实上我只选择了这些。
f. Device Driver Options 里的很多选项都完全用不到,比如
Parallel Port support, Memory Technology Devices, Old
CD-ROM drivers 等
g. Device Driver Options --> ATA/ATAPI/MFM/RLL support 是关于硬
盘等的,建议小心处理。
h. Device Driver Options --> Network device support 里就只用选你
的显卡
i. Device Driver Options --> Character devices --> /dev/agpgart
因为 nvidia 的驱动自带了 AGP 支持,所以我彻底 disable 了这一
项。事实上,menuconfig 可能不让 disable 这一项,我是通过手工修
改 .config 文件来彻底 disable 这一项的。
j. Device Driver Options --> Direct Rendering Manager (...)
不选,原因同上 (只对有 nvidia 卡的系统)
k. Device Driver Options --> Graphics support
这一项我也完全没有选,因为我通常都在图形界面工作,所以不需要
一个 Graphic 了的文本界面,
l. Device Driver Options --> Sound
只选择了 Sound Card support。 Advanced Linux Sound Architecture
和 Open Sound System 下的选项都没有选,因为有专门的ALSA Driver
m. 因为我的系统是台式机,所以所有关于笔记本的选项也都可以不选。
n. 所有关于 log, debug 的选项也都没有选。


编译内核和驱动:

> cd /usr/src/linux
> make-kpkg clean
> fakeroot make-kpkg --initrd --append-to-version=-686-smp
--rev=1.0 kernel_image modules_image

说明:initrd 选项是为了生成 initrd.img 用的。 另外的 -686-smp 和
1.0 可以是任何别的一些字符串。

如果一切顺利,该命令结束以后会在 /usr/src 目录下生成三个 deb 文件,
分别是 kernel-image-2.6.17-ck1_1.0_i386.deb, nvidia-kernel-****.deb
和 alsa-****.deb

安装:

> cd /usr/src
> dpkg -i kernel-***.deb nvidia-***.deb alsa-***.deb

系统会自动安装内核,生成 initrd 境象,配置 grub 菜单。

最后的说明:

a. 如果因为某些原因使得新装的内核不能正常工作而需要对内核作一些小
修改,则只需要进入 /usr/src/linux 后 make menuconfig,然后不用
make-kpkg clean 而直接
fakeroot make-kpkg --initrd --append-to-version=*** --rev=**
!这里 rev 和 append-to-version 的参数要和原来的一样。
这样可以节省很多重新编译的时间。

b. 新的内核的第一次运行时,图形界面有可能不能正常工作,只需进入
root 帐户,执行 depmod ,然后再 /etc/init.d/gdm restart 。

Tags: kernel, debian

« 上一篇 | 下一篇 »

只显示10条记录相关文章

关于debian下某文件缺少某文件查找包的方法 (浏览: 17956, 评论: 0)
关于resin下java.lang.NoSuchMethodError (浏览: 22058, 评论: 0)
[zz]Debian安装/设置笔记 (浏览: 21100, 评论: 0)

发表评论

评论内容 (必填):