
Ao construir um instalador USB personalizado para Centos6.6 (não é fácil), descobri quesea seção% post do arquivo kickstart tem crases
- O Anaconda é concluído, mas sai imediatamente para uma tela em branco (sem saída de vídeo). Normalmente ele sai com uma mensagem dizendo que o Anaconda foi encerrado, etc.
- Tanto o anaconda-ks.log quanto o arquivo de log% post existem, mas têm comprimento zero.
Isso funciona
%pre --log=/root/postLog.log
echo "This is the post"
ls
%end
Isso não funciona
%pre --log=/root/postLog.log
echo "This is the post"
echo `ls`
%end
Isso também não funciona
%pre --log=/root/postLog.log
echo "This is the post"
echo $(ls)
%end
Por que? Eu tenho muitas coisas que preciso fazer no% post e não ter suporte para substituição de comando/back tick tornará isso mais difícil.
Alguma solução alternativa?
Editar: E por que preciso de crases?
O instalador é para um produto de dispositivo, portanto, precisa instalar o sistema operacional base, os rpms do sistema operacional personalizado e os rpms do produto.
Portanto, na seção %post, algo como este padrão é muito comum:
cd $ApplicationPackageDir
RPMLIST=`ls *.rpm`
RPMCOUNT=`ls *.rpm | /usr/bin/wc -l`
for theRpm in $RPMLIST
do
echo /bin/rpm --quiet --upgrade --nodeps --force $theRpm
done
Padrão semelhante para fazer algo genericamente comqualquer que sejaexistem arquivos em um diretório específico.
Todo o conceito não funciona se o anaconda vomitar por ter um backtick no arquivo.
Além disso, backtick é um operador bash válido – no qual o kickstart parece ter problemas.
São bash backtickssupostotrabalhar no kickstart?
Edição II:Adicionado $(ls) ao exemplo