INFO:
switch_root moves already mounted /proc, /dev, /sys and /run to newroot and makes newroot the new root filesystem and starts init process.
The program init is the process with process ID 1. It is responsible for initializing the system in the required way. init is started directly by the kernel and resists signal 9, which normally kills processes. All other programs are either started directly by init or by one of its child processes.
Quaisquer programas, daemons, módulos (?) iniciados antes de switch_root
ser iniciado pelo processo init 1. switch_root irá matar esse init, portanto todos iniciados após o init ter sido eliminado.
Seus novos rootfs devem ter os módulos (?), programas, daemons para o novo init iniciar. É o novo processo 1 que irá recarregar módulos (?), Reiniciar daemons e gerar programas de usuário.
"Eu quero poder formatar esse dispositivo e escrever um novo rootfs nele"
Suponha que você tenha os novos rootfs já construídos e prontos para "instalar".
Depois de formatar, como você irá inicializar isso? É por isso que você quer fazer o switch_root porque ele já foi inicializado?
Se sim switch_root pode não ser a ferramenta que você precisa.
Outras ferramentas que podem permitir que você formate e copie seus novos rootfs.
- Seu gerenciador de inicialização.
- Uma distribuição Linux ao vivo instalada em um USB inicializável.
- Um sistema de arquivos bitbaked personalizado com apenas o mínimo necessário para inicializar o sistema e as ferramentas (programas) precisam particionar, formatar e copiar. Este éter estará em outro 'drive' uma partição diferente no MTD ou até mesmo em um USB ou uma memória apenas initramfs que faz parte do bzImage.
- Seus novos rootfs que estão temporariamente em outra partição, como um USB. Deve ajustar seu gerenciador de inicialização para inicializar a partir dele no lugar do kernel atual e rootfs.
- Network boot ether PXE ou até mesmo um NFS.
Isso ajuda em tudo?