昨天,在给一台xen虚拟机重装系统的时候,由于ks文件中的配置出错,结果导致xen虚拟机启动失败。可实际上,虚拟机文件还是完好的,只需要修改虚拟机中的ks文件即可。没有办法,只得尝试mount虚拟机的镜像文件。结果,提示如下错误
# mount test.img /mnt mount: test.img is not a block device (maybe try `-o loop'?) |
尝试使用-o loop来mount,提示如下
# mount -o loop test.img /mnt mount: you must specify the filesystem type |
使用file命令查看这个img文件,结果如下
# file test.img test.img: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x82, starthead 0, startsector 208845, 4096575 sectors; partition 3: ID=0x83, starthead 0, startsector 4305420, 205407090 sectors, code offset 0x48 |
在网上找了一下相关资料,要想mount xen的镜像文件,只需要一下几个步骤
1,查看镜像文件分区
# fdisk -ul test.img last_lba(): I don't know how to handle files with mode 81ed You must set cylinders. You can do this from the extra functions menu. Disk test.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders, total 0 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System test.img1 * 63 208844 104391 83 Linux test.img2 208845 4305419 2048287+ 82 Linux swap / Solaris test.img3 4305420 209712509 102703545 83 Linux Partition 3 has different physical/logical endings: phys=(1023, 254, 63) logical=(13053, 254, 63) |
由此能看到这个虚拟机磁盘被分了三个区,分别是/boot,/,swap,如果需要修改/boot分区内容,就只需要挂载test.img1分区就行了
2,挂载需要的分区
此处以挂载/boot分区举例
# mount –o loop,offset=$((63*512)) /PATH/TO/test.img /mnt,offset中的63就是分区的Start标记的数字。
# ll /mnt/ 总计 7498 -rw-r--r-- 1 root root 67250 07-22 18:02 config-2.6.18-274.el5xen drwxr-xr-x 2 root root 1024 10-31 16:04 grub -rw------- 1 root root 2510056 10-31 16:03 initrd-2.6.18-274.el5xen.img drwx------ 2 root root 12288 10-31 15:58 lost+found -rw-r--r-- 1 root root 80032 2009-03-13 message -rw-r--r-- 1 root root 115821 07-22 18:02 symvers-2.6.18-274.el5xen.gz -rw-r--r-- 1 root root 1230739 07-22 18:02 System.map-2.6.18-274.el5xen -rw-r--r-- 1 root root 2196594 07-22 18:02 vmlinuz-2.6.18-274.el5xen -rw-r--r-- 1 root root 424545 07-22 16:35 xen.gz-2.6.18-274.el5 -rwxr-xr-x 1 root root 986192 07-22 18:55 xen-syms-2.6.18-274.el5 |
当修改完之后,只需要umount目录,在启动虚拟机就行了,这样,如果clone了很多虚拟机,修改clone出来的虚拟机ip就不用非得启动虚拟机了,可以修改完之后再启动虚拟机。
注:此方法对于分区是lvm的不适用。
转载请注明:爱开源 » mount xen虚拟机的镜像文件