yum ベースのディストリビューション (CentOS) 上の非 AES アルゴリズムを使用した LUKS 暗号化ドライブでの適切な手動 OS セットアップ

yum ベースのディストリビューション (CentOS) 上の非 AES アルゴリズムを使用した LUKS 暗号化ドライブでの適切な手動 OS セットアップ

/bootEFI 対応マザーボード上で、別のパーティションと lvm を使用して LUKS 暗号化された CentOS 7 のインストールを実現しようとしています。

古い CentOS (GUI からインストール) から新しい CentOS インストールのパーティション分割を実行したところ、次のようになりました。

sdb             8:16   0 745,2G  0 disk  
├─sdb1          8:17   0   200M  0 part  /home/user/target/boot/efi
├─sdb2          8:18   0     1G  0 part  /home/user/target/boot
├─sdb3          8:19   0   700G  0 part  
│ └─crypto    253:3    0   700G  0 crypt 
│   ├─lv-swap 253:4    0    16G  0 lvm   
│   ├─lv-root 253:5    0    50G  0 lvm   /home/user/target
│   └─lv-home 253:6    0   634G  0 lvm   /home/user/target/home

CentOS chrootでもブートストラップは成功しました(これそしてこれチュートリアルに従い、ブート イメージを生成する準備が整いました。

問題は、cryptsetup で非標準アルゴリズムを使用することに決めたことです。

cryptsetup -v --cipher serpent-xts-plain64 --key-size 512 --hash sha256 --iter-time 3000 --use-random luksFormat /dev/sdb3

そして今、私は自分のパラメータで正しい initrd を生成する方法を知りたいのです。

チュートリアルによると、次のステップは次のようになります。

mkinitcpio -p linuxただし、正しく動作させるためにリストを変更するmkinitcpioコマンドはありません。/etc/mkinitcpio.confHOOKSlvmencrypt

しかし、rpm ベースのディストリビューションに関する知識が不足しているため、私には馴染みのないことが 1 つありますinitrd。私のケースの initrd の例を検索しても見つかりませんでした。

/boot現在、 chroot 内にはいくつかのファイル/ディレクトリがあります。

bash-4.2# ls
config-3.10.0-514.16.1.el7.x86_64  grub2                                     symvers-3.10.0-514.16.1.el7.x86_64.gz
efi                                initramfs-3.10.0-514.16.1.el7.x86_64.img  System.map-3.10.0-514.16.1.el7.x86_64
grub                               lost+found                                vmlinuz-3.10.0-514.16.1.el7.x86_64

しかし、これらのファイルがブートストラップ中に生成された直後に、Serpent 暗号化や Luks がサポートされているかどうかは疑問です。

そこで質問なのですが、カーネルイメージ生成から始めて、luks と serpent を使用して正しいブート ツールチェーンを作成するにはどうすればよいでしょうか?

ただし、initramfsの代わりにを使用する必要があるかもしれませんのでinitrd、このアプローチに関するヒントもいただければ幸いです。

答え1

ようやくセットアップが完了し、CentOS 7 での実行方法に関する限定的な手順セットを共有する準備ができました。

パーティション分割と手動ブートストラップは省略しました。他の場所に完全なマニュアルがたくさんあります。

そこで、次のようなパーティション分割方法を試してみましょう。

sdb             8:16   0 745,2G  0 disk  
├─sdb1          8:17   0   200M  0 part
├─sdb2          8:18   0     1G  0 part
└─sdb3          8:19   0   700G  0 part  
  └─crypto    253:3    0   700G  0 crypt 
    ├─lv-swap 253:4    0    16G  0 lvm   
    ├─lv-root 253:5    0    50G  0 lvm
    └─lv-home 253:6    0   634G  0 lvm   

次に、必要なドライブをマウントします。次のようになります。

sdb             8:16   0 745,2G  0 disk  
├─sdb1          8:17   0   200M  0 part  /home/user/target/boot/efi
├─sdb2          8:18   0     1G  0 part  /home/user/target/boot
└─sdb3          8:19   0   700G  0 part  
  └─crypto    253:3    0   700G  0 crypt 
    ├─lv-swap 253:4    0    16G  0 lvm   
    ├─lv-root 253:5    0    50G  0 lvm   /home/user/target
    └─lv-home 253:6    0   634G  0 lvm   

ステップ 0。chroot スクリプトを準備します。mount再起動のたびに を繰り返すのは面倒なので、次のような基本的な chroot スクリプトを作成しました。

#!/bin/bash
sudo mount /dev/mapper/lv-root /home/user/target
sudo mount /dev/sdb2 /home/user/target/boot
sudo mount /dev/sdb1 /home/user/target/boot/efi
sudo mount --bind /proc /home/user/target/proc
sudo mount --bind /dev /home/user/target/dev
sudo mount --bind /sys /home/user/target/sys
sudo chroot /home/user/target /bin/bash -l

ステップ 1. 不足している EFI 固有のモジュールをインストールします (chroot 外)。

sudo yum --installroot=/home/user/target install -y efibootmgr grub2-efi-modules

ステップ2.編集/etc/crypttab

crypto UUID=UUID_of_/dev/sdb3 none luks,discard

理由discard- TRIM のパフォーマンスを向上させるために、SSD を使用しており、セキュリティを少し無視しています。詳細

ステップ3.編集/etc/dracut.conf

omit_dracutmodules+="systemd"
add_dracutmodules+="crypt lvm" #sequencing could matter
hostonly="yes" #optional
lvmconf="yes"

ステップ4.編集/etc/fstab

UUID=UUID_of_/dev/sdb1                      /boot/efi       vfat    umask=0077  0 0
UUID=UUID_of_/dev/sdb2                      /boot           ext2    defaults    0 0
UUID=UUID_of_/dev/mapper/lv-root            /               ext4    defaults    0 0
UUID=UUID_of_/dev/mapper/lv-home            /home           ext4    defaults    0 0
UUID=UUID_of_/dev/mapper/lv-swap            none            swap    sw          0 0

ステップ5.編集/etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_CMDLINE_LINUX="rd.lvm.lv=lv/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rd.luks.options=discard rd.luks.uuid=UUID_of_/dev/sdb3 crashkernel=auto rd.lvm.lv=lv/root rd.lvm.lv=lv/home nomodeset"
GRUB_THEME="/boot/grub2/themes/system/theme.txt"

rd.luks.options=discard- 冗長かもしれませんので、もしそうなら訂正してください。

nomodeset- ハードウェア ドライバーの同時実行を排除する (noveaufb と EFI VGA)

ステップ6. 実行grub2-mkconfig -o /boot/grub2/grub.cfg

ステップ7. 実行grub2-install --target=x86_64-efi --efi-directory=/boot/efi

ステップ8. 実行dracut -fv

特に指定がない限り、上記のすべての手順は chroot 内で実行する必要があります。

選択された暗号化アルゴリズムはまったく影響を受けないことが判明しました。grub は必要なドライバーをすべて自動的にロードします。

私を助けてくれた資料は次のとおりです:12345

関連情報