Hi there,
This post is useful to anyone planing to use guestfish to make some changes to any qcow2 disk image file. You can solve issues like change user settings, or define static ip addresses, or change grub settings.
I am using guestfish to change some configurations into my vsc_singledisk.qcow2 image. Why? because all the changes into VSC must be done thru a console. However, If you are thinking to run this on OpenStack liberty/kvm. It would be a issue. Most of the instances has been managed thru vnc (graphics). Then, I’ve added network settings to bof.cfg file to make this instance boot with a specific ip address. I can follow the next steps of its setup thru ssh 😉
Install your guestfish and libvirtd packages
I’ve downloaded a centos7 minimal OVA file to my Mac. I’ve imported it to my vbox and make run. I’ve used to have selinux disabled. Maybe you will need to change it to permissible.
First of all you have to install kvm and the guestfish. Then, you will have to disbale NetworManager and firewalld. Restart the libvirtd and set LIBGUESTFS_BACKEND=direct. I’ve copied my qcow2 file thru scp previously. You will have to change the ownership to qemu:qemu to this file to make it work.
[root@jumbox ~]# yum install -y qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: bay.uchicago.edu
* extras: centos-distro.cavecreek.net
* updates: centos.mia.host-engine.com
#
# many boring lines
# many boring lines
#
Installed:
libguestfs-tools.noarch 1:1.28.1-1.55.el7.centos.2 libvirt.x86_64 0:1.2.17-13.el7_2.4 qemu-kvm.x86_64 10:1.5.3-105.el7_2.4
virt-install.noarch 0:1.2.1-8.el7
Dependency Installed:
libguestfs.x86_64 1:1.28.1-1.55.el7.centos.2 libguestfs-tools-c.x86_64 1:1.28.1-1.55.el7.centos.2
libvirt-daemon-kvm.x86_64 0:1.2.17-13.el7_2.4 perl-Sys-Guestfs.x86_64 1:1.28.1-1.55.el7.centos.2
perl-Sys-Virt.x86_64 0:1.2.17-2.el7 perl-libintl.x86_64 0:1.20-12.el7
Complete!
[root@jumbox ~]# yum -y install guestfish
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: bay.uchicago.edu
* extras: centos-distro.cavecreek.net
* updates: centos.mia.host-engine.com
#
# many boring lines
# many boring lines
#
Installed:
libguestfs-tools-c.x86_64 1:1.28.1-1.55.el7.centos.2
Complete!
[root@jumbox ~]# systemctl stop NetworkManager
[root@jumbox ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@jumbox ~]# systemctl start network
[root@jumbox ~]# systemctl stop firewalld
[root@jumbox ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@jumbox ~]# service libvirtd restart
Redirecting to /bin/systemctl restart libvirtd.service
[root@jumbox ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # list
Id Name State
----------------------------------------------------
virsh # exit
[root@jumbox ~]# chown qemu:qemu vsc_singledisk.qcow2
[root@jumbox ~]# export LIBGUESTFS_BACKEND=direct
Modify your files into your qcow2 image thru guestfish
Next lines will show you how to modify the qcow2 image file. This case I am modifying bof.cfg file at the root folder.
[root@jumbox ~]# mv vsc_singledisk.qcow2 vsc_singledisk_dhcp.qcow2
[root@jumbox ~]# guestfish --rw -a vsc_singledisk_dhcp.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: 'help' for help on commands
'man' to read the manual
'quit' to quit the shell
> run
100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
> mount /dev/sda1 /
> ls /
bof.cfg
config.cfg
nvram.dat
syslinux
timos
> vi /bof.cfg
> exit
The bof.cfg file that I’ve found is this:
primary-image cf1:/timos/cpm.tim
primary-config cf1:/config.cfg
autonegotiate
duplex full
speed 100
wait 3
persist off
console-speed 115200
And this is how I’ve left it.
primary-image cf1:\timos\cpm.tim
primary-config cf1:\config.cfg
ip-address-dhcp
primary-dns 192.168.101.3
dns-domain nuage.lab
static-route 0.0.0.0/1 next-hop 192.168.101.1
autonegotiate
duplex full
speed 100
wait 3
persist off
no li-local-save
no li-separate
console-speed 115200
See ya!
Pingback: Building a Nuage/PackStack Demo at home – Part 2 – Tricky Deadline
Pingback: #Juju in a few steps – Tricky Deadline
Pingback: #Nuage #docker demo in a box – Tricky Deadline
Reblogged this on ✄ Geeky Snippets ✄.
Pingback: Modify QCOW2 images with Linux Guestfish – ✄ Geeky Snippets ✄
Thanks,it saves my life:)