LoginSignup
2

More than 3 years have passed since last update.

Hyper-V上でLinuxを動かす

Last updated at Posted at 2019-09-25

Hyper-V上でLinuxを動かす

WSL2やDocker for Windowsを利用する場合、Hyper-Vを有効化する必要があります。
この場合、VirtualBoxを同時に利用することはできません。
WSL2やDockerでは、GUIがないため、Linux独自のGUIアプリであったり、画像・映像等に関わるものを気軽に試すことができません。(Westonとかも触ってみたいし)
そこで、Hyper-Vを使って、Linux仮想マシンを作成してみることにしました。

Hyper-Vでは自分で好きなディストリビューションを使用することができますが、デフォルトでは解像度が固定とかなり不便です。
linux-vm-toolsというMicrosoft製のツールを使用することで、解像度を変更することができます。
ですが、残念ながらこのツールは公式でリリースされているUbuntuでないとうまく動作しないようです。

Lubuntu18.04で試しましたが、うまく動作しませんでした。

ですので、今回使用するディストリビューションはUbuntu18.04とします。

Hyper-Vクイック作成

以下の手順を実行する前に、Hyper-Vを有効化する必要があります。
Hyper-V有効化の方法はここでは扱いません。

スタートメニューから[Windows管理ツール] > [Hyper-Vクイック作成]でHyper-V クイック作成を起動します。

Hyper-Vの管理ツールはHyper-V マネージャーなのですが、そこから仮想マシン作成だけ切り出したのがHyper-Vクイック作成のようです。

選択後、左側のオペレーションシステムの選択からUbunutu18.04.2 LTSを選択します。
その他のオプションを選択し、名前を適宜変更します。

Hyper-V_Ubuntu18.04.PNG

上記実行後、[仮想マシンの作成]を実行します。

仮想マシンの作成が完了したら、[接続]の前に、[設定の編集]を行います。

設定では、仮想マシンにデフォルトで割り当てるメモリ量(動的メモリを有効にしておけば、RAMのサイズは勝手に伸縮するようです)や仮想ハードディスク、チェックポイント(差分バックアップ)の保存場所の指定等が可能です。

チェックポイントは便利ですが、後から仮想ハードディスクの容量を変更することが出来なくなる(チェックポイントをリセットすれば一応可能ではある)ので、注意が必要です。

設定が完了したら、[接続]を実行し、起動します。
起動後はインストールするディストリビューションに合わせてインストールの手順を実行します。

Hyper-Vというロゴが表示される場合、インストールメディアがうまく刺さっていない場合があります。
[メディア]メニューからDVDドライブを選択し、インストールに使う、isoファイル等を指定してから、再度起動する必要があります。

linux-vm-toolsのインストール

Hyper-V上のLinuxはインストール直後は解像度が固定だったり、不便な面が多いです。
これはMicrosoftがリリースしている、linux-vm-toolsをインストールすることで改善が可能です。

上記のUbuntu18.04.2 LTSをインストールしている場合はデフォルトでインストールされているため、以下の手順は不要です。

  • Ubuntu18.04相当の場合

自動ログイン機能は無効化しておく必要があります

$ wget https://raw.githubusercontent.com/Microsoft/linux-vm-tools/master/ubuntu/18.04/install.sh
$ sudo chmod +x install.sh
$ sudo ./install.sh

仮想マシンのシャットダウン後、Windows Power shellを管理者権限で実行し、以下のコマンドを実行します。

Set-VM -VMName <VMの名前> -EnhancedSessionTransportType HvSocket

実行後、仮想マシンを起動すると、画面解像度を聞かれるので、好きな解像度に変更可能です。
解像度を変更すると見慣れないログイン画面が現れますが、そのままLinuxのユーザーアカウントでログインします。

性能向上のための手順

I/Oスケジューラを変更

I/Oスケジューラをnoopに変更するために、以下のファイルを編集。

  • /etc/default/grub
- GRUB_CMDLINE_LINUX=""
+ GRUB_CMDLINU_LINUX="elevator=noop"

Grub設定をアップデート

$ sudo update-grub

GRUBタイムアウト値を変更

  • /etc/default/grub
- GRUB_TIMEOUT=0
+ GRUB_TIMEOUT=5

Grub設定をアップデート

$ sudo update-grub

mountオプションを変更

  • /etc/fstab
- LABEL=desktop-rootfs / ext4 errors=remount-ro 0 1
+ LABEL=desktop-rootfs / ext4 errors=remount-ro,noatime 0 1

仮想ハードディスク拡張

チェックポイントを使用している場合

  • チェックポイントを無効化する: 仮想マシンの設定画面のチェックポイントから無効化

  • チェックポイントを削除する: Hyper-Vマネージャで仮想マシンを選択するとチェックポイントツリーが見えるので親ノードを削除(これでチェックポイントが統合される)

  • Hyper-Vの設定でチェックボックスをリセットする

  • 仮想マシンの設定画面もしくはHyper-Vマネージャからディスクを編集してディスクを拡張する

  • Ubuntu上でパーティションを拡張する

$ sudo parted
(parted) resizepart 1
Warning: Partition /dev/sda1 is being used. Are you sure you want to continue?
Yes/No? Yes                                                               
End?  [11.8GB]? 100% 
(parted) quit
  • Ubuntu上でファイルシステムを拡張する
$ sudo resize2fs /dev/sda1
  • Ubuntu上でパーティションにラベルを付ける
$ sudo e2label /dev/sdb1 WORK
$ sudo e2label /dev/sdb1
WORK
  • Ubuntu上で/etc/fstabを編集
LABEL=WORK      /home/<you>/work        ext4    errors=remount-ro,noatime,discard, 0    2
  • マウント
$ sudo mount /dev/sdb1 ~/work

Hyper-Vで動かすLinuxは悪くはないのですが、VirtualBoxの方が単純に便利だと感じます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2