Instalação autônoma com preseed - fornece um dispositivo customizado para o partman-auto

3

Estou fazendo uma instalação autônoma do Ubuntu-14.04-server com uma unidade USB e um arquivo preseed em diferentes tipos de servidores (HP Proliant ML110, ML310, ML350).

  • No ML110 e ML310, o disco rígido está em /dev/sda e o drive USB recebe /dev/sdb .
  • Enquanto nos servidores ML350, a unidade USB pega o /dev/sda e o disco rígido aparece em /dev/sdb .

Como isso deve ser uma instalação completamente autônoma, independentemente do tipo de servidor, eu preciso encontrar uma maneira de fornecer o caminho correto do dispositivo para d-i partman-auto/disk .

Minha primeira idéia foi forçar o disco rígido a aparecer antes do drive USB, permitindo que ele pegasse /dev/sda nos servidores ML350; mas Eu não encontrei uma maneira de fazer isso .

Portanto, criei um script pequeno que detecta o nome do dispositivo antes de executar partman e registre isso em uma variável $INSTALL_DEV :

d-i partman/early_command string                                  \
    for DEV in 'ls /sys/block | grep sd'; do                      \
        if [ -n "'ls -l /sys/block/$DEV | grep /usb'" ]; then     \
            USB_DEV=/dev/${DEV};                                  \
            echo "USB_DEV is $USB_DEV" >> /var/log/syslog;        \
        else                                                      \
            INSTALL_DEV=/dev/${DEV};                              \
            echo "INSTALL_DEV = $INSTALL_DEV" >> /var/log/syslog; \
            break;                                                \
        fi;                                                       \
    done;                                                         \

Desde então, estou lutando para encontrar uma maneira de fornecer essa variável para d-i partman-auto/disk . Pensei em alternativas diferentes, mas não consegui encontrar uma maneira de implementar uma delas:

  1. Faça o partma-auto/disk interpretar uma variável. Mas infelizmente só leva uma string como valor.
  2. Modifique o banco de dados debian-installer no qual espero que os valores de preseed sejam armazenados. Mas eu não encontrei o arquivo de banco de dados (nem a maneira de alterá-lo).
  3. Crie um script que inclua um pequeno arquivo de pré-configuração com o dispositivo correto. Mas só posso incluir arquivos de preseed/include antes que o disco rígido seja exibido em /dev .
por Jav 24.04.2015 / 10:42

1 resposta

3

Aqui está um simples partman/early_command que faz exatamente o que eu queria

d-i partman/early_command \
    string debconf-set partman-auto/disk "$(echo /dev/'ls -l /sys/block/[hs]d* | grep -v "usb" | head -n1 | sed 's/^.*\([hs]d[a-z]\+\).*$//'')"

Este early-command é executado imediatamente antes de partman ser executado. Ele define dinamicamente o valor da configuração partman-auto/disk do debian-installer .

O comando entre $( e ) gera o primeiro disco rígido encontrado que não é uma unidade USB.

    
por 04.05.2015 / 15:56