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