mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 00:16:11 +00:00
103 lines
4.1 KiB
Plaintext
103 lines
4.1 KiB
Plaintext
|
|
How to install and configure a QEMU aarch64-linux installation.
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Last updated 30 April 2015
|
|
|
|
This gives a fairly usable, and not entirely slow, arm64-linux
|
|
install. It has the advantage that the idle loop works right and so
|
|
when the guest becomes idle, qemu uses only very little host cpu, so
|
|
you can leave the guest idling for long periods without bad
|
|
performance effects on the host.
|
|
|
|
More or less following
|
|
https://gmplib.org/~tege/qemu.html, section 14 (for arm64)
|
|
|
|
Build qemu-2.2.1 with --target-list including aarch64-softmmu
|
|
|
|
mkdir Arm64-2
|
|
cd Arm64-2
|
|
|
|
wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/linux
|
|
|
|
wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/initrd.gz
|
|
|
|
# Note. 6G is easily enough to install debian and do a build of Valgrind.
|
|
# If you envisage needing more space, now is the time to choose a larger
|
|
# number.
|
|
|
|
/path/to/Qemu221/bin/qemu-img create disk6G.img 6G
|
|
|
|
/path/to/Qemu221/bin/qemu-system-aarch64 \
|
|
-M virt -cpu cortex-a57 -m 256 \
|
|
-drive file=disk6G.img,if=none,id=blk -device virtio-blk-device,drive=blk \
|
|
-net user,hostfwd=tcp::5555-:22 -device virtio-net-device,vlan=0 \
|
|
-kernel linux \
|
|
-initrd initrd.gz \
|
|
-append "console=ttyAMA0 --" \
|
|
-nographic
|
|
|
|
Do an install, be as vanilla as possible, allow it to create a user
|
|
"username", and do not ask it to install any extra software. But,
|
|
when you get to here
|
|
|
|
┌───────────────────┤ [!!] Finish the installation ├────────────────────┐
|
|
│ │
|
|
┌│ Installation complete │
|
|
││ Installation is complete, so it is time to boot into your new system. │
|
|
││ Make sure to remove the installation media (CD-ROM, floppies), so │
|
|
││ that you boot into the new system rather than restarting the │
|
|
││ installation. │
|
|
││ │
|
|
└│ <Go Back> <Continue> │
|
|
│ │
|
|
└───────────────────────────────────────────────────────────────────────┘
|
|
|
|
do "Go Back"
|
|
then in the next menu "Execute a shell", "Continue"
|
|
|
|
This gives you a root shell in the new VM. In that shell:
|
|
|
|
mount -t proc proc /target/proc
|
|
mount --rbind /sys /target/sys
|
|
mount --rbind /dev /target/dev
|
|
chroot /target bash
|
|
/etc/init.d/ssh start
|
|
mv /boot/initrd.img-3.16.0-4-arm64 /boot/initrd.img-3.16.0-4-arm64.old
|
|
echo virtio-mmio >>/etc/initramfs-tools/modules
|
|
/usr/sbin/update-initramfs -c -k 3.16.0-4-arm64
|
|
|
|
Then on the host, copy out the files that the above created.
|
|
|
|
cd Arm64-2
|
|
ssh -p 5555 username@localhost \
|
|
"tar -c -f - --exclude=lost+found /boot" | tar xf -
|
|
|
|
Now back in the VM, we can finish the installation.
|
|
|
|
exit
|
|
exit
|
|
Select "Finish the installation"
|
|
Continue
|
|
|
|
When it reboots, kill qemu from another shell, else it will try to reinstall.
|
|
|
|
Now start the installation:
|
|
|
|
/path/to/Qemu221/bin/qemu-system-aarch64 -M virt \
|
|
-cpu cortex-a57 -m 1024 -drive file=disk6G.img,if=none,id=blk \
|
|
-device virtio-blk-device,drive=blk -net user,hostfwd=tcp::5555-:22 \
|
|
-device virtio-net-device,vlan=0 -kernel boot/vmlinuz-3.16.0-4-arm64 \
|
|
-initrd boot/initrd.img-3.16.0-4-arm64 \
|
|
-append "root=/dev/vda2 rw console=ttyAMA0 --" -nographic
|
|
|
|
Now you can ssh into the VM and install stuff as usual:
|
|
|
|
ssh -XC -p 5555 username@localhost
|
|
|
|
(on the guest)
|
|
become root
|
|
apt-get install make gcc g++ automake autoconf emacs subversion gdb
|
|
|
|
Hack on, etc.
|