参考
http://forum.ubuntu.org.cn/weblog.php?w=482写成
有关内核精简的内容,看3楼。 最新NV驱动才能在2.6.28及其以后的内核上使用ATI官方(受限)显卡驱动看这个帖子一、下载源代码和编译软件准备下载内核源代码:
注意,点击2.6.29内核的F版,即完整版。
如果你懒得去网站点联接,运行下列命令:
代码:
cd ~/
wget
安装有关编译程序。安装make ,gcc, make-kpkg,运行xconfig等等和编译内核相关的工具。安装不了,请检查/etc/apt/sources.list 文件。
有关命令:
代码:
sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot
二、解压源代码并打上补丁注意,很多教程上说应该解压到 /usr/src,但是linux掌门人linus说解压到任何目录上都可以。
根据我的实验,linus的说法是正确的。我放在自己的主目录下的linus目录。
代码:
tar jfx linux-2.6.29.tar.bz2 -C ~/linus
你要把'~/linus'改成你自己解压linux-2.6.29.tar.bz2的目录,
注意目录容量要到达1.5G现在,源代码就在 ~/linus/linux-2.6.29/
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。
代码:
cd ~/linus/linux-2.6.29/
下载并安装升级补丁
代码:
wget
bzcat patch-2.6.29.2.bz2 | patch -p1
升级内核可以参考下面的附件
附件:
[26.46 KiB] 被下载 1658 次 三、开始编译前的准备工作。首先,清理以前编译时留下的临时文件,如果是刚刚解开的包,据我的实践,不需要执行这步。执行与否,自己考虑。
相关命令如下:
代码:
make mrproper
很多教程上说把现在使用的内核的config拷贝过来参考,据我的实践,也不需要,ubuntu还有debian会自动做这步。
执行与否,自己考虑。
命令如下:
代码:
cp /boot/config-`uname -r` ./.config
四、开始配置内核选项。相关命令:
代码:
sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt#安装xconfig依赖包,
make xconfig
选项意义:圆中点是编译成可以随时加人的模块(以下简称M),方块中一勾是编译进入内核(以下简称Y),空就是不要(简称N)。(如下图)
附件:
Screenshot-4.png [ 191.05 KiB | 被浏览 27527 次 ]
具体配置请参考金步国先生翻译的资料:内核编译配置选项。
网址:
(已经添加到附件)
附件:
[32.29 KiB] 被下载 1382 次 刘少侠的2.6.28中文手册
附件:
[1.08 MiB] 被下载 5547 次 为了一次成功,请大家遵循一个原则,如果你自己使用的内核已经选用了某个选项,如果你没用充分的理由,不要随便改动。
这样虽然内核不那么精简,但是不容易出现问题。
我自己是按照这个原则一项项对过去,按照金步国先生的资料描述去选择基本上没有问题。
但是有几个问题要强调:
1、在“General setup”里面,有几项普通用户可以放心的去掉,分别是:POSIX Message Queues 、Cpuset Support、Create deprecated sysfs files、Kernel->user space relay support (formerly relayfs) 2、在“Block layer”里,假如没有2TB的硬盘,就去掉:Support for Large Block Devices 。3、在“ Timer frequency ”里,默认是250Hz,最好选择1000Hz以提高gui响应4、下列选项请慎重选择:Bus options (PCI, PCMCIA, EISA, MCA, ISA)PCI supportPCI Express support 老式机器没有PCI-E设备的可以选NISA support 较新的新机器没有ISA设备,可以选NMCA support 一般选NNatSemi SCx200 support 一般选NPCI Hotplug SupportSupport for PCI Hotplug (EXPERIMENTAL) 如果没有PCI热插拔设备,选NATA/ATAPI/MFM/RLL supportInclude IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盘上,那么这里一定要选Y,选M都不行。否则启动时会出现“waiting for root file system”的提示而停滞不前。SCSI device support 如果有SATA硬盘,就选YSCSI disk support 如果你的/boot放在SATA硬盘上,一定要选Y。Character devicesI2C support 一般可以选Y或者MGraphics support 不建议把显卡驱动编译进内核。,选M,编译成模块方便日后升级驱动。VESA VGA graphics support 我的机器显卡是ati 3d lt,linux里面的型号定为mach64,我发现除了自己的显卡选项,一定要选择这项,编译进内核,如果不选,显示出现问题。如果你不确定的话,选上吧。File systemsCD-ROM/DVD FilesystemsISO 9660 CDROM file system support 一般选YDOS/FAT/NT FilesystemsVFAT (Windows-95) fs support 有FAT32分区就选Y吧NTFS file system support 有NTFS分区就选Y吧NTFS write support 如果想对 NTFS分区进行写操作,选Y全部设置完成,请保存设置。按照我的习惯,先在上一层目录保存一个备份,文件名类似 ../config
然后保存到当起目录,文件名 .config
退出设置程序。
五、开始编译内核。ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
相关命令:
代码:
sudo make-kpkg clean #这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
fakeroot make-kpkg --initrd --append-to-version=david0.75 kernel_image
上述命令中的david0.75大家用自己喜欢的字符代替.
输完上述命令回车之前,建议大家把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。我的p4 1.7G机器用了30分钟。
六、安装内核编译完成就是安装工作。编译好的内核在上一层目录。我的是linux-image-2.6.29.2david0.75_2.6.29.2david0.75-10.00.Custom_i386.deb
代码:
cd..
sudo dpk -i linux-image-2.6.29.2david0.75_2.6.29.2david0.75-10.00.Custom_i386.deb
文件名很长,如果不用tab自动补足是不可能的,tab键万岁。
安装完成后和老内核比较一下大小
代码:
ls -l /boot/
注意:安装完后先不要动linux-2.6.29的目录,可能还要安装驱动七、重新启动验证新内核。sudo reboot八、如果。。。grub菜单上选用老内核启动机器,推倒重来
附,重启后N卡驱动安装最新NV驱动才能在2.6.29内核上使用在内核升级后可以自动安装nvdia驱动重启后不能直接进入X11,先编译nvidia驱动官方(先删除旧的驱动)
代码:
sudo sh NV******.run
如果显示找不到内核源码用
代码:
sudo sh NV******.run --kernel-source-path=你编译内核的目录,
如
sudo sh NV******.run --kernel-source-path=/home/david/linus/linux-2.6.29
具体安装方法见(看了wiki还解决不了N卡驱动楼下提问)
ATI官方(受限)显卡驱动看这个帖子inter显卡和用开源驱动(没装受限驱动)打开特效的ati显卡编译内核后不需要安装驱动,不过没用过,drcom-1.4.8才支持linux-2.6.28以上内核
附件:
[42.02 KiB] 被下载 169 次
补充1:如果编译内核后,只是希望修改某些模块(M)选项,可以不用完全重新编译。
只需要执行
make xconfig
然后之添加或减少模块(M)选项
然后(不要执行make mrproper和sudo make-kpkg clean),
直接执行编译命令如
sudo make-kpkg -initrd --initrd --append-to-version=david0.68 kernel_image #整条命令要和上次编译时一样
make就会在原来编译的基础上,编译新选上的模块(如果有的话),而不会全部重新编译。
这样可以节省大量时间和能源,尤其是你电脑不是很快的话。欢迎大家提意见