在Apple M1 Mac Mini上运行Linux

因科研项目需求, 我们需要在Apple M1 Mac Mini上运行Linux来运行测试程序。基于前人几个月前的工作, 目前在M1 Mini上运行Linux只需要少量的命令操作。特此记录如下:

〇、准备实验材料

M1 Mini上带有网口、USB Type-C接口和USB Type-A接口。当前版本的Linux还没有网口和USB Type-A口的驱动程序, 因此下面只能使用USB Type-C口。于是, 我们需要一个USB Type-C扩展坞、单独的或扩展坞带的USB网卡、USB存储设备(U盘或移动硬盘)、鼠标、键盘以及显示器。

一、制作启动镜像

首先, 需要安装AArch64 (64位的ARM)架构的GCC工具链以及其他一些辅助工具:

 sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu lzop autopoint zstd device-tree-compiler gettext libtool-bin libipc-run-perl 

然后, 克隆我修改过的pearl项目的代码仓库:

git clone https://github.com/twd2/pearl.git
cd pearl
git submodule update --init --recursive

我的修改主要开启了Linux内核的USB网卡驱动程序, 以及修改了启动脚本。根据具体的环境, 用户可能还需要修改linux/pearl/bin/prepare-linux里面填写的根文件系统设备路径。

最后, 编译启动镜像, 得到pearl.image.macho:

 make build/linux/pearl.image.macho -j20 

二、准备根文件系统

这里下载前人制作好的根文件系统镜像, 解压, 然后用dd将其写入准备好的USB存储设备中。这个镜像是基于树莓派Ubuntu修改的, 因此M1 Mini是一个大号的树莓派(?)

sudo dd if=ubuntu-20.10-preinstalled-desktop-arm64+raspi.img of=/dev/rdisk2 bs=1m

写入完成之后, 应该可以看到一个FAT分区(卷标应该为system-boot)。把上一步得到的pearl.image.macho复制到这个分区里面。此处只是临时用其存放一下这个文件, 在完成下面第三步后, 便可将pearl.image.macho删除。

三、设置启动策略

首先, 将显示器和扩展坞连接至M1 Mini, 并将USB外设连接至扩展坞。然后, 在M1 Mini关机状态下长按电源键, 直到进入启动项选择界面。接着, 选择“Options”并按回车进入。

进入后, 打开终端并输入以下命令来关闭一些安全特性(需要输入密码):

bputil -n -k -c -a -s
csrutil disable
csrutil authenticated-root disable

上述命令只需要运行一次, 之后通过运行如下命令即可设置启动策略(需要输入用户名和密码):

kmutil configure-boot -c pearl.image.macho文件的路径 -v "/Volumes/Macintosh HD/"

设置好后, 重新启动M1 Mini。

如果后续需要回到macOS启动, 则可以使用如下命令(需要输入密码):

bputil -n pol change

四、启动

M1 Mini重新启动后, 应该就自动进入树莓派Ubuntu系统了。如果有USB网卡, 网络应该也自动连接上了。

如果启动时发现找不到根文件系统设备, 需要返回第一步, 修改代码仓库中linux/pearl/bin/prepare-linux文件, 然后重新尝试后续步骤。

参考资料

  1. https://corellium.com/blog/linux-m1
  2. https://github.com/corellium/preloader-m1
  3. https://github.com/pipcet/pearl
  4. https://asahilinux.org/2021/03/progress-report-january-february-2021/
发表评论?

4 条评论。

  1. 为何不用虚拟机,一样可以跑,而且很方便

  2. Hello! Sorry for writing in English, I don’t (yet) speak Chinese.

    I’m really thrilled to see this, thank you for providing a guide. If there is anything I can help with, please let me know.

    I don’t, unfortunately, have a Mini at this time, so I’m afraid I can’t really help with the network card issue.

    Thanks again, and all the best for your project!

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/15747QrCode