首先说下我的环境win2kpro+Vmware(虚拟scsi的Redhat9)能联网
然后说说需要的文件和要素:
1.Linux-2.6.0.tar.gz
2.module-init-tools-3.2-pre9.tar.gz
3.mkinitrd-3.5.14-1-i386.rpm
4.不怕失败的心
下面说说详细的步骤和作法:
[ljjk@ljjk ljjk]#wget http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.gz
[ljjk@ljjk ljjk]#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.0.tar.gz
[ljjk@ljjk ljjk]# wget ftp://ftp.mbl.is/pub/fedora/1/i386/os/Fedora/RPMS/mkinitrd-3.5.14-1.i386.rpm
现在软件具备了,下一步就是开始具体的做了:
[ljjk@ljjk ljjk]#cp module-init-tools-3.2.tar.gz /usr/src
[ljjk@ljjk ljjk]#cp linux-2.6.0.tar.gz /usr/src
[ljjk@ljjk ljjk]#cp mkinitrd-3.5.14-1.i386.rpm /usr/src
[ljjk@ljjk ljjk]#cd /usr/src
[ljjk@ljjk src]#tar zxvf module-init-tools-3.2.tar.gz
[ljjk@ljjk src]#tar zxvf linux-2.6.0.tar.gz
[ljjk@ljjk src]#rpm -Uvh mkinitrd-3.5.14-1.i386.rpm
[ljjk@ljjk src]#rpm -qa|grep initrd
mkinitrd-3.5.14-1-i386
[ljjk@ljjk src]#cd module-init-tools-3.2
[ljjk@ljjk module-init-tools-3.2]#./configure --prefix=/
[ljjk@ljjk module-init-tools-3.2]#make moveold
[ljjk@ljjk module-init-tools-3.2]#make
[ljjk@ljjk module-init-tools-3.2]#make install
[ljjk@ljjk module-init-tools-3.2]#cd ..
[ljjk@ljjk src]#tar zxvf linux-2.6.0.tar.gz
[ljjk@ljjk src]#cd linux-2.6.0
[ljjk@ljjk linux-2.6.0]#make mrproper
[ljjk@ljjk linux-2.6.0]#make menuconfig
其实可以根据自己的需要进行选择!我的是scsi虚拟硬盘。
下面着重讲几个重要的配置:
* 关于"Loadable Module support"选项, 一定要选上"Module unloading"和"Automatic kernel module loading"这两个选项.
* 关于"Processor type and features"选项, 一定要选上"Preemptible Kernel"选项, 这是2.6.x内核优于2.4.x内核的重要原因之一.
* 关于"Block Devices"的配置, 一定要选上对loopback和ramdisk的支持.
* 关于"Multi-device support(RAID and LVM)", 要选上"device mapper".
* 关于"Input device support", 记得要选上"Keyboards"和"Mice"的支持.
* 关于"Graphics support", 要选上对frame buffer的支持.
* 关于ALSA, 要选上"OSS API emulation"选项. OSS可以不用了.
* 关于USB, 能选的都选上吧
* 文件系统 ,请务必要选中ext3文件系统,
File systems--->
[*] Ext3 journalling file system support
[*] Ext3 Security Labels
[*] JBD (ext3) debugging support
以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
* 网卡驱动
请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考
Device Drivers--->
Networking support--->
Ethernet (10 or 100Mbit) --->
<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)
<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support
* 声卡驱动
也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考
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 --->
<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111
Open Sound System --->
< > Open Sound System (DEPRECATED)
注意,如果用vmware进行编译,那么需要注意一些地方:
如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:
Device Drivers --->SCSI device support ---><*> SCSI disk support
Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI support
可以
[ljjk@ljjk linux-2.6.0]#make bzImage
可以
[ljjk@ljjk linux-2.6.0]#make modules
[ljjk@ljjk linux-2.6.0]#make modules_install
最后
[ljjk@ljjk linux-2.6.0]#make install
最后:
我使用的grub启动系统,那么将 /boot/grub/grub.conf 中 linux2.6域中
kernel /vmlinux-2.6.14.2 项后面的 ro root=LABEL=/ 这个参数去掉,然后就可以用了
[ljjk@ljjk linux-2.6.0]#cd /boor/grub
[ljjk@ljjk linux-2.6.0]#vi grub.conf
然后进行相应的修改。
[ljjk@ljjk linux-2.6.0]#reboot
之后选择升级后的2.6内核的启动。
接着就成功了!
成功后的图片:
再补充几句:
升级到2.6.15.6的时候,步骤和上面差不多,但是mkinitrd要mkinitrd-4.1.18-2.i386.rpm
当然,还需要lvm2-2.00.25-1.01.i386.rpm
不相信的话可以安装mkinitrd试试,不会成功的,会提示需要lvm2-2.00.25-1.01.i386.rpm这时就需要下载一个lvm2-2.00.25-1.01.i386.rpm了,在www.pbone.net能找到。
安装命令如下:
#rpm -Uvh --nodeps lvm2-2.00.25-1.01.i386.rpm
否则会提示需要2.6的内核,这个是RedHat9内核是2.4.20-8的!
到这里,安装就完成了,如果有什么不妥的话,可以自己进行修改。我说的不妥是某些服务,比如iptables,这些都可以自己去解决了,但是系统是绝对能进去的。
还有,一般来说,编译内核成功后,写到grub.conf文件里的都不用改的,make install的时候就帮改了!我的是这样的!下面再发张图: