LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2293|回复: 6

Wiki译文:Kernel compilation(注:水平不行多包涵)

[复制链接]
发表于 2005-4-1 10:57:43 | 显示全部楼层 |阅读模式
Kernel compilation
你可以用/usr/src(本文内容)方法来编译内核,也可以用ABS:Kernel compilation with ABS。少数Arch使用者更乐意使用/usr/src这个方法,不过使用ABS在自动配置某些方面很好用。这个取决于你自己,并不是说某个方法就一定比较好。

下面的内容对生成Arch内核很有帮助。编译内核的常用方法对所有发行版都大同小异。想了解关于这方面的详细内容,请到http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html

1.改下默认内核名字后缀,这样等于做了个备份,比把它们删除要好很多。
  1. # cd /usr/src
  2. # mv linux-2.x.x linux-2.x.x.arch
  3. # mv /lib/modules/linux-2.x.x /lib/modules/linux-2.x.x.arch
  4. # mv /boot/vmlinuz2x vmlinuz-2.x.x.arch
  5. # mv /boot/System.map2x System.map-2.x.x.arch
  6. # mv /boot/kconfig2x /boot/kconfig-2.x.x.arch
复制代码

这是个好办法,再修改你的grub/lilo配置来确保可以引导系统。有相关的内容。

2.从ftp.xx.kernel.org/pub/linux/kernel/下载源代码,这里xx指的是你所在国家的标识, (例如 'us', 'de', 'uk', ... - 到 http://www.kernel.org有镜象列表 )。如果你没有图形界面的ftp工具,你可以用wget。举个例子,我们要下载编译kernel2.6.6;你只需要改变一下版本号就可以得到不同的内核。

  1. # wget ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
复制代码


3.把内核移动/复制到/usr/src

4.解压缩

  1. # tar --bzip2 -xvf linux-2.6.6.tar.bz2
复制代码


5.(可选) 拷贝旧的.config文件,如果你要修改Arch的默认设置。

  1. # cp /usr/src/linux-2.x.x.arch/.config /usr/src/linux-2.6.6/
复制代码


6.进入到该目录配置内核,如果你要用devfs记得要激活它(除非你使用udev).下面说明了具体操作。

  1. # rm /usr/src/linux
  2. # ln -s /usr/src/linux-2.66 /usr/src/linux
  3. # cd /usr/src/linux
  4. # make menuconfig
复制代码

你也可以使用make xconfig(依赖Qt)或者make gconfig(依赖GTK).

7.保存设置。最好做个备份,因为你很可能要重复多次才全部搞定。

8.编译。警告:不要运行make all命令,如果你使用grub引导同时还安装有lilo.编译过程最后会去配置lilo,你的系统很可能再也起不来了。

  1. # make -s clean bzImage modules modules_install
复制代码


9.拷贝内核

  1. # cp -v /usr/src/linux-2.6.6/arch/i386/boot/bzImage /boot/vmlinuz-2.6.6-revision1
  2. # cp -v /usr/src/linux-2.6.6/arch/i386/Kconfig /boot/Kconfig-2.6.6-revision1
  3. # cp -v /usr/src/linux-2.6.6/System.map /boot/System.map-2.6.6-revision1
复制代码

要是你用lilo,那就让安装脚本自己去拷贝配置它。你完全可以随便更改kernel,Kconfig,和System.map这些文件的名称。名字-版本-修订版 这种命名方法很简明,在你编译了多个内核时候非常有用。你也可以给名字加上日期和时间,你愿意的话也可以用更简单的命名方法。

  1. # cd /usr/src/linux-2.6.5/arch/i386/boot/
  2. # sh ./install.sh
复制代码


10.配置Grub或者LiLo,如果你还没去配置好。你是用lilo的话记得输入lilo命令来升级它。
发表于 2005-4-1 13:07:47 | 显示全部楼层
辛苦了。顺便说明一下,这个方法是所有发行版都适用的。

如果有ABS的方法就更好了。个人认为ABS就是替换config文件再makepkg就行,没有实验过,不知有实验过吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-1 13:31:38 | 显示全部楼层
我用ABS试过,不过中途停止了,因为对config文件某些内容不了解,编译一次时间又很长
回复 支持 反对

使用道具 举报

发表于 2005-4-1 16:48:13 | 显示全部楼层
Post by tx-cary
辛苦了。顺便说明一下,这个方法是所有发行版都适用的。

如果有ABS的方法就更好了。个人认为ABS就是替换config文件再makepkg就行,没有实验过,不知有实验过吗?



仍然没有实验。
不过关于ABS编译内核也有相应的wiki。我这里翻译了个开头,一直没时间继续了。那篇文章提供了一个PKGBUILD。其中,config替换成了xconfig。之后有几条命令,就是用xconfig生成的.config文件替换了ABS默认的那个。然后才make的。
回复 支持 反对

使用道具 举报

发表于 2005-4-1 19:36:49 | 显示全部楼层
一直用ABS编译kernel,还是喜欢用arch自己的方式编译,WiKi上的PKGBUILD,最好在里面加上
export LANG=en_US.UTF-8 ,否则不能生成最后的config,主要是时间显示的问题,不改也没问题的,就最后会有点错误信息
回复 支持 反对

使用道具 举报

发表于 2005-4-1 23:20:07 | 显示全部楼层
我用过archlinux forum里面那个nitro patch的PKGBUILD编译过nitro1 for 2.6.11和nitro2 for 2.6.11感觉没有什么太大问题(nitro1不是太稳定)
回复 支持 反对

使用道具 举报

发表于 2005-4-3 18:38:49 | 显示全部楼层
编译 新内核
还是喜欢用原始 方法
毕竟 电脑没我智商高 - -!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表