我正在使用 pxeboot 和 kickstart 来自动安装 CentOS 8。
由于某种原因,安装后生成的系统具有只读 / 文件系统,这让我很抓狂。这可能是什么原因造成的?
dmesg 中没有什么特别突出的地方,而且这种行为 100% 一致。所有硬件目标的行为都相同。这不仅仅是一个巧合的坏驱动器。这不是故障扇区,而是系统配置在启动过程中不“想要”像它应该的那样进入 rw。
这是启动,因为这是最有可能出现错误的地方。
# Use network installation
url --url="http://mirror.centos.org/centos/8/BaseOS/x86_64/os/"
#Default Lang to English, US, and time to GMT
lang en_US.UTF-8
keyboard --vckeymap=us --xlayouts='us'
timezone Etc/UTC --utc
# Network information
network --hostname=hostnayme
#Static NIC Config will be written in kickstart %post
# Root PW
rootpw --iscrypted $6$O9mlsOUywHhashredactedPRmYFfUmQhUP8/
# Disable firstboot
firstboot --disable
# System services
services --enabled="chronyd"
# Disk Setup
zerombr
clearpart --all
autopart --type=lvm
bootloader --location=mbr
#Reboot when done
reboot
#run anaconda in text mode (faster, no vga req)
text
##Package Selection
%packages --default
@core
@^Minimal Install
#-aic94xx-firmware*
#-alsa-*
#-iwl*firmware
chrony
vim
rsync
%end
%pre
echo "Signaling back to installnode that install is starting..."
curl -s 'http://installserver/installstarting.php?ip=192.168.13.98&netmask=255.255.255.0&foobarbazquux' -o /dev/null
%end
%post
export PriNicFile="$( grep '^ONBOOT="*yes"*$' /etc/sysconfig/network-scripts/ifcfg-* -l | grep -v 'ifcfg-lo$' | sort -n | head -n 1 )"
echo "Found primary nic: ${PriNicFile}"
sed -i 's/BOOTPROTO="*dhcp"*/BOOTPROTO=static/' "${PriNicFile}"
sed -i 's/DHCP_HOSTNAME.*//' "${PriNicFile}"
cat <<'EOF' >> "${PriNicFile}"
IPADDR=192.168.13.98
NETMASK=255.255.255.0
GATEWAY=192.168.13.1
DNS1=8.8.8.8
DNS2=8.8.4.4
EOF
#Update system software
yum -y install screen
yum -y update
#Install SSH Key
mkdir /root/.ssh/
echo 'ssh-rsa AAAAB3sshkeyredactedforstackexchange+s= keyame' > /root/.ssh/authorized_keys
chown -R root:root /root/.ssh
chmod -R go-rwx /root/.ssh
#Purge resolv.conf from installer session so that true resolv.conf is generated on boot
rm /etc/resolv.conf
#Delete ruminants of kickstart env
rm -rf /var/lib/yum/history/????-??-??/?/config-repos
sync
%end
%post --nochroot
curl -s 'http://Installserver/installcomplete.php?ip=192.168.13.98&netmask=255.255.255.0&foobarbazquux' -o /dev/null
sync
reboot
%end
%addon com_redhat_kdump --disable
%end
答案1
显然,CentOS8 安装程序使用了 selinux 宽容模式。并且它并不总是正确设置所有 selinux 上下文
添加
restorecon -vR /
到您的帖子脚本的末尾。这将纠正所有 selinux 上下文。然后下次正常时,fstab 将可读,因此所有文件系统都将按预期以读写方式挂载。
这有点奇怪,但它确实解决了问题。