chroot: failed to run command ‘/bin/bash’: No such file or directory

1. 问题描述及原因分析

在busybox的环境下,执行

复制代码
cd rootfs
chroot .

报错如下:

复制代码
chroot: failed to run command '/bin/bash': No such file or directory

根据报错应该rootfs文件系统中缺少/bin/bash,进入查看确实默认是sh,换成

复制代码
chroot . /bin/sh

依然报错

复制代码
chroot: failed to run command '/bin/sh': No such file or directory

通过查阅资料发现,/bin/sh链接/bin/busybox,busybox为动态执行文件,直接进入缺少动态链接库,需要拷贝相应的动态到rootfs文件系统,如下:

复制代码
cd rootfs
cp /lib/ld-linux-aarch64.so.1 lib/
mkdir -p lib64
cp /lib64/libc.so.6 lib64/
cp /lib64/libresolv.so.2 lib64/
cp /lib64/libm.so.6 lib64/

然后再执行chroot . /bin/sh就正常了。


2. 解决方案:

拷贝相应的动态链接库到rootfs中,如下:

复制代码
cd rootfs
cp /lib/ld-linux-aarch64.so.1 lib/
mkdir -p lib64
cp /lib64/libc.so.6 lib64/
cp /lib64/libresolv.so.2 lib64/
cp /lib64/libm.so.6 lib64/

然后再chroot采用sh解释器,如下:

复制代码
chroot . /bin/sh
export PATH=$PATH:/bin:/sbin
ls

3.参考文献

https://unix.stackexchange.com/questions/58074/how-to-chroot-into-busybox-environment

相关推荐
東雪蓮☆16 分钟前
深入理解 iptables:Linux 防火墙从入门到精通
linux·运维·网络
努力学习的小廉36 分钟前
深入了解linux系统—— 线程互斥
linux·运维·服务器
小米里的大麦2 小时前
034 进程间通信 —— System V 共享内存
linux
zgc12453672 小时前
Linux学习-网络编程2
linux·网络·学习
专注VB编程开发20年2 小时前
.NET组件读取压缩包中的内存数据电子表格XLSX文件和图片,不需要解压
linux·服务器·windows·c#·.net·excel·zip
一川月白7093 小时前
Linux应用软件编程---网络编程(TCP:[ 其他机制、头部标志位、应用示例 ]、 HTTP:[ 万维网、概念、格式、报文、应用示例 ]
linux·网络·tcp/ip·http·linux应用软件编程
Ronin3053 小时前
【Linux系统】线程概念
linux·操作系统·线程·线程概念
-水火-4 小时前
【yocto】Yocto Project 核心:深入了解.bbclass文件
linux·yocto·.bbclass
愚润求学4 小时前
【Linux】Socket编程——TCP版
linux·运维·服务器·c++·网络协议·tcp/ip
软件测试大叔4 小时前
ubuntu替换源为阿里源(修改ubuntu.source文件)
linux·运维·ubuntu