Adicionando o ZFS a um Instalador Debian Preseed

1

Estou procurando criar um instalador debian (stretch) preeeded (por motivos legais) que criará automaticamente um zpool de raiz a partir de todos os HDs disponíveis em vez de passar (seja ele automatizado ou não) pela configuração usual de partições. / p>

A maioria dos conselhos que vi para uma raiz ZFS (ou talvez, um guia mais autorizado ) requer a instalação do debian em seguida, inicializando manualmente em um LiveCD, instalando o ZFS nesse LiveCD, configurando o ZFS e, em seguida, chroot ing na nova raiz ZFS para, essencialmente, reinstalar tudo. Isso parece muito propenso a erros e tedioso. Embora, eu entenda que por motivos legais , o instalador debian nunca pode incluir o ZFS como uma opção incorporada.

Na minha pesquisa, encontrei alguns tópicos de listas de discussão onde várias pessoas perguntaram aos mantenedores sobre algo que se aproximava disso, mas elas sempre se davam em explicações legais e a pergunta nunca foi respondida (eu compartilharia se conseguisse encontrá-las novamente, mas lê-los é em grande parte uma perda de tempo!).

Olhando um exemplo de arquivo preseed para estável , vemos as seguintes linhas interessantes :

### Apt setup
# You can choose to install non-free and contrib software.
#d-i apt-setup/non-free boolean true
#d-i apt-setup/contrib boolean true

E um pouco mais abaixo:

# Individual additional packages to install
#d-i pkgsel/include string openssh-server build-essential

Isso parece promissor, porque você pode simplesmente pedir que o ZFS seja instalado:

d-i apt-setup/contrib boolean true
d-i pkgsel/include string zfs-dkms zfsutils-linux zfs-initramfs

Mas, como a configuração do apt e da instalação do pacote é feita após a etapa de particionamento, provavelmente é tarde demais.

Eu encontrei este guia que explica outra maneira de adicionar pacotes não-livres ao processo de instalação (tl; dr baixa o deb, dpkg-deb -x 'd no initrd, e refaz a iso). Isso tem a vantagem (eu acho) de estar disponível antes da etapa de particionamento. Parece que algo semelhante pode ser feito para instalar o ZFS (embora, primeiro você precise compilá-lo antes de colocá-lo no initrd). O problema é que precisamos de um gancho para substituir a etapa da partição por um script que crie o pool do ZFS. Este comentário de @ FerencWágner de um parece promissor, mas nenhum detalhe foi dado especificamente sobre como isso foi alcançado (e a resposta aceita sugere que o partman não pode fazer coisas personalizadas como isso).

Então, com tudo isso em mente:

  1. O d-i apt-setup/contrib / d-i pkgsel/include é muito tarde para usar o ZFS ao criar a raiz fs?
  2. Se o acima estiver correto, incluir os pacotes no initrd é uma abordagem correta para disponibilizar o ZFS na etapa de particionamento?
  3. E independentemente de (1) estar correta, como substituo a etapa do partman pela criação do conjunto raiz do ZFS personalizado?
por Bailey Parker 10.08.2018 / 16:03

1 resposta

0

Já que você quer o ZFS root, o suporte do ZFS deve ser adicionado ao Debian-Installer, pkgsel/include não irá ajudá-lo. A maneira correta foi descrita em debian-boot por Frans Pop:

You'll have to create a custom udeb that is included in the menu just before partman (i.e. menu item number between 3500 and 4000), performs all the basic functions of partman and provides the same pseudo packages as partman.

The basic functions of partman are:

  • creating the /target directory
  • creating the partitions
  • creating the /target/etc/fstab
  • mounting the partitions in /target

For basic info on creating a custom udeb, see the Debian Installer internals.

(substituí o link obsoleto por um atual).

Para experimentação, recomendo preseeding anna/choose_modules to network-console , logando em um shell quando partman aparece, baixando os arquivos / scripts necessários via wget e testando-os no ambiente do instalador, fazendo manualmente o trabalho do partman ( você ainda pode usar o partman para configurar o ponto de montagem /root ). Depois disso, você pode criar udebs ou simplesmente colocar seus arquivos extras no initrd ou em uma sobreposição initrd (um imagem adicional do initrd também carregada pelo ext / sys / iso / pxelinux).

A integração adequada do parceiro de negócios seria uma conquista maravilhosa, mas eu não posso guiá-lo até lá. A documentação antiga provavelmente ainda é muito relevante e você pode usar módulos como por exemplo partman-btrfs para inspiração. Mas é melhor você perguntar em debian-boot primeiro para evitar duplicar o esforço ou seguir o caminho errado.

    
por 12.08.2018 / 11:27