Tips en Trucs 2017

Guestfs-tools

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.

Installatie

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 ***

Virtuele harde schijf koppelen

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

Partitiestructuur opvragen

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.

En verder

Alle mogelijkheden van guestfs-tools en de onderliggende libguestfs bibliotheek kan je achterhalen op hun website.

libguestfs