Sistem Slackware virtual prin QEMU

***@*** 6.6.2019 - c.g. / 77.1.30 - cel4a


Astazi m-am ocupat de crearea unei imagini virtuale qemu continand sistemul de operare Slackware, versiunea curenta pe 64 de biti. Procesul este destul de simplu dupa care imaginea poate fi incarcata de un emulator qemu si sa ruleze ca un sistem de operare separat, in cadrul unei noi ferestre grafice, in propriul sistem de operare gazda initial. Partea esentiala consta insa in setarea corespunzatoare a parametrilor de retea, astfel incat aceasta sa functioneze corespunzator, si pentru sistemul virtual. Pasii parcursi sunt detaliati in cele ce urmeaza.
Voi detalia intregul proces presupunand ca utilizati Slackware Linux, ca sistem de operare gazda si ca pachetul qemu este instalat. Acesta este disponibil pe site-ul slackbuilds.org sau, daca utilizati slackpkg+, in repository-ul lui Alien Bob. Comenzile sunt aproximativ la fel, cu unele mici deosebiri, si pentru celelalte distributii Linux existente.
Mai intai trebuie creat spatiul, adica fisierul ce va contine imaginea sistemului de operare virtual pe care il veti instala. Aceasta se realizeaza utilizand comanda urmatoare:

# qemu-img create slackware.img 33G
Aceasta comanda creaza in directorul curent fisierul slackware.img avand dimensiunea de 33 Gb, spatiu suficient pentru a cuprinde intreaga distributie slackware-current.
Apoi, urmatorul pas consta in descarcarea programului de instalare Slackware, de pe serverul ftp aferent. Utilizati comanda:
# wget ftp://ftp.slackware.com/pub/slackware/slackware64-current/usb-and-pxe-installers/usbboot.img
Comanda descarca in directorul curent de lucru fisierul usbboot.img care va fi utilizat in cadrul procesului de instalare a sistemului Slackware virtual.

Acum este momentul sa va ocupati de reconfigurarea retelei pe calculatorul gazda, astfel incat aceasta sa poata fi accesata si prin intermediul sistemului virtual. Pentru aceasta trebuie mai intai sa creati cateva interfete de retea, dupa cum urmeaza (desigur, puteti adapta parametrii in functie de propriile voastre setari ale retelei locale):
eth0 = 192.168.1.2 / 255.255.255.0
ruta implicita = 192.168.1.1 (un alt server/router NAT)
Acest IP poate fi configurat static in /etc/rc.d/rc.inet1.conf
(nu este obtinut via DHCP).
br0 = 192.168.1.3 / 255.255.255.0
tap0 = 192.168.1.4 / 255.255.255.0
Aceasta interfata tap0 este creata de scriptul qemu-network-tun.sh, pe care il veti utiliza mai tarziu.

Pentru aceasta trebuie sa dati urmatoarele comenzi (ele pot fi si introduse in fisierul /etc/rc.d/rc.local pentru ca setarile sa se mentina la repornirea calculatorului):

# modprobe tun
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1024 > /proc/sys/dev/rtc/max-user-freq
# ifconfig eth0 0.0.0.0 down
# chmod og+rw /dev/net/tun
# chmod +s /usr/bin/qemu-system-x86_64
# chmod +s /sbin/ifconfig
# chmod +s /sbin/brctl
# brctl addbr br0
# brctl stp br0 off
# brctl setfd br0 1
# brctl addif br0 eth0
# brctl show
# ifconfig br0 192.168.1.3 up
# ifconfig eth0 192.168.1.2 up
# route del default
# route add default gw 192.168.1.1
Creati, tot in directorul curent, un fisier intitulat qemu-network-tun.sh, care sa contina urmatoarele 5 linii:
#!/bin/sh
BRIDGEIP=192.168.1.4
modprobe tun
/sbin/ifconfig $1 $BRIDGEIP netmask 255.255.255.0
/sbin/brctl addif br0 $1
Acum, porniti instalarea prorpiu-zisa a sistemului Slackware vitual, in cadrul qemu, prin urmatoarea comanda:
# qemu-system-x86_64 -usb usbboot.img -hdb slackware.img -net nic -net tap,ifname=tap0,script=qemu-network-tun.sh -m 2G
Parametrul "-m 2G" specifica dimensiunea memoriei RAM utilizate. Dupa intrarea in programul clasic de instalare Slackware cunoscut, dar inainte de a rula comanda "setup", este necesar sa configurati manual reteaua sistemului virtual prin comenzile:
# ifconfig eth0 192.168.1.5 up
# route add default gw 192.168.1.2
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf
Dupa partitionarea discului virtual, prin comanda "fdisk", rulati comanda "setup" care va ajuta sa instalati Slackware. Dupa terminarea instalarii, alegeti "No" (nu reporniti/reboot) si reveniti la promptul de comanda. Mai sunt necesare cateva ajustari esentiale, pentru ca sistemul sa poata fi utilizat.
Mai ramane sa va asigurati ca sistemul incarca kernelul "generic" si nu pe cel "huge". Fisierul /etc/lilo.conf (acum il gasiti in /mnt/etc/lilo.conf deoarece va aflati inca in cadrul programului de instalare) trebuie sa contina:
boot = /dev/sdb
vga = normal
image = /mnt/boot/vmlinuz-generic
	root = /dev/sda1
	label = Slackware
	initrd = /boot/initrd.gz
	read-only
Dupa ce v-ati asigurat ca fisierul "lilo.conf" contine aceste linii, tastati comanda: "lilo -C /mnt/etc/lilo.conf" pentru instalarea LILO (linux loader) in MBR-ul hard disc-ului virtual. Se presupune ca /dev/sda reprezinta hard discul sistemului gazda.
Sistemul Slackware64-current este gata instalat. Iesiti din program cu comanda "halt" si inchideti fereastra qemu.
Pentru a verifica instalarea, rulati comanda:
# qemu-system-x86_64 -hda slackware.img -net nic -net tap,ifname=tap0,script=qemu-network-tun.sh -m 2G
Emulatorul QEMU va incarca sistemul de pe hard discul virtual, din fisierul slackware.img (pe care il puteti si ulterior salva in mai multe versiuni de lucru), dar, la un moment in cadrul procesului de bootare, se va opri deoarece sistemul ram disk initial (initrd), fiind setat pentru /dev/sdb, nu va gasi paritiile corespunzatoare, care de data aceasta se afla pe discul /dev/sda. Vi se va cere parola de root (pe care voi ati ales-o la instalare) si va va oferi posibilitatea de a face modificarile corespunzatoare. Folositi urmatoarele comenzi:
# mount /dev/sda1 / -o rw
# mkinitrd -k 4.19.48 -m ext4 -f ext4 -r /dev/sda1
Modificati din nou fisierul /etc/lilo.conf astfel incat acesta sa contina:
boot = /dev/sda
vga = normal
image = /boot/vmlinuz-generic
	root = /dev/sda1
	label = Slackware
	initrd = /boot/initrd.gz
	read-only
Tastati comanda "lilo" pentru instalarea Lilo in MBR-ul hard disc-ului virtual.
Ultima ajustare pe care mai trebuie sa o realizati este sa va asigurati ca fisierul /etc/fstab contine referinte la /dev/sda in loc de /dev/sdb. Editati fisierul utilizand vim si salvati.
Ati terminat de configurat sistemul, puteti reporni cu "reboot". Nu uitati sa configurati reteaua la parametrii descrisi, dupa noua incarcare a sistemului:
# ifconfig eth0 192.168.1.5 up
# route add default gw 192.168.1.2
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf

Aceasta pagina a fost ultima data modificata in data: 9 Iunie 2019 <razvan[at]sfinxalb.ro> Vizitatori: 17