Eu tenho um sistema Atmel SAM9X rodando Angstrom. Estou tentando criar uma partição de recuperação para que, quando um usuário segura um botão durante a inicialização, a partição de recuperação seja inicializada.
Eu modifiquei o bootstrap para que quando um botão for pressionado durante a inicialização, um kernel Linux alternativo seja carregado. O que eu quero é que o kernel alternativo carregue o Linux a partir da partição de inicialização de recuperação e não da partição principal normal.
Isso é possível? Ou posso carregar a partição de recuperação sem usar dois kernels?
A razão pela qual eu quero isso é que se a partição inicializável principal for corrompida, a partição de recuperação se copiará para a partição principal (semelhante às máquinas Windows Dell ou HP com a partição de recuperação) e a partição inicializável principal será restaurada.
Editar:
A sugestão de Giles fez isso. O bootstrap estava configurando o argumento da linha de comando do kernel, acabei de adicionar root=/dev/mmcblk0p3
(inicialização da 3ª partição SD) a ele e ele inicializou a partir da partição desejada!
Responder1
O kernel contém uma configuração de partição raiz padrão, determinada em tempo de compilação (você pode alterá-la na imagem binária com o rdev
comando). Você pode passar um argumento na linha de comando do kernel para substituir esse padrão no momento da inicialização, por exemplo, root=/dev/mmcblk9p42
para inicializar a partir da partição 42 do dispositivo MMC 9 em vez do padrão. A linha de comando é passada para o kernel pelo bootloader, então você precisa alterar a configuração do seu bootloader.
Se houver um initrd ou initramfs, ele poderá substituir a partição raiz que foi compilada ou passada pelo gerenciador de inicialização.