別の/boot
パーティションで完全に暗号化されたディスクをセットアップしようとしていますが、いくつかの問題が発生しています。
Ubuntu 15.04 Live DVDセッションで従ってきた手順を書き留めます。
ディスクを「ランダムデータ」で埋める
Sudo dd if=/dev/urandom of=/dev/sda1 bs=4096 #ok
パーティションを作成します(gpartedを使用)
ボリュームを暗号化する
cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
--hash sha512 --iter-time 3000 /dev/sda1
cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
--hash sha512 --iter-time 3000 /dev/sda2
cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
--hash sha512 --iter-time 3000 /dev/sda3
cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
--hash sha512 --iter-time 5000 /dev/sda4
オープン暗号化ボリューム
cryptsetup luksOpen /dev/sda1 boot
cryptsetup luksOpen /dev/sda2 swap
cryptsetup luksOpen /dev/sda3 root
cryptsetup luksOpen /dev/sda4 home
フォーマット
mkfs.ext2 /dev/mapper/boot
mkswap /dev/mapper/swap
mkfs.ext4 /dev/mapper/root
mkfs.ext2 /dev/mapper/home
インストール(Ubiquityを使用)
最後に、インストーラはgrub-installが失敗したことを警告します(ブートボリュームが暗号化されているため)。「ブートローダなしで続行」を選択します。
クリーンブートボリューム
mkfs.ext2 /dev/mapper/boot
マウントボリューム
mkdir /mnt/root
mount /dev/mapper/root /mnt/root
mount /dev/mapper/boot /mnt/root/boot
Fstabとcrypttabを更新する
Sudo blkid
[/dev/sr0: UUID="2015-10-21-16-17-40-00" LABEL="Ubuntu 15.10 AMD64"
TYPE="iso9660" PTUUID="429817b4" PTTYPE="dos"
/dev/sda1: UUID="...#1" TYPE="crypto_LUKS" PARTUUID="..."
/dev/sda2: UUID="...#2" TYPE="crypto_LUKS" PARTUUID="..."
/dev/sda3: UUID="...#3" TYPE="crypto_LUKS" PARTUUID="..."
/dev/sda4: UUID="...#4" TYPE="crypto_LUKS" PARTUUID="..."
/dev/mapper/boot: UUID="..." TYPE="ext2"
/dev/mapper/swap: UUID="..." TYPE="swap"
/dev/mapper/root: UUID="..." TYPE="ext4"
/dev/mapper/home: UUID="..." TYPE="ext4"]
fstab
#<file system> <mount point> <type> <options> <dump> <pass>
UUID=#1 /boot ext2 defaults 0 2
UUID=#2 none swap sw 0 0
UUID=#3 / ext4 errors=remount-ro 0 1
UUID=#4 /home ext4 defaults 0 2
crypttab
boot UUID=#1 luks,cipher=twofish-xts-plain64,size=512,
hash=whirlpool, time=3000
swap UUID=#2 luks,swap,cipher=twofish-xts-plain64,size=512,
hash=whirlpool,time=3000
root UUID=#3 luks,cipher=twofish-xts-plain64,size=512,
hash=whirlpool,time=3000
home UUID=#4 luks,cipher=twofish-xts-plain64,size=512,
hash=whirlpool,time=5000
Initramfsイメージを更新する
cd /mnt
Sudo chroot root
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts
update-initramfs -u #ok
ブートローダーの構成(/etc/default/grub
)
GRUB_ENABLE_CRYPTODISK=y
GRUB_PRELOAD_MODULES="luks cryptodisk"
GRUB_CMDLINE_LINUX="cryptdevice=UUID#3:root root=/dev/mapper/root resume=/dev/mapper/swap
crypto=whirlpool:twofish-xts-plain64:512:0:"
設定ファイルを作成する
$ grub-mkconfig -o /boot/grub/grub.cfg
[/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/root'.]
外で試す
$ exit
$ grub-mkconfig -o /boot/grub/grub.cfg
[/usr/sbin/grub-probe: error: failed to get canonical path of `/cow'.]
この前に間違いを犯しましたか? grubを正しく設定およびインストールし続けるにはどうすればよいですか?
あなたはいくつかの間違いを犯しましたが、主な問題はユビキタスとグラブにあります。基本的に、/
を暗号化されたパーティションに設定し、/boot
用に別のパーティションを作成しない場合、grubは次のようなエラーメッセージを表示します。
/boot
が暗号化されていることは知っています。GRUB_ENABLE_CRYPTODISK=y
で/etc/default/grub
を設定する必要があります。私はあなたのためにそれをしませんので、私は失敗するつもりです、そして、あなたのインストールは止まります。
/boot
パーティションと暗号化されたbtrfs /
にインストールします。chroot
、重要な構成変更をいくつか行い、grubをEFIシステムパーティションに再インストールし、initrdを再作成します。Sudo apt update && Sudo apt upgrade
を実行してインストーラーコンポーネントを更新します/boot
として機能します暗号化されたパーティションを準備する
Sudo cryptsetup luksFormat /dev/sda3
Sudo cryptsetup luksOpen --allow-discards /dev/sda3 sda3_crypt
Sudo mkfs.btrfs /dev/mapper/sda3_crypt
Ubuntuをインストールする
/dev/sda1
をEFI System Partition
として設定します/dev/sda2
をマウントポイント/boot
でフォーマットされたext2として構成します/dev/mapper/sda3_crypt
をマウントポイント/
でbtrfsとして構成します/boot
の内容をコピーして、chroot
を実行します
Sudo mount -o subvol=@ /dev/mapper/sda3_crypt /target
Sudo mount /dev/sda2 /mnt
# (Watch those trailing slashes! rsync is very sensitive to them.)
Sudo rsync -aXAH /mnt/ /target/boot/
Sudo mount /dev/sda1 /target/boot/efi
Sudo mount --bind /dev /target/dev
Sudo mount --bind /proc /target/proc
Sudo mount --bind /sys /target/sys
Sudo chroot /target
(すべてが新しいシステム内でchroot
として発生しています。)
/etc/default/grub
に行を追加します
GRUB_ENABLE_CRYPTODISK=y
/etc/crypttab
に行を追加します。最初にSudo blkid
を実行して、/dev/sda3
のUUIDを見つける必要があります(/dev/mapper/sda3_crypt
ではありません)。
sda3_crypt UUID=<UUID of /dev/sda3> none luks,discard
/etc/fstab
を編集し、/boot
の行を削除します。他のエントリは正しいです。
EFIシステムパーティションにgrubをインストールし、新しいgrub.cfgを生成して、initrdを準備します。
Sudo grub-install --target=x86_64-efi --efi-directory /boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck
Sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg
Sudo update-initramfs -c -k all
(オプションのダブルチェック)/boot/efi/EFI/ubuntu/grub/grub.cfgにinsmod luks
、cryptomount -u <UUID>
、正しいブートエントリなど。そして、initrdにcryptsetup
バイナリが含まれていることを再確認してください。これらが欠落している場合、それはgrub-mkconfigおよび/またはupdate-initrdが、fstabでマウントまたは指定したボリュームがcrypttabの暗号化されたボリュームにどのように関連するかを把握できなかったためです。 (多くの魔法の自動設定があります。)これは、たとえばZFSを使用したり、sda3_cryptをパーティション分割しようとしたりして、このガイドから分岐した場合に発生する可能性があります。
(btrfsの代わりにZFSを使用する場合)grub-mkconfigおよびupdate-initrdはZFSを認識しません。回避策は、(chroot中、grub-mkconfig/update-initrdの前に)/usr/sbin/grub-mkconfig
を編集して|| true
を行139(GRUB_DEVICE=
で始まる)に追加し、GRUB_DEVICE="/dev/mapper/sda3_crypt"
を/etc/default/grub
に追加して、内容/usr/share/initramfs-tools/conf-hooks.d/forcecryptsetup
および内容export CRYPTSETUP=y
および内容/etc/initramfs-tools/conf.d/cryptroot
をファイルtarget=sda3_crypt,source=UUID=<UUID of sda3>,key=none,discard
に追加します。これはすべて、ZFSパーティションを暗号化していない場合に実行する手順に追加されます(ライブシステムとchrootの両方でzfsユーザー空間ユーティリティをインストールし、fstabで/
をマウントする行を削除するなど)。
Chrootを終了し、新しいシステムで再起動します
exit
Sudo umount /target/boot/efi
Sudo umount /target/dev
Sudo umount /target/proc
Sudo umount /target/sys
Sudo umount /target
Sudo reboot
パスワードを求めるgrubが表示されます。次に、ブートメニューが表示されます。次に、Ubuntuを選択すると、パスワードの再入力を求められます。その後、あなたのシステムになります。 UbuntuがBTRFS を使用する方法の詳細をご覧ください。
TODO:暗号化されたスワップを作成します(ヒント:crypttab、fstabの編集、update-initrdの再実行が含まれます)。
grub-mkconfig
コマンドを実行する必要があります。grub-install
commandを実行する必要があります。