🚀

M1 Mac上にUTMで仮想マシンをセットアップをする手順

2023/05/12に公開
1

備忘録として書きます。

環境

Host machine: M1 MacBook Pro(arm64)
Host OS: Monterey v12.6.5

utmのインストールとUbuntu Setup

https://oopsoop.com/ubuntu-on-mac-using-utm/
あらかたは上記の通りにやっていく。
ただし自分の場合、arm64上で作業するとpreview版など不安定になるものがあるで変更点がいくつかある。

変更点:
バーチャルマシンの作成編

  • Step2:Emulate
  • Step4:Ubuntu for amd64
  • Step5:お好みで(後から変更可能)
  • Step6:お好みで(後から変更可能)
VMware: UTM
VM OS: Ubuntu v22.04.2 LTS(amd64)
VM Network setting: shared network

接続のテスト

  1. リモートマシンのipアドレスを確認。
リモートマシン
ip -4 addr show
  1. ターミナルから入る。
ローカルマシン
ssh username@hostname(ip_address)

Vscodeから仮想マシンにSSHアクセス出来るようにする

ssh-key setup

  • local machineの作業
  1. 鍵の生成ssh-keygen
  2. 生成された公開鍵のコピーcat ~/.ssh/あなたの公開鍵ファイル名.pub
  • remote machine(仮想マシン)の作業
    vi ~/.ssh/authorized_keys
    先ほどコピーした公開鍵を貼り付ける。

vscode remote extension (vscode sshを含むパック)

  1. Remote Development拡張機能のinstall
  2. (vscodeで)~/.ssh/configを開き、以下の形式で記述
# Host (任意の名前)
#     HostName (接続先のIPアドレス)
#     User (接続先のユーザーアカウント名)
#     IdentityFile (秘密鍵のパス)
#     IdentitiesOnly yes (指定した秘密鍵のみ使用する)

Userはログインするアカウント名、Hostnameはホスト(仮想マシンの名前かIPアドレスip -4 addr show、IdentityFileは秘密鍵の場所(local machine)

  1. 拡張機能から仮想マシンのパスワードを入力し、ログインしてみる

~/.ssh/configのメリット

なぜconfigを作成するのかというとズバリめんどくさいから。これは登録したHost (任意の名前)を使用すると下に記述した情報を展開するような動作になり、ターミナルやvscodeから楽にアクセス出来るようになる。
ssh -i user@hostname ~/.ssh/秘密鍵のパス-> ssh (任意の名前)

共有ディレクトリのセットアップ

  1. ローカルマシンに仮想マシンと共有したいファイルを作成。
  2. utmでVMの設定からsharing設定で共有するファイルのパスを指定。
  3. リモートマシンにマウントポイント(仮想マシン側のディレクトリ)を作成し、マウントをする。
    今回はVirtFSを使用する。
リモートマシン
sudo mount -t 9p -o trans=virtio share マウントしたディレクトリのパス -oversion=9p2000.L
  1. パーミッションの設定をする。
リモートマシン
sudo chown -R $USER マウントしたディレクトリのパス
  1. 自動マウントを設定する。
    起動するたびに自動マウントがされるように/etc/fstab
    に設定を書き込む。
/etc/fstab
share マウントしたディレクトリのパス 9p trans=virtio,version=9p2000.L,rw,_netdev,nofail 0 0

Additional Options

https://blog.mothule.com/tools/ssh/tools-ssh-ssh-agent-usage

参考

https://docs.getutm.app/

Discussion

hrak0x59hrak0x59

追記
なんかインターネットに繋がらなくなったが、ubuntu側のネットワーク設定からnetwrok proxyを一度automaticにしてdisableに戻したら治った。