« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 登录 |
| 联系我 email: binaryluo(at)gmail.com
Blog信息 |
blog名称:二进制-虚心使人进步,骄傲使人落后。 日志总数:42 评论数量:370 留言数量:88 访问次数:640652 建立时间:2005年2月19日 |

| |
[Linux学习与研究]【原创】用debian的方式编译内核 原创空间, 读书笔记, 心得体会, 软件技术, 电脑与网络
binaryluo 发表于 2006/6/24 12:53:11 |
写在前大家如果看了参考文章【1】可能会觉得我接下来要写的跟它里面写的很像啊,怎么还用“原创”??我之所以在标题前加上“原创”,首先,参考文章【1】里介绍的内容我确实自己实践过;其次,在实施的过程中,有些地方按照它的方法是不行的,或者说是按照它的方法我没有成功,还有些地方它说的不是很清楚的,我又尝试了其他方法,最终搞定,也算是有自己的结论。本文假设你已经安装了基本系统,主要介绍debian下的内核编译,关于基本系统和桌面的安装网络上有很多资源可以参考,这里将不再赘述。入题1.安装好基本系统后,首先要做的是升级刚安装好的基本系统,这是参考文章【1】中没有提到的,否则在进行后面步骤的时候会遇到老的内核(我的是2.6.8-2)被移除的麻烦。
CODE:
[Copy to clipboard]
apt-get updateapt-get dist-upgrade2.系统升级完后,先安装等下需要用到的工具软件。按理说升级的时候这些软件大多都已经装好了,如果没装的,输入下面命令安装:
CODE:
[Copy to clipboard]
apt-get install kernel-package ncurses-dev fakeroot wget bzip2 module-init-tools initrd-tools procps3.然后是下载最新的内核源码。最新的内核源码可以在http://www.kernel.org/上下载。你可以在其他机子或系统上下好后将其拷贝到/usr/src目录;也可以在命令行下用wget下载:
CODE:
[Copy to clipboard]
cd /usr/srcwget 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或你下载的最新版内核存在,解压:
CODE:
[Copy to clipboard]
tar jxvf linux-2.6.16.20.tar.bz25.制作配置文件,在这里我按照的是参考文章【1】中的方法,直接将现有内核的配置文件考过来用:
CODE:
[Copy to clipboard]
cp /boot/config-2.6.8.2 /usr/src/linux-2.6.16.20/.config6.加载nvidia最新驱动。参考文章【1】中所说的是在testing里有nvidia的源码包,但是我装的时候testing里根本没有,只好又在sources.list里面添加入unstable的源:
CODE:
[Copy to clipboard]
deb http://mirror.vmmatrix.net/debian unstable main non-free contribdeb-src http://mirror.vmmatrix.net/debian unstable main non-free contrib添加好后,重新更新软件库并安装nvidia源码包:
CODE:
[Copy to clipboard]
apt-get updateapt-get install nvidia-kernel-source nvidia-kernel-common在安装这两个包的时候由于依赖关系,可能会额外的安装其他包,但由于此时使用的是unstable的源,而原来系统用的是testing的源,混合安装可能会出问题,所以我的处理方法是记录下要额外安装的那些包,先到testing里将这些包都安装了,最后又回到unstable下安装上面两个包。我的这种方法有点麻烦,但比较安全,也可能还有其他的方法也能解决这个问题。在下载好nvidia-kernel-source后,在/usr/src下会有一个nvidia-kernel-source.tar.gz包。解压缩:
CODE:
[Copy to clipboard]
tar -zxf nvidia-kernel-source.tar.gz7.现在基本工作已就绪。进入 linux-2.6.16.20目录,先要配置内核:
CODE:
[Copy to clipboard]
cd linux-2.6.16.20make menuconfig配置内核是比较麻烦的,一个小的错误就可能功亏一篑。所以我也按照参考文章【1】里的方法,只是修改了几个可能出现问题的地方,取消下面的选项:
QUOTE:
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.配置内核开始编译。命令比较简单:
CODE:
[Copy to clipboard]
make-kpkg cleanfakeroot make-kpkg –revision=custom.1.0 kernel_image modules_image编译过程差不多要1个半小时,结束后,你可以在/usr/src下看到两个deb包:kernel-image-*.deb nvidia-kernel-*.deb。9.下面就是安装新内核:
CODE:
[Copy to clipboard]
dpkg -i kernel-image-*.deb nvidia-kernel-*.deb10.修改启动项文件。首先制作initrd:
CODE:
[Copy to clipboard]
cd /bootmkinitrd -o /boot/initrd.img-2.6.16.20 2.6.16.20我使用的是grub管理器,还要修改/boot/grub/menu.lst,正常情况下你会发现menu.lst中已经加入了你的新内核的信息,但是你对照着老内核的信息你会发现有点出入——新内核的位置不对,所以要手动修改:
CODE:
[Copy to clipboard]
title Debian GNU/Linux, kernel 2.6.16.20root (hd0,6)kernel /vmlinuz-2.6.16.20 root=/dev/hda8 roinitrd /initrd.img-2.6.16.20savedefaultboottitle Debian GNU/Linux, kernel 2.6.16.20 (recovery mode)root (hd0,6)kernel /vmlinuz-2.6.16.20 root=/dev/hda8 ro singleinitrd /initrd.img-2.6.16.20savedefaultboot说明:(hd0, 6)的意思是我的第一块硬盘(我只有一块硬盘)的第六个分区(我的linux装在该分区)。这些都完成以后就可以重启了,你会在grub管理器里发现你的新内核,选择新内核启动就可以了。11.使用新内核启动后,需要安装nvidia-glx,要保证nvidia-glx的版本跟nvidia-kernel-source的版本是相同的,所以nvidia-kernle-source用的是什么源nvidia-glx也用什么源。因为刚才下载nvidia-kernel-source的时候我的sources.list是unstable的源,后面没有被修改过,所以直接安装:
CODE:
[Copy to clipboard]
apt-get install nvidia-glx之后,修改/etc/X11/xorg.conf,注释掉dri模块:
CODE:
[Copy to clipboard]
Load "i2c"Load "bitmap"Load "ddc"#Load "dri"Load "extmod"Load "freetype"Load "glx"Load "int10"Load "type1"Load "vbe"12.安装桌面环境(别忘了修改sources.list为testing源)。
CODE:
[Copy to clipboard]
apt-get install x-window-system-core gnome gdm再重启,gdm加载成功后应该可以看见nvidia的标志,说明nvidia驱动安装也成功了。13.遗留问题。如果进入系统后如果发现刷新频率调不高,继续修改/etc/X11/xorg.conf:
CODE:
[Copy to clipboard]
HorizSync 30.0 - 81.0VertRefresh 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
|
|