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所示进行选择。请向客户端操作系统分配整个磁盘,而不是磁盘分区表。

HACK#30 如何不使用DVD安装操作系统 - 图1

图 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