目的
LinuxとWindowsのデュアルブート環境で、まれにWindows側のファイルをLinux側からアクセスしたいことがある。様々な事情でWindowsをBitLockerで暗号化している場合、アクセスの前にアンロックが必要である。
起動してからアンロック・マウントするだけならば、cryptsetupを使用して次のようにすればよい。
$ sudo cryptsetup bitlkOpen /dev/nvme0n1pX winEnter passphrase for /dev/nvme0n1pX: XXXXX-XXXXX-XXXXX-...-XXXXX # BitLockerの回復キー
$ sudo mount -t lowntfs-3g /dev/mapper/win /mnt/winこれを手動で行うのは面倒なので、できれば起動時に自動的にアンロックからマウントまでしてほしい。
手順
Systemd環境のLinuxでは、/etc/crypttabを用いて起動時にBitLockerドライブをアンロックすることをサポートしている1。
次の手順で設定する。
Arch Linuxを対象としているが、Systemdを使用しているLinuxディストリビューションであれば同様の方法で設定できるはずである。
-
キーファイルを適当な場所に配置する。内容はBitLockerの回復キーで、末尾に改行が含まれていてもよい。
Terminal window $ echo "XXXXX-XXXXX-XXXXX-...-XXXXX" > /etc/cryptsetup-keys.d/win.key -
/etc/crypttabに次の行を追加する。/etc/crypttab win UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /etc/cryptsetup-keys.d/win.key bitlkここで、
winは/dev/mapper/winにマッピングされるデバイス名である。3番目にキーファイルのパスを、4番目にbitlkオプションを指定する。 -
/etc/fstabのマウントが/dev/mapperを使うように修正する。/etc/fstab /dev/mapper/win /mnt/win lowntfs-3g defaults 0 0 -
再起動する。
ルートファイルシステムのマウント後にアンロックが行われるため、initramfsの再生成は必要ない2。
ここまで行った上でlsblkを叩くとうまくいっているかが確認できる。
$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSnvme0n1 259:0 0 1.8T 0 disk...├─nvme0n1pX 259:X 0 354.2G 0 part│ └─win 253:Y 0 354.2G 0 crypt /mnt/win...脚注
-
https://www.freedesktop.org/software/systemd/man/latest/crypttab.html#bitlk ↩︎
-
起動前にできないか
/etc/crypttab.initramfsに書いてみたが、なぜかアンロックがうまくいかなかった。 ↩︎
