利用arm板chroot修改其上位机的文件系统
说明
有的时候做批量生产的镜像需要搭建复杂的环境,而在实际的开发板上比较容易搭建,在x86_64的服务器上操作arm64的文件系统修改链接,文件之类的还行,一旦搭建的环境复杂就不好操作了,比如安装PL数据库之类的。
这时候就可以在开发板上使用chroot,然后挂载服务器上这个板子的文件系统进行修改,再搭建一遍环境即可。
也有其他方法,比如qemu,docker之类的。之后细说吧~~~ 现在对qemu也不是很熟悉。
步骤
1、将服务器上的零散文件系统挂载到板子上
挂载问题:在debian 10 系统下挂载报错

解决办法:在前面加上busybox
常用:
# 需要服务器运行nfs
busybox mount -t nfs -o nolock 192.168.1.7:/home/yangx/myfile/xxx_imx93_6.6/ /mnt/
# nfs的配置文件 /etc/exports
/home/yangx *(rw,sync,no_root_squash,no_subtree_check)
注意:
在服务器mount的硬盘里面的文件夹,再挂载到板子是不行的,不知道为什么。可能服务器挂载硬盘是sudo挂载的,然后nfs权限就不行。
2、在零散文件的tool中添加一个脚本ch-mount.sh(或者在板子里添加脚本)
scp yangx@192.168.1.7:/home/yangx/myfile/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/input ${2}dev/input
sudo chroot ${2}
}
function umnt(){
echo "UNMOUNTING"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev/input
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 bothparameters were missing"
echo ""
echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m/media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
3、运行:加载文件系统
sudo bash ch-mount.sh -m /mnt/
图示:

遇到问题:

参考网址:
https://blog.csdn.net/lileihappy/article/details/79214156
解决方法:输入一下两条指令
chmod 644 /usr/lib/sudo/sudoers.so
chown -R root /usr/lib/sudo
4、安装命令或其他操作并合并零散的文件系统
有scp文件的话,把known_hosts删除下。
ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.1.7"
5、退出步骤:
退出/mnt/
exit命令卸载文件系统
sudo bash ch-mount.sh -u /mnt/
本文来自博客园,作者:潇汀,转载请注明原文链接:https://www.cnblogs.com/allalonewithyou/p/19151830,个人邮箱:yaonie4444@foxmail.com

浙公网安备 33010602011771号