これの続き。
前回はrootとswapを別のパーティションに作成したため、起動時にパスワードを2回入れる必要があった。まあこれでも良いのだが、煩雑なので1回で済ませられるようにしたい。そこで、LVM on LUKSを試してみることにした。暗号化した1つのパーティション上にLVMで複数の論理ボリュームを作成し、rootとswapを割り当てる。
参考にしたのは以下。
上記動画ではUEFIブートを前提としていないので若干手順が異なる。
前回と同様にWindowsのディスク管理でCドライブを縮小しLinuxのインストール領域を作る。unetbootinでUbuntu Desktop 16.10のインストールディスクを作っておく。
一旦シャットダウンしてインストールディスクから起動し、GPartedで未割り当ての領域に以下のようにパーティションを作る。
/boot
用のパーティション: ext2, 500MiB (ここでは/dev/sda5
)/
用のパーティション: ext4, 残り領域すべて (ここでは/dev/sda6
)
このとき、/
用のパーティションにはlvmフラグを立てておく。
端末を開いて以下のコマンドを順番に実行する
$ sudo -i # cryptsetup luksFormat --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 2000 /dev/sda6 # cryptsetup luksOpen /dev/sda6 sda6-crypt # pvcreate /dev/mapper/sda6-crypt # vgcreate UbuntuVG /dev/mapper/sda6-crypt # lvcreate -C y -L 16G -n swap UbuntuVG # lvcreate -C n -l 100%FREE -n root UbuntuVG
やっていることは以下の通り
cryptsetup luksFormat
で/dev/sda6
を暗号化cryptsetup luksOpen
で/dev/mapper/sda6-crypt
にマウントpvcreate
でLVMの物理ボリュームを初期化vgcreate
で物理ボリューム上にボリュームグループを作成lvcreate
でボリュームグループ上に論理ボリュームを2つ作成-C
オプションは論理ボリュームを隣接させるかどうかのオプション-L
オプションはボリュームのサイズを指定するオプションで、16G
など数値で明示的に指定する-l
オプションはボリュームのサイズを指定するオプションで、100%FREE
のように割合で指定できる
ここまで実行したら、インストーラを起動して通常通りインストールする。なお、ここではサードパーティのアプリケーション等をインストールしない。
インストール先の選択では「それ以外」を選んで
/dev/UbuntuVG/root
をext4で初期化して/
をマウントポイントに指定/dev/UbuntuVG/swap
をswap領域に指定/dev/sda5
をext2で初期化して/boot
をマウントポイントに指定- ブートローダのインストール先を
/dev/sda
に指定
を行い、インストールを続ける。一通り実行したら、再起動せずにUbuntuの試用を続ける。
再び端末を開いて以下を行う
$ sudo -i # mount /dev/mapper/UbuntuVG-root /mnt # mount /dev/sda5 /mnt/boot # mount /dev/sda2 /mnt/boot/efi # cd /mnt # mount --rbind /dev dev # mount --rbind /sys sys # mount --rbind /run run # mount --bind /proc proc # chroot . /bin/bash -l (chroot)# echo "sda6-crypt UUID=/dev/sda6のUUID none luks,discard" > /etc/crypttab (chroot)# update-initramfs -u (chroot)# grub-install --recheck /dev/sda (chroot)# grub-mkconfig -o /boot/grub/grub.cfg (chroot)# exit # cd # umount -l /mnt # sync # reboot
やっていることは以下の通り
mount
で/mnt
以下に作成したパーティションたちをマウントする- Windows Boot Managerの
/dev/sda2
を/mnt/boot/efi
にマウントしておかないとgrub-install --recheck /dev/sda
で弾かれる
- Windows Boot Managerの
/etc/crypttab
を作成する- 各項目はタブ区切り
sda6-crypt
は先程luksOpen
で使った名前をそのまま使う- UUIDは、別の端末を開いて
sudo cryptsetup luksOpen /dev/sda6
すると表示されるsudo blkid
で/dev/sda6
のものを探しても良い
none
は鍵の場所指定。今回は鍵がないのでnone
とするluks,discard
はオプション。discard
はSSDの場合のみつける- SSDのパフォーマンスを維持するためTRIMコマンドを使うかどうかの指定
grub-mkconfig -o /boot/grub/grub.cfg
でブートメニューを更新
あとはchroot環境を抜けてマウントしてたパーティションをアンマウントし再起動する。Ubuntuを起動するとsda6-cryptのパスワードを1回だけ求められ、入力すると起動できる。
これでUbuntu 16.10 on LVM on LUKSの環境を整えられた。Windows側の領域をBitLockerで暗号化している場合は、これらの作業を終えたあとにWindowsを起動する時、初回のみBitLockerの回復キーを入力して起動する必要がある。