/boot
별도의 파티션과 lvm을 사용하여 EFI 친화적 마더보드에 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.conf
변경 HOOKS
목록이 없습니다 .lvm
encrypt
initrd
하지만 rpm 기반의 분포에 대한 지식이 부족하여 이것만으로는 낯설었습니다. 내 경우에 대한 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
그러나 부팅 중에 이러한 파일이 생성되면 스네이크 암호화나 luk를 지원하는지 의심됩니다.
그래서 제 질문은 커널 이미지 생성부터 luk와 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
- 하드웨어 드라이버 동시성 제거(EFI VGA를 사용한 noveufb)
6단계. 실행grub2-mkconfig -o /boot/grub2/grub.cfg
7단계. 실행grub2-install --target=x86_64-efi --efi-directory=/boot/efi
8단계. 실행dracut -fv
별도로 명시하지 않는 한 위의 모든 단계는 chroot 내에서 완료되어야 합니다.
선택한 암호화 알고리즘은 어떤 방식으로도 영향을 받지 않는 것으로 나타났습니다. grub은 필요한 모든 드라이버를 자동으로 로드합니다.