CentOS 7 ISO Kickstart 安裝 - “窗格已死”
***編輯:***我一般重試了這個,看到同樣的問題。要重現,請按照以下步驟操作。我開始認為這可能是硬體問題,但我不確定。
使用 kickstart 安裝 CentOS 7 ISO 時,我收到一條錯誤消息,提示“窗格已死”,沒有額外的日誌。基本上,我採用 CentOS 7 ISO 並添加了一個 kickstart 文件。在 VirtualBox 上安裝時,一切正常。當我嘗試在具有多個介面的真實硬體上安裝它時,在安裝所有軟體包後出現“窗格已死”錯誤。
我不知道可能是什麼問題。我嘗試過的一些事情:
- 沒有生成指示問題的日誌。我什
logging --level=debug
至在 kickstart 中添加了這條線,但沒有什麼有價值的東西可看。- 沒有安裝後步驟(我從 ks 中刪除了該步驟,因為那是看到問題之前的最後一個日誌),所以這不是問題。
- 我確實在網路上的某個地方看到有人說 CentOS 6 和 7 ISO 之間存在差異,但是沒有額外的資訊可以定量地表明這些差異可能是什麼。
以下是有關如何複製的完整說明。如果您能看到我做錯了什麼,我將不勝感激。
謝謝!
如何複製的完整說明
我的生產機器是最新的 CentOS 7 伺服器。如果您缺少任何應用程序,我相信您可以使用 yum 輕鬆安裝它們。
基本步驟是:
- 創建工作目錄
- 創建一個 kickstart 文件
- 更新 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
啟動文件
添加我的 kickstart 文件:
>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/
我終於解決了我自己的問題!我會把這個作為答案,這樣如果其他人看到它,他們就會知道原因。但是,我認為只有加拿大人會受到影響……
事實證明,問題出
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
行。