Instruções completas sobre como reproduzir

Instruções completas sobre como reproduzir

EDITAR:Tentei novamente isso genericamente e vejo o mesmo problema. Para reproduzir, siga meus passos abaixo. Estou começando a pensar que pode ser um problema de hardware, mas não tenho certeza.

Ao instalar um ISO do CentOS 7 usando o kickstart, recebo um erro dizendo "O painel está morto" sem registros adicionais. Basicamente, peguei o ISO do CentOS 7 e adicionei um arquivo kickstart. Ao instalar com isso no VirtualBox, tudo funciona bem. Quando tento instalá-lo em hardware real com múltiplas interfaces, recebo o erro "O painel está morto" depois que todos os pacotes são instalados.

insira a descrição da imagem aqui

Não sei qual poderia ser o problema. Algumas coisas que tentei:

  • Não há logs gerados que indiquem o problema. Até adicionei a logging --level=debuglinha ao kickstart, mas não havia nada de valor para ver.
  • Não há etapa de pós-instalação (removi isso do ks, pois esse é o último log antes de o problema ser visto), portanto esse não pode ser o problema.
  • Eu vi em algum lugar na web que alguém disse que há uma diferença entre os ISOs do CentOS 6 e 7, mas não havia informações adicionais para indicar quantitativamente quais poderiam ser essas diferenças.

Aqui estão as instruções completas sobre como reproduzir. Se você puder ver o que estou fazendo de errado, eu agradeceria muito.

Obrigado!

Instruções completas sobre como reproduzir

Minha máquina de produção é um servidor CentOS 7 atualizado. Se estiver faltando algum aplicativo, tenho certeza que você pode instalá-lo facilmente com o yum.

As etapas básicas são:

  • Crie um diretório de trabalho
  • Crie um arquivo de kickstart
  • Atualizar isolinux.cfg
  • Baixar pacotes
  • Criar repositório
  • Crie a ISO

Criar diretório de trabalho

Copiei o ISO do CentOS 7 para meu diretório temporário e montei-o para obter todos os arquivos:

>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

Copiei todos os arquivos para um diretório de trabalho.

>cd /tmp/
>cp -r CentOS7-CD/ CentOS7

Arquivo de início de ação

Adicione meu arquivo de 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@@

Nota: Se usar estas instruções e recortar e colar, você poderá obter ">" prefixando cada linha. Use o seguinte para removê-los.

>sed -i 's|^> ||' /tmp/CentOS7/ks.cfg

Tentei limitar o número de pacotes instalados, daí todas as exclusões da %packagesseção.

ISOLINUX.CFG

Em seguida, edite meu arquivo isolinux.cfg e adicione inst.ks=cdrom:/dev/cdrom:/ks.cfga cada linha de acréscimo e torne a versão sem teste o padrão.

>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

Adicionar pacotes

Determinei empiricamente que existem 240 pacotes a serem adicionados para minha instalação mínima. Fiz isso realizando uma instalação de rede no VirtualBox com as seguintes alterações no arquivo 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/

Então comentei a instalação do CDROM e usei o repositório de rede. A instalação demorou 10 minutos. Depois de concluído, fiz login para obter a lista de pacotes instalados:

VB> rpm -qa > pkg.list

Copiei este arquivo de volta para minha máquina de produção e obtive os locais para download desses arquivos:

> 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

Isso leva alguns minutos para ser concluído enquanto baixa todos os pacotes.

Criar repositório

Criar o repositório é uma tarefa simples.

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

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

Responder1

Finalmente resolvi meu próprio problema! Colocarei isso como resposta para que, se alguém vir, saiba a causa. No entanto, presumo que apenas os canadenses serão afetados...

Acontece que o problema estava na lang en_CA.UTF-8linha do arquivo kickstart. Mudei isso para lang en_US.UTF-8e a instalação foi concluída normalmente. Posso fazer outra pergunta sobre como usar, en_CAmas pelo menos resolvi essa.

Obrigado!

Para quem estiver interessado, como resolvi foi fazendo o seguinte:

  • Criei um DVD com CentOS-7-x86_64-DVD-1503-01.iso
  • Coloque isso no meu servidor e inicialize
  • Quando solicitado, alterei a linha de configuração do grub e adicionei texta ela
  • Durante a instalação do anaconda, configurei a instalação mínima na rede.
  • A instalação foi concluída e um anaconda-ks.cfgarquivo foi criado em/root/
  • Copiei esse arquivo e usei-o exatamente como meu próprio modelo para meu ks.cfgarquivo.
  • Também recriei os diretórios Packagese repodatacom base no conjunto de pacotes instalados nesta instalação.
  • Criei uma nova iso com o novo arquivo kickstart e a instalação funcionou!
  • Linha por linha, alterei as diferenças no novo arquivo ks.cfg para corresponder ao antigo (problemático), recriei o ISO e tentei a instalação.
  • Descobri dolorosamente que a única linha que causou o erro foi a lang en_CA.UTF-8linha.

Responder2

A questão parece bastante clara, como eu poderia dizer. Observe que o painel está morto surge quando o script de pós-instalação é executado.

Prefiro cortar essa seção do arquivo ks ou, melhor ainda, registrá-la para entender exatamente o que deu errado.

Para registrar você pode usar a diretiva --log /path/to/logfile em seu kickstart. Assim que receber a mensagem do painel, basta mudar para um dos TTYs e verificar os logs.

Portanto, a seção ofensiva é% post.

Eu espero que isso ajude.

informação relacionada