「MIKU LAND Snow World 2021」に行きたくて、Linux がメインの PC のディスク容量を空けて Windows をインストールした。よくある作業だと思って始めたのに、なかなか苦戦したので作業手順を記録しておくことにする。

MIKU LAND は初音ミクのテーマパーク的なものを VirtualCast の VR 空間上に作りだしたもの。何やら大きな初音ミク像とか、雪ミク雪像とかが見られたり、運が良ければ動くミクさんに会うことができるらしい。夢のようだ。何としても行きたいところだ。

しかし、いま手元には Oculus Quest2 があるにも関わらず、これだけでは夢は叶わない。何故ならば「MIKU LAND Snow World 2021」の時点で MIKU LAND が独立ヘッドマウントディスプレイからのプレイに対応していないからだ。Oculus ならば PC から Oculus Link という仕組みを使って接続してやる必要がある。だんだん雲行きが怪しくなってきた。Oculus Link は Windows からしか使えない。そして我が家にはまともな Windows PC など無い。ましてや VR のレンダリングができるほどの性能を持ったグラフィックボードを積んだ Windows などあるはずがない。

幸い、微妙なグラフィックボードを積んだ Linux PC ならある。ちゃんと見られるかは分からないが、やれるだけやってみよう。というわけで Linux PC に Windows をデュアルブートでインストールし MIKU LAND への道を歩むことにしたのだった。

巷ではデュアルブートする時、Windows の入った PC に対し、後から Linux をインストールするのが一般的と言われている。一方で逆の手順については記事も少なく、内容も古めである。せっかくなのでほぼ最新の Fedora における手順を記録する。

また Linux 上の KVM で Windows を動かし、Oculus Link の USB 接続と GPU をパススルーする作戦も取り得るが、てこずって MIKU LAND 開催期間中に間に合わなくなったり、ただでさえしょぼい GPU が限界の性能を発揮できない可能性があったので、より確実なデュアルブート作戦で行くことにした。

1. 作業環境

Fedora 32

もう Fedora 33 がリリースされているけど、まだアップデートしていなかった。

> uname -a
Linux fg-ryz 5.10.11-100.fc32.x86_64 #1 SMP Wed Jan 27 15:20:29 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Radeon RX 460

秋葉原の PC 工房にて 6,500 円で買った中古 AXRX-460-2G。VR を遊べる性能のようには思えなかったが、やってみたら割と動いた。やけに VR 酔いしたのが GPU の性能のせいなのかは不明。

> lspci | grep VGA
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (rev cf)

Ryzen7 3700X

これは OK でしょう。

lscpu | grep "Model name"
Model name:                      AMD Ryzen 7 3700X 8-Core Processor

2. 必要なもの

USB メモリ 4GB 程度

Fedora の Live installation イメージを書き込むためのもの。とりあえず手元に 4GB があったので使ったが、netinstall の ISO なら 1GB もあれば足りるかもしれない。

> dmesg | grep usb
[ 4273.428289] usb 1-1.2: new high-speed USB device number 11 using xhci_hcd
[ 4273.584151] usb 1-1.2: New USB device found, idVendor=1307, idProduct=0165, bcdDevice= 1.00
[ 4273.584155] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4273.584156] usb 1-1.2: Product: series
[ 4273.584157] usb 1-1.2: Manufacturer: MF-AU2A
[ 4273.584158] usb 1-1.2: SerialNumber: 0000000D88D950
> lsusb | grep Flash
Bus 001 Device 008: ID 1307:0165 Transcend Information, Inc. 2GB/4GB/8GB Flash Drive
> sudo fdisk -l /dev/sdb | head -1
ディスク /dev/sdb: 3.78 GiB, 4041211904 バイト, 7892992 セクタ

本体には Elecom と書いてあるのに、中身は Transcend だった。

USB メモリ 8GB 以上

Windows のイメージを書き込むもの。容量は 8GB は必要だろう。

dmesg | grep usb
[ 4148.750496] usb 1-1.2: new high-speed USB device number 10 using xhci_hcd
[ 4148.915859] usb 1-1.2: New USB device found, idVendor=056e, idProduct=601d, bcdDevice=11.00
[ 4148.915863] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4148.915864] usb 1-1.2: Product: MF-RSU2
[ 4148.915865] usb 1-1.2: Manufacturer: ELECOM
[ 4148.915866] usb 1-1.2: SerialNumber: E1104H04AX30000207
> lsusb | grep Elecom
Bus 001 Device 009: ID 056e:601d Elecom Co., Ltd
> LANG=en_US sudo fdisk -l /dev/sdb | head -1
Disk /dev/sdb: 7.49 GiB, 8027897856 bytes, 15679488 sectors

こっちは外見のラベルも中身もちゃんと Elecom だった。

グラフィックボード

Oculus Link では PC 側でレンダリングを行うので、PC 側の GPU に十分な性能が必要。VirtualCast パソコンの推奨性能と最小性能 によると、その性能は下記の通り:

  • 推奨: NVIDIA RTX2070 の同等品以上
  • 最小限: NVIDIA GTX970 の同等品以上

RX460 は GTX970 の半分程度の性能。それでも見られたので、やるだけやってみるものだと思う。

Oculus Quest2

すでに買ってあった。

USB ケーブル

Oculus Link で PC と Oculus Quest2 を接続する。公式 Oculus Link Cable のような USB3.X ケーブルが推奨だが、USB2.0 でも動作した。警告が表示されてすごく邪魔だけど、無視で問題無い。

Oculus Linkの互換性

3. バックアップ

このあとの作業では、PC のデータの消失する危険のある手順が何度も出現する。バックアップを確実に取るなりしてデータが消える覚悟で挑もう。

4. LVM パーティションの縮小

4.1. ディスク使用状況の確認

挿さっているのは SSD 1TB 一枚のみ。空き容量は用意していないはず。

# df -h
ファイルシス                            サイズ  使用  残り 使用% マウント位置
/dev/sda1                                 200M   21M  180M   11% /boot/efi
/dev/sda2                                 976M  261M  649M   29% /boot
/dev/mapper/fedora_localhost--live-root    69G   38G   28G   58% /
/dev/mapper/fedora_localhost--live-home   794G  106G  648G   15% /home

上の fedora_localhost--live となっているものは、/dev/sda3 上に LVM で作成されたもの。物理ボリュームを見てみると 0 free となっていて記憶通り空きスペースは無い。

# pvscan
  PV /dev/sda3   VG fedora_localhost-live   lvm2 [893.05 GiB / 0    free]
  Total: 1 [893.05 GiB] / in use: 1 [893.05 GiB] / in no VG: 0 [0   ]

せっかくだから LVM ボリュームグループも見てみる。

# vgscan
  Found volume group "fedora_localhost-live" using metadata type lvm2

LVM ボリュームの一覧を見る。

# lvscan
  ACTIVE            '/dev/fedora_localhost-live/swap' [<15.78 GiB] inherit
  ACTIVE            '/dev/fedora_localhost-live/home' [<807.28 GiB] inherit
  ACTIVE            '/dev/fedora_localhost-live/root' [70.00 GiB] inherit

LVM ボリュームの詳細を見る。

# lvdisplay /dev/fedora_localhost-live
  --- Logical volume ---
  LV Path                /dev/fedora_localhost-live/swap
  LV Name                swap
  VG Name                fedora_localhost-live
  LV UUID                cG45jU-rD3x-EAMx-N9eg-YfXO-1rT7-DiZYxR
  LV Write Access        read/write
  LV Creation host, time localhost-live, 2019-09-16 19:25:47 +0900
  LV Status              available
  # open                 2
  LV Size                <15.78 GiB
  Current LE             4039
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/fedora_localhost-live/home
  LV Name                home
  VG Name                fedora_localhost-live
  LV UUID                VGKLXV-4qB6-TgRi-jiK4-M1Q3-fF6M-2Y7lte
  LV Write Access        read/write
  LV Creation host, time localhost-live, 2019-09-16 19:25:47 +0900
  LV Status              available
  # open                 1
  LV Size                <807.28 GiB
  Current LE             206663
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/fedora_localhost-live/root
  LV Name                root
  VG Name                fedora_localhost-live
  LV UUID                qBY8KC-dDY0-xnRB-Jkfg-KrYs-jLJ6-i7cNf6
  LV Write Access        read/write
  LV Creation host, time localhost-live, 2019-09-16 19:25:50 +0900
  LV Status              available
  # open                 1
  LV Size                70.00 GiB
  Current LE             17920
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

空き容量が無いし、追加のディスクは手元に無いので、何とかして SSD に場所を作ってやることにする。出来るとしたら /dev/fedora_localhost-live/home のある /dev/sda3 だ。

4.2. Live installation USB 作成

/dev/sda3 は Linux システムにマウントされているので、このままでは変更が出来ない。そこで USB から別の Linux を起動し、マウントされていない状態にする。Fedora の Live installation の USB を作成した。

Preparing for Installation :: Fedora Docs によると、Fedora Media Writer を使うと簡単に起動 USB を作れるらしい。DNF でインストールして実行した。

# dnf install mediawriter
インストール済み:
  mediawriter-4.1.7-1.fc32.x86_64                 qt5-qtquickcontrols-5.14.2-1.fc32.x86_64                

完了しました!
# exit
> mediawriter

GUI が起動するので適当にポチポチとボタンを押したら USB への書き込みが行なわれた。すげえ便利だな。

  • Fedora Server を選び
  • “Create Live USB…” ボタン
  • 書き込みたい USB メモリを慎重に選んで、
  • “書き込み” ボタン

PC を終了して、USB メモリから起動したら、”Troubleshooting”、”Rescue a Fedora system” の順に選ぶとシェルが起動する。/dev/sdaX はマウントされていないので、これで作業ができる。

Rescue

The rescue environment will now attempt to find your Linux installation and
mount it under the directory : /mnt/sysroot. You can then make any changes
required to your system. Choose '1' to proceed with this step.
You can choose to mount your file systemsread-only instead of read-writer by
choosing '2'.
If for some reason this process does not work choose '3' to skip directly to a
shell.


1) Continue
2) Read-only mount
3) Skip to shell
4) Quit (Reboot)

Please make a selection from the above: 1
============================================================================
============================================================================
Rescue Shell

You don't have any Linux partitions.
When finished, please exit from the shelland your system will reboot.

Please press ENTER to get a shell:
bash-5.0#

早速 /dev/sda3 を縮小する作業に入りたいところだが、残念ながら

  • ファイルシステム
  • LVM 論理ボリューム
  • LVM 物理ボリューム
  • LVM パーティション の順に4段階で小さくしていかなければいけない。面倒くさすぎる。

4.3. ファイルシステムの縮小

まずファイルシステムを縮小する。まず ‘/dev/fedora_localhost-live/home’ が inactive になっていると、そのファイルシステムに触れないので起こしてやる必要がある。

# lvscan
  inactive           '/dev/fedora_localhost-live/swap' [<15.78 GiB] inherit
  inactive           '/dev/fedora_localhost-live/home' [<807.28 GiB] inherit
  inactive           '/dev/fedora_localhost-live/root' [<70.00 GiB] inherit

‘/dev/fedora_localhost-live/home’ を指定して lvchange -ay する。

# lvchange -ay /dev/fedora_localhost-live/home
# lvscan
  inactive           '/dev/fedora_localhost-live/swap' [<15.78 GiB] inherit
  ACTIVE             '/dev/fedora_localhost-live/home' [<807.28 GiB] inherit
  inactive           '/dev/fedora_localhost-live/root' [<70.00 GiB] inherit

余計なトラブルを踏まないよう、ファイルシステムに問題が無いか確認しておく。

# e2fsck -f /dev/fedora_localhost-live/home
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking inodes, blocks, and sizes
Inode 35522085 extent tree (at level 1) could be shorter. Optimize<y>? y```
Inode 35522224 extent tree (at level 1) could be shorter. Optimize<y>? y```
Pass 1E: Optimizing extent trees
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/fedora_localhost-live/home: ***** FILESYSTEM WAS MODIFIED *****
/dev/fedora_localhost-live/home: 426150/52912128 files (2.4% non-contiguous), 285020000/211622912 blocks

仕事してくれたっぽい。

これでファイルシステムのサイズ変更を実行する。

# resize2fs /dev/fedora_localhost-live/home 730GB
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/fedora_localhost-live/home to 191365120 (4k) blocks.
The filesystem on /dev/fedora_localhost-live/homeis now 191365120 (4k) blocks long.

はじめ 780 GiBに縮小したが、後の作業で詰まったので 730 GiBにした。後で触れるが /dev/fedora_localhost-live/home の後ろに /dev/fedora_localhost-live/root の容量分 70 GB 空ける必要があった。元々 807.28 GiB だったので、730 GiB なら 77 GiB 空けられたことになる。以降のコマンド出力では、一度 780 GiB にした形跡が垣間見えるけど気にしない。

4.4. LVM 論理ボリュームの縮小

ファイルシステムを縮小しても、LVM 論理ボリュームではまだ容量を握ったままになっている。

# lvreduce -L 730G /dev/fedora_localhost-live/home
  WARNING: Reducing active logical volume to 730.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce fedora_localhost-live/home? [y/n]: y
  Size of logical volume fedora_localhost-live/homechanged from 780 GiB (199680 extents) to 730.00 GiB '(186808 extents).
  Logical volume fedora_localhost-live/homesuccessfully resized.

何やら怖いことを言うが、続行で良い。うっかり小さいサイズを指定してしまっても、lvreduce は突き進むらしい。その場合はデータが消えたりするので、ちゃんと確認してね!!

4.5. LVM 物理ボリュームの縮小

次は LVM 物理ボリュームを縮小する。さっきは論理で今度は物理だ。これはすぐには出来ない。その理由は物理ボリュームの中身を表示してみると判る。

# pvdisplay -v -m
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               fedora_localhost-live
  PV Size               <893.06 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              228622
  Free PE               19783
  Allocated PE          208839
  PV UUID               NV2kfU-UheI-jPrU-2cxX-ykQ8-E93d-uNVdoV
  
  --Physical Segments ---
  Physical extent 0 to 4038:
    Logical volume      /dev/fedora_localhost-live/swap
    Logical extents     0 to 4038
  Physical extent 4039 to 190918:
    Logical volume      /dev/fedora_localhost-live/home
    Logical extents     0 to 186879
  Physical extent 190919 to 210701:
    FREE
  Physical extent 210702 to 228621:
    Logical volume      /dev/fedora_localhost-live/root
    Logical extents     0 to 17919

ここまでの作業で空けた場所は、何と homeroot の中間だったのだ。ボリュームの途中に 190919 - 210701 の隙間が空いただけだった。後ろの方は root がまだあるのでパーティションを縮めることはできない。

ここで pvmove という便利なコマンドがあり Physical extent を移動することができる。root を縮小した home の直後に移動させれば、末尾が空くはずだ。クリティカルな作業が続いて辛い。root が 210702-228621 にあるので、これを home 直後の 190919 以降に移動させる。

# pvmove --alloc anywhere /dev/sda3:210702-228621 /dev/sda3:190919-208838
  /dev/sda3: Moved: 0.06%
  /dev/sda3: Moved: 3.12%
  /dev/sda3: Moved: 5.74%
  /dev/sda3: Moved: 7.85%
  略
  /dev/sda3: Moved: 93.51%
  /dev/sda3: Moved: 95.08%
  /dev/sda3: Moved: 96.76%
  /dev/sda3: Moved: 98.58%
  /dev/sda3: Moved: 99.93%
  /dev/sda3: Moved: 100.00%

当然時間がかかるので、食器を洗っていたところ、いい感じに終わっていた。

ちなみに初回は homeroot の隙間の FREE の大きさが足りなかったので pvmove を実行できなかった。ダメな場合は下のように怒ってくれる。隙間は root が丸ごと入るスペースが必要である。

# pvmove --alloc anywhere /dev/sda3:210702-228621 /dev/sda3:203719-221638
  Insufficient free space: 17920 extents needed, but only 6983 available
  Unable to allocate mirror extents for fedora_localhost-live/pvmove0.
  Failed to convert pvmove LV to mirrored.

もう一回 pvdisplay すると、FREE が末尾に移動した。これで尻尾を切るようにして、物理ボリュームを縮小できる。

# pvdisplay -v -m
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               fedora_localhost-live
  PV Size               <893.06 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              228622
  Free PE               19783
  Allocated PE          208839
  PV UUID               NV2kfU-UheI-jPrU-2cxX-ykQ8-E93d-uNVdoV
  
  --Physical Segments ---
  Physical extent 0 to 4038:
    Logical volume      /dev/fedora_localhost-live/swap
    Logical extents     0 to 4038
  Physical extent 4039 to 190918:
    Logical volume      /dev/fedora_localhost-live/home
    Logical extents     0 to 186879
  Physical extent 190919 to 208838:
    Logical volume      /dev/fedora_localhost-live/root
    Logical extents     0 to 17919
  Physical extent 208839 to 228621:
    FREE

LVM の物理ボリュームを縮小する。何度かコマンドを実行して pvscan したときに 0 free になるサイズを探した。

なおサイズはセクタでも指定できたようだ。セクタで出来るならそうするべきだ。ヘルプはちゃんと見よう。

# pvresize --setphysicalvolumesize 815.78 GiB /dev/sda3
  WARNING /dev/sda3: Pretending size is 1710814658 not 1872875520 sectors.
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized or updated / 0 physicalvolume(s) not resized

pvscan0 free になった。

# pvscan
  PV /dev/sda3   VG fedora_localhost-live   lvm2 [<815.78 GiB / 0    free]
  Total: 1 [<815.78 GiB] / in use: 1 [<815.78 GiB] / in no VG:b 0 [0  ]

4.6. LVM パーティションの縮小

いよいよパーティションの縮小を…と行きたいところだが、もう一つやらなければいけないことがあって、それはパーティションを切るセクタを計算することだ。適当にやっても余裕のある数値にすれば大丈夫なはずだが、せっかくなのでビッタリでやりたい。

まずは現在の /dev/sda3 パーティションはどうなっているかと言うと…

# fdisk -l /dev/sda3
Disk /dev/sda3: 893.06 GiB, 958912266240 bytes, 1872875520 sectors
Units: secrots of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

1セクタが 512 bytes なので、958,912,266,240 bytes を 512 で割り算すると 1,872,875,520 になることを確認しておく。

そして物理ボリュームの大きさを確認する。これが新しいパーティションの大きさになるはずだ。

# sudo pvdisplay --units b
[sudo] fujii のパスワード:
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               fedora_localhost-live
  PV Size               875936056320 B  / not usable 1803264 B
  Allocatable           yes (but full)
  PE Size               4194304 B
  Total PE              208839
  Free PE               0
  Allocated PE          208839
  PV UUID               NV2kfU-UheI-jPrU-2cxX-ykQ8-E93d-uNVdoV

875,936,056,320 bytes なので、1,710,812,610 セクタ。

この情報も持ってパーティションサイズの変更に挑もう。parted を使った。

# parted /dev/sda
(parted) print
Disk /dev/sda: 960197124096B
Secrot size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start        End            Size           File system   Name                  Flags
1       1048576B     210763775B     209715200B     fat16         EFI System Partition  boot, esp
2       210763776B   1284505599B    1873741824B    ext4
3       1284505600B  960196771839B  958912266240B                                      lvm
(parted) unit s
(parted) print
Disk /dev/sda: 1875385008s
Secrot size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start     End           Size          File system   Name                  Flags
1       2048s     411647s       409608s       fat16         EFI System Partition  boot, esp
2       4111648s  2508799s      2097152s      ext4
3       2508800s  1875384319s   1872875520s                                       lvm

現在のパーティションの Start-End が 2,508,800s-1,875,384,319s。新しいパーティションのサイズは 1,710,812,610s だったので Start-End は 2,508,800s (そのまま) -1,713,321,409s (2,508,800 + 1,710,812,610 - 1) になる。

parted には resizepart という大変便利のコマンドがあるので、これに数字を渡してあげれば完了。

(parted) resizepart3 1713321409
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? y
(parted) quit
Information: You may need to update /etc/fstab.

改めて fdisk してみると、パーティションサイズが変更された。

# fdisk -l /dev/sda3
Disk /dev/sda3: 815.78 GiB, 875936056320 bytes, 1710812610 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

これでついに /dev/sda3 の後に 70 GiB の空きスペースが確保できた。ここに Windows をインストールしていく。

5. Windows10 のインストール

Windows10 もやや面倒だったが、ここまでの手順ほど危険じゃないので辛くない。

5.1. Windows Bootable USB の作成

何はともあれ、まずは Windows10 の ISO をダウンロードする。ライセンス無しのものが 公式サイトから手に入る。ライセンスが無いのでしばらく使っていると右下にメッセージが表示されるようになるが、どうせ一瞬しか使わないので問題無い。本当に使う気がしたら買えばいい。ライセンスは Windows Home なら 18,000 円強。

ダウンロードできたら USB メモリに書き込んで起動できるようにする。USB メモリは、さっき Linux を入れたものとは別のものを使うべきだ。失敗した時や、Windows にブートローダーを破壊された時に必要になる。また、容量は 8GB は欲しい。

USB メモリへの書き込みも少し工夫が必要。単純に FAT32 でフォーマットした USB メモリに Windows ISO の内容を書き込もうとすると、次のようにエラーになってしまった。FAT32 には1ファイル 4GB までの上限があり、install.wim はそれを超えているため書き込むことができない。

# cp -r /mnt/loop/* /mnt/uefi_boot/
cp: '/mnt/usb/sources/install.wim' の書き込みエラー: ファイルが大きすぎます

そうですか……。調べると、以下のようにすると問題を回避しるつ起動できるらしい:

  • USB メモリに2つのパーティション UEFI_Boot と Win10 を作る
  • UEFI_Boot のサイズは 1GB 程度にする
  • UEFI_Boot のファイルシステムは FAT32 にする
  • UEFI_Boot には、ISO の中身のうち、 sources 以外と、sources/boot.wim だけをコピーする
  • Win10 のサイズは UEFI_Boot を切った残り全てにする
  • Win10 のファイルシステムは NTFS にする
  • Win10 には ISO の中身のうち、sources ディレクトリの boot.wim 以外全部をコピーする

なるほど。裏技感ある。作ってみよう。

parted を使ってパーティションを切る。/dev/sda は Windows のインストーラーを入れる USB メモリだ。

# parted /dev/sdb
GNU Parted 3.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be
lost. Do you want to continue?
Yes/No? Yes

はじめに UEFI_Boot パーティション。

(parted) mkpart
Partition name?  []? UEFI_Boot
File system type?  [ext2]? fat32
Start? 0G                                                                 
End? 1G

次に Win10 パーティション。

(parted) mkpart
Partition name?  []? Win10
File system type?  [ext2]? ntfs
Start? 1G
End? 100%

こうなる。

(parted) print
Model: SMI USB DISK (scsi)
Disk /dev/sdb: 8028MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name       Flags
 1      1049kB  1000MB  999MB   fat32        UEFI_Boot
 2      1000MB  8027MB  7027MB  ntfs         Win10

(parted) quit                                                             
Information: You may need to update /etc/fstab.

そして、それぞれのパーティションをフォーマットしてファイルシステムを作成する。

# mkfs.vfat /dev/sdb1 
mkfs.fat 4.1 (2017-01-24)
# mkfs.ntfs -f /dev/sdb2 
Cluster size has been automatically set to 4096 bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

さっきのルール通りに ISO 内のファイルをコピー。

# mkdir /mnt/loop
# mkdir /mnt/uefi_boot
# mkdir /mnt/win10

# mount -t udf -o ro,loop /home/fujii/Downloads/Win10_20H2_v2_Japanese_x64.iso /mnt/loop
# mount -t vfat /dev/sdb1 /mnt/uefi_boot
# mount -t ntfs /dev/sdb2 /mnt/win10

# rsync -r --exclude='sources' /mnt/loop/* /mnt/uefi_boot/
# mkdir /mnt/uefi_boot/sources
# cp /mnt/loop/sources/boot.wim /mnt/uefi_boot/sources/

# cp -r /mnt/loop/sources /mnt/win10/

書き込みバッファをフラッシュする。結構時間がかかるのでプロセカでもやってミク成分を補給していればいいと思う。

# sync

後片付けも忘れずに。

# umount /mnt/loop
# umount /mnt/uefi_boot
# umount /mnt/win10

# rmdir /mnt/loop
# rmdir /mnt/uefi_boot
# rmdir /mnt/win10

これで Windows10 のインストーラー起動ディスクが出来上がった。

5.2. Windows10 のインストール

インストールは、ここまでの作業ができていれば問題無く進めた。問題があった場合には次のように表示された。不安になることが書いてあるけれども、単にどこかで手順を間違えただけと思われるので、焦らずに見直すべし。

回復 お使いのPCまたはデバイスは修復する必要があります 要求されたデバイスが接続されていないか、デバイスにアクセスできません。

エラーコード: 0xc000000f

回復ツールを使用する必要があります。インストールメディア (ディスクや USB デバイスなど) がない場合は、PC 管理者または PC/デバイスの製造元にお問い合わせください。

めでたく先に進めたら Windows の指示に従いながらインストールを進めればよい。さっき頑張って確保したディスクの空きスペースにインストールすることだけ、当たり前だが間違えないようにしよう。

5.3. Bootloader の変更

Windows を起動したら Grub のブートローダーが破壊されて Linux が起動できなくなってしまう場合がある。以前 ThinkPad でやったときに発生し、Windows しか使えなくなってしまった。幸運にも今回は問題が起きず、Windows インストール後であっても、起動メニューで Fedora を選んであげれば普通に起動した。さらに Grub のメニューに “Windows Boot Manager” も出ており、そこから Windows が起動できたので、Grub の設定変更もせずに済んだ。起動パーティションの優先順位だけは、Windows が勝手に優位になっていたので Fedora が勝つよう修正した。

もしも問題が起きたら以下のページを参考にすると良さそうだ。

Windows が起動できたら、あとは MIKU LAND まで一直線に突っ走るのみ。

あとは VirtualCast のチュートリアルに従って進んでいたら MIKU LAND が出てきた。

7. 感想

動いているミクさんには会うことができなかったけど、なんとなく気持ち良い世界観に浸れたので良かった。もちろん一言も言葉を発しなかった。でも VirtualCast 自体、何とも言えない中毒性がありそうな空間のように思えた。

今後も Oculus Link を使う機会があると思うので、KVM 上で動作する Windows10 への GPU パススルーも今度試みてみようと思う。