从Busybox启动Linux(pivot_root或switch_root,或?)

在beaglebone硬件上,我想从一个带有极简主义busybox系统(/ dev / mmcblk0p2)的分区开始,在包含更完整的Linux系统的另外两个分区(/ dev / mmcblk0p5&/ dev / mmcblk0p6)上运行一些检查(Angström ),然后根据这些testing从2个Linux系统中的一个启动。

问题是,我无法find如何从busybox正确启动另一个系统。

我做了什么:

从(完美工作)busybox系统:

export PATH=/bin:/sbin:/usr/bin:/usr/sbin mount -t sysfs sysfs /sys mkdir -p /dev/pts mount -t devpts devpts /dev/pts mount /dev/mmcblk0p5 /mnt/root 

然后我尝试了两种方法:

  1. pivot_root

     cd /mnt/root pivot_root . ./initrd ./bin/mount -n --move ./initrd/sys ./sys ./bin/mount -n --move ./initrd/proc ./proc ./bin/mount -t devtmpfs none ./dev ./bin/mount -n --move ./initrd/dev/pts ./dev/pts exec ./usr/sbin/chroot . ./sbin/init < ./dev/ttyO0 > ./dev/ttyO0 2>&1 

    这给出了以下错误:

     Couldn't find an alternative telinit implementation to spawn. 

    然后它会启动一个新的Angströmlogin提示符,但login后,任何对“init”的调用都会返回上述错误,而系统不起作用(例如,如果我调用“rebo​​ot”,则失败;如果我打电话“killall busybox”,它会触发重新启动)。

    我尝试没有“./usr/sbin/chroot。”,它给出了相同的结果。

  2. switch_root

     exec switch_root -c /dev/ttyO0 /mnt/root /mnt/root/sbin/init 

    这给了我一个新的busyboxlogin提示,我仍然在busybox分区

任何想法我做错了什么? 我错过了一个步骤? 任何参数,我忘了考虑到或任何方法,看看有什么错误的更多细节?