私のシステムは、暗号化されたGRUBを実行するAntergosインストーラを使用してインストールされました。復号化キーを2回だけ挿入するとうまくいきます。
その後、LVMを追加し、3つのLVMボリューム(ブートルートとスワップ)を作成しました。次に、LVMから2番目のOSを起動するか、Archを起動するかを選択できるように、このLVM設定でGRUBを更新したいと思います。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 65.2G 0 part
│ └─luks 254:0 0 65.2G 0 crypt /
├─sda2 8:2 0 3.7G 0 part
│ └─luks-14a10aeb-01ec-44f4-b908-0c09685a03ed 254:4 0 3.7G 0 crypt /run/media/thijs/74ec47c2-64ed-4fe5-a965-a5e414b7a129
└─sda3 8:3 0 396.9G 0 part
├─triagia-kaliboot 254:1 0 500M 0 lvm /run/media/thijs/f1eb6904-c17e-40b7-8740-60e67b8d04de
├─triagia-kaliroot 254:2 0 50G 0 lvm
│ └─luks-26028d27-8a95-41c3-9d80-9415b8c170dc 254:6 0 50G 0 crypt /run/media/thijs/65c769fd-ea4a-4854-928c-3c28f15745aa
└─triagia-kaliswap 254:3 0 4G 0 lvm
└─luks-a0fa8f9e-e6d0-42d7-b54c-7c275ddc328a 254:5 0 4G 0 crypt
ただし、 grub-mkconfig を使用すると、スクリプトはLVMでブートパーティションを見つけることができません。 vgscanとvgchangeを使用して有効にしてLVMボリュームをマウントしましたが、grub-mkconfigはまだsda1からの起動のみを報告します。
研究によると、LVMから/bootを削除する必要性がたくさんありますが、私はそのような方法が好きではありません。必要なGRUB設定を手動で追加しましたが、例が見つかりませんでした。
ロール:
--- Logical volume ---
LV Path /dev/triagia/kaliboot
LV Name kaliboot
VG Name triagia
LV UUID e68eqU-zP3Q-YnwY-ds6M-MG34-zAB5-VhZcAQ
LV Write Access read/write
LV Creation host, time conDoin, 2015-08-21 17:50:52 +0200
LV Status available
# open 0
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Path /dev/triagia/kaliroot
LV Name kaliroot
VG Name triagia
LV UUID Bco7iM-ZlQR-NyeI-Nl1r-N1IK-kooC-oBCfV6
LV Write Access read/write
LV Creation host, time conDoin, 2015-08-21 17:51:09 +0200
LV Status available
# open 0
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
--- Logical volume ---
LV Path /dev/triagia/kaliswap
LV Name kaliswap
VG Name triagia
LV UUID POkVXd-UMoe-yHaB-nfrV-lbpO-Fv3l-86N7AT
LV Write Access read/write
LV Creation host, time conDoin, 2015-08-21 17:54:32 +0200
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2
Archフォーラムでさらに読んだ後、HOOKSの下のmkinitcpio.confにlvm2を追加しました。
HOOKS="base udev autodetect modconf block keyboard keymap encrypt resume lvm2 filesystems fsck"
その後、再実行しました。
mkinitcpio -p linux
systemctl enable lvm2-lvmetad.service
grub-mkconfig -o /boot/grub/grub.cfg
しかし、それは何も変えません。
電源投入量
drwxr-x---+ 4 root root 80 Aug 23 19:19 ..
drwxr-xr-x 4 root root 1024 Aug 21 18:18 .
-rw-r--r-- 1 root root 19692558 Aug 21 18:18 initrd.img-4.0.0-kali1-amd64
drwxr-xr-x 2 root root 1024 Aug 21 18:14 grub
drwx------ 2 root root 12288 Aug 21 18:00 lost+found
-rw-r--r-- 1 root root 165968 Jun 3 10:08 config-4.0.0-kali1-amd64
-rw-r--r-- 1 root root 2790804 Jun 3 10:08 System.map-4.0.0-kali1-amd64
-rw-r--r-- 1 root root 3274048 Jun 3 10:07 vmlinuz-4.0.0-kali1-amd64
GRUBディレクトリ:
drwxr-xr-x 4 root root 1024 Aug 21 18:18 ..
drwxr-xr-x 2 root root 1024 Aug 21 18:14 .
-rw-r--r-- 1 root root 2400500 Aug 21 18:14 unicode.pf2
40_customで手動Grub設定を作成しましたが、ほとんど動作します。 LVMが見つかり、ルートのluksが復号化されますが、次のエラーが発生します。
Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
done.
No init found. Try passing init= bootarg.
その後、コマンドラインが残ります:(initramfs)_
手動GRUB構成:
menuentry 'Kali' {
insmod lvm
insmod gzio
insmod part_msdos
insmod ext2
set root=lvm/triagia-kaliboot
search --no-floppy --fs-uuid --set=root f1eb6904-c17e-40b7-8740-60e67b8d04de
linux /vmlinuz-4.0.0-kali1-amd64 root=/dev/mapper/triagia-kaliboot setkmap=us
initrd /initrd.img-4.0.0-kali1-amd64
}
答え1
カーネルをロードできるようにディスクを復号化するには、GRUBのカーネルパラメータを追加する必要があります。
GRUBのカーネルパラメータに次のコマンドを追加します。
cryptdevice=UUID=device-UUID:lvm root=/dev/mapper/MyVol-root
The <device-UUID> refers to the UUID of /dev/sdaX
パスワードを復号化して実行するだけです。詳しくはアーチウィキをご覧ください。