惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Google DeepMind News
Google DeepMind News
腾讯CDC
博客园 - 司徒正美
Cisco Talos Blog
Cisco Talos Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
博客园 - 聂微东
博客园 - 【当耐特】
Project Zero
Project Zero
有赞技术团队
有赞技术团队
量子位
P
Privacy International News Feed
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
IT之家
IT之家
SecWiki News
SecWiki News
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
L
Lohrmann on Cybersecurity
宝玉的分享
宝玉的分享
Cloudbric
Cloudbric
雷峰网
雷峰网
月光博客
月光博客
Cyberwarzone
Cyberwarzone
S
Securelist
Hugging Face - Blog
Hugging Face - Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - Franky
T
Threat Research - Cisco Blogs
罗磊的独立博客
Forbes - Security
Forbes - Security
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Troy Hunt's Blog
Jina AI
Jina AI
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cyber Attacks, Cyber Crime and Cyber Security
The Last Watchdog
The Last Watchdog
V2EX - 技术
V2EX - 技术

Whexy Blog

We lost the AIxCC. So, what now? Arm VMM with Apple's Hypervisor Framework Driving WaveShare E‐Paper Display with a Raspberry Pi Pico in MicroPython Use cgroup v2 inside docker containers Annual Hit Piece: Fuzzing Top Conference Paper Debunking Report Solving SSH Key Login Issues on Synology NAS Can SSD Cache Improve Synology NAS Write Speeds? Virtualization is all you need Running Windows Games on Mac Without Virtual Machines Tears of the Kingdom: End of an Era Anonymous CDN Traffic Relay Self-host Relay Service with CDN Home Networking Solution Building Your Own Blog System Connecting Smart Devices to SUSTech Campus Network Function Color Theory Stop Forkin' Around: Faster Creating of Large Processes on Linux PMU Interrupts: How to handle them Asynchronous Mutex Alligator In Vest - My first research work Experience Using Several Plugins in Complex LaTeX Projects Variance in Rust Understanding Rust Generic Traits SUSTeam: Ultimate Gaming Platform Inline Assembly Language in C React Learning Notes Building a School Bus Schedule App for Apple Watch 12307 Train Ticket Purchase Platform Sakai and Local Folder Synchronization Building a Super Simple OpenJudge in Two Nights Setting Up Remote Backup for macOS Shell Script for Automatically Logging into SUSTech Campus Network Building a Movie Streaming System in the Dorm
Using QEMU to run Linux images on M1 Macbook
Whexy · 2021-08-16 · via Whexy Blog

As a student who is fond of system programming, I always want to develop Linux kernel directly on the M1 Macbook without nested VMs. This blog is a set-up Coding of the developing environment. The target is to run a Linux kernel in the QEMU on macOS with Apple Silicon.

The M1 is great and blah, blah, blah… but can it run Crisis? Eh.. I mean, QEMU?

Run Natively

Currently (24-Aug-2021), simply using brew install qemu won't work for M1 macOS. This situation may change in the future.

In this Coding, we are going to build the native version of QEMU running on macOS with M1 Apple Silicon.

Patch

My solution is to build QEMU by my own. Some blogs early this year 1 put that the QEMU doesn't support hypervisor framework (hvf) in M1, thus it should be patched with Hypervisor framework written by @_AlexGraf.

Things are changing everyday. Now the main branch has merged some hvf patches, while still not fully support Apple Silicon. Here we use QEMU 6.0 (which is the newest stable version in 24-Aug-2021), and use Alexander Graf's patch v8.

Building instructions

I got the latest QEMU git in GitHub. To build the qemu, first install the requirement.

brew install ninja pkgconfig glib pixman
  1. Clone the Git repo and checkout to the stable 6.0.0 version
git clone https://github.com/qemu/qemu
cd qemu
git checkout 3c93dfa42c394fdd55684f2fbf24cf2f39b97d47
  1. Patch
curl https://patchew.org/QEMU/20210519202253.76782-1-agraf@csgraf.de/mbox | git am
  1. Do auto configure and build
mkdir build && cd build
../configure --target-list=aarch64-softmmu
make -j8

Unlike the blogs written earlier this year, the only argument is just --target-list=aarch64-softmmu. Don't put --enbale-hvf or --disable-gnutls to it.

  1. Install QEMU

Now we have the qemu-system-aarch64 binary, and we can run it with qemu-system-aarch64 --version to see if it's ready.

❯ qemu-system-aarch64 --version
QEMU emulator version 6.0.50 (v6.0.0-1407-g44242f6937)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers

To test if QEMU actually works on the laptop, I download Ubuntu Server 20.04 (aarch64). The following is a shell to run the VM.

#!/bin/sh
qemu-system-aarch64 \
    -accel hvf \
    -m 2048 \
    -cpu cortex-a57 -M virt,highmem=off  \
    -drive file=/usr/local/share/qemu/edk2-aarch64-code.fd,if=pflash,format=raw,readonly=on \
    -drive file=ovmf_vars.fd,if=pflash,format=raw \
    -serial telnet::4444,server,nowait \
    -drive if=none,file=disk.qcow2,format=qcow2,id=hd0 \
    -device virtio-blk-device,drive=hd0,serial="dummyserial" \
    -device virtio-net-device,netdev=net0 \
    -netdev user,id=net0 \
    -vga none -device ramfb \
    -cdrom ubuntu-20.04.2-live-server-arm64.iso \
    -device usb-ehci -device usb-kbd -device usb-mouse -usb \
    -monitor stdio

I actually encounter many problems when installing QEMU. Here is what you might want to do.

  • It's suggested to use gcc-11 instead of apple clang (cc). Install gcc with homebrew first. However, I successfully build QEMU with apple clang.
  • Pay attension to the auto config. It will display the infomation whether a feature is enabled or disabled.
  • Use qemu-system-aarch64 -accel help to check if your QEMU supports hvf. If not, there are some problems when patching.
  1. Linux Desktop on Apple Silicon/M1 in Practice; 在 M1 上用 QEMU 运行 Debian 虚拟机; etc. ↩

© LICENSED UNDER CC BY-NC-SA 4.0