2.6.8内核编译全过程

经历了整整两天的编译、编译、再编译,终于搞定了 2.6.8的内核,用着2.6.8的内核,现在写下这篇文章,给大家一个借鉴。

首先,必须得承认: 2.6.8的内核速度真的很快,呵呵!

我的系统:rh as 3 update2

1.下载及解压:到kernel.org下载 2.6.8的内核源码包,然后解压到/usr/src下,形成一个linux-2.6.8的文件夹。

2.升级系统必要工具:包括module_init_toolsmkinitrd

安装module-init-tools-3.0.tar.gz工具包

linux-2.6.x内核的module处理过程有所改变(很多原先在用户态下由modutils处理的工作都放到内核里去完成了), 因此2.4.x下的modutils工具包已经不在适合新的2.6.x内核, 必需将其升级到module-init-tools工具包. 该工具包的最新版本是3.0

可以下载module-init-tools-3.0.tar.gz源码包的地方有两个:

Rusty's Linux Kernel Page: http://www.kernel.org/pub/linux/ker...ools-3.0.tar.gz

http://www.kernel.org/pub/linux/uti...ools-3.0.tar.gz

接下来, 按照下列步骤安装module-init-tools工具包:

# configure --prefix=/

# make moveold

# make all install

# ./generate-modprobe.conf /etc/modprobe.conf

命令"make moveold"将把系统原来的modutils工具程序改名为"*.old"(比如,lsmod.old等等). NOTE! 这是非常重要的一步, 千万不要省略. 这将使得你可以继续使用原有的linux-2.4.x系统, 因为在2.4.x系统下, 新的module-init-tools工具包实际上是倚赖原来"*.old"程序来加载内核模块. 如果忘记了这一步也不要紧张, 可以先下载并安装原来的modutils程序包, 然后按照上面的步骤重来一遍就可以了.

新的module-init-tools工具包不再使用原来的/etc/modules.conf配置文件了, 而是使用新的配置文件/etc/modprobe.conf. 因此必需用命令"./generate-modprobe.conf  etc/modprobe.conf"来生成新的配置文件/etc/modprobe.conf.

更新mkinitrd程序

由于依赖性的问题,升级这个软件包需要下载如下包:

mkinitrd- 3.5.15.1-2.i386.rpmdevice-mapper-1.00.07-1.i386.rpm

device-mapper- 1.00.07-3.1.i386.rpm  lvm2-2.00.08-2.i386.rpm

直接rpm -ivh安装即可。

3.内核配置及编译:

内核配置可以选择自己喜欢的工具,如make config,make menuconfig,make xconfig,make gconfig等,最终得到的效果都是一样的生成一个“.config”。由于我是只安装了Gnome,所以make xconfig自然没法用了,好在make gconfigmake menuconfig都不错:)

内核配置中有几点需要注意的地方:

o关于"Loadable Module support"选项, 一定要选上"Module unloading""Automatic kernel module loading"这两个选项.

o 关于"Processor type and features"选项, 一定要选上"Preemptible Kernel"选项, 这是2.6.x内核优于2.4.x内核的重要原因之一.

o 关于"Block Devices"的配置, 一定要选上对loopbackramdisk的支持.

o 关于"Multi-device support(RAID and LVM)", 要选上"device mapper".

o 关于"Input device support", 记得要选上"Keyboards""Mice"的支持.

o 关于"Graphics support", 要选上对frame buffer的支持,要安装nvidia驱动的绝对不要选择RIVA Frame buffer支持,如果选择了,将无法安装nvidia驱动。

o 关于"Sound" 2.6.8内核默认是用的ALSA的驱动,选择如下:

     Device Drivers --->

     Sound --->

     [*[ Sound card support

     Advanced Linux Sound Architecture --->

     [*] Advanced Linux Sound Architecture

     [*] Sequencer support

     [ ] Sequencer dummy client

     [*] OSS Mixer API

     [*] OSS PCM (digital audio) API

 [*] OSS Sequencer API

     [*] RTC Timer support

     PCI devices --->

     [M] Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

     Open Sound System --->

     [ ] Open Sound System (DEPRECATED)

我的声卡是Nforce 2 AC97,用的驱动也是snd-intel8x0,而这个模块我编译成了模块,其实编译进内核也是一个好注意:)

o 关于USB, 几个重点模块usbhid,ohci-hcd,ehci-hcd,usbmouse,usbcore等等我全部直接编译进内核了,开始的几次都编译为模块,但是在rc.sysinit运行到modprobe的时候总是提示read-only filesystem,无法加载到内核,但是进入系统后手动modprobe又可以,所以一气之下全部编译进内核,反正我是用的usb鼠标,必须得有usb支持。

o 关于文件系统, 选上常用的那几种就可以了. 如果要体验sysfs的话, 要选上对sysfs的支持(到现在我也不知道这个sysfs到底有什么用处?)但是,一个重点问题是Ext3的文件系统一定要直接编译进内核,这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed 。选项如下:

File systems--->

[*] Ext3 journalling file system support

[*] Ext3 Security Labels

[*] JBD (ext3) debugging support

o 关于显卡驱动的问题,我的主板是Nforce2芯片组,显卡为Nvidia Geforce 4 Ti 4200as 3刚刚安装时,无论怎样装显卡驱动或者修改XFconig,都无法正常使用显卡驱动,只要安装,使用nvidia模块x就必死无疑。经过反复研究,终于发现是内核中的Agpgart模块的问题,所以,内核配置中重点要选择如下:

Device Drivers --->

character Device--->

<*> /dev/agpgart (AGP Support)

<*>   NVIDIA nForce/nForce2 chipset support

其他就根据具体情况配置一下,懒得话默认也可以了。

然后就:make

make modules_install

make install

这时,你的grub.conf文件中已经多了一项新内核的启动项了。但是,2.6的内核不认识默认给出的root=LABEL=/,必须改成root=/dev/hda9,我的是hda9,你的根据实际情况而定。

4.其他配置文件改动:

/etc/modprobe.conf的修改:由于usb的所有模块都已经直接编译进了内核,所以/etc/modprobe.conf文件中所于关于usb的行都可以删除了,当然,如果你不想全部编译进内核的话,或者你能成功自动modprobe上的话(当然不是自己在rc.local中写modprobe),你就需要修改一些地方了:

alias usb-controller usb-ohci要把它改为:alias usb-controller ohci-hcd

alias char-major-13-32 mousedev改成alias char-major-13-32 usbmouse

如果你有usb键盘的话还需要把:keybdev改成usbkbd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值