Linux

CentOS 7 ISO Kickstart 安裝 - “窗格已死”

  • October 16, 2015

***編輯:***我一般重試了這個,看到同樣的問題。要重現,請按照以下步驟操作。我開始認為這可能是硬體問題,但我不確定。

使用 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行。

引用自:https://serverfault.com/questions/726798