Hyper-VとUbuntuとVSCode
Hyper-Vの有効化
- 左下のWindowsマーク
- 設定
- システム
- オプション機能
- Windowsのその他の機能
- Hyper-V に ☑
- OK
Ubuntuのインストールイメージをダウンロード
公式からダウンロード
https://jp.ubuntu.com/download
今回は 24.04.01 LTS
(開発に使うなら長期安定板のLTSのほうがいいと思う)
VMの作成
VMそのものの作成
- 左下のWindowsマーク
- 検索窓っぽいところに Hyper-V マネージャー と入力
- Hyper-V マネージャーを起動
- 画面右ペインの上のほうにある「操作」
- 新規
- 仮想マシン
- 開始する前に
- 次へ
- 名前と場所の指定
- なんか適当に名前を付ける
- 次へ
- 世代の指定
- 第2世代
- 次へ
- メモリの割り当て
- デフォルトでOK
- あんまり派手に使わないなら2048MBとかでも大丈夫
- 最低1024MB https://ubuntu.com/server/docs/system-requirements
- 次へ
- デフォルトでOK
- ネットワークの構成
- 接続 : 接続しない
- 後で構成するのでここではつながない
- 次へ
- 接続 : 接続しない
- 仮想ハードディスクの接続
- マシンの空き容量と相談して決める
- 最低5GB/できれば25GB https://ubuntu.com/server/docs/system-requirements
- 次へ
- マシンの空き容量と相談して決める
- インストールオプション
- 後でオペレーティングシステムをインストールする
- 次へ
- 構成の確認
- 完了
- 開始する前に
NATの構築
開発用のマシンだからVMから外へはアクセスしたいんだけど外からVMに自由に入られたら困るんだよなー、という感じなのでNATを構成
手順が複雑なので公式を参照
https://learn.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/user-guide/setup-nat-network
仮想スイッチ「puipui」を作る
New-VMSwitch -SwitchName "puipui" -SwitchType Internal
puipuiを探す
Get-NetAdapter
puipui(のデフォルトゲートウェイ)に固定IPを割り当てる
New-NetIPAddress -IPAddress 192.168.32.1 -PrefixLength 24 -InterfaceIndex (puipuiのifIndex)
NATを構成する
New-NetNat -Name puipuiNAT -InternalIPInterfaceAddressPrefix 192.168.32.0/24
設定したアドレスレンジ(192.168.32.0/24)はOSインストール時に使うのでどっかに記録しておく
※ NATはあくまでネットワークを区切ってるだけでセキュリティ機構では無いので母機に侵入されるとVMにも入られる
(が、母機が開発機なのでここに入られたらどっちにせよ終わりという思想で進める)
VMの設定変更
- Hyper-Vマネージャーに戻る
- 作成したVMを選択
- 右ペインの下のほうにある「設定」
- セキュリティ
- セキュアブート
- Microsoft UEFI 証明書
- 適用
- セキュアブート
- SCSIコントローラー
- DVDドライブ
- 追加
- イメージファイル
- ダウンロードしたUbuntuのISOイメージ
- 適用
- DVDドライブ
- ネットワークアダプター
- さっき作ったNATアダプタ
- 適用
- 一回上のほうにある ファームウェア に戻る
- ブート順
- DVDドライブを一番上に
- ブート順
- 適用
- セキュリティ
Ubuntuのインストール
Hyper-Vマネージャーで作成したVMに「接続」して「起動」する
- Try or Install Ubuntu Server
- Language
- English
- Keyboard
- Layout
- Japanese
- Variant
- Japanese
- Layout
- Type of Install
- Ubuntu Server
- Network
- eth0 eth -
- Edit IPv4
- IPv4 Method : Manual
- Subnet
- 192.168.32.0/24
- Address
- 192.168.32.32
- Gateway
- 192.168.32.1
- Name Server
- (ISP指定のDNSとか会社指定のDNSとか)
- Save
- Subnet
- IPv4 Method : Manual
- Edit IPv4
- eth0 eth -
- Proxy
- (繋いでるネットワークで指定がある場合とかは設定する、そうでない場合は空欄で)
- Ubuntu Archive mirror
- (裏でなんかやってるので終わるまでちょっと待ってあげる)
- Install update available
- (新しいのあるよ!って言ってくるけど後でアップデートかけるからここではパス)
- Continue without upgrading
- Storage configration
- (必要がなければ特に変更なしで)
- (次の画面も確認だけなので変更なしで)
- Profile configration
- Your name
- (名前、らしい。何に使うのかはよくわからないが)
- Your server name
- サーバーのホスト名
- username
- ユーザーID
- password
- パスワード
- confirm
- もう一回パスワード
- Your name
- Ubuntu Pro
- 有償サポートライセンスの有無だと思う
- 持ってなければSkip nowで
- SSH
- [X] Install OpenSSH server
- Feature
- もし入れたいのがあればここで入れといてもOK
- 後で入れれるから焦らなくて大丈夫
- もし入れたいのがあればここで入れといてもOK
- reboot now
- [FAILED] Failed unmounting cdrom.mount - /cdrom.
- 赤文字で出てくるけど慌てずにエンターキーを押す
- login:
- 初回起動時にSSH関連の表示がかぶってることがあるけどその場合は一回エンターキーを押す
- Password
- シャットダウンする
sudo poweroff
VMからDVDドライブを外す
- Hyper-Vマネージャーに戻る
- VMの設定を開く
- SCSIコントローラーの下にあるDVDドライブを選択
- 削除
- 適用
VMを起動する
- Hyper-VマネージャーからVMを起動
- ここからは「接続」を使わなくてOK
Ubuntuの設定
VSCodeの準備
- VSCodeをまだインストールしてない人はここでインストール
- VSCodeを開いて左ペインのブロックが4つ組み合わさったみたいなアイコンを選択
- 検索窓に remote development と入力
- 提供元がMicrosoftになっているものをインストール
VSCodeでVMに接続
- 左下の青い >< みたいなアイコンをクリック
- ホストに接続する... Remote-SSH
- +新規SSHホストを追加する
- (ユーザーID)@(VMのIPアドレス)
- 構成するSSHファイルを選択する
- いくつか出てくるけど好きなのを選ぶ
- 設定が保存されて元の画面に戻る
- +新規SSHホストを追加する
- ホストに接続する... Remote-SSH
- VMのIPアドレスが出てくるはずなのでそれを選ぶ
- 新しいVSCodeが立ち上がってくる
- Select Platform
- Linux
- フィンガープリント
- 続行
- パスワード
- パスワードを入力
- 接続に成功したら >< が >< SSH:192.168.32.32 のような感じに変わる
VSCode側の準備
- VSCodeでVMに接続した状態でVSCodeの左側のファイルのアイコンを選択
- フォルダーを開く
- /home/(ユーザーID)
- OSの種類
- Linux
- パスワード
- パスワードを入力
- このフォルダー内のファイルの作成者を信頼しますか?
- はい
- フォルダーを開く
- ターミナルを開く
- VSCodeのメニュー
- 表示
- ターミナル
- 表示
- VSCodeのメニュー
Ubuntuのアップデート
VSCodeの画面下側にターミナルが開いているはずなのでそこで入力する
sudo apt update
sudo apt upgrade
ほっとくとそのうちアップデートが終わるので気長に待つ
SSH Keyの作成
ssh-keygenでSSH Keyペアを作成します
ssh-keygen -t ed25519
色々聞かれるけどデフォルトのままでいいです
Enter file in which to save the key (/home/(user_id)/.ssh/id_ed25519): <- そのままエンター
Enter passphrase (empty for no passphrase): <- ここもそのままエンター
Enter same passphrase again: <- ふたたびエンター
SSH秘密鍵のダウンロード
- 左のファイルエクスプローラーから.sshを開く
- id_ed25519を右クリック
- ダウンロード
- たぶんデフォルトではWindowsにログインしているユーザーのユーザーディレクトリが開いているはず
- 違ったら頑張ってホームディレクトリに行く
- C:\Users(ユーザー名) とかのはず
- .sshフォルダを開く
- わかりやすいファイル名を付けて保存する
- e.g.) id_ed25519_VM
- ダウンロード
SSH公開鍵をVM側で登録
以下ターミナルで
cd ~/.ssh
cat id_ed25519.pub >> authorized_keys
VM側のSSH公開鍵認証を有効にする
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
たぶんデフォルトではこんな感じ
PasswordAuthentication yes
設定追加後
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
書き込み終わったらCtrl-O, エンター, Ctrl-Xの順で上書き保存
sudo systemctl reload sshd
ここまで進んだら一回SSH接続を切っておく
- 画面右下の>< SSH:192.168.32.32みたいなのをクリック
- 一番下にあるSSHを切断
VSCode側に秘密鍵を登録する
-
左下の青い >< みたいなアイコンをクリック
-
ホストに接続する... Remote-SSH
- SSHホストを構成する
- 初めに設定した構成ファイルを選ぶ
- SSHホストを構成する
-
こんな感じになってるはず
Host 192.168.32.32
HostName 192.168.32.32
User poteto
- 設定を追加
Host c
HostName 192.168.32.32
User poteto
PreferredAuthentications publickey
IdentityFile C:\Users\potet\.ssh\id_ed25519_VM
- 左下の青い >< みたいなアイコンをクリック
- ホストに接続する... Remote-SSH
- 構成したホストを選択して接続
- パスワードを聞かれずにログイン出来たら完成