Om zaken te testen of een ander besturingssystemen te draaien, gebruik je Virtuele computers. Deze gebruiken bestanden die dienst doen als virtuele harde schijven. De inhoud van deze virtuele harde schijven wordt pas toegankelijk na het opstarten van de Virtuele computer met software zoals QEMU, VirtualBox en VMware Player. Met de guestfs-tools kan je in Linux de virtuele harde schijven koppelen en zo de inhoud ervan buiten de virtuele omgeving beheren.
Na het beheren van de gekoppelde virtuele schijf, koppel je deze terug los en kan je de virtuele computer terug starten. M.a.w. zorg dat je nooit een virtuele harde schijf koppelt in Linux, terwijl deze door een virtuele computer wordt gebruikt. En omgekeerd. Dit kan namelijk leiden tot onherstelbare fouten in het bestandssysteem van de virtuele harde schijven.
De guestfs-tools worden bij de meeste distributies in de standaard sofwarebronnen aangeboden en installeer je in openSUSE Leap 42.2 met de volgende terminalopdracht:
dany@laptop:~> sudo zypper install guestfs-tools
root's password:
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...
De volgende 53 NIEUWE pakketten zullen worden geïnstalleerd:
brltty brltty-driver-at-spi2 brltty-driver-brlapi brltty-driver-xwindow gnutls guestfs-data guestfs-tools jfsutils
libboost_random1_54_0 libbrlapi0_6 libcacard0 libcelt051-0 libconfig9 libfdt1 libguestfs0 libhivex0 libibverbs1 libiscsi7 librados2
librbd1 librdmacm1 libspice-server1 libusbredirparser1 libvdeplug3 libvirglrenderer0 libvirt-client libvte-2_91-0 libyajl2
perl-libintl-perl perl-String-ShellQuote perl-Sys-Guestfs perl-Win-Hivex python-curses python-evtx qemu qemu-block-curl
qemu-block-iscsi qemu-block-rbd qemu-block-ssh qemu-ipxe qemu-seabios qemu-sgabios qemu-tools qemu-vgabios qemu-x86 reiserfs
supermin vte-lang xbrlapi xen-libs xfsprogs xmlstarlet zerofree
De volgende 13 aanbevolen pakketten zijn automatisch geselecteerd:
brltty jfsutils python-curses qemu-block-curl qemu-block-iscsi qemu-block-rbd qemu-block-ssh qemu-tools qemu-x86 reiserfs vte-lang
xfsprogs zerofree
53 nieuwe te installeren pakketten.
Totale downloadgrootte: 29,2 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 113,4 MiB worden gebruikt.
Doorgaan? [j/n/...? alle opties tonen] (j):
pakket jfsutils-1.1.15-27.1.x86_64 wordt opgehaald (1/53), 737,0 KiB ( 1,8 MiB uitgepakt)
Ophalen: jfsutils-1.1.15-27.1.x86_64.rpm ......................................................................[gereed (508,4 KiB/s)]
...
pakket guestfs-tools-1.32.4-6.5.x86_64 wordt opgehaald (53/53), 2,4 MiB ( 19,1 MiB uitgepakt)
Ophalen: guestfs-tools-1.32.4-6.5.x86_64.rpm ..................................................................[gereed (761,6 KiB/s)]
Controleren op conflicten tussen bestanden: .................................................................................[gereed]
( 1/53) Installeert: jfsutils-1.1.15-27.1.x86_64 ............................................................................[gereed]
( 2/53) Installeert: reiserfs-3.6.24-50.1.x86_64 ............................................................................[gereed]
...
(22/53) Installeert: brltty-5.2-3.48.x86_64 .................................................................................[gereed]
Aanvullende rpm-uitvoer:
/usr/sbin/systemd-sysv-convert: line 62: /var/lib/systemd/sysv-convert/database: No such file or directory
(23/53) Installeert: perl-Win-Hivex-1.3.11-2.5.x86_64 .......................................................................[gereed]
...
(47/53) Installeert: libvirt-client-2.0.0-13.3.3.x86_64 .....................................................................[gereed]
Aanvullende rpm-uitvoer:
Updating /etc/sysconfig/libvirt-guests...
(48/53) Installeert: librbd1-10.2.6+git.1489493035.3ad7a68-6.4.1.x86_64 .....................................................[gereed]
...
(53/53) Installeert: guestfs-tools-1.32.4-6.5.x86_64 ........................................................................[gereed]
Output of xfsprogs-4.5.0-58.1.x86_64.rpm %posttrans script:
Creating initrd: /boot/initrd-4.4.36-8-default
dracut: Executing: /usr/bin/dracut --logfile /var/log/YaST2/mkinitrd.log --force /boot/initrd-4.4.36-8-default 4.4.36-8-default
...
dracut: *** Creating initramfs image file '/boot/initrd-4.4.57-18.3-default' done ***
Om de eerste partitie op de virtuele harde schijf in het bestand Router-0.vmdk aan de map /mnt/ te koppelen, gebruik je de volgende opdracht:
dany@laptop:~> sudo guestmount -a Router-0.vmdk -m /dev/sda1 /mnt
root's password:
Met de standaard ls opdracht maak je de inhoud van de gekoppelde virtuele partitie zichtbaar:
dany@laptop:~> sudo ls -l /mnt
totaal 4345268
-rw-r--r-- 1 root root 43462984 31 okt 16:12 'HP Support Assistant.exe'
drwx------ 2 dany users 16384 24 mei 2016 lost+found
drwxr-xr-x 2 root root 4096 14 jun 2016 windows
-rwxr--r-- 1 root root 114150296 15 jun 2016 Windows10-KB3010081-x64.msu
-rw-r--r-- 1 root root 4022642688 31 okt 15:34 Windows.iso
-rwx------ 1 root root 269266944 31 okt 15:34 WinPE_amd64.iso
Een bestand op de virtuele partitie maak je met de opdracht:
dany@laptop:~>sudo touch /mnt/test.txt
dany@laptop:~>sudo ls -l /mnt
totaal 4345268 -rw-r--r-- 1 root root 43462984 31 okt 16:12 'HP Support Assistant.exe' drwx------ 2 dany users 16384 24 mei 2016 lost+found -rw-r--r-- 1 root root 0 21 apr 15:59 test.txt drwxr-xr-x 2 root root 4096 14 jun 2016 windows -rwxr--r-- 1 root root 114150296 15 jun 2016 Windows10-KB3010081-x64.msu -rw-r--r-- 1 root root 4022642688 31 okt 15:34 Windows.iso -rwx------ 1 root root 269266944 31 okt 15:34 WinPE_amd64.iso
Met de volgende opdracht voeg je tekst toe aan het bestand op de virtuele partitie:
dany@laptop:~> sudo sh -c "echo Test > /mnt/test.txt"
Als test tonen we de inhoud van het bestand met de opdracht:
dany@laptop:~> sudo more /mnt/test.txt
Test
Wil je de virtuele harde nu terug op een virtuele computer gebruiken, koppel je ze los met de opdracht:
dany@laptop:~> sudo guestunmount /mnt
Bij een virtuele harde schijf die je niet zelf hebt aangemaakt, kan je de partitie indeling opvragen door een onbestaande partitie in de koppelopdracht te gebruiken (in het voorbeeld /dev/ls):
dany@laptop:~> sudo guestmount -a Router-0.vmdk -m /dev/ls /mnt
libguestfs: fout: mount_options: mount_options_stub: /dev/ls: No such file or directory
guestmount: '/dev/ls' kon niet aangekoppeld worden.
guestmount: Bedoelde je het om een van deze bestandssystemen aan te koppelen?
guestmount: /dev/sda1 (ext4)
Zo heeft deze virtuele schijf maar één partitie (/dev/sda1) en gebruikt deze het bestandssysteem ext4.
Alle mogelijkheden van guestfs-tools en de onderliggende libguestfs bibliotheek kan je achterhalen op hun website.