Полные инструкции по воспроизведению

Полные инструкции по воспроизведению

РЕДАКТИРОВАТЬ:Я повторил это в общем виде и увидел ту же проблему. Чтобы воспроизвести, следуйте моим шагам ниже. Я начинаю думать, что это может быть проблема с оборудованием, но я не уверен.

При установке CentOS 7 ISO с помощью kickstart я получаю ошибку "Pane is dead" без дополнительных журналов. По сути, я беру CentOS 7 ISO и добавляю файл kickstart. При установке с этим на VirtualBox все работает нормально. Когда я пытаюсь установить его на реальном оборудовании с несколькими интерфейсами, я получаю ошибку "Pane is dead" после установки всех пакетов.

введите описание изображения здесь

Я не понимаю, в чем может быть проблема. Я пробовал следующее:

  • Никаких логов, указывающих на проблему, не создано. Я даже добавил строку logging --level=debugв кикстарт, но ничего ценного там не увидел.
  • Шага после установки нет (я удалил его из ks, так как это последний журнал перед обнаружением проблемы), так что это не может быть проблемой.
  • Где-то в Интернете я видел, что кто-то говорил о наличии различий между ISO-образами CentOS 6 и 7, но не было никакой дополнительной информации, которая количественно указывала бы на эти различия.

Вот полная инструкция по воспроизведению. Если вы видите, что я делаю неправильно, я был бы очень признателен.

Спасибо!

Полные инструкции по воспроизведению

Моя производственная машина — это современный сервер 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но по крайней мере я решил этот.

Спасибо!

Для тех, кому интересно, я решил эту проблему следующим образом:

  • Я создал DVD с CentOS-7-x86_64-DVD-1503-01.iso на нем
  • Поставил на свой сервер и загрузился
  • Когда меня попросили, я изменил строку конфигурации grub и добавил textв нее
  • Во время установки Anaconda я настроил минимальную установку по сети.
  • Установка завершена, и anaconda-ks.cfgфайл был создан в/root/
  • Я скопировал этот файл и использовал его в качестве собственного шаблона для своего ks.cfgфайла.
  • Я также пересоздал каталоги Packagesи repodataна основе набора установленных пакетов в этой инсталляции.
  • Создал новый ISO-образ с новым файлом кикстарта и установка прошла успешно!
  • Строка за строкой я изменил различия в новом файле ks.cfg, чтобы они соответствовали старому (проблемному), заново создал ISO-образ и попытался выполнить установку.
  • С болью обнаружил, что единственной строкой, вызвавшей ошибку, была lang en_CA.UTF-8строка .

решение2

Проблема, как я могу сказать, кажется совершенно ясной. Обратите внимание, что Pane is dead появляется, когда запускается скрипт после установки.

Я бы лучше вырезал этот раздел из файла ks или, что еще лучше, записал его в журнал, чтобы понять, что именно пошло не так.

Для того, чтобы вести лог, вы можете использовать директиву --log /path/to/logfile в вашем kickstart. Как только вы получите сообщение на панели, просто переключитесь на один из TTY и проверьте логи.

Итак, проблемный раздел — %post.

Надеюсь, это поможет.

Связанный контент