HsOjo’s Blog

📒 A powerless rookie's tree hole.

使用 Rosetta 建立 Ubuntu x86 开发环境

2022-11-1800 分钟
type
status
date
slug
summary
tags
category
icon
password

前言

尽管换了 M1 设备也有一年多了,但平时仍然依赖于 x86 平台进行开发,为此不得不单独部署一套 x86 的开发环境在 intel PC 上。
随着 macOS 更新到了 Ventura (13.0.1),以及 UTM 4.0 的更新,现已可以在 Linux 环境下启用 Rosetta 对 x86(含amd64) 应用进行加速。
使用 Rosetta 加速后,在构建项目的速度上甚至几年前的 i7 8700 打得有来有回,比较离谱。

UTM 4.0 更新

支持了以下几个主要的新特性。
  • 无头(headless)模式启动
    • 将虚拟机的所有显示设备移除,打开虚拟机时便不会弹窗
    • 可通过串口设备或通过网络进行访问(太合适服务器系统了
  • VirtioFS
    • 可用于文件共享,挂载宿主机目录进行访问
    • 相较于 cifs, sshfs 等方案,正确了保留原有的 rwx 权限,并可正常执行程序
  • Rosetta 加速
    • macOS 13 以上可用,通过 VirtioFS 挂载
基于这些特性,第一时间联想到的就是替代 x86 开发环境的可行性;实际上只要 Rosetta 性能上没问题,其它都是小事。

部署流程

  • 需要将 macOS 更新到 Ventura 以上的版本,再进行后续操作。

安装 UTM

建议使用非 Beta 版本

安装 Ubuntu

建议使用 LTS 版本
下载完成后打开 UTM,按照以下流程创建虚拟机:
  1. 选中 Linux 预配置
  1. 使用 Apple 虚拟化
  1. Enable Rosetta (x86_64 Emulation)
  1. 选择下载好的光盘镜像
  1. 设置硬件参数
  1. 配置文件共享
创建虚拟机以后,正常流程安装系统便可。

配置 Rosetta 运行环境

基础流程可参照官方手册。(不看也行,本文会进行复读
  • 创建 Rosetta 挂载点并完成挂载
  • 配置开机挂载(将内容写入/etc/fstab
  • 开启 Rosetta 支持
到此 Ubuntu ARM 便可以运行 x86_64 程序了。

挂载文件共享

官方手册对于 VirtioFS 的挂载藏的挺深,但其实操作起来很简单。
  • 创建挂载点并完成挂载
在 UTM 配置的共享目录,会统一存放在 share 目录下。
  • 配置开机挂载(将内容写入/etc/fstab

配置 Ubuntu x86 开发环境

目前虽然可以使用 Ubuntu ARM 来运行 x86 程序,但是与实际的生产环境差异太大了,也并不适合作为开发环境使用。
  • Q: 那么有没有一种方案,可以使用完整的 Ubuntu x86 及其配套设施呢?
    • A: 参考本人年前所写的文章,使用 Chroot 部署一套 Ubuntu 子系统便可。

后话

尝试了使用 Jetbrains Gateway 进行 x86 开发,体验尚佳。
由于需求不是在上面运行 IDE,而仅仅是在上面完成项目编译,所以最后还是卸载了。
但总的来说,能跑起来 IDE,或许这套方案兼容性还算不错?

下一篇

MySQL 最大连接数问题

Loading...