如何複製的完整說明

如何複製的完整說明

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

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

我希望這有幫助。

相關內容