All Articles

デュアルブートでVirtualBox

今は Windows10 と Arch Linux とのデュアルブートをしていてメインでは Linux 使っているんだけど、どうしても Windows 使いたい場合があって(Office とか Office とか Office とか)
これまでは Linux 側で VirtualBox に Windows を入れて使っていたんだけど、何分容量が少ないノート PC を使っているから実質トリプルブートになるこのやりかたは厳しいものがあった
そこでデュアルブートをしている実パーティションの Windows を Linux 側から呼び出せばいいんじゃないかと思って調べてみたらなんかできそうだったのでやってみた

結論から言うとできたけどちょっと問題がいろいろ起きてやっぱやめようってなってしまったが…

やったこと

基本的にはArchWikiに則ってやった
手順としては、

  • 自分のユーザーをグループdiskvboxusersに追加
  • ArchWiki の通り udev を設定
  • 仮想ディスクイメージファイルを作成
  • VirtualBox の設定

ディスクイメージファイル作成はちょっと詰まった
自分のディスク構成は、

$ fdisk -l
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 06321AVC-9994-4055-9FFF-F62FFC20193E

Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048    206847    204800   100M EFI System
/dev/nvme0n1p2    206848    239615     32768    16M Microsoft reserved
/dev/nvme0n1p3    239616 168017419 167777804    80G Microsoft basic data
/dev/nvme0n1p4 168017920 496429055 328411136 156.6G Microsoft basic data
/dev/nvme0n1p5 496431104 500117503   3686400   1.8G Windows recovery environment

ってなっているんだけど(nvme0n1p3 が Windows10、nvme0n1p4 が Arch Linux)、Wiki の通りにやると UEFI シェルが出てきてどうにもなんなくなってしまう(できるのかもしれないけどよくわからん)

$ vboxmanage internalcommands createrawvmdk -filename /path/to/vm/folder/windows.vmdk -rawdisk /dev/nvme0n1 -partitions 2,3 -relative

なのでブートローダーがある領域まで突っ込めばなんとかなるんじゃないかと思ってやってみた

$ vboxmanage internalcommands createrawvmdk -filename /path/to/vm/folder/windows.vmdk -rawdisk /dev/nvme0n1 -partitions 1,2,3 -relative

すると起動成功(systemd-boot から始まってしまうのでそこで Windows 選択する必要が出たが)
普通に使えるしいいじゃん、ディスク容量も節約できるし

やったぜ

って思ってたけど大きな問題点が 2 つ出た

1 つは VirtualBox で起動させると Windows のライセンス認証が通らない、通ってない状態になる
なので普通に Windows 起動させたときにライセンス認証いちいちする必要が出てきてしまう
(Wiki には設定で Hyper-V をオンにするとライセンス問題回避できるかもね、って書いてあるけど自分は無理でした)
あと Office のライセンス認証も通らなかった

これより面倒な問題あって、VirtualBox で Windows を起動したあと普通に Windows を起動させて終了させるとなぜかブートローダーの順序が変わってしまうのに気がついた
つまりいつもは Linux の systemd-boot を使っているんだけど、なぜか Windows のブートローダーが優先順位高く変更されてしまい、Linux が起動できなくなってしまう(いちいち BIOS 設定で変更しないといけなくなってしまった)

そこまでして実パーティションの Windows を呼び出して使うか…となってしまったので、結局元通り VirtualBox 上にインストールして今は使ってる

Reference