Por que o kickstart do CentOS 7 não usa minha configuração de disco?

1

Eu escapei do guia de sintaxe do Redhat , seu exemplo avançado de particionamento e um exemplo de particionamento complexo no blog de alguém. Eu tenho uma configuração bastante simples que quero alcançar.

Aqui está o meu arquivo de kickstart:

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use graphical install
graphical
# Use NFS installation media
nfs --server={MY PXE SERVER IP} --dir=/path/to/centos/7/
# Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda,sdb
eula --agreed

# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=eno16777984 --ipv6=auto --activate
network  --hostname=myhostname.example.com

# Root password
rootpw --iscrypted {REDACTED}

# System services
services --enabled="chronyd"
# System timezone
timezone America/Denver --isUtc --ntpservers=MY_NTP1.example.com,MY_NTP2.example.com

# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

# Partition clearing information
clearpart --all --initlabel

# Primary drive partition
part sda1 --size=1024 --fstype=xfs --ondisk=sda
part /boot --size=1024 --onpart=sda1
part pv.sda2 --size=1 --grow --encrypted --fstype=xfs --ondisk=sda

# LVM for sda
volgroup vg_a pv.sda2
logvol / --vgname=vg_a --size=51200 --name=vg_a-root --fstype=xfs
logvol swap --vgname=vg_a --recommended --name=vg_a-swap
logvol /home --vgname=vg_a --size=1 --grow --name=vg_a-home --fstype=xfs

# Secondary drive partition
part pv.sdb1 --size=1 --grow --encrypted --fstype=xfs --ondisk=sdb

# LVM for sdb
volgroup vg_b pv.sdb1
logvol /storage --vgname=vg_b --size=1 --grow --name=vg_b-storage --fstype=xfs

repo --name=MyRepoName --baseurl=http://myhostname.example.com/path --install

%packages
@^compute-node-environment
@base
@core
@directory-client
@scientific
chrony
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

Eu verifiquei que é válido usando ksvalidator .

Por alguma razão, quando a GUI de instalação aparece, ela me diz que eu preciso selecionar meus discos de instalação. Então eu entro, e nenhuma das minhas configurações do meu arquivo parece ser aplicada.

Na verdade, as partições da minha instalação anterior ainda existem. Ou seja, tenho que descriptografar as unidades com minha senha antiga. Então as partições originais não estão sendo apagadas.

Depois de descriptografá-los, preciso definir manualmente pontos de montagem, reformatação, criptografia, tipos de dispositivos etc.

Existe algo óbvio que estou perdendo?

Como uma questão secundária secundária, o que --asprimary faz para part ? Eu continuo vendo isso em todos os lugares, mas não encontrei uma descrição.

Eu sei que minha configuração geral fora do particionamento está correta, já que fiz uma versão automatizada usando

autopart --type=lvm --encrypted

mas preciso de uma configuração personalizada porque isso agrupa toda a minha sdb unidade com o volume lógico para /home com sda .

EDITAR:

Ok, então segui em frente e configurei manualmente tudo na GUI de instalação de acordo com o que eu queria e, em seguida, abri /root/anaconda.cfg para ver quais linhas foram geradas. (Observe também que estou encontrando minha configuração em /root/original.cfg , então sei que ela está carregando corretamente)

Isso é o que eu encontrei para a configuração do disco (tudo o mais era o mesmo):

clearpart --all --initlabel --drives=sda,sdb

part /storage --fstype="xfs" --size=1 --grow --encrypted
part pv.2717 --fstype="lvmpv" --ondisk=sda  --size=284543
part /boot --fstype="xfs" --ondisk=sda  --size=1024

volgroup cl_newegg00 --pesize=4096 pv.2717

logvol swap --fstype="swap" --size=28532  --encrypted --name=swap --vgname=cl_newegg00
logvol /home --fstype="xfs" --size=204802  --encrypted --name=home --vgname=cl_newegg00
logvol root --fstype="xfs" --size=51202  --encrypted --name=root --vgname=cl_newegg00

Então, pensei que se eu simplesmente substituísse minha configuração por essas linhas, tudo deveria funcionar. Mas ainda estou tendo o mesmo comportamento, ou seja, ter que desbloquear as unidades, definir pontos de montagem, definir criptografia, definir o tipo etc. Parece que isso está derrotando completamente o propósito de um arquivo de kickstart.

EDITAR:

Então, fiz algumas pequenas alterações e mudei para o modo text , e descobri, em meus arquivos /tmp/*.log , alguns erros:

grep ERR /tmp/*.log
.. ERR: LUKS device sda has no key/passphrase
.. ERR: LUKS device sdb has no key/passphrase

Eu estava com a impressão de que iria me pedir uma frase-senha. Eu vejo toneladas de relatórios de bugs na pesquisa do Google, mas muitos deles não são recentes. Eu obtenho os mesmos resultados no modo gráfico. Parece que o que estou tentando fazer não é possível.

    
por spanishgum 19.10.2017 / 22:30

1 resposta

1

Eu acredito que o que eu estou tentando alcançar não é possível. Eu encontrei relatórios de outras pessoas que tiveram o mesmo problema. Há uma maneira de contornar isso, embora com algum trabalho de pós-instalação:

cryptsetup luksChangeKey /dev/sdX

Além disso, você pode criar um arquivo-chave e configurar a montagem na inicialização:

dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
cryptsetup luksAddKey /dev/sdX /root/keyfile

# /etc/crypttab
sdX_crypt      /dev/sdX  /root/keyfile  luks

# /etc/fstab
/dev/mapper/sdX_crypt  /media/sdX     ext3    defaults        0       2

Nota: Um arquivo-chave não pode ser usado se a partição em que estiver não tiver sido descriptografada. Assim, você pode criar chaves para cada partição, mas para desbloquear tudo o que você precisa para inserir uma frase secreta para uma unidade com as teclas nela.

Eu criei um hack que funciona para mim, usando a seção% pre e o bash.

%pre
#!/bin/sh

TTY='tty'
exec < $TTY > $TTY 2> $TTY


pswd1=a
pswd2=b
while [ ! $pswd1 == $pswd2 ]; do
    read -s -p "Enter encryption passphrase: " pswd1
    echo -e ""
    read -s -p "Enter passphrase again: " pswd2
    echo -e ""
    if [ ! $pswd1 == $pswd2 ]; then
        echo -e "Password does not match. Try again."
    fi
done

PASSPHRASE=$pswd1

cat << EOF > /tmp/part-include
    ...
    part .... --passphrase=${PASSPHRASE}
    part .... --passphrase=${PASSPHRASE}
    ...
EOF

%end

%include /tmp/part-include

Preencha seu particionamento personalizado que é gravado em um arquivo e incluído como parte da instalação do kickstart depois que a seção% pre bash for avaliada.

    
por 30.10.2017 / 20:00