<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Install_Arch_Linux_ARM_di_QEMU</id>
	<title>Install Arch Linux ARM di QEMU - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Install_Arch_Linux_ARM_di_QEMU"/>
	<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Install_Arch_Linux_ARM_di_QEMU&amp;action=history"/>
	<updated>2026-11-01T22:41:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=Install_Arch_Linux_ARM_di_QEMU&amp;diff=657&amp;oldid=prev</id>
		<title>SanzSkuy: Created page with &quot;Panduan ini menjalankan &#039;&#039;&#039;Arch Linux ARM (ALARM)&#039;&#039;&#039; sebagai &#039;&#039;guest&#039;&#039; di dalam QEMU lewat &#039;&#039;&#039;emulasi penuh&#039;&#039;&#039; (&#039;&#039;full-system emulation&#039;&#039;), sehingga bisa dijalankan dari host arsitektur apa pun (x86_64, ARM, dll).  {{Note|Arch Linux ARM &#039;&#039;&#039;tidak menyediakan ISO installer&#039;&#039;&#039;. Distronya dikirim sebagai &#039;&#039;rootfs tarball&#039;&#039; yang harus disiapkan ke dalam disk dari sisi host terlebih dahulu, baru di-boot. Karena itu langkahnya berbeda dari instalasi Arch x86 biasa.}}  Terse...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Install_Arch_Linux_ARM_di_QEMU&amp;diff=657&amp;oldid=prev"/>
		<updated>2026-06-14T04:40:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Panduan ini menjalankan &amp;#039;&amp;#039;&amp;#039;Arch Linux ARM (ALARM)&amp;#039;&amp;#039;&amp;#039; sebagai &amp;#039;&amp;#039;guest&amp;#039;&amp;#039; di dalam &lt;a href=&quot;/wiki/index.php/QEMU&quot; title=&quot;QEMU&quot;&gt;QEMU&lt;/a&gt; lewat &amp;#039;&amp;#039;&amp;#039;emulasi penuh&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;full-system emulation&amp;#039;&amp;#039;), sehingga bisa dijalankan dari host arsitektur apa pun (x86_64, ARM, dll).  {{Note|Arch Linux ARM &amp;#039;&amp;#039;&amp;#039;tidak menyediakan ISO installer&amp;#039;&amp;#039;&amp;#039;. Distronya dikirim sebagai &amp;#039;&amp;#039;rootfs tarball&amp;#039;&amp;#039; yang harus disiapkan ke dalam disk dari sisi host terlebih dahulu, baru di-boot. Karena itu langkahnya berbeda dari instalasi Arch x86 biasa.}}  Terse...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Panduan ini menjalankan &amp;#039;&amp;#039;&amp;#039;Arch Linux ARM (ALARM)&amp;#039;&amp;#039;&amp;#039; sebagai &amp;#039;&amp;#039;guest&amp;#039;&amp;#039; di dalam [[QEMU]] lewat &amp;#039;&amp;#039;&amp;#039;emulasi penuh&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;full-system emulation&amp;#039;&amp;#039;), sehingga bisa dijalankan dari host arsitektur apa pun (x86_64, ARM, dll).&lt;br /&gt;
&lt;br /&gt;
{{Note|Arch Linux ARM &amp;#039;&amp;#039;&amp;#039;tidak menyediakan ISO installer&amp;#039;&amp;#039;&amp;#039;. Distronya dikirim sebagai &amp;#039;&amp;#039;rootfs tarball&amp;#039;&amp;#039; yang harus disiapkan ke dalam disk dari sisi host terlebih dahulu, baru di-boot. Karena itu langkahnya berbeda dari instalasi Arch x86 biasa.}}&lt;br /&gt;
&lt;br /&gt;
Tersedia &amp;#039;&amp;#039;&amp;#039;2 metode&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Metode A — Direct kernel boot&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;(disarankan, paling sederhana)&amp;#039;&amp;#039;. Kernel di-pass langsung lewat argumen QEMU. Tidak butuh firmware UEFI maupun bootloader.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Metode B — UEFI boot&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;(lebih realistis &amp;amp; mandiri)&amp;#039;&amp;#039;. VM boot sendiri seperti mesin asli. Lebih banyak langkah.&lt;br /&gt;
&lt;br /&gt;
Mulai dari Metode A. Pindah ke Metode B kalau sudah nyaman.&lt;br /&gt;
&lt;br /&gt;
== Prasyarat ==&lt;br /&gt;
&lt;br /&gt;
Kebutuhan di host:&lt;br /&gt;
&lt;br /&gt;
* RAM cukup (alokasikan ≥ 2–4&amp;amp;nbsp;GB untuk VM)&lt;br /&gt;
* Disk kosong ± 20&amp;amp;nbsp;GB&lt;br /&gt;
* Akses &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;&lt;br /&gt;
* Emulasi murni (TCG) itu &amp;#039;&amp;#039;&amp;#039;lambat&amp;#039;&amp;#039;&amp;#039; di host non-ARM — ini normal. Di host Apple Silicon bisa pakai akselerasi HVF (lihat catatan di bagian boot).&lt;br /&gt;
&lt;br /&gt;
=== Install paket QEMU ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arch / Manjaro:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo pacman -S --needed qemu-base qemu-system-aarch64 libarchive&lt;br /&gt;
# untuk Metode B (UEFI), tambahkan firmware:&lt;br /&gt;
sudo pacman -S edk2-aarch64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debian / Ubuntu:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install qemu-system-arm qemu-utils libarchive-tools&lt;br /&gt;
# untuk Metode B (UEFI):&lt;br /&gt;
sudo apt install qemu-efi-aarch64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fedora:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dnf install qemu-system-aarch64 qemu-img libarchive&lt;br /&gt;
# untuk Metode B (UEFI):&lt;br /&gt;
sudo dnf install edk2-aarch64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|&amp;lt;code&amp;gt;libarchive&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;libarchive-tools&amp;lt;/code&amp;gt; dibutuhkan untuk perintah &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;bsdtar&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;. Tarball ALARM &amp;#039;&amp;#039;&amp;#039;wajib&amp;#039;&amp;#039;&amp;#039; diekstrak pakai &amp;lt;code&amp;gt;bsdtar&amp;lt;/code&amp;gt;, bukan &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; GNU biasa, supaya permission &amp;amp; atribut file terjaga.}}&lt;br /&gt;
&lt;br /&gt;
== Metode A — Direct Kernel Boot (disarankan) ==&lt;br /&gt;
&lt;br /&gt;
=== Langkah 1: Download rootfs tarball ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|&amp;#039;&amp;#039;&amp;#039;Kecepatan dari Indonesia:&amp;#039;&amp;#039;&amp;#039; mirror Jepang/Taiwan biasanya lebih cepat, mis. &amp;lt;code&amp;gt;http://jp.mirror.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;http://tw2.mirror.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Buat disk image ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
qemu-img create -f qcow2 alarm.qcow2 16G&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(&amp;lt;code&amp;gt;16G&amp;lt;/code&amp;gt; = batas maksimum; file qcow2 tumbuh sesuai pemakaian, tidak langsung memakan 16&amp;amp;nbsp;GB.)&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Siapkan partisi via qemu-nbd ===&lt;br /&gt;
&lt;br /&gt;
Sambungkan image qcow2 sebagai &amp;#039;&amp;#039;network block device&amp;#039;&amp;#039; agar bisa dipartisi dari host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
sudo qemu-nbd --connect=/dev/nbd0 alarm.qcow2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Buat satu partisi root ext4 (cukup untuk Metode A):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo parted -s /dev/nbd0 mklabel gpt&lt;br /&gt;
sudo parted -s /dev/nbd0 mkpart primary ext4 1MiB 100%&lt;br /&gt;
sudo mkfs.ext4 /dev/nbd0p1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Mount &amp;amp; ekstrak rootfs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mount /dev/nbd0p1 /mnt&lt;br /&gt;
sudo bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt&lt;br /&gt;
sudo sync&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cek isi &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; — pastikan ada kernel &amp;amp; initramfs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls -lh /mnt/boot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Harus muncul &amp;lt;code&amp;gt;Image&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;initramfs-linux-fallback.img&amp;lt;/code&amp;gt; (juga &amp;lt;code&amp;gt;initramfs-linux.img&amp;lt;/code&amp;gt;). Kalau initramfs tidak ada, gunakan Metode B yang me-regenerate-nya saat boot pertama.&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Salin kernel + initramfs ke host ===&lt;br /&gt;
&lt;br /&gt;
Metode A mem-boot kernel dari sisi host, jadi salin keluar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /mnt/boot/Image ./Image&lt;br /&gt;
sudo cp /mnt/boot/initramfs-linux-fallback.img ./initramfs.img&lt;br /&gt;
sudo chown $USER:$USER Image initramfs.img&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Pakai &amp;lt;code&amp;gt;initramfs-linux-fallback.img&amp;lt;/code&amp;gt; (berisi semua modul, termasuk &amp;lt;code&amp;gt;virtio&amp;lt;/code&amp;gt;) supaya boot pertama pasti mengenali disk.}}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: (Opsional) atur fstab ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;#039;/dev/vda1  /  ext4  defaults  0 1&amp;#039; | sudo tee /mnt/etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 7: Lepas mount &amp;amp; putuskan nbd ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo qemu-nbd --disconnect /dev/nbd0&lt;br /&gt;
sudo rmmod nbd      # opsional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 8: Jalankan VM ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
qemu-system-aarch64 \&lt;br /&gt;
  -M virt \&lt;br /&gt;
  -cpu cortex-a72 \&lt;br /&gt;
  -smp 4 \&lt;br /&gt;
  -m 4G \&lt;br /&gt;
  -kernel Image \&lt;br /&gt;
  -initrd initramfs.img \&lt;br /&gt;
  -append &amp;quot;root=/dev/vda1 rw console=ttyAMA0&amp;quot; \&lt;br /&gt;
  -drive if=virtio,file=alarm.qcow2,format=qcow2 \&lt;br /&gt;
  -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 \&lt;br /&gt;
  -nographic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Penjelasan opsi:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Opsi !! Arti&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-M virt&amp;lt;/code&amp;gt; || Mesin virtual ARM generik standar QEMU&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-cpu cortex-a72&amp;lt;/code&amp;gt; || CPU yang diemulasi (alternatif: &amp;lt;code&amp;gt;-cpu max&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-smp 4&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-m 4G&amp;lt;/code&amp;gt; || 4 vCPU, RAM 4&amp;amp;nbsp;GB&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; || Boot kernel langsung + argumen kernel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-drive if=virtio,...&amp;lt;/code&amp;gt; || Disk muncul sebagai &amp;lt;code&amp;gt;/dev/vda&amp;lt;/code&amp;gt; di dalam VM&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-nic user,...,hostfwd=tcp::2222-:22&amp;lt;/code&amp;gt; || Jaringan user-mode + forward port host 2222 → guest 22 (SSH)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-nographic&amp;lt;/code&amp;gt; || Output serial langsung ke terminal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&amp;#039;&amp;#039;&amp;#039;Keluar dari &amp;lt;code&amp;gt;-nographic&amp;lt;/code&amp;gt;:&amp;#039;&amp;#039;&amp;#039; tekan {{ic|Ctrl-A}} lalu {{ic|X}}.&amp;lt;br&amp;gt;&amp;#039;&amp;#039;&amp;#039;Apple Silicon (host ARM):&amp;#039;&amp;#039;&amp;#039; tambahkan &amp;lt;code&amp;gt;-accel hvf -cpu host&amp;lt;/code&amp;gt; untuk kecepatan jauh lebih tinggi (ganti &amp;lt;code&amp;gt;-cpu cortex-a72&amp;lt;/code&amp;gt;).}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|&amp;#039;&amp;#039;&amp;#039;Catatan Metode A:&amp;#039;&amp;#039;&amp;#039; karena kernel berada di host, kalau nanti update kernel di dalam VM (&amp;lt;code&amp;gt;pacman -Syu&amp;lt;/code&amp;gt;), salin ulang &amp;lt;code&amp;gt;Image&amp;lt;/code&amp;gt; &amp;amp; initramfs yang baru dari &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt;, atau pindah ke Metode B agar update kernel otomatis ke-boot.}}&lt;br /&gt;
&lt;br /&gt;
== Login pertama &amp;amp; konfigurasi awal ==&lt;br /&gt;
&lt;br /&gt;
Akun default Arch Linux ARM:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! User !! Password&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alarm&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;alarm&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Login sebagai &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; untuk setup.&lt;br /&gt;
&lt;br /&gt;
=== Inisialisasi keyring pacman (WAJIB sebelum update) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pacman-key --init&lt;br /&gt;
pacman-key --populate archlinuxarm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update sistem ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pacman -Syu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfigurasi dasar ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Ganti password root&lt;br /&gt;
passwd&lt;br /&gt;
&lt;br /&gt;
# Zona waktu (Bandung = WIB)&lt;br /&gt;
ln -sf /usr/share/zoneinfo/Asia/Jakarta /etc/localtime&lt;br /&gt;
hwclock --systohc&lt;br /&gt;
&lt;br /&gt;
# Locale&lt;br /&gt;
sed -i &amp;#039;s/#en_US.UTF-8/en_US.UTF-8/&amp;#039; /etc/locale.gen&lt;br /&gt;
sed -i &amp;#039;s/#id_ID.UTF-8/id_ID.UTF-8/&amp;#039; /etc/locale.gen&lt;br /&gt;
locale-gen&lt;br /&gt;
echo &amp;#039;LANG=en_US.UTF-8&amp;#039; &amp;gt; /etc/locale.conf&lt;br /&gt;
&lt;br /&gt;
# Hostname&lt;br /&gt;
echo &amp;#039;archarm&amp;#039; &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
# Buat user baru + sudo&lt;br /&gt;
pacman -S --needed sudo&lt;br /&gt;
useradd -m -G wheel namauser&lt;br /&gt;
passwd namauser&lt;br /&gt;
EDITOR=nano visudo   # hapus tanda # pada baris: %wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SSH dari host ===&lt;br /&gt;
&lt;br /&gt;
ALARM sudah menyertakan &amp;lt;code&amp;gt;sshd&amp;lt;/code&amp;gt;. Dari terminal &amp;#039;&amp;#039;&amp;#039;host&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssh -p 2222 alarm@localhost&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Kalau koneksi ditolak: di dalam VM jalankan &amp;lt;code&amp;gt;systemctl enable --now sshd&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Selesai — sistem Arch Linux ARM siap dipakai.&lt;br /&gt;
&lt;br /&gt;
== Metode B — UEFI Boot (mandiri, lebih realistis) ==&lt;br /&gt;
&lt;br /&gt;
Di sini VM boot sendiri lewat firmware UEFI (edk2), tanpa perlu pass kernel dari host. Update kernel di dalam VM otomatis ke-boot. Pendekatan paling andal di QEMU adalah lewat &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;startup.nsh&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; di EFI System Partition (ESP).&lt;br /&gt;
&lt;br /&gt;
Ulangi &amp;#039;&amp;#039;&amp;#039;Langkah 1–3&amp;#039;&amp;#039;&amp;#039; dari Metode A (download tarball, buat qcow2, modprobe + connect nbd), lalu lanjut:&lt;br /&gt;
&lt;br /&gt;
=== B1. Partisi: ESP + root ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo parted -s /dev/nbd0 mklabel gpt&lt;br /&gt;
sudo parted -s /dev/nbd0 mkpart ESP fat32 1MiB 513MiB&lt;br /&gt;
sudo parted -s /dev/nbd0 set 1 esp on&lt;br /&gt;
sudo parted -s /dev/nbd0 mkpart primary ext4 513MiB 100%&lt;br /&gt;
sudo mkfs.fat -F32 /dev/nbd0p1&lt;br /&gt;
sudo mkfs.ext4 /dev/nbd0p2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== B2. Mount &amp;amp; ekstrak ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mount /dev/nbd0p2 /mnt&lt;br /&gt;
sudo bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt&lt;br /&gt;
sudo mkdir -p /mnt/boot/efi&lt;br /&gt;
sudo mount /dev/nbd0p1 /mnt/boot/efi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== B3. Siapkan kernel + startup.nsh di ESP ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Ambil PARTUUID partisi root&lt;br /&gt;
ROOT_PARTUUID=$(sudo blkid -s PARTUUID -o value /dev/nbd0p2)&lt;br /&gt;
echo &amp;quot;Root PARTUUID = $ROOT_PARTUUID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Salin kernel + initramfs ke ESP&lt;br /&gt;
sudo cp /mnt/boot/Image /mnt/boot/efi/&lt;br /&gt;
sudo cp /mnt/boot/initramfs-linux-fallback.img /mnt/boot/efi/&lt;br /&gt;
&lt;br /&gt;
# Buat startup.nsh (UEFI Shell otomatis menjalankannya)&lt;br /&gt;
printf &amp;#039;Image initrd=initramfs-linux-fallback.img root=PARTUUID=%s rw console=ttyAMA0\n&amp;#039; &amp;quot;$ROOT_PARTUUID&amp;quot; \&lt;br /&gt;
  | sudo tee /mnt/boot/efi/startup.nsh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== B4. fstab ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ESP_UUID=$(sudo blkid -s UUID -o value /dev/nbd0p1)&lt;br /&gt;
sudo tee /mnt/etc/fstab &amp;gt;/dev/null &amp;lt;&amp;lt;EOF&lt;br /&gt;
PARTUUID=$ROOT_PARTUUID  /          ext4   defaults        0 1&lt;br /&gt;
UUID=$ESP_UUID           /boot/efi  vfat   defaults        0 2&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== B5. Lepas mount &amp;amp; putuskan nbd ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot/efi&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo qemu-nbd --disconnect /dev/nbd0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== B6. Siapkan firmware UEFI ===&lt;br /&gt;
&lt;br /&gt;
Variabel NVRAM perlu file yang bisa ditulis — salin templatenya:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Arch (edk2-aarch64):&lt;br /&gt;
cp /usr/share/edk2/aarch64/QEMU_VARS.fd ./QEMU_VARS.fd&lt;br /&gt;
CODE=/usr/share/edk2/aarch64/QEMU_CODE.fd&lt;br /&gt;
&lt;br /&gt;
# Debian/Ubuntu (qemu-efi-aarch64) — pakai ini sebagai gantinya:&lt;br /&gt;
# cp /usr/share/AAVMF/AAVMF_VARS.fd ./QEMU_VARS.fd&lt;br /&gt;
# CODE=/usr/share/AAVMF/AAVMF_CODE.fd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== B7. Jalankan VM (UEFI) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
qemu-system-aarch64 \&lt;br /&gt;
  -M virt \&lt;br /&gt;
  -cpu cortex-a72 \&lt;br /&gt;
  -smp 4 \&lt;br /&gt;
  -m 4G \&lt;br /&gt;
  -drive if=pflash,format=raw,readonly=on,file=&amp;quot;$CODE&amp;quot; \&lt;br /&gt;
  -drive if=pflash,format=raw,file=QEMU_VARS.fd \&lt;br /&gt;
  -drive if=virtio,file=alarm.qcow2,format=qcow2 \&lt;br /&gt;
  -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 \&lt;br /&gt;
  -nographic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Firmware akan gagal menemukan bootloader standar, jatuh ke UEFI Shell, lalu menjalankan &amp;lt;code&amp;gt;startup.nsh&amp;lt;/code&amp;gt; yang mem-boot kernel. Setelah masuk, lanjutkan dari bagian [[#Login pertama &amp;amp; konfigurasi awal|Login pertama &amp;amp; konfigurasi awal]].&lt;br /&gt;
&lt;br /&gt;
{{Tip|Setelah update kernel di dalam VM, salin ulang kernel/initramfs ke ESP, atau (lebih baik) install bootloader sungguhan seperti &amp;lt;code&amp;gt;systemd-boot&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;grub&amp;lt;/code&amp;gt; dari dalam VM agar tidak perlu &amp;lt;code&amp;gt;startup.nsh&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
; Kernel panic &amp;quot;Unable to mount root fs&amp;quot; / &amp;quot;VFS: Cannot open root device&amp;quot;&lt;br /&gt;
: Disk tidak terbaca. Pastikan pakai &amp;lt;code&amp;gt;initramfs-linux-fallback.img&amp;lt;/code&amp;gt; (bukan yang biasa), dan &amp;lt;code&amp;gt;root=/dev/vda1&amp;lt;/code&amp;gt; cocok dengan layout disk (&amp;lt;code&amp;gt;/dev/vda&amp;lt;/code&amp;gt; = drive virtio pertama).&lt;br /&gt;
&lt;br /&gt;
; Layar diam / tidak ada output&lt;br /&gt;
: Pastikan ada &amp;lt;code&amp;gt;console=ttyAMA0&amp;lt;/code&amp;gt; di &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; dan pakai &amp;lt;code&amp;gt;-nographic&amp;lt;/code&amp;gt;. Untuk Metode B, console diatur di &amp;lt;code&amp;gt;startup.nsh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;bsdtar: command not found&amp;lt;/code&amp;gt;&lt;br /&gt;
: Install &amp;lt;code&amp;gt;libarchive&amp;lt;/code&amp;gt; (Arch/Fedora) atau &amp;lt;code&amp;gt;libarchive-tools&amp;lt;/code&amp;gt; (Debian/Ubuntu).&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;Could not access KVM kernel module&amp;lt;/code&amp;gt; / sangat lambat&lt;br /&gt;
: Normal di host non-ARM: kamu memang sedang &amp;#039;&amp;#039;&amp;#039;mengemulasi&amp;#039;&amp;#039;&amp;#039; ARM (TCG), bukan virtualisasi. Tidak ada KVM. Untuk percepatan, jalankan di host ARM (Apple Silicon: &amp;lt;code&amp;gt;-accel hvf -cpu host&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;/dev/nbd0&amp;lt;/code&amp;gt; sibuk / tidak bisa connect&lt;br /&gt;
: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd --disconnect /dev/nbd0&lt;br /&gt;
sudo rmmod nbd &amp;amp;&amp;amp; sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Permission saat ekstrak&lt;br /&gt;
: Selalu pakai &amp;lt;code&amp;gt;sudo bsdtar -xpf ...&amp;lt;/code&amp;gt; (flag &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt; mempertahankan permission).&lt;br /&gt;
&lt;br /&gt;
== Tips lanjutan ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GUI/desktop:&amp;#039;&amp;#039;&amp;#039; ganti &amp;lt;code&amp;gt;-nographic&amp;lt;/code&amp;gt; dengan &amp;lt;code&amp;gt;-device virtio-gpu-pci -display gtk&amp;lt;/code&amp;gt; (atau &amp;lt;code&amp;gt;-display sdl&amp;lt;/code&amp;gt;), lalu install desktop di dalam VM (mis. &amp;lt;code&amp;gt;pacman -S xfce4&amp;lt;/code&amp;gt;). Emulasi grafis terasa berat.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Folder bersama host↔guest:&amp;#039;&amp;#039;&amp;#039; paling praktis lewat SSH/&amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; ke port 2222, atau pakai &amp;lt;code&amp;gt;virtfs&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;9p&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Perbesar disk nanti:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;qemu-img resize alarm.qcow2 +10G&amp;lt;/code&amp;gt;, lalu perluas partisi dari dalam VM.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Snapshot:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;qemu-img snapshot -c nama alarm.qcow2&amp;lt;/code&amp;gt; (buat), &amp;lt;code&amp;gt;-a nama&amp;lt;/code&amp;gt; (kembalikan), &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt; (daftar).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bikin skrip launcher:&amp;#039;&amp;#039;&amp;#039; simpan perintah &amp;lt;code&amp;gt;qemu-system-aarch64 ...&amp;lt;/code&amp;gt; di file &amp;lt;code&amp;gt;.sh&amp;lt;/code&amp;gt; agar tidak ketik ulang.&lt;br /&gt;
&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:Arch Linux ARM]]&lt;br /&gt;
[[Category:Virtualization]]&lt;/div&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
</feed>