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:
Obrigado pelo seu tempo ...
- jason