AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1119075
Accepted
motorbass
motorbass
Asked: 2022-12-30 08:04:56 +0800 CST2022-12-30 08:04:56 +0800 CST 2022-12-30 08:04:56 +0800 CST

Conselhos para automatizar a instalação do Debian 11

  • 772

No momento, estou tentando automatizar a criação do modelo Debian 11 por meio do ambiente Packer for Nutanix e preciso de alguns conselhos sobre como pré-configurar/automatizar a instalação do Debian.

Em primeiro lugar, depois de ler esta bíblia https://www.debian.org/releases/stable/amd64/apbs02.fr.html , comecei a usar o arquivo preseed.cfg. Comecei com o arquivo preseed.cfg fornecido pelo Debian e depois adaptei algumas coisas para atender às minhas necessidades. Por fim, valido a sintaxe usando debconf-set-selections -c preseed.cfgcomando => está tudo bem.

Agora, vi que existem 3 maneiras diferentes de usar o preseed.cfg :

  • através do initrd: parece bastante difícil para mim e não encontrei um tutorial/documentação fácil
  • pela rede: não é uma opção neste momento devido a alguma restrição de firewall
  • através do arquivo : parece a opção mais fácil e melhor no momento

Quando o Packer inicia a criação da VM, ele carrega o debian ISO como um CD-ROM na 1ª posição e um disco virtual vazio na segunda posição. Eu digo ao empacotador para carregar meus scripts preseed.cfg como um cd-rom, portanto, do ponto de vista do hipervisor, uma segunda unidade de cd-rom é montada na 3ª posição.

MAS, neste caso, a VM inicializa em ISO (cd-rom 1ª posição), ela não monta o segundo drive de cd-rom que contém o arquivo preseed.cfg e não consigo acessá-lo a menos que vá ao console debian em seguida, monte a segunda unidade.

Eu vi um fórum sobre como carregar preseed.cfg na minha pasta debian.iso original e modificar o arquivo /isolinux/txt.cfg assim (e então recriar o iso com OSCDIMG):

label install
    menu label ^Install
    kernel /install.amd/vmlinuz
    append vga=788 initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed/preseed.cfg --- quiet

Minha pergunta é: é justo agir assim? há algo que eu perdi ou algo mais fácil para fazê-lo funcionar facilmente?

EDIT: tentei o método initrd, a única coisa que resta é que tenho que selecionar manualmente a instalação automatizada. Como se livrar dessa ação?

EDIT2: 02-01-2023

  • eu tentei mais 2 coisas diferentes, 1º tendo esta linha em isolinux/txt.cfg append auto=true priority=critical vga=788 initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.cfg --- quiet=> NOK, ele ainda inicializa no menu de inicialização (mas ok se eu selecionar a instalação automatizada manualmente, significa que preseed.cfg funciona muito bem)
  • e 2º, teste com prompt 1 timeout 1em isolinux.cfg => vai direto para selecionar o idioma manualmente...

EDIT3: 03-01-2023 aqui está o preseed.cfg que eu uso:

# SETUP AUTO MODE
d-i auto-install/enable boolean true
d-i debconf/priority select critical
# LANGUAGE & KEYMAP
d-i debian-installer/locale string fr_FR
d-i keyboard-configuration/xkb-keymap select fr(latin9)
# NETWORK
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string template-debian-11-x64
d-i netcfg/get_domain string my_domain.net
d-i netcfg/hostname string template-debian-11-x64
# MIRRORS
d-i mirror/http/hostname string  http://deb.debian.org/debian/ 
d-i mirror/http/hostname string http://security.debian.org/debian-security 
# ACCOUNTS
d-i passwd/root-password password mypassword!
d-i passwd/root-password-again password mypassword!
d-i passwd/user-fullname string user
d-i passwd/username string user
d-i passwd/user-password password mypassword!
d-i passwd/user-password-again password mypassword!
d-i passwd/user-uid string 1010
d-i passwd/user-default-groups string si audio cdrom video
# LVM PART
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string 95%
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto/choose_recipe select multi
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
#APT
d-i apt-setup/cdrom/set-first boolean false
tasksel tasksel/first multiselect standard, ssh-server
# GRUB
d-i grub-installer/bootdev string /dev/sda
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
#FINAL
d-i finish-install/reboot_in_progress note

Muito obrigado

Gael

debian
  • 2 2 respostas
  • 112 Views

2 respostas

  • Voted
  1. Nikita Kipriyanov
    2022-12-31T10:17:04+08:002022-12-31T10:17:04+08:00

    Use um boot_commandin Packer, que enviará pressionamentos de tecla para a VM e, basicamente, digitará coisas nela. O que vai "digitar" depende de você. Isso vai para o arquivo packer (eu o nomeei base.pkr.hcl):

    ...
    variable "preseed_file" {
      type    = string
      default = "base.preseed"
    }
    ...
    source "qemu" "qemu" {
      ...
      boot_command = [
        "<wait><wait><wait><esc><wait><wait><wait>",
        "/install.amd/vmlinuz ",
        "initrd=/install.amd/initrd.gz ",
        "auto=true ",
        "debian-installer/locale=ru_RU.UTF-8 ",
        "keyboard-configuration/xkb-keymap=ru ",
        "keyboard-configuration/optionscode=grp:caps_toggle,lv3:ralt_switch,compose:rctrl,grp_led:scroll ",
        "url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ",
        "hostname=${var.vm_name} ",
        "domain=${var.domain} ",
        "interface=auto ",
        "vga=788 noprompt quiet --<enter>"
      ]
      http_content         = { "/preseed.cfg" = templatefile(var.preseed_file, { var = var }) }
      ...
    }
    ...
    

    Dessa forma, o empacotador servirá o arquivo pré-configurado para a VM via HTTP e substituirá efetivamente as opções de inicialização incorporadas ao ISO por aquelas que você fornece no arquivo do empacotador. Não há necessidade de fazer alterações no ISO.


    Estou usando o Qemu; esta é uma cópia do que acabei quando fiz isso meio ano atrás. Parece que o construtor Nutanix não tem este boot_command; no entanto, você pode tentar construir o sistema usando, por exemplo, Qemu ou Virtualbox e depois usá-lo com o Nutanix. Eu simplesmente não sei.

    • 1
  2. Best Answer
    Georgee
    2022-12-31T12:55:53+08:002022-12-31T12:55:53+08:00

    Em relação à sua primeira pergunta, não acho que haja uma maneira mais fácil de habilitar a instalação automatizada debian installerem termos de passar o arquivo preseed para ela. Montar uma segunda imagem pode ser uma boa ideia para sua necessidade específica, mas o AFAIK debian installernão respeita uma segunda mídia para sua pré-configuração e não há soluções alternativas que eu conheça (FYI, o subiquityinstalador do ubuntu suporta essa entrada).

    Para obter uma instalação "sem mãos", explicarei 2 coisas que devem ser atendidas.

    Configuração do instalador Debian (preseed)

    Para tornar o debian installermovimento totalmente automático, você precisará disso em seu arquivo preseed:

    d-i debconf/priority select critical
    

    Isso simplesmente dirá debian installerpara não fazer perguntas para as quais possa encontrar uma resposta. Além disso, você precisa ativar o modo automático com d-i auto-install/enable boolean true, mas ignore isso por enquanto (falarei sobre o modo automático na próxima parte). Do auto modedocumento:

    O parâmetro auto do kernel é um alias para auto-install/enable e configurá-lo para true atrasa as questões de localidade e teclado até que haja uma chance de preseed, enquanto priority é um alias para debconf/priority e configurá-lo para paradas críticas quaisquer perguntas com uma prioridade mais baixa sejam feitas.

    PS Você pode passar algumas perguntas/respostas como parâmetros do kernel com key=valueformato, onde keyé um alias. Isso requer a alteração dos parâmetros de inicialização. Veja a lista completa:aliases useful with preseeding

    Configuração do carregador de inicialização

    Além da configuração do instalador, precisamos fazer algumas alterações no bootloader também. Para que isolinuxo bootloader funcione em um cenário de instalação autônoma, faço essas 2 alterações em seus arquivos de configuração dentro do iso:

    1. Defina o modo automático por meio de um parâmetro do kernel.
    2. Diga isolinuxpara selecionar automaticamente a entrada padrão no menu.

    A primeira alteração é feita adicionando auto=trueà appendlinha da entrada do menu padrão. Para o debian 11, descobri que "Instalação gráfica" é a entrada padrão. Como a configuração dessa entrada é lida de isolinux/gtk.cfg, essa alteração deve ser aplicada nesse arquivo. por exemplo, você pode alterar a linha de anexação de configuração do gerenciador de inicialização de exemplo para "append auto=true vga=...".

    O segundo objetivo é alcançado mudando timeout 0para timeout 1in isolinux/isolinux.cfg(veja isto ).

    Nota 1: O auto=trueparâmetro do kernel é o alias para d-i auto-install/enable boolean truea configuração preseed. Descobriu-se que deveria ser habilitado pelos parâmetros do kernel por alguns motivos. Colocar seu equivalente no arquivo preseed ainda acaba no prompt de seleção de idioma aguardando a entrada do usuário (talvez no momento em que o arquivo preseed é lido seja debian installertarde demais para ativar o modo automático?).

    Nota 2: Você não precisa prompt 1da configuração do isolinux. Provavelmente fará o contrário do que você deseja, o que impede a seleção automática da entrada padrão (consulte a última linha desta seção ).

    Nota 3: Alterar a configuração do bootloader requer modificações no conteúdo iso (e, portanto, uma reconstrução iso).

    Nota 4: O isolinuxbootloader é comumente usado para sistemas BIOS (legacy). Em sistemas UEFI, você precisa configurar o GRUB.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve