[debian rk3588]解决./build.sh debian报错chroot: failed to run command ‘/bin/bash‘: Exec format error

文章讲述了在使用`./build.shdebian`命令时遇到的错误,涉及根目录查找失败和`logrotate.service`文件不存在。给出了Ubuntu18.04和22.04版本的解决方案,包括删除并重新安装`qemu-user-static`以及更新binfmts以支持aarch64架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行./build.sh debian命令报错,报错如下

root@zwzn2064-CVN-Z690D5-GAMING-PRO:/home/zwzn2064/sdb1/develop-ir88mx01-ali# ./build.sh debian

processing option: debian

rootfs dir .rootfs

=========Start building debian for arm64=========

 Building for arm64

 Extract image

 Change root.....................

cat: /usr/lib/systemd/system/logrotate.service: No such file or directory

chroot: failed to run command '/bin/bash': Exec format error

ERROR: Running build_debian failed!

ERROR: exit code 255 from line 1244:

VERSION=debug ARCH=$ARCH ./mk-rootfs-$RK_DEBIAN_VERSION.sh

在ubuntu18.04上的解决方法

sudo apt-get remove qemu-user-static

sudo apt-get install qemu-user-static

在Ubuntu22.04上的解决方法

sudo apt-get install qemu-user-static
sudo apt install qemu-user-binfmt
sudo update-binfmts --enable qemu-aarch64

<think>好的,我需要帮助用户解决在构建ARM64镜像时遇到的权限问题。用户提到在RK3588 Linux发行版v1.2.1中构建Debian/Ubuntu Bullseye XFCE ARM64镜像时出现权限被拒绝的问题,具体涉及chroot环境下的test_dev_null和可能的权限问题。 首先,我需要了解用户的具体错误场景。用户可能在chroot环境中执行某些操作时遇到了权限问题,比如挂载设备或访问特定文件。根据用户提供的引用,特别是引用[2],里面提到Docker环境中挂载/proc目录失败,根本原因是权限问题,解决方案涉及在Docker中使用特权模式或调整挂载参数。这可能与用户的问题相关,因为chroot环境也可能有类似的权限限制。 接下来,我需要考虑chroot环境中的权限配置。在chroot中,用户可能需要访问某些设备节点,比如/dev/null,如果这些节点的权限不正确,会导致操作失败。例如,/dev/null的权限应该是666,允许所有用户读写。如果权限不对,用户需要手动创建或调整这些设备节点的权限。 另外,用户可能在构建镜像时使用了某些脚本或工具,这些工具可能需要特定的权限才能正确执行。例如,在构建过程中挂载文件系统时,如果没有足够的权限,可能会失败。此时,可能需要使用sudo命令或者调整脚本以提升权限,但需要注意安全性。 根据引用[1]中的信息,Buildroot的交叉编译工具链路径可能对用户有帮助,但用户当前的问题更多是关于权限而非编译工具链。因此,可能需要排除工具链相关的问题,专注于环境配置和权限设置。 可能的解决方案步骤包括: 1. 检查chroot环境中的设备节点权限,特别是/dev/null。 2. 使用特权模式运行容器或调整挂载选项,如引用[2]中提到的解决方案。 3. 确保构建脚本具有必要的执行权限,并在需要时使用sudo。 4. 检查SELinux或AppArmor等安全模块是否限制了操作,必要时进行调整。 5. 确认用户和组权限在chroot环境中正确配置。 同时,用户可能需要查看具体的错误日志,以确定权限被拒绝的具体原因,例如通过dmesg或系统日志文件。这有助于更精准地定位问题。 最后,需要确保提供的解决方案适用于RK3588的特定环境和版本,可能需要参考Rockchip的官方文档或社区支持资源,确认是否有已知问题或特定的配置要求。</think>在构建RK3588 ARM64镜像时遇到权限问题,可通过以下步骤排查和解决: ### 一、检查设备节点权限 1. 进入chroot环境后,检查$/dev/null$设备节点权限: ```bash ls -l /dev/null ``` 正常权限应为$crw-rw-rw-$,若缺失则需手动创建: ```bash mknod -m 666 /dev/null c 1 3 ``` ### 二、调整容器运行模式 若在Docker环境中操作,需使用特权模式启动容器: ```bash docker run --privileged -it your_image_name ``` 或单独添加设备访问权限: ```bash docker run --device=/dev/null:/dev/null -it your_image_name ``` ### 三、挂载参数优化 在挂载proc/sys等虚拟文件系统时,添加remount选项: ```bash mount -t proc proc /proc --remount mount -t sysfs sys /sys --remount ``` ### 四、安全模块配置 临时禁用SELinux: ```bash setenforce 0 ``` 或为chroot环境添加AppArmor例外策略。 ### 五、用户权限验证 在chroot环境中确认用户身份和组权限: ```bash id groups ``` 必要时添加用户到特定权限组: ```bash usermod -aG disk,plugdev $USER ``` [^1]: Buildroot交叉编译工具链路径参考 [^2]: Docker环境权限问题解决方案
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值