以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 操作系统原理 』  (http://bbs.xml.org.cn/list.asp?boardid=63)
----  [原创]用debian的方式编译内核  (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=34843)


--  作者:binaryluo
--  发布时间:6/24/2006 1:04:00 PM

--  [原创]用debian的方式编译内核
写在前
大家如果看了参考文章【1】可能会觉得我接下来要写的跟它里面写的很像啊,怎么还用“原创”??我之所以在标题前加上“原创”,首先,参考文章【1】里介绍的内容我确实自己实践过;其次,在实施的过程中,有些地方按照它的方法是不行的,或者说是按照它的方法我没有成功,还有些地方它说的不是很清楚的,我又尝试了其他方法,最终搞定,也算是有自己的结论。
本文假设你已经安装了基本系统,主要介绍debian下的内核编译,关于基本系统和桌面的安装网络上有很多资源可以参考,这里将不再赘述。

入题
1.安装好基本系统后,首先要做的是升级刚安装好的基本系统,这是参考文章【1】中没有提到的,否则在进行后面步骤的时候会遇到老的内核(我的是2.6.8-2)被移除的麻烦。

apt-get update
apt-get dist-upgrade

2.系统升级完后,先安装等下需要用到的工具软件。按理说升级的时候这些软件大多都已经装好了,如果没装的,输入下面命令安装:

apt-get install kernel-package ncurses-dev fakeroot wget bzip2 module-init-tools initrd-tools procps

3.然后是下载最新的内核源码。最新的内核源码可以在http://www.kernel.org/上下载。你可以在其他机子或系统上下好后将其拷贝到/usr/src目录;也可以在命令行下用wget下载:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.20.tar.bz2

我安装的时候最新内核是2.6.16.20,现在已经有2.6.17.1了。

4.检查/usr/src目录下是否有linux-2.6.16.20.tar.bz2或你下载的最新版内核存在,解压:

tar jxvf linux-2.6.16.20.tar.bz2

5.制作配置文件,在这里我按照的是参考文章【1】中的方法,直接将现有内核的配置文件考过来用:

cp /boot/config-2.6.8.2 /usr/src/linux-2.6.16.20/.config

6.加载nvidia最新驱动。参考文章【1】中所说的是在testing里有nvidia的源码包,但是我装的时候testing里根本没有,只好又在sources.list里面添加入unstable的源:

deb http://mirror.vmmatrix.net/debian unstable main non-free contrib
deb-src http://mirror.vmmatrix.net/debian unstable main non-free contrib

添加好后,重新更新软件库并安装nvidia源码包:

apt-get update
apt-get install nvidia-kernel-source nvidia-kernel-common

在安装这两个包的时候由于依赖关系,可能会额外的安装其他包,但由于此时使用的是unstable的源,而原来系统用的是testing的源,混合安装可能会出问题,所以我的处理方法是记录下要额外安装的那些包,先到testing里将这些包都安装了,最后又回到unstable下安装上面两个包。我的这种方法有点麻烦,但比较安全,也可能还有其他的方法也能解决这个问题。在下载好nvidia-kernel-source后,在/usr/src下会有一个nvidia-kernel-source.tar.gz包。解压缩:

tar -zxf nvidia-kernel-source.tar.gz

7.现在基本工作已就绪。进入 linux-2.6.16.20目录,先要配置内核:

cd linux-2.6.16.20
make menuconfig

配置内核是比较麻烦的,一个小的错误就可能功亏一篑。所以我也按照参考文章【1】里的方法,只是修改了几个可能出现问题的地方,取消下面的选项:

Block Devices -> Low Performance USB Block driver (BLK_DEV_UB)
Graphics Support -> nVidia Riva support (FB_RIVA)
Kernel Hacking -> Use 4Kb for kernel stacks instead of 8Kb (4KSTACKS)
Processor Type and Features -> Local APIC support on uniprocessors        (X86_UP_APIC)

另外就是选择了适合自己的处理机类型。

8.配置内核开始编译。命令比较简单:

make-kpkg clean
fakeroot make-kpkg –revision=custom.1.0 kernel_image modules_image

编译过程差不多要1个半小时,结束后,你可以在/usr/src下看到两个deb包:kernel-image-*.deb nvidia-kernel-*.deb。

9.下面就是安装新内核:

dpkg -i kernel-image-*.deb nvidia-kernel-*.deb

10.修改启动项文件。首先制作initrd:

cd /boot
mkinitrd -o /boot/initrd.img-2.6.16.20 2.6.16.20

我使用的是grub管理器,还要修改/boot/grub/menu.lst,正常情况下你会发现menu.lst中已经加入了你的新内核的信息,但是你对照着老内核的信息你会发现有点出入——新内核的位置不对,所以要手动修改:

title           Debian GNU/Linux, kernel 2.6.16.20
root            (hd0,6)
kernel          /vmlinuz-2.6.16.20 root=/dev/hda8 ro
initrd          /initrd.img-2.6.16.20
savedefault
boot

title           Debian GNU/Linux, kernel 2.6.16.20 (recovery mode)
root            (hd0,6)
kernel          /vmlinuz-2.6.16.20 root=/dev/hda8 ro single
initrd          /initrd.img-2.6.16.20
savedefault
boot

说明:(hd0, 6)的意思是我的第一块硬盘(我只有一块硬盘)的第六个分区(我的linux装在该分区)。
这些都完成以后就可以重启了,你会在grub管理器里发现你的新内核,选择新内核启动就可以了。

11.使用新内核启动后,需要安装nvidia-glx,要保证nvidia-glx的版本跟nvidia-kernel-source的版本是相同的,所以nvidia-kernle-source用的是什么源nvidia-glx也用什么源。因为刚才下载nvidia-kernel-source的时候我的sources.list是unstable的源,后面没有被修改过,所以直接安装:

apt-get install nvidia-glx

之后,修改/etc/X11/xorg.conf,注释掉dri模块:
Load           "i2c"
Load           "bitmap"
Load           "ddc"
#Load        "dri"
Load           "extmod"
Load           "freetype"
Load           "glx"
Load           "int10"
Load           "type1"
Load           "vbe"

12.安装桌面环境(别忘了修改sources.list为testing源)。

apt-get install x-window-system-core gnome gdm

再重启,gdm加载成功后应该可以看见nvidia的标志,说明nvidia驱动安装也成功了。

13.遗留问题。如果进入系统后如果发现刷新频率调不高,继续修改/etc/X11/xorg.conf:

HorizSync       30.0 - 81.0
VertRefresh     56.0 – 75.0

将水平扫描频率和垂直扫描频率调到你的显示器范围,这两个参数可以在你的显示器说明书上找到。整个编译过程到此也告一段落。

结语
按照上面步骤做基本不会出什么问题了,可以成功编译内核。如果以后对内核研究的熟悉了,在配置的时候要多花点功夫,这样内核会发挥更好的性能。

参考文章
【1】Leo Tzao,Debian 安装手记,http://debian.linuxsir.org/main/?q=node/107
【2】Andrew E. Schulman,Debian-nVidia HOWTO,http://home.comcast.net/~andrex/Debian-nVidia/installation.htm
[/QUOTE]


--  作者:with0out
--  发布时间:7/11/2006 11:43:00 AM

--  
多谢,才用虚拟机装了debian跃跃欲试呢...
:-)
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms