VM+SCSI+REDHAT多次编译2.6.18 内核 并从该内核启动
superyongzhe
|
1#
superyongzhe 发表于 2008-11-05 19:41
VM+SCSI+REDHAT多次编译2.6.18 内核 并从该内核启动
作者: yaozhixing 发布日期: 2007-6-06 查看数:
68 出自: http://www.linuxdiyf.com 兄弟我 虚拟机4.0下面 装fedora6 无法安装 下载新的虚拟机6.0本能够安装dedora6 可惜虚拟机过期 只好在虚拟机4.0下面自己编译2.6.18 目的:虚拟机4.0下面使用最新的2.6.18 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 4、删除旧的软件,方法如下 rpm ?e (旧的软件名,这里是软件名,不是软件包,如mkinitrd-4.1.18-2) --nodeps 接下来两步和上面相同,把旧的lvm和device-mapper删掉, 记住,这里要加——nodeps参数,不然是删不掉的[*浏览了很多的资料,发现都是没有提及这一步的,都说使用——nodeps强制安装就能够,可我装的时候却出现了错误,所以大家能够先省略这一步,先做第五步,出了问题再做一下第4步] # 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 (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”; File Systems --> Miscellaneous filesystems ---> Compressed ROM file system support (cramfs) 注意: 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 注意:make install的时候可能会出现如下错误信息: No module BusLogic found for kernel 2.4.12 mkinitrd failed 此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将能够BusLogic.o文档复制过去: # cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi 但是别忘记,复制过后再执行一下make install。 (假如make menuconfig时,把BusLogic模块选成M--Module模式--就不会出现这个提示。) # 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内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将能够BusLogic.o文档复制过去: # cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi 但是别忘记,复制过后再执行一下make install。 (假如make menuconfig时,把BusLogic模块选成M--Module模式--就不会出现这个提示。) 到此 :您能够在/boot/grub/grub.con 发现内核自动添加了 选项 从新启动后 在grub 界面中 能够发现 存在2。6。18 这个项目 |