Sim, isso é possível. E funciona até com funções embutidas. Basta editar seu syslinux.cfg
para incluir o seguinte:
LABEL linux
LINUX /boot/vmlinuz
APPEND root=/dev/disk/by-label/data rootfstype=ntfs loop=images/linux_root.img loopfstype=ext4 rw
INITRD /boot/initrd.img
Obviamente, você tem que copiar sua imagem de kernel ( vmlinuz
) e sua imagem de disco RAM inicial ( initrd.img
) para a partição FAT que você deseja inicializar com o SYSLINUX. (O caminho é relativo à raiz das partições).
O parâmetro root=
especifica o dispositivo e a partição da imagem do sistema de arquivos raiz. Você pode também usar a notação /dev/sda1
ou a versão /dev/disk/by-UUID/SOMECRYPTYCNUMBER
.
O rootfstype
especifica o sistema de arquivos da partição na qual a imagem do sistema de arquivos está localizada. NTFS e FAT são suportados fora da caixa. Para formatos mais exóticos, você precisa editar o initrd.img
para incluir e carregar os módulos de kernel apropriados.
loop=
fornece o caminho para a imagem do sistema de arquivos raiz relativa à base da partição em que ela está. loopfstype=
especifica seu tipo interno. Obviamente, ele será montado em /
após a inicialização. A partição da qual a imagem foi carregada será montada em /host
automaticamente se essa pasta existir. (Você não poderá montá-lo em nenhum outro lugar se NÃO estiver montado lá de forma atômica. Mas poderá movê-lo para outro ponto de montagem com mount -m
, se for.)
Não se esqueça de copiar e sobrescrever o kernel e o initrd.img
na partição FAT toda vez que eles forem atualizados por uma atualização do sistema ou coisas estranhas acontecerem durante a inicialização.
Infelizmente, não há como incluir uma partição swap da mesma maneira. Você tem que usar uma partição real para isso ou tentar encontrar uma maneira de ativar uma após a inicialização do sistema em execução.
Espere aprox. 10% de sobrecarga da CPU para gravar no dispositivo de loop montado por meio do wrapper NTFS.