虚拟机2.4内核升级到2.6


下载2.6内核源码

下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2

下载内核升级工具

(1)下载module-init-tools-3.2.tar.bz2

http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2

(2)下载mkinitrd-4.1.18-2.i386.rpm

http://ayo.freshrpms.net/Fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm

(3)下载lvm2-2.00.25-1.01.i386.rpm

http://ayo.freshrpms.net/Fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm

(4)下载device-mapper-1.00.19-2.i386.rpm

http://ayo.freshrpms.net/Fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm

然后切换到linux系统下!将五个文件拷贝到/usr/src文件下。

拷贝命令格式是 cp 原文件  目标文件夹

拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:

# cd /usr/src  (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)

# rm –rf linux  (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)

# tar jvxf linux-2.6.18.tar.bz2  (解压新内核)

# ln -s linux-2.6.18 linux  (重新生成linux文件夹)

安装module-init-tools工具

在/usr/src目录下,依次执行下列命令:

# tar jvxf module-init-tools-3.2.tar.bz2  (解压module-init-tools)

# cd module-init-tools-3.2  (由/usr/src目录进入module-init-tools目录下)

#./configure --prefix=/

# make moveold

# make all install

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


安装另外三个升级工具

回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:

# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm  (注意,这里一定要加入--nodeps参数,下同)

# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm


 

# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm    

        到此准备工作

基本完成!

开始编译内核文件!  

# cd linux-2.6.18  (进入到/usr/src/linux-2.6.18目录下)

# make mrproper  (该命令可确保源代码目录下没有不正确的.o文件)

# make menuconfig (配置内核各选项)

此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):

(1)Loadable Module support选项中,选上“Module unloading”和“Automatic kernel module loading”这两项;

(2)Device Drivers--->Block Devices中选上“Loopback device support”;

     Device Drivers--->Multi-device support(RAID and LVM)处要选上“device mapper  support”;

     Device Drivers--->Graphics support,一定要选上“ Support for frame buffer devices”;

     Device Drivers  --->USB support  --->选上“USB Mass Storage support”

     Device Drivers  --->;Network device support  --->Ethernet (10 or 100Mbit)  --->  AMD PCnet32 PCI support

(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)

           Second extended fs support

           Ext2 extended attributes

           Ext2 POSIX Access Control Lists

           Ext2 Security Labels

           Ext3 journalling file system support

           Ext3 extended attributes

           Ext3 POSIX Access Control Lists

           Ext3 Security Labels

           JBB (ext3) debugging support

     File system--->DOS/FAT/NT Filesystems  --->选上“NTFS file system support”;


这是网上有人成功编译后说的!但是我认为既然要编译就要全部重新选择!参考内容如下:在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面就让我们对常用的选项分别加以介绍。


 

1. Code maturity level options

  代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。

2. Loadable module support

  对模块的支持。这里面有三项:

  Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。

  Set version information on all module symbols:可以不选它。

  Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。

3. Processor type and features

  CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:

  Processor family:根据你自己的情况选择CPU类型。

  High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。

  Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。

  MTTR support:MTTR支持。可不选。

  Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。

4. General setup

  这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:

  Networking support:网络支持。必须,没有网卡也建议你选上。

  PCI support:PCI支持。如果使用了PCI的卡,当然必选。

  PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。

  Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,可不选。

  PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。

  System V IPC

  BSD Process Accounting

  Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。

  Power Management support:电源管理支持。

  Advanced Power Management BIOS support:高级电源管理BIOD支持。

5. Memory Technology Device(MTD)

  MTD设备支持。可不选。

6. Parallel port support

  串口支持。如果不打算使用串口,就别选了。

7. Plug and Play configuration

  即插即用支持。虽然Linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。

8. Block devices

  块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:

  Normal PC floppy disk support:普通PC软盘支持。这个应该必选。

  XT hard disk support:

  Compaq SMART2 support:

  Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。

  Loopback device support:

  Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。

  Logical volume manager(LVM)support:逻辑卷管理支持。

  Multiple devices driver support:多设备驱动支持。

  RAM disk support:RAM盘支持。

9. Networking options

  网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对网络协议有所了解的话,应该可以看懂的。如果懒得看,使用缺省选项(肯定要选中TCP/IP networking哦)就可以了。让我们看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持了,Qos and/or fair queueing(服务质量公平调度)也支持了,还有kHTTPd,不过这些都还在实验阶段。

10. Telephony Support

  电话支持。这个是什么东东?让我查查帮助,原来是Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。

11. ATA/IDE/MFM/RLL support

  这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。

12. SCSI support

  SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了。

13. IEEE 1394(FireWire)support

  这个是什么?低版本的没有见过,看看帮助再说。原来是要Fireware硬件来提高串行总线的性能,我没有,不选了。

14. I2O device support

  这个也不清楚,帮助里说是这个需要I2O接口适配器才能支持的,在智能Input/Output(I2O)体系接口中使用,又是要硬件,不选了。

15. Network device support

  网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好还好,里面大概分类了,有ARCnet设备、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support几大类。我用的是10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,内容虽然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去要驱动了。

16. Amateur Radio support

  又一个不懂的,应该是配置业余无线广播的吧,没有,不要了。

17. IrDA(infrared)support

  这个要红外支持,免了。

18. ISDN subsystem

  如果你使用ISDN上网,这个就必不可少了。自己看着办好了。

19. Old CD-ROM drivers(not SCSI、not IDE)

  做的可真周到,原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,反正我是用的IDE的CD-ROM,不选这个。

20. Character devices

  字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:

  I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For Linux,该项必选。

  Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根据需要选择。

  Joysticks:手柄。即使在Linux下把手柄驱动起来意义也不是太大,游戏太少了。

  Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。

  Video For Linux:支持有关的音频/视频卡。

  Ftape, the floppy tape device driver:

  PCMCIA character device support:

21. File systems

  文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以下几项:

  Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。

  DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。

  ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。

  NTFS file system support:ntfs是NT使用的文件格式。

  /proc file system support:/proc文件系统是Linux提供给用户和系统进行交互的通道,建议选上,否则有些功能没法正确执行。

  还有另外三个大类都规到这儿了:Network File Systems(网络文件系统)、Partition Types(分区类型)、Native Language Support(本地语言支持)。值得一提的是Network File Systems里面的两种:NFS和SMB分别是Linux和Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。

22. Console drivers

  控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制台。

23. Sound

  声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。

24. USB supprot

  USB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到支持,根据需要自行选择。

25. Kernel hacking

  配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。

  

现在开始编译(将我们选择的内核编译成机器可以看懂的执行文件)

在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!

# make dep  (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)

# make clean  (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)

# make bzImage  (注意大小写。这一步才是真正编译内核)

     内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用 make  zImage编译,内核很大的话,系统会提示你使用make   bzImage命令来编译,所以我直接用make bzImage来编译。

# make modules  (编译可加载模块)

# make modules_install  (安装可加载模块)

  安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。

# make install  (安装新内核)

这个过程要看你的计算机性能了!我的还好,等了半个多小时!

安装新内核,可以在启动时就加载!

如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)

在/boot目录下,执行以下命令:

# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot下会生成一个initrd-2.4.18.img,并且你的grub.conf文件也作了相应更改)

# df  (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错哦。我的为 /dev/hda2)

# vi /grub/grub.conf

进入grub.conf文件,找到如下信息:

default=1

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.6.18)

        root (hd0,0)

        kernel /vmlinuz-2.6.18 ro root= LABEL=/

        initrd /initrd-2.6.18.img

做两处修改:

(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)

(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)

此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:

default=0

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.6.18)

        root (hd0,0)

        kernel /vmlinuz-2.6.18 ro root=/dev/hda2

        initrd /initrd-2.6.18.img

title Red Hat Linux (2.4.20-8)

        root (hd0,0)

        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/

        initrd /initrd-2.4.20-8.img

这里要说明的是要现学会vi 否则会在修改后不知道如何退出而抓狂的!!

在vi中安esc是 进入命令格式

然后输入:wq是存盘退出

        :q!是强制退出不存盘

        注意要有冒号!!!!!!

如果发现不能修改文件就输入

      i

如果不行就多按几遍esc 输入i

然后可以重启了看看自己编译的新内核一定很有成就感吧!

如果你用的是lilo的话就

 然后修改/etc/lilo.conf:

#vi /etc/lilo.conf

  增加如下一段:

image=/boot/vmlinuz-2.6.18

label=linux—2.6.18

read-only

root=/dev/hda2

  其中root=/dev/hda2一行要根据需要自行加以修改。

  运行:

#/sbin/lilo -v

  确认对/etc/lilo.conf的编辑无误,现在重新启动系统:

#shutdown -r now

 
 

你可能感兴趣的:(虚拟机2.4内核升级到2.6)