- HACK#30 如何不使用DVD安装操作系统
- mkinitrd-f/boot/initrd-2.6.18-238.el5.2.img 2.6.18-238.el5—with usb-storage
- kernel/vmlinuz-2.6.18-238.el5 ro root=LABEL=/rhgb quiet
- initrd/initrd-2.6.18-238.el5.img
- blkid/dev/vda2
- mkdir work
- cd work
- gzip-cd/boot/initrd-2.6.18-238.el5.img|cpio-id
- vim init
- fnd.-print|cpio—quiet-c-o|gzip-9>/boot/initrd-2.6.18-
HACK#30 如何不使用DVD安装操作系统
本节介绍不使用KVM,而是利用KVM安装在物理机器环境下启动的Linux。
一般安装操作系统时需要将安装用的ISO映像刻录到DVD然后再进行,但是刻录DVD需要花费时间和精力,更重要的是要用到DVD盘,不利于环境保护。
本节介绍的是不需要刻录DVD,使用KVM安装虚拟环境下的客户端操作系统并用在物理环境中的方法。
使用KVM安装操作系统时是通过virt-manager来进行的。这里使用的主机操作系统是Fedora 14,客户端操作系统是CentOS 5.6。另外,客户端操作系统安装的地方是USB HDD。启动virt-manager,根据提示安装,就可以顺利地将客户端操作系统安装到USB HDD。
需要的准备
安装用媒体的映像
选择CentOS 5.6的ISO映像文件。本次使用的是CentOS 5.6-i386-bin-DVD.iso。
安装用磁盘
这里将USB HDD分配为安装客户端操作系统的磁盘区。在笔者的环境下/dev/sdb为USB HDD,因此按照图5-4所示进行选择。请向客户端操作系统分配整个磁盘,而不是磁盘分区表。
图 5-4 安装界面
成功地将CentOS 5.6安装为客户端操作系统后,登录到客户端操作系统,使用mkinitrd命令重新生成initrd。在笔者的环境下安装的磁盘是USB HDD,因此按照下列方法将usb-storage驱动程序模块安装到initrd。
mkinitrd-f/boot/initrd-2.6.18-238.el5.2.img 2.6.18-238.el5—with usb-storage
接下来,在客户端操作系统上修改/boot/grub/grub.conf,改为通过UUID指定root设备。initrd指的是刚才生成的initrd。
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS(2.6.18-238.el5)
root(hd0,0)
kernel/vmlinuz-2.6.18-238.el5 ro root=LABEL=/rhgb quiet
kernel/vmlinuz-2.6.18-238.el5 ro root=UUID=b04d14e9-1a6c-417f-a981-
c9f2e9a4ce26 rhgb quiet
initrd/initrd-2.6.18-238.el5.img
initrd/initrd-2.6.18-238.el5.2.img
UUID可以通过blkid命令来确认。
blkid/dev/vda2
/dev/vda2:LABEL="/"UUID="b04d14e9-1a6c-417f-a981-c9f2e9a4ce26"
SEC_TYPE="ext2"TYPE="ext3"
到这一步准备工作就完成了。在物理环境下启动时,请从BIOS的boot菜单中选择USB HDD作为启动磁盘。选择USB HDD作为启动磁盘后,BIOS就会读入USB HDD最前面的MBR,执行bootloader。在这里是从USB HDD启动GRUB。内核会安装initrd中的内核模块,但在虚拟环境下启动时是使用virtio-blk驱动程序模块读入磁盘,在物理环境下是使用usb-storage驱动程序模块读入磁盘,因此生成的磁盘不论在哪个环境下都可以启动。
需要注意的是,不能在grub.conf或/etc/fstab里直接写入/dev/sdb等设备文件名;因为在虚拟环境下,如果使用了IDE的仿真器就会分配hda设备文件名;如果使用了virtio等PV驱动程序就会分配vda的名称。
如果使用UUID,操作系统的功能会屏蔽上述设备名的变更,因此不论在哪个环境下操作系统都可以启动。卷标号也可以屏蔽设备,但是使用其他磁盘时就可能会存在相同的卷标号。在这种情况下无法判断指定了哪个磁盘设备,有时无法顺利启动。
小贴士:如果实在不行,还可以按照下列方法解压缩initrd,直接编辑其中的init文件。
1.解压缩initrd。
mkdir work
cd work
gzip-cd/boot/initrd-2.6.18-238.el5.img|cpio-id
2.编辑init文件。
vim init
3.重新生成initrd。
fnd.-print|cpio—quiet-c-o|gzip-9>/boot/initrd-2.6.18-
238.el5.new.img