guestfish
guestfish程序是 libguestfs 项目的一个工具,它使你可以修改虚拟机镜像里的文件。
注意 | |
---|---|
guestfish并不直接mount镜像文件到本地文件系统,而是提供一个shell接口,你可以通过这个shell接口对镜像内文件做查看,编辑,删除操作,诸如 touch,chmod, 和 rm的 guestfish 命令,就像普通bash命令一样。 |
有时,你必须删除虚拟机镜像内任何包含虚拟机安装时分配给虚拟机网卡的MAC的文件,因为用镜像文件创建新虚拟机时网卡MAC地址和创建镜像的虚拟机并不一样。这个示例通过删除/etc/udev/rules.d/70-persistent-net.rules
文件以及删除/etc/sysconfig/network-scripts/ifcfg-eth0
文件中HWADDR
一行来演示了如何使用guestfish删除镜像中和原MAC地址相关联的地方。
假设你有一个文件名为centos63_desktop.img
的 CentOS qcow2 格式的虚拟机镜像。用root用户挂载这个镜像为可读可写模式,如下:
# guestfish --rw -a centos63_desktop.img Welcome to guestfish, the libguestfs filesystem interactive shell for editing virtual machine filesystems. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell ><fs>
通过上面命令,进入了 guestfish 会话,注意 guestfish提示符像一条鱼的样子: > <fs>
.
在做任何操作之前,必须先在 guestfish提示符运行run命令。它会启动一个虚拟机,用于完成我们所以的对文件的操作。
><fs> run
通过list-filesystems命令,我们可查看镜像内的文件系统列表:
><fs> list-filesystems /dev/vda1: ext4 /dev/vg_centosbase/lv_root: ext4 /dev/vg_centosbase/lv_swap: swap
我们必须挂载包含根分区的那个逻辑卷:
><fs> mount /dev/vg_centosbase/lv_root /
下一步,我们想删除一个文件,使用guestfish 命令 rm ,就像使用普通shell命令一样。
><fs> rm /etc/udev/rules.d/70-persistent-net.rules
我们想编辑 ifcfg-eth0
文件以便删除 HWADDR
这一行。edit命令将文件拷贝文件到主机,调用编辑器打开文件,编辑完后将它又拷贝回原来的位置。
><fs> edit /etc/sysconfig/network-scripts/ifcfg-eth0
如果你想修改镜像让他在启动时加载8021q内核模块,你必须在/etc/sysconfig/modules/
目录下简历一个可执行脚本。你可以使用touchguestfish命令创建一个空文件,然后使用edit 命令编辑它,然后使用 chmod 命令让它具有可执行权限。
><fs> touch /etc/sysconfig/modules/8021q.modules ><fs> edit /etc/sysconfig/modules/8021q.modules
我们添加以下一行到文件内,然后保存:
modprobe 8021q
然后设置文件可执行权限:
><fs> chmod 0755 /etc/sysconfig/modules/8021q.modules
一切都完成后,我们可以使用 exit命令退出guestfish提示符:
><fs> exit
guestfish有大量庞大的功能,完全介绍它查出了本文档的功能范围。因此,我们推荐你阅读 guestfs-recipes 文档页面感知通过这些工具都能做什么。
本文链接:https://www.kinber.cn/post/434.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: