VMware下升级linux内核篇

因为本人胆小,所以不敢体验把Windwos弄崩溃后,抱头痛苦的感觉,所以还是在VMware下从linux2.4.20升级linux到2.6.18,下面是本人的一些心得体会,写出来与大家分享~~

一.由于linux在教育网下不借助任何加速工具,上网真叫一个慢,所以想在linux下与Windows共享文件夹,来使用先前下好的一些东东!要做到这点,你需要以下几步:

     1.   mount   /dev/cdrom   /mnt/cdrom  
  2.   VM菜单有一个install   vm   tools进行安装  
  3.   之后/mnt/cdrom里面就会有两个文件,一个是rpm文件,一个是*.tar.gz文件,把rpm文件安装,再用tar解压缩*.tar.gz的文件,如果是只读的,那么就会提示出错,考出来再解压缩就可以了  
  4.   解压缩后会有一个叫install*.pl的文件,直接执行就会出现一些提示,一路回车  
  5.   vm   tools装好后,到VM的setting里设置一下共项目录就是了~~  
  6.   /mnt/kgfs就会出现了,里面有刚才设置的共享目录里面的内容 

设置好之后,你就可以看到在Windows下的一些你升级内核要用的文件了!

二 升级内核(这才是我们的重点),以下是攻略,本人亲自试过,这个绝对没错:

一、准备工作
首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。
启动Linux 系统,并用根用户登录,进入终端模式下。
1、查看Linux 内核版本
# uname -a
如果屏幕显示的是2.6.x,说明你的已经是2.6 的内核,也用不着看下文了,该干什么干什么
去吧!~~~如果显示的是2.4.x,那恭喜你,闯关通过,赶快进行下一步。
2、下载2.6 内核源码
下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
3、下载内核升级工具
(1)下载module-init-tools-3.2.tar.bz2
http://www.kernel.org/pub/linux/ ... t-tools-3.2.tar.bz2
(2)下载mkinitrd-4.1.18-2.i386.rpm
http://ayo.freshrpms.net/fedora/ ... d-4.1.18-2.i386.rpm
(3)下载lvm2-2.00.25-1.01.i386.rpm
http://ayo.freshrpms.net/fedora/ ... 00.25-1.01.i386.rpm
(4)下载device-mapper-1.00.19-2.i386.rpm
http://ayo.freshrpms.net/fedora/ ... -1.00.19-2.i386.rpm
(2.6.18 内核和这4 个升级工具我都有备份, 如果以上下载地址失效, 请到
http://www.piaoyang.org/guestbook 留下你的邮箱,我给你发过去)
二、配置工作
好啦,2.6 内核和4 个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试
下面的步骤,升级是不会成功的),下面回到Linux 系统中开始配置工作吧。
4、将下载好的内核源码包和4 个升级工具都拷贝到/usr/src 文件夹下。怎么拷贝就不用我教
了吧~~~~不会拷贝的去撞墙吧!~~呵呵!
5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:
# 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 文件夹)
6、安装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
7、安装另外三个升级工具
回到/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
如果不更新以上几个升级包,在后面编译内核时会提示以下错误:
mkinitrd failed
make[1]: *** [install] Error 1
make: *** [install] Error 2
8、配置内核选项。有点繁琐,~~希望一次成功哦~~。
# 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”(如果是在实环境中,想
要更多USB 支持,就全选吧。我的是在虚拟机中,用不着了)
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”;
注意:
ext2 和ext3 文件系统配置很重要,也是必需的,如果对Ext3、Ext2 文件的支持直接编译进
内核,在你reboot 时机器就会当掉,出现如下错误信息:
kernel panic : no init found ,try passing init = option to kernel.....
或者是:
VFS:Cannot open root device "hdxy" or unknow-block(0,0)
Please append a correct "root=" boot option
kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)
或者是:
mount: error 19 mounting ext3
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc fail: 2
Freeing unused kernel memory: 244k freed
Kernel panic – not syncing: No init found. Try passing init = option to kernel
(我的机器就是在重启之后出现第三种错误,进不去系统,郁闷死,只好重装了~~~如果依照
本文做完所有步骤,当你重启Linux 系统后,若不幸进不去2.6.18 内核,你会发现你的出错
信息就是上面三种了~~~哈!)
(4)如果你在vmware 下编译内核,硬盘用的是scsi 的,以下三个选项必选:
Device Drivers ---><*>SCSI device support (此项不选的话,下面两项就选择不上)
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI
support
三、编译工作
OK,繁杂的配置工作完成了,至此,编译前的准备工作都做好了!
9、开始编译啦……
在/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 (安装新内核)
注意:
make install 的时候可能会出现如下错误信息:
No module BusLogic found for kernel 2.4.12
mkinitrd failed
此问题一般只出现在SCSI 硬盘+VMWARE+REDHAT 架构中,因为BusLogic 被编译进了
内核而不是一个module 的形式(2.4 内核的Buslog ic 模块即使静态编译进内核也不行)。解决
方式是直接将BusLogic.o 文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi
不过别忘记,复制过后再执行一下make install。这一步若卡住了,下面的都无法进行,如
果看本文档还是没有解决问题,就来我的网上留言本求助吧,进http://www.piaoyang.org ,
点“留言本”即可,我会及时看到你的求助信息的。
四、启动新内核
10、将新内核和System.map 文件拷贝到/boot 目录下,依次执行以下命令:
# cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
# cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18
# cd /boot (进入boot 目录)
# rm –rf System.map (删除原来的连接)
# ln –s System.map-2.6.18 System.map (重新建立连接)
11、修改Grub 启动管理器
如果没有错误的话, 下面开始修改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
12,OK,大功告成!赶快重启,看看升级后的2.6 内核吧~~~~

其实,做做到这些并不难,关键是要细心加耐心!

你可能感兴趣的:(vmware)