Inicialmente, pensei que isso fosse viável. Após reflexão, já não penso assim.
O Grub é assustadoramente capaz e pode mergulhar em praticamente qualquer sistema de arquivos e extrair arquivos. Então o Grub não terá dificuldade em tirar o kernel da imagem ISO.
No entanto, uma vez que o Grub não controla o kernel carregado, o envolvimento do Grub termina , e qualquer código que o Grub tenha ramificado agora é totalmente responsável por fazer o resto do trabalho. Isto significa que o kernel BSD precisaria entender que o rootfs não está instalado em um dispositivo de bloco simples ou em um disco de CD-ROM, mas sim dentro de um arquivo que vive em uma partição de disco formatada pelo ext [234]. Embora isso seja tecnicamente possível, o kernel sendo inicializado precisa ser explicitamente configurado para isso. Eu duvido seriamente que este é o caso do kernel BSD na sua imagem ISO. Mesmo que o Grub deixasse de alguma forma deixar para trás um dispositivo de E / S no nível do BIOS ( altamente duvidoso), o BSD iria querer inicializar seus próprios drivers de dispositivo para substituí-lo, quando as coisas cairiam .
Não, tenho certeza que não funcionará. Sua alternativa é escrever o ISO em um disco ou em uma chave USB, como sugerido pelo @Kiwy, ou para inicializar o kernel do BSD dentro de uma máquina virtual.
ADENDO
Embora eu deva estar trabalhando em outra coisa no momento, ainda me incomodava que houvesse muitas páginas da Web por aí detalhando como inicializar um arquivo , então eu fiz uma pouco mais de escavação.
Sim, você pode inicializar certas distros Linux de um arquivo ISO . Exemplos ilustrando isso são feitos usando o comando Grub linux
(nee kernel
), cuja documentação é a seguinte:
Command:
linux file …
Load a Linux kernel image from
file
. The rest of the line is passed verbatim as the kernel command-line. Any initrd must be reloaded after using this command (see initrd).
[Ênfase minha.]
Os exemplos do Grub para inicializar o Ubuntu de um arquivo ISO geralmente aparecem como:
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
Então eu comecei a procurar pelos documentos do kernel para o argumento iso-scan
e descobri ... Não há nenhum. iso-scan
não é um argumento de linha de comando padrão do Linux. Nem é findiso
, que aparece em alguns outros exemplos.
Eu acabei me deparando com um relatório de bug do Fedora lamentando a incapacidade de inicializar a partir de um arquivo ISO, cujo Comentários casualmente mencionaram que find-iso
e sua laia não são manipulados pelo kernel, mas pelo initramfs. Pesquisando a partir daí, torna-se evidente que a inicialização a partir de um ISO é tratada de uma maneira específica da distribuição (o Ubuntu faz isso de forma diferente do Fedora, que o faz de forma diferente do Grml, etc.).
Então, em geral , minha resposta permanece: O kernel não inicializa de um arquivo ISO sem ajuda. Algumas (muitas?) Distros Linux fizeram este trabalho. Não está claro se a distro BSD que você quer testar testou um trabalho similar. E assim, você terá muito mais facilidade em inicializar em uma máquina virtual ou, como sugeriu Kiwy anteriormente, em um dispositivo USB.