我已经筋疲力尽Redhat 的语法指南, 他们的高级分区示例,和一个复杂分区示例在某人的博客上。我想实现一个相当简单的设置。
这是我的启动文件:
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use graphical install
graphical
# Use NFS installation media
nfs --server={MY PXE SERVER IP} --dir=/path/to/centos/7/
# Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda,sdb
eula --agreed
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=eno16777984 --ipv6=auto --activate
network --hostname=myhostname.example.com
# Root password
rootpw --iscrypted {REDACTED}
# System services
services --enabled="chronyd"
# System timezone
timezone America/Denver --isUtc --ntpservers=MY_NTP1.example.com,MY_NTP2.example.com
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel
# Primary drive partition
part sda1 --size=1024 --fstype=xfs --ondisk=sda
part /boot --size=1024 --onpart=sda1
part pv.sda2 --size=1 --grow --encrypted --fstype=xfs --ondisk=sda
# LVM for sda
volgroup vg_a pv.sda2
logvol / --vgname=vg_a --size=51200 --name=vg_a-root --fstype=xfs
logvol swap --vgname=vg_a --recommended --name=vg_a-swap
logvol /home --vgname=vg_a --size=1 --grow --name=vg_a-home --fstype=xfs
# Secondary drive partition
part pv.sdb1 --size=1 --grow --encrypted --fstype=xfs --ondisk=sdb
# LVM for sdb
volgroup vg_b pv.sdb1
logvol /storage --vgname=vg_b --size=1 --grow --name=vg_b-storage --fstype=xfs
repo --name=MyRepoName --baseurl=http://myhostname.example.com/path --install
%packages
@^compute-node-environment
@base
@core
@directory-client
@scientific
chrony
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
我已经使用 验证了它是有效的ksvalidator
。
无论出于何种原因,当安装 GUI 出现时,它告诉我需要选择安装磁盘。所以我进去了,我的文件中的配置似乎都没有被应用。
事实上,我之前安装的分区仍然存在。也就是说,我必须使用旧密码解密驱动器。所以原来的分区甚至没有被清除。
一旦我解密它们,我必须手动设置挂载点、重新格式化、加密、设备类型等。
我是否缺少一些明显的东西?
作为一个次要的次要问题,--asprimary
do 的作用是什么part
?我到处都能看到它,但没有找到描述。
我知道分区之外的一般配置是正确的,因为我已经使用以下命令完成了自动化版本
autopart --type=lvm --encrypted
但我需要自定义配置,因为这会将我的整个驱动器与with 的sdb
逻辑卷分组。/home
sda
编辑:
好的,我继续按照我想要的方式手动配置安装 GUI 中的所有内容,然后打开/root/anaconda.cfg
查看生成了哪些行。 (另请注意,我找到了我的配置,/root/original.cfg
所以我知道它的加载正确)
这是我发现的磁盘配置(其他一切都相同):
clearpart --all --initlabel --drives=sda,sdb
part /storage --fstype="xfs" --size=1 --grow --encrypted
part pv.2717 --fstype="lvmpv" --ondisk=sda --size=284543
part /boot --fstype="xfs" --ondisk=sda --size=1024
volgroup cl_newegg00 --pesize=4096 pv.2717
logvol swap --fstype="swap" --size=28532 --encrypted --name=swap --vgname=cl_newegg00
logvol /home --fstype="xfs" --size=204802 --encrypted --name=home --vgname=cl_newegg00
logvol root --fstype="xfs" --size=51202 --encrypted --name=root --vgname=cl_newegg00
所以我想如果我用这些行替换我的配置,一切都应该正常。但我仍然遇到同样的行为,即必须解锁驱动器、设置安装点、设置加密、设置类型等。似乎这完全违背了 kickstart 文件的目的。
编辑:
所以我做了一些小的更改,并切换到text
模式,我在我的文件中发现了/tmp/*.log
一些错误:
grep ERR /tmp/*.log
.. ERR: LUKS device sda has no key/passphrase
.. ERR: LUKS device sdb has no key/passphrase
我的印象是它会要求我输入密码。我在谷歌搜索中看到了大量的错误报告,但其中许多都不是最近的。我在图形模式下得到相同的结果。看来我想做的事是不可能的。
答案1
我相信我一直在努力实现的目标是不可能的。我发现报告其他遇到同样问题的人。有一种方法可以通过一些安装后工作来解决这个问题:
cryptsetup luksChangeKey /dev/sdX
此外,您可以创建一个密钥文件并在启动时设置安装:
dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
cryptsetup luksAddKey /dev/sdX /root/keyfile
# /etc/crypttab
sdX_crypt /dev/sdX /root/keyfile luks
# /etc/fstab
/dev/mapper/sdX_crypt /media/sdX ext3 defaults 0 2
注意:如果密钥文件所在的分区尚未解密,则无法使用密钥文件。因此,您可以为每个分区创建密钥,但要解锁所有内容,您需要输入带有密钥的驱动器的密码。
我想出了一个适合我的 hack,使用 %pre 部分和 bash。
%pre
#!/bin/sh
TTY=`tty`
exec < $TTY > $TTY 2> $TTY
pswd1=a
pswd2=b
while [ ! $pswd1 == $pswd2 ]; do
read -s -p "Enter encryption passphrase: " pswd1
echo -e ""
read -s -p "Enter passphrase again: " pswd2
echo -e ""
if [ ! $pswd1 == $pswd2 ]; then
echo -e "Password does not match. Try again."
fi
done
PASSPHRASE=$pswd1
cat << EOF > /tmp/part-include
...
part .... --passphrase=${PASSPHRASE}
part .... --passphrase=${PASSPHRASE}
...
EOF
%end
%include /tmp/part-include
填写您的自定义分区,该分区将写入文件,并在评估 %pre bash 部分后作为 kickstart 安装的一部分包含在内。