Posso fazer o SYSLINUX carregar um root fs a partir de um arquivo de imagem em uma partição NTFS?

2

O SYSLINUX permite que eu inicialize a partir de um dispositivo USB FAT16 carregando uma imagem do kernel e uma imagem inicial do disco RAM (initrd) a partir dali.

Para obter mais espaço e um acesso mais rápido, posso montar uma partição NTFS a partir de um disco rígido após a inicialização e usar o dispositivo de loopback para montar uma imagem do sistema de arquivos para substituir / home ou até chroot nele. é muito depois do processo de inicialização, tornando as atualizações do sistema impossíveis.

Existe uma maneira de fazer o próprio SYSLINUX montar a imagem fs da partição NTFS como root fs?

Ou posso modificar a imagem do initrd para montar o novo fs raiz bem mais cedo no processo de inicialização? Eu sei montar e alterar essa imagem, mas perdi nos scripts e não sei quando e como eles são executados.

    
por Chaos_99 25.05.2013 / 10:50

1 resposta

2

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.

    
por 14.08.2013 / 12:41