LinuxのLVMパーティションを縮小してWindowsをインストールした
「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 でも動作した。警告が表示されてすごく邪魔だけど、無視で問題無い。
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
ここまでの作業で空けた場所は、何と home
と root
の中間だったのだ。ボリュームの途中に 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%
当然時間がかかるので、食器を洗っていたところ、いい感じに終わっていた。
ちなみに初回は home
と root
の隙間の 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
pvscan
で 0 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 が勝つよう修正した。
もしも問題が起きたら以下のページを参考にすると良さそうだ。
- Repair your Fedora’s (EFI) GRUB Bootloader
- GRUB 2 - Fedora Project Wiki
- linux - Modify grub to dual boot fedora with windows 10 - Unix & Linux Stack Exchange
6. Oculus Link の起動
Windows が起動できたら、あとは MIKU LAND まで一直線に突っ走るのみ。
- Oculus Link の設定: Oculusの設定: Rift S、Rift、Quest、Go | Oculus
- Steam のインストール: Steam - 究極のオンラインゲーミングプラットフォーム
- SteamVR のインストール: Steam:SteamVR
- VirtualCast の起動
あとは VirtualCast のチュートリアルに従って進んでいたら MIKU LAND が出てきた。
7. 感想
動いているミクさんには会うことができなかったけど、なんとなく気持ち良い世界観に浸れたので良かった。もちろん一言も言葉を発しなかった。でも VirtualCast 自体、何とも言えない中毒性がありそうな空間のように思えた。
今後も Oculus Link を使う機会があると思うので、KVM 上で動作する Windows10 への GPU パススルーも今度試みてみようと思う。