MacのUTMにインストールしたAlmaLinuxで共有フォルダーを有効化する
先に結論だけ書いておきますね
- UTMでインストールしたAlmaLinuxとホスト間でフォルダーを共有するには9pファイルシステムをサポートしたカーネルが必要
- ELRepoリポジトリを有効化する
sudo dnf install kernel-ml
でELRepoの9pモジュールがサポートされたカーネルをインストールする- 再起動して、
mount
コマンドなり/etc/fstab
に書くなりしてマウントする
前置き1
4月から、やむを得ず🤪Macを使っています。6年近く使っていた富士通 FMV LIFEBOOK WU2/B3のバッテリーがヘタったのと、非常勤先の学部がMacなこと1、そして学割 (教職員割) で少し安く、かつ無金利48回払いができたので、M3 Macbook Air 15インチを購入しました。LIFEBOOKも、大学で学生に配布 (一括購入) されているMacも13インチなんですが、ちょっと画面が小さいなと。年なので🤪 かといって、2キロ超えの16インチProは持ち歩く気にならない2ので、間をとって15インチにしました。さらに、キャンペーンで24000円ぶんAppleギフトカードで還元されたので、(他に使い道もないので) Magic Trackpadを買いました。
まぁ、M3 Macを買った途端にM4チップが発表されたんですが。
前置き2
Macになっても仕事は変わらないので、研修や教材作成のためにLinuxやWindowsの環境が必要なことがあります。イマドキは何でもDockerなのでしょうが、筆者は (未だ) Dockerがよくわかっていないのと、どうせ永続化してしばらく使うのなら、普通の仮想マシンでいいんじゃないかと思っています (DockerでWindowsを動かすのも大変そうですし)。Macで仮想マシンを作成、実行するソフトとして、Parallels Desktopが有名ですが、有償です。他にもVMware Workstation Player(なんだこのURLは…)やVirtualBoxもあります。その中で、今回はオープンソースのUTMを使うことにしました。UTMは、LinuxのKVMでも使われているqemuがベースになっています。App Storeから入手しようとすると1500円するんですが、公式サイトからは無料でダウンロードできます。
仮想マシンの作成は他の仮想化ソフトとほとんど変わらず、マウスクリックや数値の入力だけでできます。今回は、Linux環境を作る必要があったので、AlmaLinuxをインストールしました。
本題
やっと本題ですが、AlmaLinuxをインストールする際に、ホストMacの “デスクトップ” を共有するよう設定したのですが、Linux側からは見えませんでした。調べてみると、Linuxでは mount
コマンドのオプションで9pと指定してマウントする必要がありました。仮想マシンのOSがUbuntuであれば、以下の記事の通りにすればよいでしょう。
しかし、標準的なインストール直後のAlmaLinuxでは、
といったように「9pというファイルシステムはない」とエラーになりました。さらに調べてみると、RHEL系 (CentOS, Rocky, Alma…) では、標準のカーネルでは9pファイルシステムをサポートしていない (カーネルモジュールを読み込んでいない) ようでした。実際に、以下のコマンドでモジュールのサポート有無が確認できます。
昔は何かハードウェアを認識させるためにカーネルモジュールを追加してリビルドしたりしていましたが、今はめんどい🤪ので、もう少し楽な解決策はないかと調べていたら、UTMのGitHub issueで「ELRepoのカーネルを入れるとよい」とありました。
今まで、RHEL系のLinuxをインストールする時は、EPELリポジトリとRPM Fusionリポジトリを有効化していましたが、ELRepoというのは初めて知りました。なんかサイトがレトロなので、本当に更新されているんだろうかと思いましたが、今も活発に動いているようです。サイトの指示の通りRPMのGPG鍵のインストール、リポジトリファイル (? /etc/yum.repos.d/
以下に入るファイル) のインストールを行いました。また、ミラーサーバーの一覧から、物理的にいちばん近そうなKDDI研究所のサーバーを参照するよう設定しました。そして、ELRepoでメンテナンスされているメインストリームのカーネルを以下のようにしてインストールします。
|
|
現時点でのカーネルのバージョンは6.8.9でした。AlmaLinux (9.4) のデフォルトは5.14.0なので、カーネルのバージョンが関係するような操作をする場合は注意が必要です。新しくインストールしたカーネルでは、9pファイルシステムがサポートされています。
|
|
これで、先ほどの mount
コマンドが実行できるようになります。その前に、新しいカーネルで起動するために再起動が必要です。
ここからはUTMのドキュメント通りですが、一般ユーザーでマウントしたフォルダーの読み書きができるように、chown
コマンドで所有者を変更します。
|
|
また、毎回手動で mount
コマンドを実行するのではなく、仮想マシンの起動時に自動マウントするよう、/etc/fstab
ファイルに以下の記述を追加します。
|
|
ここまでやって、やっと仮想マシン側で作ったSSH鍵 (id_rsa.pub
) をホストに送って authorized_keys
に追加し、「ターミナル」アプリから仮想マシンにSSH接続できるようになりました。ただそれ (鍵の送信) がやりたかっただけなんですけどね。
…そして、書いていて気づきましたが、ローカルの仮想マシンなら公開鍵認証じゃなくてもパスワードでSSHできたじゃん、という。