在beaglebone硬件上,我想在具有极简主义busybox系统(/ dev / mmcblk0p2)的分区上启动,对包含更完整的其他2个分区(/ dev / mmcblk0p5& / dev / mmcblk0p6)运行一些检查Linux系统(Angström)然后从基于这些测试的2个Linux系统中的一个或另一个开始。
问题是我找不到如何从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
然后我尝试了两种方法:
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öm登录提示,但是在登录后,对“init”的任何调用都将返回上面的错误,并且系统不起作用(例如,如果我调用“reboot”,它会失败;如果我打电话给“killall busybox”,它会触发重启。
我试过没有“./usr/sbin/chroot。”,它给出了相同的结果。
switch_root
exec switch_root -c /dev/ttyO0 /mnt/root /mnt/root/sbin/init
这给了我一个新的busybox登录提示,我仍然在busybox分区
知道我做错了吗?我错过了一步吗?我忘记考虑的任何参数或任何方法,以查看有关错误的更多详细信息?