Prosta wirtualizacja
Jak na szybko postawić wirtualną maszynę pod Linuksem
Created Sep 8, 2022 - Last updated: Jun 30, 2023
ARM64
Pobranie instalki Debiana
Trzeba pozyskać prekompilowany kernel Linux i plik startowy initrd.gz oraz obraz ISO instalatora. Powinny być dostępne na serwerach Debiana.
Na przykład tak:
wget http://ftp.debian.org/debian/dists/stable/main/installer-armhf/20210731/images/netboot/mini.iso
wget http://ftp.debian.org/debian/dists/stable/main/installer-armhf/20210731/images/netboot/vmlinuz
wget http://ftp.debian.org/debian/dists/stable/main/installer-armhf/20210731/images/netboot/initrd.gz
wget http://ftp.debian.org/debian/dists/stable/main/installer-armhf/20210731/images/SHA256SUMS
Przygotowanie systemu
Pliki z katalogu netboot zapisujemy w netboot i sprawdzamy sumy kontrolne:
sha256sum -c SHA256SUMS --ignore-missing
Przygotowanie dysku wirtualnego:
qemu-img create -f qcow2 debian-aarch64.qcow2 32G
Sprawdzenie listy dostępnych emulacji procesora:
qemu-system-arm -cpu help
Uruchomienie instalacji z pobranego obrazu ISO i pomocniczych plików initrd.gz oraz kernela Linux:
qemu-system-arm -M virt -cpu cortex-a7 -m 4G -kernel netboot/vmlinuz -initrd netboot/initrd.gz \
-hda debian-armhf.qcow2 -append "console=ttyAMA0" \
-drive file=netboot/mini.iso,id=cdrom,if=none,media=cdrom \
-device virtio-scsi-device -device scsi-cd,drive=cdrom -nographic
Do uruchomienia zainstalowanego systemu trzeba wydobyć z niego aktualny kernel i initrd. W tym celu trzeba zamontować wirtualną partycję i skopiować z niej oba potrzebne pliki.
sudo modprobe nbd
sudo qemu-nbd --connect=/dev/nbd0 debian-arm64.qcow
sudo mount /dev/nbd0p2 /mnt/
sudo umount /mnt
sudo qemu-nbd --disconnect /dev/nbd0p1
Powyższe przydaje się też przy zapomnianym haśle.
Uruchomienie
Można uruchomić system i cieszyć się emulowanym ARM64 na x86-64. Działa w miarę wydajnie.
qemu-system-aarch64 -M virt -cpu cortex-a53 -m 1G -initrd ./initrd.img-5.10.0-21-arm64 \
-kernel ./vmlinuz-5.10.0-21-arm64 -append "root=/dev/vda2 console=ttyAMA0" \
-drive if=virtio,file=debian-arm64.qcow,format=qcow2,id=hd \
-net user,hostfwd=tcp::10022-:22 -net nic \
-device intel-hda -device hda-duplex -nographic
Ten start uruchamia emulację bliższą Raspberry Pi 3, gdy wcześniejsze jest bliżej Raspberry Pi 4.
Zamiast korzystać z terminala po uruchomieniu wirtualki lepiej zrobić ssh na tę maszynę:
ssh username@localhost -p 10022
x86-64
- Zapewnić możliwość uruchomienia wirtualnej maszyny w natywnym systemie (na przykład instalując virt-manager i libguestfs w systemie natywnym GNU/Linux)
- Pobrać obraz systemu w zależności od wybranej metody wirtualizacji (np.: qcow2) ze strony https://www.debian.org/distrib/
- Ustanowić hasło na dysku maszyny wirtualnej. Na przykład za pomocą komendy:
virt-customize -a debian-10-genericcloud-amd64.qcow2 --root-password password:debian
- Sprawdzić podział dysku na partycje i zwiększyć dostępną przestrzeń dyskową, na przykład tak:
modprobe nbd max_part=10
qemu-img resize GB-debian-11-generic-amd64.qcow2 10G
qemu-nbd -c /dev/nbd0 debian-11-generic-amd64.qcow2
gparted /dev/nbd0
qemu-nbd -d /dev/nbd0
- Skonfigurować maszynę wirtualną z użyciem wybranej metody wirtualizacji (np.: virt-manager) i korzystając z powiększonego dysku wirtualnego
- Uruchomić maszynę wirtualną, zalogować się jako root i zmienić hasło na bezpieczne (poprzednie mogło zostać w history)
- zaktualizować system:
apt update && apt upgrade && apt dist-upgrade
- Zainstalować dodatkowe oprogramowanie jak na przykład:
apt install qemu-guest-agent
apt install xfdesktop4 --install-recommends
- Utworzyć konto zwykłego użytkownika:
adduser user