Existe uma cópia do disco em formato IMG:
root@linux /mnt # fdisk -l /mnt/output.img
Disk /mnt/output.img: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3EEB19F8-AB57-47B4-A7E7-F2A0BDE6C2B1
Device Start End Sectors Size Type
/mnt/output.img1 2048 4095 2048 1M BIOS boot
/mnt/output.img2 4096 6289407 6285312 3G Linux LVM
lvdisplay
fornece as seguintes informações sobre o disco:
lvm> lvdisplay
--- Logical volume ---
LV Path /dev/connect/root
LV Name root
VG Name connect
LV UUID KXxms1-2d0j-C8Ps-6azt-3U0z-PpOO-K9mS0B
LV Write Access read/write
LV Creation host, time client-dev-building-02, 2024-07-25 13:36:12 +0300
LV Status NOT available
LV Size 2,00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
--- Logical volume ---
LV Path /dev/connect/boot
LV Name boot
VG Name connect
LV UUID OKFDNN-IUDQ-a0Ol-6Dqg-lDKu-GIWK-4A8faP
LV Write Access read/write
LV Creation host, time client-dev-building-02, 2024-07-25 13:36:14 +0300
LV Status NOT available
LV Size 512,00 MiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
--- Logical volume ---
LV Path /dev/connect/home
LV Name home
VG Name connect
LV UUID Uls6Oa-fQ64-Qrpd-mVXr-kYxo-PZmO-uxXx4Z
LV Write Access read/write
LV Creation host, time client-dev-building-02, 2024-07-25 13:36:14 +0300
LV Status NOT available
LV Size 508,00 MiB
Current LE 127
Segments 1
Allocation inherit
Read ahead sectors auto
Criei um pendrive com download do GRUB. Copiei o arquivo output.img
lá. Minha configuração fica assim:
menuentry "output" {
insmod lvm
set isofile="output.img"
loopback loop (hd0,2)/${isofile}
linux (lvm/connect-boot)/vmlinuz root=/dev/connect/root ro
initrd (lvm/connect-boot)/initrd.img
}
O kernel está carregado, mas ao carregar initramfs
não é possível montar o diretório raiz, dá um erro:
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... Volume group "connect" not found
Cannot process volume group connect
done.
Quero dizer, o initramfs não possui suporte para inicialização LVM.
Existe alguma maneira de montar o root
diretório ou carregar no GRUB, que está disponível em output.img?
Minhas tentativas de inicializar diretamente do dispositivo LVM apresentam errounknown file system type LVM2_member
É necessário carregá-lo desta forma, sem gravar IMG diretamente no USB. O arquivo output.img é sempre diferente, então preciso fazer diferentes opções de inicialização de diferentes discos neste formato.
atualização 1
- Eu trouxe a configuração do GRUB para este formulário
menuentry "img" {
insmod lvm
set imgfile="output.img"
set device="(hd0,2)"
probe --set uuid --fs-uuid ${device}
loopback loop ${device}/${imgfile}
linux (lvm/connect-boot)/vmlinuz root=UUID=${uuid} rw
initrd (lvm/connect-boot)/initrd.img
}
Carreguei
initramfs
e a partição onde minhaoutput.img
imagem está localizada é montada automaticamente.Estou montando manualmente minha imagem IMG
losetup --partscan /dev/loop0 /root/output.img
- Identificar seções LVM
vgchange -ay
- Monte o diretório raiz
mkdir -p /mnt/root
mount /dev/mapper/connect-root /mnt/root
- Estou tentando iniciar um carregamento adicional, mas ocorre uma falha no kernel
exec switch_root /mnt/root /sbin/init
Algo deu errado.
atualização 2
Tento transferir o download desta forma, mas aparece uma tela preta com a inscrição GRUB e pronto.
Consegui resolver o problema criando meu próprio script de inicialização em
initrd
. Ao mesmo tempo, passo o argumento da imagem como um parâmetro do kernel, que passa as informações necessárias dentro do meu script para carregamento posterior.É necessário reconstruir o initrd com script próprio, que deve ser colocado no
/etc/initramfs-tools/scripts/init-premount
diretório:Reconstrua o
initrd
:GRUB fica assim:
Assim, como parâmetro customizado
image
, passo os dados necessários para um script que monta o dispositivo, monta a imagem IMG, reconhece partições LVM e carrega do diretório raiz da imagem IMG.