CentOS 7 ISO Kickstart安装 – “窗格已死”

编辑:我一般重试,看到同样的问题。 要重现,请按照以下步骤操作。 我开始认为这可能是硬件的问题,但我不确定。

使用kickstart安装CentOS 7 ISO时,出现“Pane is dead”的错误,没有附加日志。 基本上,我采取了CentOS 7 ISO并添加了kickstart文件。 在VirtualBox上安装时,一切正常。 当我尝试在具有多个接口的真实硬件上安装它时,在安装完所有软件包后,出现“窗格已死”错误。

在这里输入图像说明

我不知道可能是什么问题。 有些事我已经尝试了:

  • 没有生成的日志表明问题。 我甚至在kickstart中join了logging --level=debug行,但没有什么值得看的。
  • 没有安装后的步骤(我从ks中删除了这个问题,因为这是在问题出现之前的最后一个日志),所以不能成为问题。
  • 我曾经在网上看到有人说CentOS 6和ISO有所不同,但是没有额外的信息来定量地表明这些差异。

以下是有关如何复制的完整说明。 如果你能看到我做错了什么,我将不胜感激。

谢谢!

有关如何重现的完整说明

我的生产机器是最新的CentOS 7服务器。 如果你缺less任何应用程序,我相信你可以用yum轻松安装它们。

基本步骤是:

  • 创build一个工作目录
  • 创build一个kickstart文件
  • 更新isolinux.cfg
  • 下载软件包
  • 创build存储库
  • 创buildISO

创build工作目录

我将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文件

添加我的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添加到每个追加行,并将非testing版本设置为默认值。

 >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上执行networking安装来完成此操作,并对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安装注释掉了,而是使用了networking仓库。 安装需要10分钟。 完成后,我login以获取已安装软件包的列表:

 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 

这需要几分钟的时间来完成,因为它下载所有的软件包。

创build存储库

创build存储库是一项简单的任务。

 >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 . 

创buildISO

 >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/ 

我终于解决了我自己的问题! 我会把这个作为答案,如果有人看到它,他们会知道原因。 不过,我想只有加拿大人会受到影响…

事实certificate,问题是在kickstart文件中的lang en_CA.UTF-8行。 我将其更改为lang en_US.UTF-8 ,安装正常完成。 我可能会问另一个关于如何使用en_CA问题,但至less我解决了这个问题。

谢谢!

对于任何有兴趣的人,我是如何解决这个问题的:

  • 我用CentOS-7-x86_64-DVD-1503-01.iso制作了一张DVD
  • 把这个放在我的服务器上并启动
  • 当被问及时,更改grubconfiguration行并向其添加text
  • 在anaconda安装期间,我通过networkingconfiguration了最小安装。
  • 安装完成, anaconda-ks.cfg文件创build在/root/
  • 我复制这个文件,并使用它完全作为我自己的模板为我的ks.cfg文件。
  • 我还重新创build了基于这个安装中已安装软件包集的Packagesrepodata目录。
  • 用新的kickstart文件创build一个新的iso,并安装工作!
  • 逐行,我改变了新的ks.cfg文件中的差异,以匹配旧的(有问题的),重新创buildISO和尝试安装。
  • 痛苦地发现导致错误的唯一线是lang en_CA.UTF-8行。

我可能会说这个问题似乎很清楚。 请注意,当安装后脚本运行时,该窗格已死亡。

我宁愿从ks文件中删除该部分,或者甚至更好地logging它,以了解到底发生了什么错误。

为了logging你可以在你的kickstart中使用–log / path / to / logfile指令。 一旦你得到窗格消息,只需切换到TTY之一,并检查日志。

所以违规部分是%post。

我希望这有帮助。