PK
パーネルカニック研究所
今日もどこかでkernel panic。
root@pk-lab:~#

M1 MacにLinux仮想環境を作る

連載ナビ

この連載は「Linuxを使えるようになる」ではなく、「Linuxがどう動いているのか」を理解するための実践シリーズです。

今回は Linuxを理解する 〜 LFSで学ぶLinux内部構造 〜 の Part 1 / 第4回として、仕組みのつながりを意識しながら学びます。

—

LFSは必ず仮想マシンでやる。M1 Macなら「UTM + Ubuntu Server (ARM版)」が現実解

結論から言うと、LFSの作業環境はメインのPCではなく、仮想マシン(VM)の中に作るべきです。そしてApple Silicon(M1/M2/M3)のMacであれば、無料で使えるUTMにaarch64(ARM64)版のUbuntu Serverを入れる構成が、コスト・自由度・学習効果のバランスで最も現実的な選択です。

LFSの作業は「一撃でシステムを壊せる」操作の連続だから

なぜVMが必須なのか。LFSの工程には、次のような操作が含まれるからです。

  • fdisk によるパーティションの作成・削除(対象ディスクを間違えれば既存データは消える)
  • ブートローダ(GRUB)のディスクへの書き込み(失敗すればOSが起動しなくなる)
  • システムファイルの直接編集や、chroot環境の構築

実機でミスをすれば復旧に半日かかりますが、VMなら壊れた瞬間に保存済みの状態へ戻して数分で再開できます。この「安全に失敗できる」性質は快適さの問題ではなく、学習速度に直結します。失敗を恐れて手が止まる環境では、試行錯誤の回数が桁で減るからです。

もう1つ、M1 Mac特有の理由があります。Apple SiliconのCPUはIntel系の x86_64 ではなく aarch64 アーキテクチャです。同じアーキテクチャのゲストOSなら「仮想化」でネイティブに近い速度で動きますが、x86_64 のOSを動かすには「エミュレーション」になり数倍〜数十倍遅くなります。コンパイルを何十時間も行うLFSでは、この速度差は致命的なので、VMには必ず aarch64 版のLinuxを選びます。

UTMでのセットアップ手順(約30分)

仮想化ソフトの選択肢は3つあります。

ソフトウェア 料金 特徴
UTM 無料(GitHub版) QEMUベースのオープンソース。設定の自由度が高く、低レイヤー学習向き
Parallels Desktop 有料(サブスクリプション) 最も手軽で高速。macOS連携が強い
VMware Fusion 個人利用は無料 業界標準の一つで安定性が高い

この連載では、無料で内部の仕組みも見えやすいUTMを使います(Mac App Store版は有料ですが、公式サイト/GitHubからのダウンロードは無料で、機能は同じです)。

セットアップ手順は以下の通りです。

1. UTMをインストール: 公式サイトから .dmg をダウンロードし、アプリケーションフォルダへ移動する

2. Ubuntu ServerのARM版ISOをダウンロード: Ubuntu公式サイトから aarch64(ARM64)版のISOを取得する。デスクトップ版ではなくServer版を選ぶのは、GUIがない分メモリとディスクをビルドに回せるため

3. VMを作成: UTMで「新規仮想マシンを作成」→「仮想化」(エミュレートではない方)→「Linux」を選び、ISOを指定する。リソースの目安:

– CPU: 4コア以上(コンパイル時間に直結)

– メモリ: 8GB推奨(最低4GB)

– ディスク: 64GB以上(LFSのビルドはソース展開と中間生成物で想像以上に消費します)

4. Ubuntu Serverをインストール: VMを起動し、画面の指示に従って進める。途中の「Install OpenSSH server」にはチェックを入れておく

5. SSH接続を設定: VMのコンソールは操作性が悪いため、Macのターミナルから接続するのが快適です

`bash

# ゲストOS(VM)内でIPアドレスを確認

ip a

# Mac側のターミナルから接続

ssh ユーザー名@VMのIPアドレス

`

6. 「セーブポイント」を作る: sudo apt update && sudo apt upgrade -y で最新化したらVMをシャットダウンし、UTMの一覧でVMを右クリック→「複製」でクリーンな状態のコピーを保存します。UTMのGUIにはスナップショット機能がないため、この複製がLFS作業中の戻り先になります(ディスクに余裕がない場合は、QEMU形式のディスクに対して qemu-img snapshot を使う方法もあります)

最後に、ホストとゲストのアーキテクチャが揃っていることを確認しましょう。


# Mac(ホストOS)で実行
uname -m
# -> arm64

# VM(ゲストOS)にSSHして実行
uname -m
# -> aarch64   (arm64とaarch64は同じアーキテクチャの別名です)

# ゲストOSのリソースを確認
df -h    # ディスク容量
free -h  # メモリ
nproc    # CPUコア数

壊せる環境を先に作ることが、LFS成功の前提条件

LFSはシステムを壊しうる操作の連続だからVMで行う。M1 Macでは速度のためにaarch64版Linuxを選び、UTM + Ubuntu Serverで構築し、クリーンな複製を「戻り先」として確保しておく——ここまでが今回の結論です。

環境ができたら、次回はこのVMに加えてDockerやクラウドVMをどう使い分けると学習効率が上がるか、環境設計の全体像を整理します。

ハンズオン手順

1. UTMをインストールし、Ubuntu Server (ARM版) のVMを作成する

2. MacからVMへSSH接続できることを確認する

3. uname -m / df -h / free -h / nproc を実行し、結果をメモする

4. VMの複製(セーブポイント)を作成する

5. エラーが出たら、そのエラーメッセージをそのまま残す

チェックポイント

  • MacのターミナルからVMにSSHでログインできた
  • ゲストOSで aarch64 と表示されることを確認した
  • クリーンな状態の複製を保存した

今回理解できたこと

  • LFSの操作はシステムを壊しうるため、VMでの作業が前提になる
  • Apple Siliconでは同一アーキテクチャ(aarch64)のゲストを選ぶと速い
  • 「いつでも戻れるセーブポイント」があると試行錯誤の回数が増え、学習が速くなる