為什麼 CentOS 7 的 kickstart 不使用我的磁碟配置?
我已經用盡了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
什麼part
?我一直在到處看到它,但沒有找到描述。我知道我在分區之外的一般配置是正確的,因為我已經使用
autopart --type=lvm --encrypted
但我需要一個自定義配置,因為這會將我的整個
sdb
驅動器與邏輯卷分組為/home
withsda
。編輯:
好的,所以我繼續手動將安裝 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
我的印像是它會要求我輸入密碼。我在Google搜尋中看到了大量的錯誤報告,但其中很多都不是最近的。我在圖形模式下得到相同的結果。似乎我想做的事情是不可能的。
我相信我一直在努力實現的目標是不可能的。我發現其他人遇到同樣問題的報告。有一種方法可以通過一些後期安裝工作來解決這個問題:
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
注意:如果密鑰文件所在的分區尚未解密,則無法使用密鑰文件。因此,您可以為每個分區創建密鑰,但要解鎖所有內容,您需要輸入帶有密鑰的驅動器的密碼。
我想出了一個對我有用的技巧,使用 %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 安裝的一部分包含在內。