

ARM64 Linux on Win10 x64
source link: https://gist.github.com/paranlee/a8c1db153eaaabfe1ba8133e651952a9
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Below are the steps to get an ARM64 version of Ubuntu running in the QEMU emulator on Windows 10.
Install QEMU
Install for Windows from choco package manager
choco install qemu --version=2021.5.5 -confirm
PS D:\arm64-ubuntu2004\qemu> qemu-system-aarch64 --help
Check appending Window System PATH C:\Program Files\qemu
applied.
Then typing the terminal with some commands.
qemu-img --help
qemu-system-aarch64 -M virt -cpu help
Copy the Firmware and OS images
Into your working directory...
#cloud-config
password: asdfqwer
chpasswd: { expire: False }
ssh_pwauth: True
Login first password will be asdfqwer
(Optional) Create the configuration data image
The Ubuntu server images require configuration data be provided as an image, such as setting auth credentials.
We need input password below example <WE_HAVE_PASSWORD_MUST_BE_CREDENTIAL>
.
sudo apt -y install cloud-image-utils
cat >user-data <<EOF
#cloud-config
password: <WE_HAVE_PASSWORD_MUST_BE_CREDENTIAL>
chpasswd: { expire: False }
ssh_pwauth: True
EOF
cloud-localds user-data.img user-data
The tool used to convert the config text file into an image file only runs on Linux, so I've attached a user-data.img
file (and the text file used to create it) in a zip file to this Gist.
Extract the user-data.img
file to the working directory.
In user-data text file contents.
#cloud-config
password: asdfqwer
chpasswd: { expire: False }
ssh_pwauth: True
The user-data.img
file was created for password authentication as outlined in https://stackoverflow.com/a/53373376
Resize storage
If booting is confirmed, we will power off for a while and change the storage capacity.
Resize your image in the host what you want. :)
qemu-img resize ubuntu-20.04-server-cloudimg-arm64.img +32G
Start the vm, ssh into it and enter the following command
sudo growpart /dev/vda 1
Launch the emulator from the working directory
Run the below to boot the image, you will some some benign errors at startup. Wait until the output settles down (even after you see the login prompt, as the post-boot config may not have completed yet).
Run example
qemu-system-aarch64 -m 4096 -cpu cortex-a72 -smp 4 -M virt -M gic_version=3 -nographic -bios QEMU_EFI.fd -drive if=none,file=ubuntu-20.04-server-cloudimg-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -drive file=user-data.img,format=raw -device virtio-net-device,netdev=net0 -netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0
Run NUMA Example
qemu-system-aarch64 -m 16384M,slots=4 -cpu cortex-a72 -smp cpus=8 -object memory-backend-ram,id=mem0,size=4096M -numa node,cpus=0-1,nodeid=0,memdev=mem0 -object memory-backend-ram,id=mem1,size=4096M -numa node,cpus=2-3,nodeid=1,memdev=mem1 -object memory-backend-ram,id=mem2,size=4096M -numa node,cpus=4-5,nodeid=2,memdev=mem2 -object memory-backend-ram,id=mem3,size=4096M -numa node,cpus=6-7,nodeid=3,memdev=mem3 -M virt -M gic_version=3 -nographic -bios QEMU_EFI.fd -drive if=none,file=ubuntu-18.04-server-cloudimg-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -drive file=user-data.img,format=raw -device virtio-net-device,netdev=net0 -netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0
Long command need indent, enter.
We can check below.
qemu-system-aarch64 -m 4096 -cpu cortex-a72 -smp 4 -M virt -M gic_version=3 -nographic \
-bios QEMU_EFI.fd \
-drive if=none,file=ubuntu-20.04-server-cloudimg-arm64.img,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-drive file=user-data.img,format=raw \
-device virtio-net-device,netdev=net0 \
-netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0
To break down these lines:
qemu-system-aarch64 -m 4096 -cpu cortex-a72 -smp 4 -M virt -M gic_version=3 -nographic
- run the ARM64 virtual platform emulator with 4GB RAM and 4 Cortex-A72 cores with no GUI support.
-M virt -M gic_version=3
- use the QEMU's Virt DTB mem map and GIC v3.
-bios QEMU_EFI.fd
- use the firmware downloaded above.
-drive if=none,file=ubuntu-20.04-server-cloudimg-arm64.img,id=hd0
- use the Ubuntu image file
-device virtio-blk-device,drive=hd0
- mount drive from above as a block device
-drive file=user-data.img,format=raw
- use the configuration data image file
-device virtio-net-device,netdev=net0
- create a virtual network device
-netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0
- set up the networking stack and forward the SSH port
Play with SSH
Then from a good Terminal emulator (I recommend the new Windows Terminal app with one of the Powerline fonts) you can connect over SSH with the below, and the configured password (sample file have asdfqwer
):
Do terminal with ssh.
ssh ubuntu@localhost -p 2222
Upload my-file.sh
from host to vm.
scp -P 2222 my-file.sh ubuntu@localhost:/home/ubuntu
Download my-file.sh
from vm to host.
scp -P 2222 ubuntu@localhost:/home/ubuntu/my-file.sh .
Recommend
-
13
一步一步学ROP之linux_x64篇 蒸米 ·
-
11
Installing PyCrypto/Paramiko for Python3 x64 Windows Submitted by NanoDano on Sat, 11/28...
-
12
Office Persistence on x64 operating system 0x00 前言 在之前的文章《Use Office to maintain persistence》介绍...
-
19
前言
-
8
The company now running tests as part of the Insider program Windows 10 on ARM x64 emulation now in testing stage The...
-
11
PEEKs and POKEs in Windows x64?24-May-2010: PEEKs and POKEs in Windows x64? This kernel/driver-level Windows NT code: void huh() { LARGE_INTEGER a; KeQueryTickCount(&a); DbgPrint ("%d", a.QuadPart); }; .....
-
11
Adobe Photoshop 2020(22.4) x64精简优化绿色版...
-
8
mysql 8.0.25 x64 for Windows精简版...
-
10
查看: 1657|回复: 30 [原创] Movavi Video Suite 21.3.0 x64分析爆破
-
9
Bare metal Kubernetes on mixed x64 and ARM64
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK