J 창고

[MacBook Air M1] Ubuntu 20.04 via QEMU 본문

컴퓨터/Mac

[MacBook Air M1] Ubuntu 20.04 via QEMU

JSFamily 2021. 2. 12. 20:39

 

 

1. 개요

Apple이 M1 CPU를 만들었다고 했을 땐 크게 관심이 없었는데 여러 리뷰를 보니까 성능도 좋으면서(최적화 잘 된 것만) 저전력으로 동작한다는 얘기를 많이 하기에 냅다 질러버렸다..... (아아...)
다만 Linux Application 개발자로서 Linux가 있어야 맴이 편하기 때문에 Virtual Machine이라도 하나 구축하는게 좋은데 M1 Cpu를 사용하다 보니 Parellels, VMWare, VirtualBox 다 공식 버전이 없는 상태이다.

그러던 와중에 Windows 10 ARM버전을 구동하는데 성공했다는 얘기를 듣고 검색해보니 역시나 Ubuntu 20.04 ARM을 구동하는 방법이 존재했고 그 방법을 공유하고자 본 포스트를 작성한다.

 

2. Prepare

2-1. homebrew install

Homebrew 사이트에 친절히 설명 되어 있다.

brew.sh

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

2-2. Install QEMU and packages

brew install ninja pkgconfig glib pixman qemu

Reference의 내용으로는 QEMU Source를 받아서 관련 Patch를 적용하는 방법으로 가이드하고 있으나 뭔가 문제가 있는지 제대로 동작하지 않는다. 따라서 Pre-built된 QEMU 바이너리를 이용한다. (아래 링크의 파일 다운로드)

mega.nz/file/QYB0QTrC#p6IMBJlFqqNKuGonwrDkPOVKQj8yHCVgiLOYVaGvs4M

다만 qemu-img 라는 command를 사용해야 하기 때문에 brew install로 qemu package를 같이 설치해 준다.

 

2-3. Create VM HDD Image 

Virtual Machine 에서 사용할 가상 HDD를 생성한다.
qemu-img 를 사용하여 40Gb의 가상 HDD 파일을 생성 

qemu-img create -f qcow2 /path/to/Ubuntu.qcow2 40G

 

2-4. Download Ubuntu 20.04 on ARM and EFI Image

Ubuntu 20.04.2 TLS Daily Build 이미지로 AMD64가 아니라 ARM64 이미지로 받아야 한다.

Ubuntu 20.04.2 : cdimage.ubuntu.com/focal/daily-live/current/

EFI Image : www.sevarg.net/images/2021-qemu-m1/QEMU_EFI.fd

 

2-5. Run QEMU with Ubuntu 20.04 Install Image

2-2 에서 받은 QEMU prebuilt image의 압축을 풀면 qemu-system-aarch64 실행파일이 있으며 이를 아래와 같이 실행한다.
-m은 가상머신에 할당할 RAM 크기를 의미하며 -smp는 가상머신에 할당할 cpu core 갯수를 의미한다.
-bios의 인자로 /path/to/QEMU_EFI.fd 를 2-4에서 받은 EFI Image 경로를 적어주며
-drive file=/path/to/Ubuntu.qcow2,if=virtio,cache-writethrough 에서 /path/to/Ubuntu.qcow2는 2-3에서 만들었던 가상 HDD 파일의 경로를 적으면 된다.
가장 마지막의 -cdrom /path/to/focal-desktop-arm64.iso는 2-4에서 다운로드한 Ubuntu 20.04.2 on ARM ISO 파일의 경로를 적으면 된다.

./qemu-system-aarch64 \
  -serial stdio \
  -M virt,highmem=off \
  -accel hvf \
  -cpu cortex-a72 \
  -smp 4 \
  -m 4096 \
  -bios /path/to/QEMU_EFI.fd \
  -device virtio-gpu-pci \
  -display default,show-cursor=on \
  -device qemu-xhci \
  -device usb-kbd \
  -device usb-tablet \
  -device intel-hda \
  -device hda-duplex \
  -drive file=/path/to/Ubuntu.qcow2,if=virtio,cache=writethrough \
  -cdrom /path/to/focal-desktop-arm64.iso

 

2-6. Install Ubuntu 20.04

실행 후 통상적인 Ubuntu 설치 화면이 나오며 설치를 진행하면 된다.

 

3. Running

설치 후 실행은 아래와 같이 하면 된다. (-cdrom 옵션만 없애면 된다)

./qemu-system-aarch64 \
  -serial stdio \
  -M virt,highmem=off \
  -accel hvf \
  -cpu cortex-a72 \
  -smp 4 \
  -m 4096 \
  -bios /path/to/QEMU_EFI.fd \
  -device virtio-gpu-pci \
  -display default,show-cursor=on \
  -device qemu-xhci \
  -device usb-kbd \
  -device usb-tablet \
  -device intel-hda \
  -device hda-duplex \
  -drive file=/path/to/Ubuntu.qcow2,if=virtio,cache=writethrough

 

Ubuntu 20.04 on ARM 에서 Linux Kernel Build

 CPU 8개를 할당하여 Linux Kernel Build를 해본 결과 생각보다 빠른 성능을 보여줬으며 Linux Application 개발자로서 급할 땐 이렇게 구성해서라도 사용하면 될 듯 싶다.
다만 ARM버전이라서 Compile 후 나온 이미지는 Arm 용 Binary라서 일반 PC에서는 사용할 수 없으나 Embedded Linux 에서는 활용도가 좋을 것으로 보인다. (Embedded Linux 는 AP를 대부분 ARM 을 사용한 SoC이기 때문)
근데 어디까지나 생각외로 빠르단 의미지 절대적으로 빠르다는 아님을 명시하시길 바랍니다.
만약 다음 버전의 M1이 16코어 &  32Gb RAM 이 나온다고 하면 CTO로 주문해서 구매할 것 같다... 으어 내 텅장.... ㅠㅠ

 

4. Reference

www.sevarg.net/2021/01/09/arm-mac-mini-and-boinc/

 

The Apple M1, ARM/x86 Linux Virtualization, and BOINC

About six months ago, I speculated a bit on what Apple might do with their upcoming (rumored at the time) ARM transition. Apple did it, has shipped hardware, and I’ve had a chance to play with for a while now. I’ve also, as is usual for me, gone down s

www.sevarg.net

forums.macrumors.com/threads/success-virtualize-windows-10-for-arm-on-m1-with-alexander-grafs-qemu-hypervisor-patch.2272354/

 

[SUCCESS] Virtualize Windows 10 for ARM on M1 with Alexander Graf's qemu hypervisor patch

I was able to successfully virtualize Windows 10 for ARM on M1 with Alexander Graf's QEMU hypervisor patch. Screenshot: How to virtualize Windows 10 on M1: 1. 
Download qemu-m1.zip from https://mega.nz/file/QYB0QTrC#p6IMBJlFqqNKuGonwrDkPOVKQj8yHCVgiLOYVa

forums.macrumors.com

 

Comments