Como eu crio uma instalação completamente autônoma do Ubuntu Desktop 16.04.1 LTS?

33

Propósito

Eu quero instalar o Ubuntu Desktop 16.04.1 LTS completamente sem supervisão. Coloque o CD ISO e vá embora.

Problemas

  • Parâmetros de inicialização incorretos
  • Perguntas ainda sendo feitas e precisando de cliques do mouse
  • Respostas complicadas usando o kickstart / preseed
  • Exemplos de documentação não funcionam como indicado, especificamente de partman e ubunutu

Eu encontrei este post aqui e estava perto do que eu precisava, mas não consegui o que eu precisava, pois era para o Ubuntu Server. O post sugere usar uma instalação do Ubuntu "não-gráfica", mas não consegui encontrar uma instalação não-gráfica para o Ubuntu Desktop, o que faz sentido. Eu tentei adaptar os passos e fazê-lo funcionar para o Ubuntu Desktop 16.04.1 LTS.

Documentação usada

Eu usei todos os recursos a seguir ...

Aparentemente não posso incluir todos os meus recursos porque o askubuntu não permite mais de 2 links. Bem, isso não é muito útil - então aqui está apenas uma lista:

  • AskUbuntu
  • Ubuntu install.en.pdf
  • Exemplos preseed
  • Documentação do instalador da Ubiquity
  • Documentação e exemplos do Partman
  • Receita de partição Explicação dos 3 números e sua ponderação
  • Um exemplo de pré-configuração mais complexo

Solução atual

Eu criei atualmente uma instalação autônoma, mas não tenho certeza se está correta - o que significa que eu deveria ter editado o isolinux / isolinux.cfg

Houve muitas diferenças entre o post que eu criei e a imagem do Ubuntu Desktop. Aqui está a minha solução:

Etapa 1

Montado o Ubuntu ISO para que eu possa copiar o conteúdo para outro diretório e depois editar os arquivos pertinentes.

mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso

Etapa 2

Eu então copiei os arquivos ISO para outro diretório para edição.

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

Etapa 3

Eu editei o arquivo isolinux/isolinux.cfg e substituí tudo com o seguinte:

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

A linha anexa é muito longa, por isso, para facilitar a leitura, aqui estão todas as opções que usei:

file=/cdrom/ks.preseed 
auto=true 
priority=critical 
debian-installer/locale=en_US 
keyboard-configuration/layoutcode=us 
ubiquity/reboot=true 
languagechooser/language-name=English 
countrychooser/shortlist=US 
localechooser/supported-locales=en_US.UTF-8 
boot=casper 
automatic-ubiquity 
initrd=/casper/initrd.lz 
quiet 
splash 
noprompt 
noshell

Descobri que todos esses parâmetros de inicialização eram necessários para obter uma instalação completamente autônoma. Para o Ubuntu Server, pode ser diferente.

Etapa 4

Eu tentei usar e criar muitos arquivos de pré-configuração, mas achei que quanto mais complexo, maior a chance de erros. Este é atualmente meu arquivo de preseed simples que funciona com o arquivo isolinux.cfg acima.

### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
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

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i base-installer/kernel/override-image string linux-server
d-i base-installer/kernel/override-image string linux-image-amd64
d-i mirror/country string US
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect ubuntu-desktop

# Users
d-i passwd/user-fullname string Liason
d-i passwd/username string liason
d-i passwd/user-password-crypted password [crpyt 3]
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password [crypt 3]
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands

Eu não incluí minhas senhas criptografadas, por isso, se você tentar esse arquivo de preseed, altere-as para uma senha criptografada. Aqui são 3 maneiras de criar a senha.

Etapa 5

Eu criei o novo ISO a partir do diretório /opt/ubuntuiso/ .

mkisofs -D -r -V ATTENDLESS_UBUNTU -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

Etapa 6

Eu finalmente testei com o Virtualbox e ele criou uma instalação completamente autônoma.

Perguntas

Devo ter que editar o arquivo isolinux/isolinux.cfg ?

Na outra postagem, parece que eles podem editar o arquivo isolinux/txt.cfg e podem fazer isso funcionar. Tentei por cerca de uma hora para usar o isolinux/txt.cfg , mas não funcionou.

Alguém tem uma receita de partman mais complexa que especifique diretamente as partições? Ou uma configuração de trabalho LVM? Eu tentei usar uma configuração simples do LVM, mas depois da reinicialização ele não inicializava e ficava apenas em uma tela preta. Além disso, nem um dos exemplos de preseed listados na documentação funcionou.

Obrigado por qualquer ajuda.

    
por Brandon Authier 04.08.2016 / 01:16

5 respostas

11

Respondendo

Eu dei um tempo originalmente fazendo a minha pergunta para ver se havia outras soluções, mas parece que a solução que encontrei enquanto esperava é a única solução viável que vi até agora.

Equívoco

Como isso foi fonte de muita confusão, vou tentar esclarecer isso. Parece que algumas das respostas tentaram usar a imagem Ubuntu 16 Server quando eu estava especificamente tentando criar uma instalação de imagem do Ubuntu 16 Desktop não assistida. O problema surge devido às diferenças de implementação do d-i (instalador do Debian) e da onipresença. Como a imagem do Servidor irá prestar atenção e usar todos os comandos d-i no arquivo preseed, a maioria das perguntas que fiz são irrelevantes para a imagem do Servidor. No entanto, devido à implementação da onipresença como o instalador da imagem do Desktop, muitos comandos d-i são ignorados e você é muito limitado e falta muita documentação.

Links de documentação encontrados

  • Aqui é o link para Ubiquity ignorando o comando preseed / late_command (Eu acredito que ignora a preseed / early_command também)
  • Aqui é a Documentação da Ubiquity, ele fala sobre quais componentes do instalador não serão usados ​​no Ubiquity, mas como você notará, mesmo nesta documentação, diz o preseed / early_command, mas eu testaria isso completamente para verificar, uma vez que não parecia funcionar para mim (admito que não testei o comando_comprometido rigorosamente para que eu possa estar errado).

Processo bem sucedido

Aqui está o meu processo para criar com sucesso uma iso sem supervisão do Ubuntu Desktop 16.04 LTS .

Monte o ISO do Ubuntu

Você precisará montar os arquivos ISO para editar os arquivos pertinentes.

mkdir -p /mnt/iso
mount -o loop ~/Downloads/ubuntu-16.04.1-desktop-amd64.iso /mnt/iso

Copiar arquivos ISO

Nós precisaremos copiar os arquivos no ISO montado para um diretório diferente para que possamos editá-los. Sinta-se livre para usar qualquer diretório que você goste, eu escolhi o diretório / opt devido a outro tutorial, mas / tmp poderia ser usado com facilidade.

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

Edite o arquivo txt.cfg

Aqui vamos editar o arquivo /opt/ubuntuiso/isolinux/txt.cfg e personalizar nossos parâmetros de inicialização para obter uma instalação completamente autônoma que incluirá um arquivo de pré-configuração. Use qualquer editor de sua escolha:

#default live
#label live
#  menu label ^Try Ubuntu without installing
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
#label live-install
#  menu label ^Install Ubuntu
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
#label check
#  menu label ^Check disc for defects
#  kernel /casper/vmlinuz.efi
#  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash ---
#label memtest
#  menu label Test ^memory
#  kernel /install/mt86plus
#label hd 
#  menu label ^Boot from first hard disk
#  localboot 0x80

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

Por favor, tome nota de algumas coisas:

  • Comentei todo o texto original no arquivo.
  • Eu adicionei todo o texto depois de incluir "default live-install" na parte inferior
  • Eu nomeei o arquivo preseed "ks.preseed" e ele estará no diretório de nível superior do ISO (/ opt / ubuntuiso)

Use ou crie um arquivo preseed

Use um arquivo de pré-configuração já existente com cuidado! Eu não encontrei nenhum que apenas funcione. Isso não quer dizer que eles não existem, eu simplesmente não encontrei nenhum com um pouco de pesquisa. Existem muitas maneiras de configurar um arquivo preseed, mas eu encontrei muitas opções a serem ignoradas, descritas na Documentação de Ubiquity que eu relacionei acima e no link para preseed / late_command vs ubiquity / success_command. Eu estou incluindo meu arquivo preseed simples que funciona com o arquivo txt.cfg acima.

Para netcfg / get_hostname string e netcfg / get_domain string você pode colocar o que quiser. Eu usei unassigned-hostname e unassigned-domain desde que eu vou apenas mudá-lo mais tarde através de um processo de script.

Para qualquer comando personalizado que você queira executar após a instalação, você precisará usar o:

ubiquity ubiquity/success_command string

Seguido por qualquer comando que você deseja executar. Preste atenção em continuar as strings com "; \" e usando o "/ target" para alterar qualquer coisa relacionada ao novo sistema instalado.

# Partitioning
# Old style using d-i command
#d-i partman-auto/disk string /dev/sda
#d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
#d-i partman-auto/choose_recipe select atomic

# Newer ubiquity command
ubiquity partman-auto/disk string /dev/sda
ubiquity partman-auto/method string regular
ubiquity partman-lvm/device_remove_lvm boolean true
ubiquity partman-md/device_remove_md boolean true
ubiquity partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
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

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i mirror/country string US
d-i apt-setup/multiverse boolean true
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true

# Users
d-i passwd/user-fullname string User
d-i passwd/username string user
d-i passwd/user-password-crypted password yourEncryptedPasswd
d-i passwd/user-default-groups string adm audio cdrom dip lpadmin sudo plugdev sambashare video
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password rootEncryptedPasswd
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands
ubiquity ubiquity/success_command string \
  sed -i -e 's/dns=dnsmasq/#dns=dnsmasq/' /target/etc/NetworkManager/NetworkManager.conf ;\
  cp -a /cdrom/scripts/ /target/root/ ;\
  cp -a /cdrom/salt/ /target/root/

Por favor, note essas coisas como eu deixei para fins ilustrativos e eles provavelmente serão diferentes em seu comando preseed.

  • A senha do usuário / root precisa ser adicionada por você. Aqui é o link que mostra 3 maneiras diferentes de fazer uma cripta 3 senha.
  • Você pode querer alterar os grupos aos quais seu usuário está atribuído.
  • Você definitivamente desejará alterar o success_command. Deixei para mostrar como ele pode ser formatado e como usar o ambiente / target .

Criar novo ISO

Crie o ISO para que você possa testar seu arquivo de pré-configuração. Se você usar um ou fazer o seu próprio, você precisará testá-lo, pois isso será PROVÁVEL como o local onde seu processo falhará. Eu escrevi um script para testes rápidos, mas você poderia apenas apontar o arquivo preseed em um arquivo http: // preseed hospedado e testar muito rapidamente dessa forma.

mkisofs -D -r -V "UNATTENDED_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/ubuntu16-desktop-unattended-install.iso /opt/ubuntuiso

Sinta-se à vontade para alterar o nome da saída e o diretório no qual você irá salvá-lo.

Gravar ISO

Eu sugeriria testar no VirtualBox ou algo parecido e, depois de tê-lo funcionando, gravá-lo em um DVD. Agora você deve ter um DVD de instalação autônomo do Ubuntu Desktop 16.04 LTS.

Feedback, correções, erros

Eu escrevi isso tudo de uma vez e pode haver erros, erros de digitação ou coisas que ficaram confusas ao longo do caminho. Se alguém tentar isso, por favor me avise se você encontrar um erro no processo. E lembre-se de que, se você criar seu próprio arquivo preseed, provavelmente não serei capaz de responder por que sua instalação autônoma está quebrada e não funciona, já que a onipresença gosta de ignorar e não fazer certas coisas no arquivo preseed. Espero que isso seja útil para alguém.

    
por Brandon Authier 13.10.2016 / 23:19
1

Lamento saber que meu método anterior não funcionou. Felizmente, eu encontrei um script desenhado por Rinck Sonnenberg ( netson ) que criaria ISOs AMD64 autônomos do Ubuntu Server no GitHub, e eu o bifurquei. Em seguida, aprimorei o script adicionando a capacidade de criar ISOs I386. Eu também mudei o sistema operacional do Ubuntu Server para o Ubuntu Desktop. Você não precisa visitar o repositório do GitHub, basta seguir as instruções abaixo.

Execute estes comandos:

$ wget https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh
$ chmod +x create-unattended-iso.sh
$ sudo ./create-unattended-iso.sh

Às vezes, wget não está disponível. Se este for o caso, use curl :

$ curl -O https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh

Se nenhum destes trabalhos, baixe-o e mova-o para sua pasta pessoal.

Em seguida, será perguntado qual versão do Ubuntu será instalada e, em seguida, as perguntas que o Ubuntu faria se você estivesse fazendo uma instalação manual. O script fará o download do ISO do Ubuntu e aplicará as alterações solicitadas a ele. Agora você tem um ISO que está pronto para uma instalação autônoma!

Isso deve responder à sua pergunta, porque funcionou muito bem para mim. Também é bom que esse método seja muito mais fácil do que a minha resposta anterior. Espero que funcione para você como aconteceu para nós.

    
por iplustech.net 06.09.2016 / 04:15
1

POR FAVOR, NÃO TENTE ESTE MÉTODO. NÃO FUNCIONA (A MENOS QUE VOCÊ TENTE MATAR TEMPO):

Eu já vi a resposta para tudo isso. Eu vou te dizer a solução mais comum. Eu nunca tentei antes, então pode estar desatualizado. Eu realmente não entendo o ponto, como apenas fazer uma instalação manual seria mais fácil, mas de qualquer maneira ...

Faça login como root ou execute $ sudo su -

Faça o download e monte o ISO. NÃO faça isso manualmente no site do Ubuntu.

# mkdir -p /mnt/iso
# mount -o loop ubuntu.iso /mnt/iso

faça backup e mova arquivos relevantes.

# mkdir -p /opt/ubuntuiso
# cp -rT /mnt/iso /opt/ubuntuiso

Bloqueie a parte do idioma da GUI de aparecer

# cd /opt/ubuntuiso
# echo en >isolinux/lang

Adicione um arquivo "Kickstart".

# apt install system-config-kickstart
# system-config-kickstart

[OPCIONAL] Adicione pacotes para sua instalação

# vim /path/to/ks.cfg #[OPTIONAL]

Ou apenas procure por ele em seus arquivos e edite-o diretamente. Adicione a seção %packages e coloque seus pacotes sob ela.

%packages
# Add your packages below. Example:
@ ubuntu-server
apache2
mysql-server
php7.0
php-pear
libapache2-mod-php7.0 
php7.0-mysql
php7.0-curl
php7.0-json
php7.0-cgi

Como eu disse, eu nunca fiz isso sozinho, então se você tivesse uma configuração como a acima, ela não pode realmente instalar a pilha LAMP e você teria que fazer isso manualmente mais tarde.

Suprimir perguntas com um arquivo "preseed".

# echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' > ks.preseed

Ative os arquivos:

# vi isolinux/txt.cfg

Em seguida, pesquisar por:

label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --

Você precisará então adicionar ks=cdrom:/ks.cfg e preseed/file=/cdrom/ks.preseed . Remova as palavras quiet e vga=788 , para que fique assim:

append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --

Agora você pode criar a nova resposta:

# mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

E lá vai você!

    
por iplustech.net 20.08.2016 / 16:23
1

Dê uma olhada: Ссылка

Este projeto fornece tudo o que você precisa para criar uma instalação autônoma de uma configuração mínima do Linux, enquanto o mínimo se traduz na configuração mais leve - incluindo um serviço OpenSSH e Python - que você pode obter do instalador padrão de uma distribuição Linux. A idéia é que você fará toda a implantação de suas configurações e serviços com a ajuda de ferramentas Ansible ou similares depois de concluir a configuração mínima.

    
por Niklas 28.08.2017 / 01:56
0

Ótimo trabalho Brandon Authier para sua postagem e instruções, você me ajudou muito.

Eu tive um problema com o seu método: Descobri que após a instalação terminar e o PC ser reiniciado, o GRUB trava.

Então eu adicionei ao ks.preseed o seguinte:

# Due notably to potential USB sticks, the location of the MBR can not be
# determined safely in general, so this needs to be specified:

d-i grub-installer/bootdev  string /dev/sda

# To install to the first device (assuming it is not a USB stick):
#d-i grub-installer/bootdev  string default

Isso evita a falha na instalação do grub se você não remover o pen drive USB. Eu tenho isso de Ссылка

    
por RomanuX 07.11.2017 / 08:16