
編輯:我一般性地重試了這一點,並看到了同樣的問題。若要重現,請按照以下步驟操作。我開始認為這可能是硬體問題,但我不確定。
使用 kickstart 安裝 CentOS 7 ISO 時,我收到錯誤訊息“Pane is dead”,且沒有其他日誌。基本上,我採用 CentOS 7 ISO 並添加了一個 kickstart 檔案。在 VirtualBox 上安裝時,一切正常。當我嘗試在具有多個介面的真實硬體上安裝它時,在安裝所有軟體包後收到“Pane is dead”錯誤。
我不知道可能出現什麼問題。我嘗試過的一些事情:
- 沒有產生表明問題的日誌。我甚至已將該行添加
logging --level=debug
到啟動中,但沒有任何有價值的東西可看。 - 沒有安裝後步驟(我從 ks 中刪除了它,因為這是出現問題之前的最後一個日誌),因此這不可能是問題。
- 我確實在網路上的某個地方看到有人說 CentOS 6 和 7 ISO 之間存在差異,但沒有其他資訊來定量地表明這些差異可能是什麼。
以下是有關如何重現的完整說明。如果您能看到我做錯了什麼,我將不勝感激。
謝謝!
如何複製的完整說明
我的生產機器是最新的 CentOS 7 伺服器。如果您缺少任何應用程序,我相信您可以使用 yum 輕鬆安裝它們。
基本步驟是:
- 建立工作目錄
- 建立啟動文件
- 更新 isolinux.cfg
- 下載包
- 建立儲存庫
- 創建 ISO
建立工作目錄
我將 CentOS 7 ISO 複製到我的臨時目錄並安裝它以獲取所有檔案:
>cd /tmp
>wget http://centos.mirror.iweb.ca/7/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso
... hours later ...
>mkdir CentOS7-CD
>sudo mount -l /tmp/CentOS-7-x86_64-DVD-1503-01.iso /tmp/CentOS7-CD
mount: block device /tmp/CentOS-7-x86_64-DVD-1503-01.iso is write-protected, mounting read-only
我將所有檔案複製到工作目錄。
>cd /tmp/
>cp -r CentOS7-CD/ CentOS7
啟動文件
新增我的啟動檔案:
>cat << @@EOF@@ > /tmp/CentOS7/ks.cfg
#version=RHEL7
# System authorization information
auth --enableshadow --enablemd5
# Install OS instead of upgrade
install
# Reboot after installation
reboot --eject
# License agreement
eula --agreed
# Use text mode install
text
# Firewall configuration
firewall --disabled
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_CA.UTF-8
# Installation logging level
logging --level=debug
# Network information
%include /tmp/network.ks
# Use CDROM installation media
cdrom
repo --name="CentOS" --baseurl=cdrom:sr0
# Use Network installation
#url --url=http://centos.mirror.iweb.ca/7/os/x86_64/
# Root password
rootpw --plaintext password
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Etc/UTC --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="ext4" --size=10000
part /data --fstype="ext4" --size=18461
part /info --fstype="ext4" --size=2000
part /boot --fstype="ext3" --size=256
part swap --fstype="swap" --size=2048
%packages --nobase --excludedocs
@core
-aic94xx-firmware
-alsa-*
-iwl*-firmware
-ivtv-firmware
-libertas-*-firmware
-btrfs-progs
-cronie-anacron
-cronie
-crontabs
-ModemManager-glib
-NetworkManager*
-postfix
-wpa_supplicant
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%pre
interface=$(ip addr | grep -i broadcast | awk '{ print $2 }' | head -1 | sed 's/://g')
echo "network --bootproto=dhcp --device=${interface} --onboot=on" > /tmp/network.ks
%end
@@EOF@@
注意:如果使用這些說明並剪下和貼上,您可能會在每行前面加上「">」。使用以下方法刪除它們。
>sed -i 's|^> ||' /tmp/CentOS7/ks.cfg
我嘗試限制安裝的軟體包數量,因此本%packages
節中排除了所有內容。
ISOLINUX CFG
接下來,編輯我的 isolinux.cfg 檔案並新增inst.ks=cdrom:/dev/cdrom:/ks.cfg
到每個附加行,並將非測試版本設定為預設版本。
>cd /tmp/CentOS7/isolinux/
>sed -i 's|\(LABEL=\S*\)|\1 inst.ks=cdrom:/dev/cdrom:/ks.cfg|' isolinux.cfg
# Delete the old default (check)
>sed -i '/menu default/d' isolinux.cfg
# Add the new default (linux)
>sed -i '0,/ kernel vmlinuz/s// menu default\n&/' isolinux.cfg
新增套餐
我根據經驗確定,我的最小安裝需要添加 240 個軟體包。我透過在 VirtualBox 上執行網路安裝來完成此操作,並對 kickstart 檔案進行以下更改:
# Use CDROM installation media
#cdrom # <-- comment this out for ntwk install
#repo --name="CentOS" --baseurl=cdrom:sr0 # <-- comment this out for ntwk install
# Use Network installation
url --url=http://centos.mirror.iweb.ca/7/os/x86_64/
所以我註解掉了CDROM安裝,改用網路儲存庫。安裝花了 10 分鐘。完成後,我登入以取得已安裝軟體包的清單:
VB> rpm -qa > pkg.list
我將此文件複製回我的生產電腦並獲取了下載這些文件的位置:
> cd /tmp/CentOS7
> rm -rf Packages
> cd Packages
# Copy the pkg.list from the VB server to this location
> cat pkg.list | xargs yumdownloader --urls | grep "^http" > pkg.urls
> wget -nv -nc -i pkg.urls
這需要幾分鐘才能完成,因為它會下載所有套件。
建立儲存庫
建立儲存庫是一項簡單的任務。
>cd /tmp/CentOS7
>mv repodata/*comps.xml.gz comps.xml.gz
>gzip -d comps.xml
>rm -rf repodata
>mkdir repodata
>cp comps.xml repodata/
>createrepo -g repodata/comps.xml .
創建 ISO
>cd /tmp
>mkisofs -o custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T CentOS7/
答案1
我終於解決我自己的問題了!我會將其作為答案,以便當其他人看到它時他們會知道原因。然而,我認為只有加拿大人會受到影響...
事實證明問題出lang en_CA.UTF-8
在 kickstart 檔案中的行上。我將其更改為lang en_US.UTF-8
並且安裝正常完成。我可能會問另一個關於如何使用的問題en_CA
,但至少我解決了這個問題。
謝謝!
對於任何有興趣的人,我是如何解決這個問題的:
- 我創建了一張包含 CentOS-7-x86_64-DVD-1503-01.iso 的 DVD
- 把它放在我的伺服器上並啟動
- 當詢問時,更改 grub 配置行並添加
text
到其中 - 在 anaconda 安裝期間,我透過網路配置了最小安裝。
- 安裝完成並
anaconda-ks.cfg
建立了一個文件/root/
- 我複製了這個文件並將其用作我自己的文件模板
ks.cfg
。 - 我還根據此安裝中已安裝的軟體包集重新建立了
Packages
和目錄。repodata
- 使用新的 kickstart 檔案建立了一個新的 iso,安裝成功了!
- 我逐行更改了新 ks.cfg 檔案中的差異以匹配舊檔案(有問題的檔案),重新建立 ISO 並嘗試安裝。
- 痛苦地發現,導致錯誤的唯一一行是該
lang en_CA.UTF-8
行。
答案2
正如我所說,這個問題似乎很清楚。請注意,當安裝後腳本運行時,窗格就會死掉。
我寧願從 ks 文件中刪除該部分,甚至更好地記錄它以了解到底出了什麼問題。
為了記錄日誌,您可以在 kickstart 中使用 --log /path/to/logfile 指令。一旦收到窗格訊息,只需切換到 TTY 之一併檢查日誌。
所以有問題的部分是%post。
我希望這有幫助。