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

在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

然后我尝试了两种方法:

ivot_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分区上

知道我做错了什么吗?我错过了一步吗?我忘记考虑的任何参数或查看发生错误的详细信息的任何方法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值