tl; dr - É possível inicializar a partir de um arquivo .iso localizado em um volume lmv2 não criptografado? Quão?
Estou tentando configurar isso em uma VM do VirtualBox antes de fazer isso de verdade com o meu laptop. Eu tenho a seguinte configuração:
- Partições de 4 gpt
- gpt1 - inicialização do bios 2M ef02
- gpt2 - 5G não criptografado não-lvm, para dados variados, iso's, etc.
- gpt3 - 5G lvm não criptografado, para / boot, iso's, etc.
- gpt4 - restante, lvm, criptografado com dm-crypt / luks, para root, swap, home, etc.
- no gpt2, tenho cópias dos arquivos iso atuais do Arch e do Xubuntu
- no gpt3, eu tenho um lvm2 lv com as mesmas cópias dos mesmos iso's
Eu tenho o seguinte trabalho:
- no gpt4, instalações funcionais do Arch e Xubuntu (e gostaria de adicionar outras distros em outros volumes lógicos em algum momento)
- grub2 instalado a partir do Arch em / dev / sda
- usando o comando configfile do grub2, pode alternar e inicializar a partir do menu grub2 de ambos os distros
- pode inicializar iso's no menu grub a partir de não-lvm gpt2
O que eu gostaria de fazer é inicializar a partir do iso no gpt3 lvm (e, finalmente, nem sequer tenho a partição não-lvm gpt2).
Minha entrada do grub é:
menuentry "Xubuntu ISO" {
set isofile="/xubuntu-12.04.1-desktop-amd64.iso"
# from non-lvm
loopback loop (hd0,gpt2)$isofile
# from lvm
#loopback loop (vgboot-iso)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
As 2 linhas de loopback apontam para 2 cópias diferentes da mesma iso. Eu verifiquei na linha de comando do grub que as duas linhas de loopback funcionam.
Ao inicializar a partir do iso na partição não-lvm, tudo funciona bem.
Ao inicializar a partir do iso na partição lvm, a inicialização é iniciada e, eventualmente, obtém este erro:
(initramfs) /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found
Para a entrada do arco:
menuentry "Arch ISO" {
set isofile="/archlinux-2012.09.07-dual.iso"
loopback loop (hd0,gpt2)$isofile
#loopback loop (vgboot-iso)$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201209 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/x86_64/archiso.img
}
A inicialização a partir do gpt2 iso funciona, mas não sei o que alterar "/ dev / sda2" para a inicialização do lvm.
EDIT: Isso pode ser feito? Para qualquer arquivo .iso oficial da distribuição Linux atual? Fedora? Debian? openSUSE? CentOS?
Isso é impossível? Ou é algo que ninguém pensou em tentar antes?
EDIT2: Minha recompensa expirou há muito tempo e, após 9 meses, estou assumindo que isso simplesmente não é possível em qualquer distribuição Linux. Deixarei a pergunta em aberto, mas duvido que haja uma solução funcional a qualquer momento no futuro próximo.
search
é o volume lógico que contém o arquivo iso, certo? Para obtê-lo, você precisa fazersudo blkid
.Inspirado nesta solução simples para o Ubuntu , usei o seguinte, que funciona para carregar um iso Fedora 27 KDE e um iso Ubuntu 17.10.
Acabei de anexar as seguintes linhas no arquivo
/etc/grub.d/40_custom
Explicação
set iso_path
define o caminho, onde o arquivo iso pode ser encontrado no volume lógico. Quando inicio meu sistema, ele fica/home/erik/Downloads/transmission/Fedora-KDE-Live-x86_64-27/Fedora-KDE-Live-x86_64-27-1.6.iso"
, mas/home
é o volume lógico montado, então deixo de fora e começo o caminho com/erik/Downloads/…
A linha que começa com
search
tem uma variável alfanumérica estranha (o chamado UUID) no final, que começa com6340
. Eu recebi esse número do comandoque me deu, entre outras, a seguinte linha
Então, outra coisa importante, se você deseja inicializar outros arquivos iso, são as linhas que começam com
linux
einitrd
. Eu os peguei abrindo o arquivo iso comfile-roller
(GUI para extrair arquivos compactados) oumc
(gerenciador de arquivos do console).Fedora e similares: Lá você vai para o diretório
/isolinux
, onde encontrará um arquivo chamadoisolinux.cfg
. Lá encontrei algumas linhas começando comlabel
e abaixo delas as seguintes linhas importantesque você usará para preencher as duas últimas linhas do meu grub2
menuentry
.Ubuntu e similares: Lá você vai para o diretório
/boot/grub
, onde encontrará um arquivo chamadogrub.cfg
. Aqui você encontrará algumas linhas começando commenuentry
e abaixo delas as seguintes linhas importantesque você pode copiar.
fonte
Eu acho que não é possível para o arquivo iso oficial da maioria das distribuições.
O erro que você está recebendo:
significa que, na inicialização, o sistema ativo que você está iniciando está procurando uma unidade de CD / DVD e não encontra nenhuma.
Os Live CDs não estão configurados para procurar sua origem iso em um LVM; talvez você possa modificar os scripts de inicialização da imagem para fazer isso, mas não acho que nenhum arquivo .iso oficial da distro atual faça isso. Você pode tentar entrar em contato com os desenvolvedores da sua distro favorita para integrá-la, talvez?
fonte
Você pode tentar o seguinte:
Adicione isso no início da entrada do menu:
Em seguida, especifique sua partição LVM com:
Portanto, sua entrada ISO do Xubuntu seria assim:
Faça as correções conforme necessário.
Isso deve fazer o GRUB reconhecer o volume lvm2, possibilitando a leitura do arquivo ISO nele. No entanto, provavelmente o ISO ainda não será encontrado ...
fonte
Apenas um ponto:
O ISO durante a inicialização deve montar o iso, por isso deve saber como encontrá-lo.
O Grub2 pode ver o ISO com comandos insmod ..., mas isso não faz nada além de permitir que o Grub2 leia dentro do ISO, monte-o em loop, etc., mas assim que o Linux dentro do ISO inicia, o LVM / LUKS / loop / etc é não lá (não montado), os scripts de inicialização dentro da ISO devem saber como montar esse loop LVM / LUKS /; portanto, se o Linux não estiver preparado para isso, não será possível inicializá-lo.
Exemplo sem LVM, LUKS, etc ... se um ISO LiveCD normal do Linux não for projetado para pesquisar e montar um loop em um arquivo .iso durante a inicialização, nunca será possível inicializá-lo a partir do Grub2 (com .iso como um Arquivo).
Para esses casos, você precisa de um emulador de CD / DVD de hardware (se estiver em hardware real) ou basta montar o .iso na unidade de CD / DVD virtual de uma máquina virtual.
A outra opção, é claro, é 'editar' esse ISO para incorporar na inicialização alguns scripts para procurar e montar o LVM / LUKS / etc.
fonte