Daydreaming in Boston

M1 MacBook上にUbuntuを入れる

1. はじめに

年末の休みを使ってMacBook Pro16インチ上にUbuntuを入れ、お試しでRetroArchをセットアップし てみました。これまでRedHat系ばかりでしたが、Ubuntuはどうでしょうか。

2. 環境構築

2.1. Ubuntuインストール

2.1.1. Ubuntu最新LTM版のダウンロード

  • ubuntu ARM downloadなどで検索してARM版のisoイメージを探します。現在の最新安定版は20.04.01 LTSのようです(<2025-07-10 Thu>現在20.04.02 LTS)。ARMはなぜかデスクトップ版が無いのでサーバー版を選びます。ubuntu-24.04.1-live-server-arm64.iso

2.1.2. VM作成

  • UTM > + > Virtualize > Linux > Boot ISO Image > Browse…
    • 今回はUse Apple Virtualizationを外したままにしました。Apple Virtualizationが原因でRetroArchで音が出なくなるという書き込みを見た気がします。
  • ISOイメージ選択 > Continue > (メモリサイズ4GB、ドライブも64GBのまま) > Save

2.1.3. Ubuntuインストール

  • Run VM > Try or Install Ubuntu Server > (wait) > English
  • > Continue without updating > (keyboard) Done
  • > (Ubuntu Server) Done > (Network) Done > (Proxy) Done
  • > (Mirror) Done > (Use an entire disk) Done > (file system summary) Done
  • > Continue > your name, server name, username, passwordいれる > Done
  • > Continue > check Install OpenSSH server > Done > (server snaps) Done
  • > Begin Installation > (wait) > (Installation complete!)
  • > UTMウインドウからeject ISO > Reboot Now

2.1.4. デスクトップ版インストール

サーバー版なのでGUIではなくCUIのログインコンソールで立ち上がってきます。ここを参考にGUIを入れたりします。先人がいてよかった。ありがとうございます。

  • リンク先のページを見ながら、まずは未使用ストレージ領域を使用できるようにします。
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
  • デスクトップ版のインストール
sudo apt install ubuntu-desktop
(ひたすら待つ)
poweroff
  • boot VM > (割と待つ) > GUI画面からログイン
  • ブート高速化の おまじない をやっておきます。
sudo vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service 
  • ExecStart=/lib/systemd/systemd-networkd-wait-online の行を探して、 --timeout=5 を追記します。
ExecStart=/lib/systemd/systemd-networkd-wait-online --timeout=5 
  • このあたりでpoweoffし、VMのクローンを取っておきましょう。

2.1.5. ネットワーク変更

なぜか、最初から変更しておくと、途中で黒画面のままブートしなかったり、ログインできなかったりする(気がする)ので、VMクローンを取った後にやります。

  • right-click vm > Edit > Network > Newtwork Mode: Bridged (Advanced) > Save
    • デフォルトのままだとIPは192.168.64.xxとなり、外にsshできません。。。
  • 無事にブートしてGUIログインできたら、オプションでIPを固定します。

2.1.6. ssh keyのインポート

MacBookからUbuntuに、パスワード認証無しでsshで入れるように、ssh keyをVMにインポートします。これをやっておくと、trampモードを使って、ホストのMacからVM上のファイルをemacsでシームレスに編集できるようになります。

  • まずは、VM上で sshd が動いていることを確認します。
ssh localhost
exit
  • 次にホストであるMacBookからVMにsshできることを確認します。最初はパスワードを聞かれます。
ssh <user>@<VM IP>
  • ホストからsshキーをインポートします。<id_rsa>はプライベートキーを指定します。
ssh-copy-id -i <id_rsa> <user>@<VM IP>
  • 無事に、パスワード認証無しで ssh できることを確認します。
ssh <user>@<VM IP>

2.1.7. OSを最新にする

sudo apt update
sudo apt upgrade
poweroff
  • VMのクローンを取ってブート

2.1.8. ssh key作成

2.1.9. 日本語入力環境を作る

  1. GNOME
    sudo apt install fcitx5-mozc
    im-config -n fcitx5
    sudo apt install gnome-shell-extensions gnome-tweaks
    
    • (一旦リブート?)
    • ブラウザーからGnome Extensions website > Input Method Panel インストール
  2. emacs

    GNOMEで設定した日本語入力はemacsでも使えますが、オーバーレイがじゃっかん見づらいので、emacs-mozcを入れます。

    (require 'mozc)
    (setq default-input-method "japanese-mozc")
    (setq mozc-candidate-style 'overlay)
    
    sudo apt install emacs-mozc-bin
    

    C-\で入力モードトグルです。

2.1.10. キーボードショートカット

非常に面倒なことに、入力されたキー(特にCommandなどの特殊キー)を持っていくレイヤーがいくつもある。まずホストであるMacOS X。例えばCommand + SpaceでSpotlight Searchが出てくる。次にGNOME。Command(Super)キーはいろいろと使われていて、鬱陶しいことこの上ない。デフォルトでCtrl-Spaceが(日本語)入力モード切り替えにアサインされているので、これを変えないとemacsでとても困る。

  • Settings > Keyboard > View and Customize Shortcuts
    • Superで検索して、ことごとくdisableする
    • > Typing - これだけ変えても大した解決にならない割に邪魔になる。適当にC-`とかをアサインしておく
  • Tweaks > Keyboard。これも持っていくっぽい?
  • emacs
    • 入力切替の標準がC-\。GNOMEなどに邪魔されないようにする
    • Command(Super)キーをメタキーに割り当てる
(setq x-super-keysym 'meta)
  • いろいろやってGNOMEは入力切替にC-=を指定したんだけど、どこでやったんだろう???
  • なんと、UTMがCommand+w(Close), Command+n(New…), Command+o(Open…)で持って行く。Copy (Meta+w)しようとしてVMがクローズしてしまう。。
    • 回避策: MacのSettings > Keyboard > Keyboard Shortcuts… > App Shortcuts > + > UTM, New…, 使わないキーバインド、例えばCtrl+Shift+Command+0で上書きしてやる

参考

2.1.11. DNSの変更

DNSをローカルのpi-holeに変更します。これが意外とくせもの。

  • Settingsのネットワーク設定でDNSを以下に設定する。
192.168.0.156,8.8.8.8,1.1.1.1
  • 腹立たしいことに、これが反映されない。nslookupすると127.0.0.53が設定されている。これはローカルのcaching stub resolver。こいつを何とかしないといけない。
  • sudo vim /etc/systemd/resolved.conf
DNSStubListener=no
sudo systemctl restart systemd-resolved

2.1.12. ディスプレイ設定

画面がどうもぼやけていてフォントがきれいに表示できない場合、GPUを利用していないせいかもしれません。 試行錯誤の結果、UTMのディスプレイカードを変更することで、画面がクリスピーになりました。 UTM > VM > config > Display > Emulated Display Card: virtio-gpu-gl-pci (GPU Supported)

ネット上ではvirtio-ramfb-gl (GPU Supported)にするとよいといった情報がありましたが、マウスが一切使えなくなりました。唯一使えたのがvirtio-gpu-gl-pciでした。

2.2. RetroArchインストール(おまけ)

RetroArch公式サイトのLinuxインストール のページにUbuntuでのインストール手順が書いてあるので、そのままコピペして実行します。

sudo add-apt-repository ppa:libretro/stable && sudo apt-get update && sudo aptget install retroarch

長々と走ってインストール完了します。

2.2.1. Coreインストール

ここで、RetroArch上からCoreをダウンロードしようとすると何も起きません。それもそのはず、ARM64向けのcoresは用意されていないからなのでした。そこで、aarch64 core retroarchで検索すると、ビルド済みのcoreが(たくさん)置いてある ありがたいページ がヒットするので、こちらのaarch64ディレクトリからcoreをダウンロードします。

これをunzipしたものを /usr/lib/aarch64-linux-gnu/libretro/ にコピーします。注意点として、なぜかここ以外のディレクトリからcoreをロードしようとしても失敗します。

sudo cp <core>_libretro.so /usr/lib/aarch64-linux-gnu/libretro/

2.2.2. 動作確認

あとは、合法的/自己責任で入手したROMをロードして実行するだけ。うまく動きましたか? ちゃんと音は出たでしょうか。

2.2.3. 結論

全画面では秒60フレームがでなくてカクカクします。さすがにVM上で動かすには無理があったでしょうか。少し楽しみだったのだけど残念。

3. Ubuntuの感想

全般的に気が利いていて使い勝手が良いように思います。以下、RockyLinux9.4との比較になりますが。。

  • GUIの色使いは若干押し付けがましい
  • 文字やアイコンがクリスピーで読みやすい
  • フルスクリーンにしても単に拡大するのでなく、解像度の変化で追従する
  • スリープから復帰したときに時計が合っている(chrony.confを変更しなくても)
  • ネット上に情報がより多い

4. おわりに

以前、一度Ubuntuを試したときはGUIの色使いのクセが嫌で使用を断念しましたが、なかなか使い勝手がよいことがわかりました。特に画面のクリスピーさは使っていて気持ちが良いです。

<2025-07-11 Fri>追記。RedHatの方針によりRocky/Almaの将来性が微妙になってきたため、本格的にUbuntuに移行しようかと考えています。