これの続き。
前回は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の回復キーを入力して起動する必要がある。