Debian 编译内核的方式及相关
时间:2006-01-16 来源:零二年的夏天
Debian 编译内核的方式及相关
作者:PopZslam
免责声明:这个文档主要来自http://www.douzhe.com/docs/linux/debian/ch-kernel.zh-cn.html,本文作者虽然力图准确无误,但亦不能保障万无一失。阅读诸君宜斟酌而行。本文作者不承担由此而造成的任何损失。
版权声明
Copyright ? 2006 PopZslam
This manual is licensed under the terms of the GNU FDL (Free Documentation License). It has been written in the hope that it will be useful to the community but it comes with no warranty; use it at your own risk.
写在内核编译前面
Debian unstable发行版中的gcc、binutils和modutils可用来编译最新的Linux内核。这方面的官方信息,参阅/usr/share/doc/kernel-package/README.gz文件的后半部分。
内核编译是个很困难的议题,由于目标在不断的变化,即使是最受人尊敬的开发者也会有不同的见解:
Manoj Srivastava写到:
--initrd需要Debian专用cramfs补丁。
Herbert Xu写到:
不,它不需要,想使用除CRAMFS以外的文件系统只需在/etc/mkinitrd/mkinitrd.conf中设置MKIMAGE。
按照Manoj和Kent撰写的/usr/share/doc/kernel-package/README.gz的指导小心行事,如果要编译最新版本的内
核请确认安装了最新unstable版kernel-package软件包。
对于单机内核编译,initrd不是必须的。我用它是希望我新编译的内核与相应的内核镜像一模一样。如果使用initrd,请先阅读一下mkinitrd(8)和mkinitrd.conf(5)。亦可参阅http://bugs.debian.org/149236。
Debian标准方式
关心一下有关kernel-package、gcc、binutils和modutils的错误报告。请按有关要求使用较新的版本。
在Debian系统中用源码编译自定义内核要特别小心。用make-kpkg的--append_to_version选项来创建多重内核镜像比较安全。
# apt-get install debhelper modutils kernel-package libncurses5-dev# apt-get install kernel-source-2.4.18 # 使用最新版本
# apt-get install fakeroot
# vi /etc/kernel-pkg.conf # 输入我的名字和email
$ cd /usr/src # 创建目录
$ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
$ cd kernel-source-2.4.18 # 如果这是你的内核源码
$ cp /boot/config-2.4.18-386 .config # 将当前配置设定为默认配置
$ make menuconfig # 按自己的喜好来定制
$ make-kpkg clean # 必须执行这步(per: man make-kpkg)
$ fakeroot make-kpkg --append_to_version -486 --initrd \
--revision=rev.01 kernel_image \
modules_image # modules_image可以是pcmcia-cs*等。
$ cd ..
# dpkg -i kernel-image*.deb pcmcia-cs*.deb # 安装
make-kpkg kernel_image实际上执行了make oldconfig和make dep。如果没使用initrd就不要使用--initrd选项。
如果想加载pcmcia-cs模块或没有pcmcia,应该在make menuconfig后选“General setup —>”进入“PCMCIA/CardBus support —>”,配置“< > PCMCIA/CardBus support”选项(例如,取消复选项)。
对于SMP机器,参照kernel-pkg.conf(5)的说明设置CONCURRENCY_LEVEL。
经典方式
从下列地址获得干净的源代码:
* Linux: http://www.kernel.org/
* pcmcia-cs: http://pcmcia-cs.sourceforge.net/
或使用Debian所附的等价的源代码:
# cd /usr/src# tar xfvz linux-whatever.tar.gz
# rm -rf linux
# ln -s linux-whatever linux
# tar xfvz pcmcia-cs-whatever.tar.gz
# ln -s pcmcia-cs-whatever pcmcia
# cd linux
# make menuconfig
... 配置内核选项 ...
# make dep
# make bzImage
... 编辑lilo/grub ...
... 移动/usr/src/linux/arch/i386/boot/bzImage到boot ...
... /sbin/lilo or whatever you do for grub
# make modules; make modules_install
# cd ../pcmcia
# make config
# make all
# make install
... 添加需要的模块名称到/etc/modules
# shutdown -r now
... 启动到新内核 ...