Havia a necessidade de fornecer operação Linux tanto em uma máquina virtual (VirtualBox) quanto em hardware real. Depois de muitas pesquisas e tentativas de executar o Linux a partir de um VHD como o Windows, que é muito complicado ou não funciona, descobri uma maneira bastante simples de fazer isso. É verdade, não de discos no formato VHD, mas de uma imagem de partição de disco no formato VMDK.
O Linux pode ser inicializado a partir de uma imagem de partição. Agora precisamos ter certeza de que temos uma imagem de disco que o VirtualBox entende e uma imagem de partição que o grub pode carregar.
Veja a seguir como isso pode ser feito rapidamente e sem dores de cabeça desnecessárias.
Todo o resto é feito no Windows.
Crie um novo disco de tamanho fixo no formato vmdk:
VBoxManage createmedium disk --format VMDK --variant Fixed --filename test1.vmdk --size 10000
Temos os arquivos criados:
test1.vmdk
- descritor de disco, arquivo de textotest1-flat.vmdk
- um arquivo com uma imagem de disco
Agora você precisa adicionar mais um pedaço de 1M de tamanho ao início do disco.
Crie um arquivo de 1M test1-boot.vmdk:
fsutil file createnew test1-boot.vmdk 1048576
Em test1.vmdk, mude createType="custom"
para createType="monolithicFlat"
. Isso significa que o disco consiste em vários arquivos.
Adicionar test1-boot.vmdk
em test1.vmdk
, em primeiro lugar. Depois de adicioná-lo test.vmdk
, ele deve ter a seguinte aparência:
... createType="monolithicFlat" RW 2048 FLAT "test1-boot.vmdk" 0 RW 20480000 FLAT "test1-flat.vmdk" 0 ...
onde 2048
é 2048 * 512 = 1048576 bytes (1M) para esta parte do disco.
Linux, test1.vmdk
ubuntu/kubuntu/xubunu. , 18.04 ( ) 21.04, .
: 1M. .
/dev/sda, /dev/sda1. .
, , VirtualBox, , Linux .
Linux . .
( usb-) Ventoy (https://www.ventoy.net/).
ventoy\ventoy_grub.cfg
:
menuentry 'boot linux from vmdk part' { set imgfile="/mydisks/test1-flat.vmdk" set d_label="MYDISK" search --set=root --label ${d_label} loopback loop0 ${imgfile} set root=(loop0) linux /boot/vmlinuz root=/dev/disk/by-label/${d_label} loop=${imgfile} rw nosplash initrd /boot/initrd.img }
:
imgfile="/mydisks/test1-flat.vmdk"
—d_label="MYDISK"
— ,test1-flat.vmdk
, F6 , "boot linux from vmdk part". Linux.
OS, VirtualBox Linux .
, , Windows Linux VirtualBox, … .
Deve-se ter em mente que se as atualizações afetarem o grub, elas não serão concluídas corretamente em um sistema rodando em hardware real, porque não há partição com um bootloader. No entanto, isso não interfere na operação normal. E essas atualizações podem ser aplicadas através do VirtualBox.
Aliás, a imagem test1-flat.vmdk
pode ser copiada para um flash drive Ventoy, e rodar a partir dele também funciona.
E por fim. Ventoy pode inicializar o linux a partir do vhd, mas requer manipulações adicionais com o Linux instalado ( https://www.ventoy.net/en/plugin_vtoyboot.html ). Mas, infelizmente, para mim essas manipulações levaram ao fato de o download funcionar tanto em hardware real quanto no VirtualBox. E aqui e ali com uma imagem não funciona.