La raison pour laquelle switch_root
ne fonctionne pas sur la ligne de commande est ce code dans busybox :
if (st.st_dev == rootdev || getpid() != 1) {
// Show usage, it says new root must be a mountpoint
// and we must be PID 1
bb_show_usage();
}
Vous n'êtes pas PID 1, donc vous tombez dans ce bb_show_usage
. L'implication est que le switch_root
La commande dans votre script d'initialisation initramfs doit exécuter switch_root
avec exec
. c'est-à-dire
exec switch_root ...
L'autre problème avec vos erreurs "introuvables" est probablement dû au fait que les bibliothèques partagées nécessaires aux exécutables ne sont pas trouvées, car le système de fichiers racine initramfs ne les a pas. Si vous pouvez obtenir switch_root
travailler avec exec
, il est alors probable que l'erreur "introuvable" disparaisse.