Hyper-V
Hyper-V は Microsoft Windows の特定のエディションに含まれているハイパーバイザです。Arch Linux の仮想マシンを動作させることができます。一般的に Hyper-V はデスクトップとして使うことよりも企業における使用を想定して作られています。VirtualBox, Parallels, VMWare などの一般消費者向けの VM プログラムにあるような便利で簡単なインターフェイスは付属していません。とはいえ、Windows 上で Arch Linux を動かしたいときは役に立ちます。
目次
インストール
Windows Server 2008 以降の Windows や Pro エディションの Windows 8, 8.1, 10 には Hyper-V が付属しています。コントロールパネルの "Programs and Features" から "Turn Windows features on or off" で有効にできます。"Hyper-V" チェックボックスにチェックを入れて、変更を適用し、画面の指示に従ってください。
ネットワークの設定
最初に、仮想スイッチを設定して仮想マシンがインターネットに接続できるようにする必要があります。Hyper-V を有効にしたら、Hyper-V Manager を起動してください (検索するか、コマンドプロンプトから次のコマンドを実行してください):
%windir%\system32\mmc.exe "%windir%\system32\virtmgmt.msc"
仮想スイッチの設定
仮想マシンを既存のネットワークに接続するためには、内部ネットワークスイッチあるいは外部ネットワークスイッチを使用します。外部スイッチは VM に IP アドレスを割り当てて、ネットワークに外部接続できるようにします。ただし、セキュリティが厳しいネットワークでは上手くいかず、ホストマシンがインターネットにアクセスできなくなります。その場合は内部スイッチを使ってインターネットにアクセスします。
外部スイッチ
右サイドバーの、"Virtual Switch Manager..." を選択します。ダイアログが開くので、左サイドバーの "New virtual network switch" を選択してください。"What type of virtual switch do you want to create?" から "External" を選び、"Create Virtual Switch" を選択してください。ネットワークが切断されると警告が表示されるので、続行してください。スイッチを設定するためにネットワークが一時的に切断されます。
内部スイッチ
内部スイッチを作成する際も外部スイッチと手順は同じですが、仮想スイッチのタイプとして「内部スイッチ」を選ぶようにしてください。そしてネットワークと共有センターを開いて、アダプターの設定と変更で、使用しているインターネットアダプタのインターネット接続の共有を有効にしてください。接続を共有することができたら、先に作成した仮想スイッチをブリッジに追加します。
仮想マシンの作成
左サイドバーの "Hyper-V Manager" から "PC" を選択してください。そして右サイドバーの "New" > "Virtual Machine..." を選んでください。新しい仮想マシンのウィザードでは、大抵の設定を自由にすることができますが、一部には必ず設定しなければならない項目があります。
Arch は第2世代の Hyper-V VM では動作しないため、"Specify Generation" で "Generation 1" を選択してください。
Assign Memory の "Startup memory" では、Arch やプログラムが正しく動作するように十分なメモリを設定してください。
"Configure Networking" の "Connection" では、先に作成した仮想スイッチを選択してください。
"Connect Virtual Hard Disk" では、"Create a virtual hard disk" を選択して、"Size" が問題ないことを確認してください。仮想ハードディスクはスパースなため、仮想 OS が書き込んだものを保存するのに必要な分だけしか仮想ハードディスクは消費しません。
"Installation Options" では、"Install an operating system from a bootable CD/DVD-ROM" を選択してください。ディスクや USB デバイスから Arch をインストールする場合、"Media" から "Physical CD/DVD drive" を選んで、適切なドライブ文字を選択してください。ISO ファイルから Arch をインストールする場合、"Image file (.iso)" を選んで、"Browse..." ダイアログからファイルを選択してください。
仮想マシンの設定
次に、VM の設定を行なってください。
仮想マシンには仮想プロセッサを追加することができます。仮想マシンからより多くのプロセッサコアを使えるようにすることで、多くのケースでパフォーマンスが向上します。仮想マシンで重い処理をする場合、搭載されているプロセッサコアの半分を割り当てると良いでしょう。仮想プロセッサの数を変更するには、左サイドバーの "Processor" を選択して、"Number of virtual processors" を変更してください。
設定を変更したら、"OK" で変更を適用して設定ダイアログを終了してください。
Arch のインストール
仮想マシンの設定を終えたら、Arch のインストールを行います。右サイドバーから、"Start" を選んで、"Connect..." を選択してください。接続ウィンドウが開きます。ネットワークは Arch のインストールメディアが立ち上がったときに自動的に機能します。返答が返ってくるアドレスで ping
を実行して確認してください:
ping archlinux.org
レスポンスが返ってこない場合、接続がうまくいっていません。その場合、Microsoft によって既知とされているバグ を踏んでいる可能性があります。Knowledge Base ページに書かれているホットフィックスをインストールしてみるか、暫く待ってから再度試行してください。
Arch のインストールは他のシステムのインストールと大して変わりません。Generation 1 VM は (UEFI ではなく) BIOS しか使えないため、ブートローダーをインストールする際は BIOS 特有の手順に従ってください。
インストール後の設定
Arch のインストールが完了したら、設定に移ります。
まず、VM をシャットダウンして、設定ダイアログを開いてください。左のサイドバーの "IDE Controller 1" にある "DVD Drive" を選択します。"Media" から "None" を選択してください。これで VM が毎回インストールメディアから起動しなくなります。
共有ディレクトリ
ホストとゲストでファイルを共有するのはとても簡単です。まず、ホスト側で、ゲストと共有したいフォルダを選択あるいは作成してください。そしてフォルダのプロパティダイアログを開いてください (alt
+ Enter
あるいは右クリックして "Properties..." を選択)。"Sharing" タブを開いて "Advanced Sharing..." を選択してください。そして "Share this folder" チェックボックスにチェックを入れます。デフォルトでは、フォルダは読み取り専用パーミッションになるため、VM からフォルダを読み込むことはできますが書き込むことはできません。パーミッションを変更したい場合、"Permissions" を選択してください。そこで、どのユーザーが共有フォルダにアクセスできるのか、そしてどのパーミッションを割り当てるのかを設定できます。双方向にファイルを共有したい場合、"Change" と "Read" 両方の "Allow" にチェックを入れてください。共有フォルダのプロパティダイアログを終了する前に、フォルダの "Network Path" を確認してください。ネットワークパスは \\computer name\folder name
という形式になります。
次に、ホストの IP アドレスを確認してください。プロパティダイアログを終了して、コマンドプロンプトか PowerShell を開きます。ipconfig
を実行してください。先に作成した仮想スイッチの名前が含まれているエントリが確認できるはずです (例: Ethernet adapter vEthernet (New Virtual Switch)
)。仮想スイッチのエントリの下に出力された、IPv4 Address
を確認してメモしてください。
そして、Arch から共有フォルダをマウントします。VM を起動してください。Arch が起動したら、CIFS 共有をマウントするための cifs-utils をまずインストールします (CIFS は Windows の共有フォルダで使われているプロトコルです)。その後、共有フォルダをマウントする場所を決めてください。/mnt/Hyper-V
など、/mnt
内のディレクトリにすることを推奨します。¥
以下が共有フォルダをマウントするコマンドです。先に確認したネットワークパスのバックスラッシュはスラッシュに置き換えてください:
# mount -t cifs [Network Path with forward slashes] mountpoint -o user=[user you wish to authenticate as],ip=[host IP noted earlier]
認証するユーザーのパスワードが要求されます。コマンドオプションの password=password
を使ってパスワードを指定することもできますが、コマンド履歴ファイルにホストのパスワードが残ってしまうためセキュリティ上よろしくありません。また、スクリプトからコマンドを実行する場合、パスワードをスクリプト内に保存することになります。パスワードを直書きする代わりの方法として、credentials ファイルを使用することができます。ファイル内にユーザー名とパスワードを記入して、ファイルのアクセス権限を制限することが可能です。ファイルの名前は何でもかまいません。例えば、.credentials
という名前でホームディレクトリに保存する場合、以下のようになります:
~/.credentials
username=username password=password
ファイルを作成したら、パーミッションを変更して読み取り権限を制限します:
# chmod 600 ~/.credentials
そして mount
コマンドに credentials オプションを追加します: credentials=~/.credentials
。これで、共有フォルダをマウントするとき、自動的にユーザー名とパスワードが指定されます。
例えば、具体的に、ネットワークパスが \\PC\share
の共有ディレクトリを /mnt/Hyper-V
にマウントする場合、ホストのユーザー名が "John" でホストの IP アドレスが 198.123.151.23 なら、マウントコマンドは以下のようになります:
# mount -t cifs //PC/share /mnt/Hyper-V -o credentials=~/.credentials,ip=198.123.151.23
この方法の問題点として、ホストの IP アドレスが変わってしまった場合 (DHCP で動的に IP アドレスが割り当てられていたり、新しいネットワークに移行した場合など)、ゲスト側でホストの IP アドレスを毎回書き換える必要があります。しかしながら、smbclient パッケージに含まれている nmblookup
ユーティリティを使用することで、SMB ホストに関連付けられている IP アドレスを確認することが可能です。上記の例の場合、以下のようになります:
nmblookup PC
198.123.151.23 PC<00>
IP アドレスだけが欲しい場合、head
と cut
を使って抽出することができます:
nmblookup PC | head -n 1 | cut -d ' ' -f 1
192.123.151.23
さらに mount
コマンドで使用する IP アドレスを上のコマンドで置き換えることができます:
# mount -t cifs //PC/share /mnt/Hyper-V -o credentials=~/.credentials,ip="$(nmblookup PC | head -n 1 | cut -d ' ' -f 1)"
起動時に自動的にマウントするなど、共有フォルダをマウントする方法は他にも存在します。詳しくは Samba の記事を参照してください。
Xorg
グラフィカルなプログラムは xf86-video-fbdev パッケージで Xorg を使うことで簡単に実行できます。パッケージをインストールしたら適当なウィンドウマネージャやデスクトップ環境を使ってください。X の起動に問題は発生しないはずです。