Como o instalador do ubuntu localiza uma imagem iso?

0

Desejo criar uma chave usb que seja uma caixa de ferramentas, um instalador etc.

Por exemplo, eu gostaria de inicializar e selecionar para rodar o clonezilla, instalar o servidor do Ubuntu 12, 14, 16 lts, executar o memtest86, pfsense, freedos, spinrite, kit de ferramentas de segurança de rede, etc. Claro, eu sei que tem que descobrir a magia correta para cada um dos sistemas operacionais, então eu pensei em começar "pequeno".

Para esta discussão estou trabalhando com o servidor do Ubuntu 16.04 lts. O objetivo aqui é selecionar esta versão fora do menu grub (ou outro menu ...) e fazer com que o instalador do ubuntu seja iniciado.

Aqui está o layout da minha chave usb:

USBKEY
GPT partition table
    partition 1: 32 gigabytes, fat32 for big files
        /iso/ubuntu-16.04-server-amd64.iso
    partition 2: secondary storage partition
    partition 3: 500 megabyte, fat32, with boot and esp flags
        /EFI/boot/grubx64.efi
        /EFI/boot/bootx64.efi
        /EFI/boot/grub.cfg

Isso inicializa o grub corretamente.

Então, tentei os seguintes cenários, cada um com os resultados que aprendi.

1) monte o iso no grub e configure grub para inicializar diretamente do iso:

1 menuentry "ubuntu 16.04 lts server" {
2     loopback loop (hd2,gpt1)/iso/ubuntu-16.04-server-amd64.iso
3     linux (loop)/install/vmlinuz initrd=/install/initrd.gz file=/cdrom/preseed/ubuntu-server.seed quiet ---
4 }

A linha 2 monta o isofile no dispositivo (loop)
A linha 3 diz ao grub para carregar a imagem do linux (loop) / install / vmlinuz e passa os parâmetros para o instalador / kernel

Isto monta corretamente o iso e carrega o kernel do linux, mas o kernel não consegue encontrar o initrd (provavelmente porque o ponto de montagem no EFI desapareceu quando o controle foi transferido para o kernel).

2) Extraia tanto a imagem do kernel quanto o initrd do arquivo iso e faça o grub carregá-los diretamente

1 menuentry "ubuntu 16.04 lts server" {
2     linux (hd2,gpt1)/iso/ubuntu-16.04-server-amd64/vmlinuz iso-scan/filename=/iso/ubuntu-16.04-server-amd64.iso 
3     initrd (hd2,gpt1)/iso/ubuntu-16.04-server-amd64/initrd.gz
}

A linha 2 diz ao grub onde carregar o kernel do Linux. Observe a linha "iso-scan / filename". Não consigo encontrar nenhuma documentação para este parâmetro do instalador ... Alguma sugestão?
A linha 3 diz ao grub para carregar o initrd para o kernel do Linux

O instalador é iniciado, mas falha ao tentar montar o CD-ROM (não é possível encontrar a imagem do CD).

Mais informações: a pesquisa por "iso-scan" levou-me a instalar o pacote dracut-core. O script inclui o arquivo "/usr/lib/dracut/modules.d/90dmsquash-live/iso-scan.sh" que monta os uuids de partição conhecidos e procura os arquivos fornecidos. Mas isso não parece ser o que está sendo executado. Eu cavei o initrd (extraí-lo, segui-lo junto), mas não encontrar nada que diz como o instalador do ubuntu procura por imagens iso.

Então, alguém pode lançar alguma luz sobre como passar para o instalador como encontrar uma imagem iso?

OR, talvez haja uma maneira de aproveitar as extensões efi stub para o kernel do Linux?

Então, para resumir meus problemas e as respostas que procuro:

  • como eu digo ao instalador do ubuntu onde encontrar a imagem iso para montar no lugar de uma unidade de cdrom
  • as várias páginas isoboot da comunidade do Ubuntu (o meu favorito é o post efi multiboot ) são excelentes exemplos de como boot iso imagens ao vivo, mas não como executar imagens do instalador
  • Eu acho que realmente ajudaria se eu soubesse como passar os parâmetros do instalador através da linha de comando do kernel, mas não consigo encontrar detalhes que não se apliquem apenas à versão do ubuntu do desktop. Por exemplo, não seria ótimo se eu pudesse alimentar o uuid da partição e um caminho de arquivo iso para o instalador montar em vez de um cdrom?

Obrigado pelo seu tempo ...

- jason

    
por jason 05.10.2016 / 01:21

0 respostas