制作arm ubuntu根文件系统chroot失败解决办法

这篇具有很好参考价值的文章主要介绍了制作arm ubuntu根文件系统chroot失败解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、解压根文件系统包

mkdir ubuntu-rootfs
sudo tar -xpf ubuntu-base-22.04.3-base-armhf.tar.gz -C ubuntu-rootfs/

1、首先确保安装了qemu-user-static

sudo apt-get install qemu-user-static

2、确保qemu-arm-static复制到正确目录

sudo cp /usr/bin/qemu-arm-static ubuntu-rootfs/usr/bin/

3、使用可用的挂载脚本ch-mount.sh

#!/bin/bash

function mnt() {
    echo "MOUNTING"
    sudo mount -t proc /proc ${2}/proc
    sudo mount -t sysfs /sys ${2}/sys
    sudo mount -o bind /dev ${2}/dev
    sudo mount -o bind /dev/pts ${2}/dev/pts

    sudo chroot ${2}
}

function umnt() {
    echo "UNMOUNTING"
    sudo umount ${2}/proc
    sudo umount ${2}/sys
    sudo umount ${2}/dev/pts
    sudo umount ${2}/dev

}


if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
    mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
    umnt $1 $2
else
    echo ""
    echo "Either 1'st, 2'nd or both parameters were missing"
    echo ""
    echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
    echo ""
    echo "For example: ch-mount -m /media/sdcard/"
    echo ""
    echo 1st parameter : ${1}
    echo 2nd parameter : ${2}
fi

4、正确运行挂载脚本

sudo ./ch-mount.sh -m ubuntu-rootfs/

5、出现格式不对无法完成挂载的情况

主要是由于未正确配置使用的qemu用户模式系统架构导致的。

sudo ./ch-mount.sh -m ubuntu-rootfs
MOUNTING
chroot: failed to run command ‘/bin/bash’: Exec format error

6、安装binfmt

binfmt(Binary Format)是一个内核模块,它的用处如它的名字,通过二进制文件头来识别它的格式,从而指定用哪个解释器去启动——可以理解为二进制文件的hashbang。有了它我们就可以像启动原生ELF一样启动一个ARM或其他任何QEMU支持的程序了。

sudo apt install qemu-user-binfmt

7、显示当前环境下执行文件系统架构支持情况

update-binfmts --display

输出如下,可见此处qemu-arm是disabled文章来源地址https://www.toymoban.com/news/detail-492008.html

python2.7 (disabled):
     package = python2.7
        type = magic
      offset = 0
       magic = \x03\xf3\x0d\x0a
        mask = 
 interpreter = /usr/bin/python2.7
    detector = 
python3.8 (disabled):
     package = python3.8
        type = magic
      offset = 0
       magic = \x55\x0d\x0d\x0a
        mask = 
 interpreter = /usr/bin/python3.8
    detector = 
qemu-aarch64 (disabled):
     package = qemu-user-static
        type = magic
      offset = 0
       magic = \x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00
        mask = \xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff
 interpreter = /usr/bin/qemu-aarch64-static
    detector = 
qemu-alpha (disabled):
     package = qemu-user-static
        type = magic
      offset = 0
       magic = \x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90
        mask = \xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff
 interpreter = /usr/bin/qemu-alpha-static
    detector = 
qemu-arm (disabled):
     package = qemu-user-static
        type = magic
      offset = 0
       magic = \x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00
        mask = \xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff
 interpreter = /usr/bin/qemu-arm-static
    detector = 
...

8、启用qemu-arm

sudo update-binfmts --enable qemu-arm

9、正确挂载根文件系统即可

sudo ./ch-mount.sh -m ubuntu-rootfs

10、更新挂载脚本ch-mount.sh

#!/bin/bash

function mnt() {
    echo "MOUNTING"
    sudo update-binfmts --enable qemu-arm

    sudo mount -t proc /proc ${2}/proc
    sudo mount -t sysfs /sys ${2}/sys
    sudo mount -o bind /dev ${2}/dev
    sudo mount -o bind /dev/pts ${2}/dev/pts

    sudo chroot ${2}
}

function umnt() {
    echo "UNMOUNTING"

    sudo umount ${2}/proc
    sudo umount ${2}/sys
    sudo umount ${2}/dev/pts
    sudo umount ${2}/dev

    sudo update-binfmts --disable qemu-arm
}

if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
    mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
    umnt $1 $2
else
    echo ""
    echo "Either 1'st, 2'nd or both parameters were missing"
    echo ""
    echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
    echo ""
    echo "For example: ch-mount -m /media/sdcard/"
    echo ""
    echo 1st parameter : ${1}
    echo 2nd parameter : ${2}
fi

到了这里,关于制作arm ubuntu根文件系统chroot失败解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装/引导文件迁移/显卡驱动安装等问题

    如果不想看前面的废话😭,请跳转到 1.准备工具 处开始阅读。 制作基于PSSD的Linux to go系统是我很早就打算做的事情,但这毕竟不是常规的装系统,因此在这之前我也调研了许多经验贴,不过我的思路是找到一个看起来最靠谱而且步骤相对简单的帖子,然后一路跟着走下去。

    2024年02月22日
    浏览(64)
  • ubuntu-更新源提示-没有release文件-解决办法!

    背景: 以ubuntu21.04举例 安装完ubuntu系统,执行“sudo apt update”更新源,出现如下图错误:  说明你下载的ubuntu系统属于生命终结版本,官方不再支持源的更新,属于源配置错误的问题, sources.list配置有误。 解决办法: 1.在源网站 https://mirrors.ustc.edu.cn/repogen/ 下载对应版本最

    2024年02月12日
    浏览(27)
  • 使用ubuntu-base制作根文件系统

    1 :ubuntu官网下载最小根文件系统: 放置到电脑的ubuntu中, Mkdir Ubuntu_rootfs Cd Ubuntu_rootfs Sudo tar –zxvf Ubuntu-bash-xxxxxx.tar.gz 2 :电脑的ubuntu安装qemu搭建arm模拟系统 将/usr/bin/qemu-arm-static/(64位拷贝)qemu-aachr64-static到解压的目录中的/usr/bin中 sudo apt install qemu-user-static sudo /usr/bin/qemu-

    2024年02月14日
    浏览(40)
  • 关于VMware虚拟机安装失败的解决办法,报错(29142)或者安装系统后无法启动

    如果系统中没有关闭内核隔离,那么也会出现虚拟机无法安装的情况。如果下面的图没有说明白具体在哪里,直接百度内核隔离即可找到。 首先: 注意: 至于这个软件当然是免费提供的啦,哈哈哈哈哈。 软件链接: 链接:https://pan.baidu.com/s/1s4kXiJLKN__zxVtWLlBztw?pwd=4ogp 提取码

    2024年02月05日
    浏览(43)
  • Xshell 连接虚拟机Ubuntu系统失败解决方案

    背景知识: Xshell 是一个强大的安全终端模拟软件,可以进行远程登录,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。 xshell通过ip连接,所以需要知道虚拟机的IP地址 使用XShell的主要目的是在Windows环境下登录Linux终端,以后,我们也可以通过这种方式把本机与远端服

    2024年02月10日
    浏览(34)
  • 系统篇:ubuntu 22.04 iptables 运行失败解决方法

    一、现象 可能出现如下类似错误 二、原因 ubuntu 22.04默认使用nftables作为防火墙,而非iptables。 三、解决方法

    2024年02月16日
    浏览(31)
  • ubuntu开机出现《系统出错且无法恢复,请联系系统管理员。》错误解决办法!

    背景: ubuntu22.04.2命令行,执行自动安装系统推荐显卡驱动命令,字体变大,重启后出现如下图错误,无法进入系统,无法通过CTRL+ALT+F1-F3进入TTY模式。 解决办法: 1.首先要想办法进入系统,能输入命令检查。 方法一:按CTRL+ALT+F1-3进入TTY模式,输入命令。(行不通) 方法二

    2024年04月23日
    浏览(34)
  • 制作基于ubuntu-base的文件系统,用于sudo,网络内核cve调试

    主机是 ubuntu 20.04 macos 下使用 orbStack软件,耗能较低,能充分利用本地硬件资源 参考 : https://blog.csdn.net/u012563853/article/details/125295985 参考 : https://www.cnblogs.com/faqbug/p/12484958.html https://www.cnblogs.com/xyztank/articles/16919180.html 查看已拉取的images 确定要编译内核的存放位置 比如,我这里

    2024年01月22日
    浏览(32)
  • Ubuntu系统进去之后黑屏是什么问题,及解决办法【最全】

    1.检查电源线和视频连接线是否牢固。有时候连接线松动或者断开都可能导致黑屏。确保所有硬件设备(如显示器、键盘和鼠标)都正确连接并且正常工作。尝试重新插拔它们,确保它们连接牢固且没有松动。 2.检查显卡驱动是否正确安装。如果显卡驱动没有正确安装,可能

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包