見出し画像

PC・イン・PC ! 仮想マシン(パート2)

前回の記事からつづきLinux Mintで仮想マシンをインストールする体験と備忘録メモを共有します。パート1はVirtualboxを試しましたが、「導入の操作が簡単」と言われている割にまあまあ工夫しないといけなかったです。

今回のパート2はさらに導入難易度が高くなったKVM/QEMUに挑みました。コマンド多用でしたので結構勉強になりました。



KVM/QEMUとは

KVMとは「Kernel-based Virtual Machine」の略でLinuxカーネルに組み込まれた仮想化技術で、CPUやメモリなどのハードウェアを仮想マシンに効率的に割り当てる役割。つまり仮想マシンのCPUとメモリに相当するものだと個人的に理解ています。

QEMUとは「Quick Emulator」の略で仮想マシン操作するソフトで、QEMUのみでも仮想マシンは作れるみたいですが、かなり遅いマシンになるそうです。そこにKVMに組み合わせることで高速な仮想マシンを可能なります。

その他の登場人物
virt-manager(GUIツール):クリックで仮想マシンを作成・操作できる
libvirt:QEMU/KVMをまとめて管理するバックエンド
bridge-utils:仮想マシンをホストと同じLANに接続するためにソフト。家庭、会社などのLANネットワークの他のPCやNASlに接続可能にしてくれます。


PCの仮想化支援機能のチェック

はじめに、仮想化支援機能があるか、有効なっているかチェックします。
コマンドが二つあって、どれ使ってもいいと思います。二つとも使ってもいいです。

確認コマンド 一つ目

lscpu | grep Virtualization

コマンドの実施結果にVirtualization: VT-x や Virtualization: AMD-Vが出てきます。「VT-x」がIntel CPU、「AMD-V」がAMD CPUの表示になります。

確認コマンド 二つ目

egrep -c '(vmx|svm)' /proc/cpuinfo

コマンドの実施結果が1以上であれば仮想化対応しています。0なら機能がないまたは無効になっているかです。

機能が無効になっている場合は、PCを再起動し、BIOS/UEFI設定画面に入って(通常はF2、Del、またはF12キー)「Virtualization Technology」や「VT-x」「AMD-V」を探して有効化してから、設定保存、再起動してみてください。


ソフトウェアパッケージインストール

なんかする前に先にアップデートします

sudo apt update

次に仮想マシンKVM/QEMUに必要なソフトウェアパッケージインストールします

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager bridge-utils

デーモンの有効化&スタート

色々インストール後、KVMが正しく動作しているか確認します。コマンドは以下です。

kvm-ok

コマンド実行した結果が以下のように返されればOKです。
INFO: /dev/kvm exists
KVM acceleration can be used

そして、libvirt 仮想マシン管理するサービスが動いているか、以下のコマンドで確認します。ちなみに、libvirtdの最後の「d」はdaemonという意味をしていてバックグラウドで動作し続けるプロセスです。

sudo systemctl status libvirtd

enabledになっていない場合は、有効にしてスタートさせる必要があります。まず、「Q」キーでコマンド受付状態に戻してから以下のコマンドを実行します。

sudo systemctl enable libvirtd
sudo systemctl start libvirtd

全部のソフトウェアをインストールした後は、いよいよ動かします。
だが、その前にもうちょっと事前設定が残っています。ユーザーをサービスのグループに追加する必要があります。これがないと実行権限がなくてソフトが動かないです。

sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)

仮想マシン設定&Linux Mint インストール

準備が整いました。これから本当に動かします。本当です。と私が自分に言い聞かせていました。準備が長かったです。久々にGUI操作に戻ります。Linux Mint のメニューから「Virtual Machine Manager」を起動します

New Virtual Machineをクリックし、仮想マシンを新規作成します。
私は試しに作成したマシンが2台ありますが、記事の説明画像を撮るために3台目作成しています。

ISOファイルがもうダウンロード済みであれば、ローカルファイルを選択します。

ISOを指定、Ubuntuだったら自動認識されるようですが、Linux Mintは自動認識してくれないみたいで、手動指定します。Ubuntuベースなので一応Ubuntuにしておきます。

CPU、RAM、Diskを割り当てます。

終わったらFinishをクリックして設定を完了させます。

ISOのインストールは今までと変わらないため、とばします。以下の無事ゲストOSをインストールできました。kvmを使っているからか動作が軽い気がします。


ホスト・ゲストマシン共有フォルダ設定

共有フォルダを設定します。色んな方法があるみたいですが、私は以下の方法の設定が一番いいかなと思いました。
まず、ゲストマシンをOFFにしてから以下のおまじないをコマンドラインに入力してエンター。これがVirtioFSのデーモンをホストマシンにインストールします。

sudo apt install virtiofsd

次にVirtual machine managerの共有メモリ設定、共有ファイルシステムを追加設定します

Target pathで付けた名前は、後のゲストマシンの設定に使います。説明に少し分かりやすくなるようにこんな名前にしました。

設定が終わったらゲストマシンを起動して、ゲスト側にも共有フォルダを作成します。Downloadsの中に「shared_folder」という名前にしました。
そーして、ターミナルに次のコマンドを打ちます。

最後の行に以下のように追加します。一応内容としては、①設定したホストマシン共有フォルダのTarget pathを入力、スペース開けて②にゲストマシンの共有フォルダのファイルパスを入力、③設定コマンドを入力しまます。最後のパラメータはゼロ二つです。入力終わったらctrl + sで保存、ctrl + xで編集画面から出ます。このコマンド入力すると、場合によってはゲストマシン起動できなくなりますので、注意してください。

設定終わったら仮想マシンを再起動し、共有フォルダが自動マウントされるようになります。試しにテキストファイルを共有してみます。


Omarchyもインストールできました

Virtualboxにでは、起動できませんでしたが、KVM/QEMUでは普通に動いてくれました。


コマンドの解説

やはりLinuxを触ったらコマンドは避けて通れない。記事中で説明していなかったコマンドについてKagi Assistantに相談しながらまとめました。

コマンド
sudo usermod -aG libvirt $(whoami)
説明
仮想マシンの管理権限を持つ libvirt グループに、自分自身が追加されます。usermod:ユーザーアカウントの属性を変更するコマンドです。
-a:追加モード(既存のグループを保持しつつ、新たに追加)。
-G:追加先の補完グループを指定。既存の補助グループはすべて削除され、指定したグループのみが設定されます。-aG組み合わせて使うことで既存の補助グループ保持したまま、新しいグループに追加されます。
libvirt:仮想化ソフトウェア(KVM/QEMU など)を管理するための特別なグループです。
$(whoami):コマンド実行時の現在のユーザー名を自動的に取得します。

コマンド
sudo apt install virtiofsd
説明
仮想マシンとホスト間でディレクトリを高速に共有するためのデーモンである virtiofsd をインストールします。 KVM/QEMUベースの仮想マシンに対し、ホストのディレクトリをゲストOSにマウントできるようにする。従来のネットワーク共有(9p 等)と比べて高速・低遅延。

設定ファイル
/etc/fstab
説明
Linuxシステムでファイルシステムを管理・自動マウントするための設定ファイル。ファイルには、マウント対象のファイルシステムごとに1行ずつ、以下の6つのフィールドが設定されています。そのため、今回最後の行に追加したホストの共有フォルダのマウントと言うことですね。

<デバイス> <マウントポイント> <ファイルシステムタイプ> <マウントオプション> <dump> <fsck>

私が実施したコマンドでは以下になりますね
デバイス名:shared_with_host
マウントポイント:/home/bbb/Downloads/shared_folder
ファイルシステムタイプ:virtiofs 仮想マシンとホスト間で高速にフォルダを共有するためのファイルシステム
マウントオプション:default標準的なマウント使用
dump:バックアップ対象かどうか、0だと対象外。
fsck:起動時のファイルシステムチェック。0はスキップ。仮想マシンなので不要のようです。


おわりに

KVM/QEMUはこれまでのLinux経験の中で設定難易度はMAXでしたが、
完全にオープンソースで、さらにパフォーマンスも良ければ、今後はKVM/QEMUを使って色んなOSを試したり、アプリを試したり、コマンドを試していきたいと思います。

以上


いいなと思ったら応援しよう!

FOKK 記事が面白い、役に立ったと思った方へ、よければチップの応援をお願い致します。