偉大なこちらのノートの内容が全て。あとちょっとだけBitlocker関連でエラーが出ないようにアレンジ。
- RecoveryディスクからWin11をクリーンインストールする
- Winを起動し、ディスクがBitlocker有効になっていたら無効にしておく
- WinのディスクマネージャでWinの領域を小さくする
- Ubuntuをインストールメディア(USB)から起動する
- Try環境でgpartedを使ってWinのRecovery領域をWin領域の直後に移動する
- そのままgpartedで空き領域にext4パーティションを2つ作成する(1000MiBと残り全部)
- Try環境でターミナルを開き、コマンドを叩いて大きなほうの領域をLUKS領域にする
- インストールGUIを起動し、パーティションの設定で1000MiBのほうを /boot に 残りを / に割り当てる(タイプはext4)
- 他は元ドキュメントの5からの記述と一緒
- インストール完了後にGUIに残って、initramfsの設定をする必要があるのを忘れないように
- Ubuntu側を起動。grubの設定を修正し、Winが自動で起動するようにする(update-grubを忘れないように)
- Win側を起動。Bitlockerを再度有効にする
2023.01.09 追記
初出時は/boot領域は550MiBにしていたのですが、これだと容量が足りなくてカーネルアップデートできない場合があったので、1000MiBに拡張しました。
実際に作ったのがこちら。
/dev/nvme0n1p{1-4}がWindowsによって作成された領域。
/dev/nvme0n1p4は最初はディスクの一番後ろに配置されていたけど、5の手順で前のほうに移動した。
7のコマンドは、
$ sudo cryptsetup luksFormat /dev/nvme0n1p6
$ sudo cryptsetup luksOpen /dev/nvme0n1p6 cryptdrive
$ sudo pvcreate /dev/mapper/cryptdrive
$ sudo vgcreate vglinux /dev/mapper/cryptdrive
$ sudo lvcreate -n root -l 100$FREE vglinux
8のインストールGUI内では、
- /dev/mapper/vglinux-root を ext4 で / に
- /dev/nvme0n1p5 を ext4 で /boot に
指定する。
また、 /dev/nvme0n1 を Boot drive として指定する。
10の手順でインストールGUIが最後まで行っても、そのまま再起動をしてはいけなくて、Try環境に戻ってターミナルを開いて以下のコマンドを叩く必要がある。
まずは、作成したLUKS領域のUUIDを調べる。
$ sudo blkid /dev/nvme0n1p6
そして、
$ sudo mount /dev/mapper/vglinux-root /mnt
$ sudo mount /dev/nvme0n1p5 /mnt/boot
$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt
$ mount -t proc proc /proc
$ mount -t sysfs sys /sys
$ mount -t devpts devpts /dev/pts
これをした上で、
$ sudo nano /etc/crypttab
で開いたファイルに
cryptdrive UUID=(さっき調べたUUID) none luks,tries=0,discard,loud
と記述して、
$ update-initramfs -k all -c
でinitramfsを作成。ここまでできたら再起動。起動時にLUKSのパスワードを聞かれるようになる。
11でUbuntuに戻ってきたら、何もしてないときはWindowsで起動してきて欲しいのでgrubを修正。
$ sudo nano /etc/default/grub
以下のように、6行目(GRUB_DEFAULT)を2(番目)のWindowsに。8行目(GRUB_TIMEOUT)を2(秒)にして、OS選択画面で2秒間何もしなかったらメニュー2番目のWindowsで自動的に起動されるようにする。
記述を保存したら
$ sudo update-grub
これで設定が反映される。
以上でUbuntu側の設定が終わったら、再起動してWindowsに入り、Bitlockerを再度有効化する。ディスク全体ではなく、使用している領域だけに適用されるようにする。
これで完成。