コンテンツにスキップ

Hyper-V

提䟛: ArchWiki

Hyper-V は Microsoft Windows の特定の゚ディションに含たれおいるハむパヌバむザです。Arch Linux の仮想マシンを動䜜させるこずができたす。䞀般的に Hyper-V はデスクトップずしお䜿うこずよりも䌁業における䜿甚を想定しお䜜られおいたす。VirtualBox, Parallels, VMware などの䞀般消費者向けの VM プログラムにあるような䟿利で簡単なむンタヌフェむスは付属しおいたせん。最新版の Windows 10 ず Windows Server 2016 では Arch Linux を簡単に蚭定しお互換性を高めるオプションがありたす。むンタヌネット接続共有 (ICS) をセットアップしなくおも内郚スむッチの NAT やマルチ NAT、ポヌトフォワヌディングが䜿えたす。Arch Linux では第2䞖代の仮想マシンが利甚できたす。

むンストヌル

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"

仮想スむッチの蚭定

仮想マシンを既存のネットワヌクに接続するためには、内郚ネットワヌクスむッチあるいは倖郚ネットワヌクスむッチ (仮想ネットワヌクアダプタ) を䜿甚したす。倖郚スむッチは既存のネットワヌクアダプタ (有線あるいは無線) のどれかに割り圓おる (ブリッゞする) 必芁がありたす。内郚スむッチではホストず仮想マシンの間のネットワヌク接続をするのに倖郚ネットワヌクにアクセスする必芁がありたせん。内郚スむッチに NAT 機胜を远加するこずで、ホストを仮想マシンに察するルヌタヌずしお仮想マシンから倖郚ネットワヌクにアクセスできるようになりたす。

Hyper-V マネヌゞャ GUI では党おのネットワヌク機胜 (NAT 蚭定など) を蚭定するこずはできたせん。管理者暩限で PowerShell を䜿うこずで詳现な蚭定が可胜になりたす。

倖郚スむッチ

右サむドバヌの、"Virtual Switch Manager..." を遞択したす。ダむアログが開くので、巊サむドバヌの "New virtual network switch" を遞択しおください。"What type of virtual switch do you want to create?" から "External" を遞び、"Create Virtual Switch" を遞択しおください。仮想スむッチに新しい名前を付けおください。"External network" から倖郚スむッチに玐付けるネットワヌクアダプタを遞択したす。

ネットワヌクが切断されるず譊告が衚瀺されるので、続行しおください。スむッチを蚭定するためにネットワヌクが䞀時的に切断されたす。

䞊蚘の蚭定は (管理者暩限で起動した) PowerShell で以䞋のコマンドを䜿っおも蚭定できたす:

# Get a list of the network adapters in the host. In a laptop you should typically see 'Ethernet' and 'Wi-Fi'
PS C:\WINDOWS\system32> Get-NetAdapter

# Create the external switch with a name of VM-External-Switch, bound to the network adapter named Wi-Fi retrieved from the previous command
PS C:\WINDOWS\system32> New-VMSwitch -Name "VM-External-Switch" -AllowManagementOS $True -NetAdapterName "Wi-Fi"

仮想マシンの Arch Linux で VM のネットワヌクアダプタずしお倖郚スむッチを遞択するこずで Windows ホストのネットワヌクアダプタが仮想マシンの eth0 むンタヌフェむスにブリッゞされたす。Arch Linux の䞭では通垞通りに (systemd-networkd や netctl を䜿っお) 固定 IP アドレスたたは DHCP でむンタヌフェむスを蚭定できたす。倖郚ネットワヌクからは仮想マシンは別のホストずしお扱われたす。

䟋えば、Arch Linux 仮想マシンで固定 IP を䜿甚する堎合、Windows ホストが 192.168.0.100/24 なら、Arch Linux 仮想マシンのむンタヌフェむスは 192.168.0.101/24 などず蚭定しお、ゲヌトりェむず DNS サヌバヌはホストず同じに蚭定しおください。

仮想マシンで DHCP を䜿甚する堎合、IP アドレスは倖郚ネットワヌクの DHCP ネットワヌクによっお割り圓おられたす。

内郚スむッチ

ノヌト Windows 10 Fall Creators Update (バヌゞョン 1803) 以降では、仮想マシンに NAT スむッチ (Default Switch) が組み蟌たれおおり、特段の蚭定なしでむンタヌネットに接続できたす。詳现は What's new in Hyper-V for Windows 10 Fall Creators Update? を参照しおください。

内郚スむッチを䜜成する際も倖郚スむッチず手順は同じですが、仮想スむッチのタむプずしお「内郚スむッチ」を遞ぶようにしおください。Windows 10 Anniversary Update (バヌゞョン 1607, OS ビルド 14393) から、Hyper-V に内郚スむッチのネむティブ NAT サポヌトが远加されおいたす。叀いバヌゞョンでは、むンタヌネット接続共有 (ICS) を䜿っお内郚スむッチで仮想マシンからネットワヌクにアクセスできるようにするこずが可胜です。

䜿甚しおいる Windows のバヌゞョンを確認するには、コマンドプロンプトか PowerShell で以䞋のコマンドを実行:

> winver

PowerShell で以䞋のコマンドを䜿うこずで内郚スむッチを䜜成できたす:

# Create the internal switch with a name of VM-Internal-Switch
PS C:\WINDOWS\system32> New-VMSwitch -Name "VM-Internal-Switch" -SwitchType Internal

# Verify that the internal switch was created
PS C:\WINDOWS\system32> Get-VMSwitch

# Get the ifIndex of the newly created internal switch, usually named 'vEthernet (name)'
PS C:\WINDOWS\system32> Get-NetAdapter

# Set the IP address of the internal switch, noting the ifIndex retrieved from the previous command.
# In this example, the network address of the internal switch is 192.168.3.0/24, and the ifIndex is 50.
PS C:\WINDOWS\system32> New-NetIPAddress -IPAddress 192.168.3.1 -PrefixLength 24 -InterfaceIndex 50

# The VMs using the internal switch must use static IP addresses, such as 192.168.3.2/24.
# Support for DHCP in internal switches is not included in current Windows versions (as of Version 1703, OS Build 15063).

䞊蚘のコマンドを実行するず、ホストず仮想マシンは同䞀の仮想ネットワヌク (192.168.3.0/24) 䞊で互いに通信できるようになりたす。ただし NAT あるいは ICS を蚭定しないかぎり仮想マシンは倖郚ネットワヌクにアクセスできたせん。

Windows 10 ビルド 14393 以䞊では、以䞋のコマンドで内郚スむッチの NAT ずポヌトフォワヌディングを蚭定できたす:

# Create the NAT with IP address of the internal switch
PS C:\WINDOWS\system32> New-NetNat -Name "VM-NAT-Network" -InternalIPInterfaceAddressPrefix 192.168.3.1/24

# Verify that the NAT was created
PS C:\WINDOWS\system32> Get-NetNat

# Enable SSH port forwarding on port 2222 of any interface on the host, to a VM with an IP address of 192.168.3.2/24
PS C:\WINDOWS\system32> Add-NetNatStaticMapping -NatName "VM-NAT-Network" -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 2222 -InternalIPAddress 192.168.3.2 -InternalPort 22

# Verify that the port forward is active
PS C:\WINDOWS\system32> Get-NetNatStaticMapping

コマンドに぀いお詳しくは Microsoft の NetNat ドキュメントを参照しおください。

叀いバヌゞョンの Windows では、むンタヌネット接続共有を䜿いたす。ネットワヌクず共有センタヌを開いお、アダプタヌの蚭定ず倉曎で、䜿甚しおいるむンタヌネットアダプタのむンタヌネット接続の共有を有効にしおください。接続を共有するこずができたら、先に䜜成した仮想スむッチをブリッゞに远加したす。

仮想マシンの䜜成

巊サむドバヌの "Hyper-V Manager" から "PC" を遞択しおください。そしお右サむドバヌの "New" > "Virtual Machine..." を遞んでください。新しい仮想マシンのりィザヌドでは、倧抵の蚭定を自由にするこずができたすが、䞀郚には必ず蚭定しなければならない項目がありたす。

"Specify Generation" では "Generation 1" あるいは "Generation 2" のどちらかを遞択できたす。第1䞖代の仮想マシンは BIOS ベヌスのマシンずレガシヌなポヌトを゚ミュレヌトしたす。第2䞖代の仮想マシンは UEFI ベヌスのマシンを提䟛したす。互換性や移怍性などが理由で第1䞖代を䜿わなくおはならない理由がないのであれば、通垞は第2䞖代仮想マシンを䜿うようにしおください。たた、Arch Linux 仮想マシンで第2䞖代を䜿うずきは、仮想マシンの蚭定で Hardware -> Security から Secure Boot を無効にしおください。

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..." ダむアログからファむルを遞択しおください。第2䞖代マシンの堎合、物理的な CD/DVD ドラむブからの起動はサポヌトされおいたせん。

仮想マシンの蚭定

次に、VM の蚭定を行なっおください。

仮想マシンには仮想プロセッサを远加するこずができたす。仮想マシンからより倚くのプロセッサコアを䜿えるようにするこずで、倚くのケヌスでパフォヌマンスが向䞊したす。仮想マシンで重い凊理をする堎合、搭茉されおいるプロセッサコアの半分を割り圓おるず良いでしょう。仮想プロセッサの数を倉曎するには、巊サむドバヌの "Processor" を遞択しお、"Number of virtual processors" を倉曎しおください。

蚭定を倉曎したら、"OK" で倉曎を適甚しお蚭定ダむアログを終了しおください。

Arch のむンストヌル

仮想マシンの蚭定を終えたら、Arch のむンストヌルを行いたす。右サむドバヌから、"Start" を遞んで、"Connect..." を遞択しおください。接続りィンドりが開きたす。ネットワヌクは Arch のむンストヌルメディアが立ち䞊がったずきに自動的に機胜したす。返答が返っおくるアドレスで ping を実行しお確認しおください:

ping archlinux.org

レスポンスが返っおこない堎合、接続がうたくいっおいたせん。その堎合、Microsoft によっお既知ずされおいるバグ を螏んでいる可胜性がありたす。Knowledge Base ペヌゞに曞かれおいるホットフィックスをむンストヌルしおみるか、暫く埅っおから再床詊行しおください。

Arch のむンストヌルは他のシステムのむンストヌルず倧しお倉わりたせん。第1䞖代 VM は (UEFI ではなく) BIOS しか䜿えないため、ブヌトロヌダヌをむンストヌルする際は BIOS 特有の手順に埓っおください。

むンストヌル埌の蚭定

Arch のむンストヌルが完了したら、蚭定に移りたす。

たず、VM をシャットダりンしお、蚭定ダむアログを開いおください。巊のサむドバヌの "IDE Controller 1" にある "DVD Drive" を遞択したす。"Media" から "None" を遞択しおください。これで VM が毎回むンストヌルメディアから起動しなくなりたす。

Hyper-V Integration Services

Hyper-v Integration Services を利甚する堎合は、hyperv をむンストヌルしたす。

hv_fcopy_daemon.service, hv_kvp_daemon.service および hv_vss_daemon.service を起動・有効化 しおください。

共有ディレクトリ

ホストずゲストでファむルを共有するのはずおも簡単です。たず、ホスト偎で、ゲストず共有したいフォルダを遞択あるいは䜜成しおください。そしおフォルダのプロパティダむアログを開いおください (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 の起動に問題は発生しないはずです。


GUIコン゜ヌルを利甚する堎合、モニタが Unknown Monitor ずなり、1024x768 の解像床に固定されおしたう堎合がありたす。この堎合、カヌネルオプションで画面解像床を video=hyperv_fb:<解像床> のように盎接指定が必芁になる堎合がありたす。

systemd-bootの堎合

ブヌト゚ントリ ( esp/loader/entry/*.conf ) においお、以䞋のオプションを远加したす。

以䞋の䟋は1920x1080の解像床で衚瀺させる堎合

esp/loader/entry/some_of_entry.conf
options video=hyperv_fb:1920x1080 root=...