O problema é que grub-install
instala um pedaço baseado em bios (ou seja, em modo real) no setor de inicialização. Sim, este é o antigo "modo real" da era PC / XT / AT, a maioria das máquinas * 86 estão iniciando neste modo até agora.
O BIOS não conhece nada dos seus dispositivos. Na BIOS, os dispositivos de bloco têm um identificador de byte hexa sinlge: os disquetes tinham 0x00, 0x01, ... e os discos rígidos têm 0x80, 0x81, 0x82, ... (CDROM, pendrives são desconhecidos para o bios, mas em na maioria dos casos, há algum tipo de emulação que lhes dá a aparência de discos rígidos).
Quando grub-install
é chamado, ele precisa dizer para este código de inicialização de modo real, a partir do qual os dispositivos devem carregar os próximos estágios do gerenciador de inicialização. Este é o grub, que você logo sabe.
No devices.map
, você diz o instalador do grub, como ele deve instalar o carregador de boot do bios, assim você fornece um mapeamento entre seus dispositivos de bloco e seus números de bios (logo no tempo de inicialização!). Deve estar em algum lugar em /boot/grub
ou em /boot/grub2
ou similar.
Depois de instalar o grub no seu dispositivo de loopback, é altamente recomendável reverter seu devices.map
ao seu estado original.
Se você sabe que o dispositivo de loopback no qual você instalará o grub, será o primeiro disco rígido durante o primeiro estágio da inicialização, você pode simplesmente fornecer o identificador de bios 0x80.
P.: É a única maneira de dizer o BIOS, o que saber com o seu dispositivo de loopback. Na era do desenvolvimento do bios, os dispositivos de loopback eram coisas muito, muito esotéricas, conhecidas apenas por grandes máquinas.
P.s.2 .: Existe uma ferramenta chamada kpartx
, que pode encontrar as partições de qualquer arquivo ou dispositivo, e mapeá-las para os dispositivos de bloco do mapeador de dispositivos. Eu joguei muito com losetup .. ---offset
solutions como você, pelo menos um pequeno googling para isso eu sugiro que seja strong.