1瑞芯微iso镜像转换
瑞芯微等一些嵌入式芯片无法使用u盘装系统,是使用芯片原厂的工具把文件系统导入到emmc或者ssd中的,我们可以使用下面的方法把iso的文件系统提取出来,然后烧写到开发板中:
使用版本前安装一下包:
sudo apt install qemu-user-static
sudo apt install binfmt-support
整理成脚本:
mkdir ubuntu-kylin
mkdir rootfs
sudo mount *.iso ubuntu-kylin
echo "copy filesystem.squashfs start"
cp ubuntu-kylin/casper/filesystem.squashfs rootfs/
echo "copy filesystem.squashfs ok"
sudo umount ubuntu-kylin
cd rootfs
echo "unsquashfs start"
sudo unsquashfs filesystem.squashfs
echo "unsquashfs ok"
echo "dd start"
dd if=/dev/zero of=rootfs.img bs=1G count=8
echo "dd ok"
sudo mkfs.ext4 rootfs.img
mkdir rootfs
sudo mount rootfs.img rootfs
echo "rsync start"
sudo rsync -a squashfs-root/* rootfs
sudo cp /usr/bin/qemu-aarch64-static rootfs/usr/bin
echo "rsync ok"
sudo umount rootfs
sudo mv rootfs.img ..
cd ..
sudo rm ubuntu-kylin -rf
sudo rm rootfs -rf
echo finish
得到img后,就是我们想要的文件系统了,我们可以单独烧录文件系统,也可以使用sdk中的脚本打包成一个完整的固件。
2. wic镜像转换
# 寻找一个空闲的loop设备
LOOP_DEV=$(losetup -f)
echo ${LOOP_DEV}# 将镜像映射到loop设备上
sudo losetup -P ${LOOP_DEV} xxx.wic
sudo partprobe ${LOOP_DEV}# 查看
lsblk# 挂载分区
mkdir -p ~/{p1,p2}
sudo mount ${LOOP_DEV}p1 ~/p1/
sudo mount ${LOOP_DEV}p2 ~/p2/# 往p2分区拷贝东西,最好加 -a 参数,保持原有文件属性状态
cp -rf -a xxx ~/p2# 卸载
sudo umount ~/p1 ~/p2
# 释放loop设备
sudo losetup -d ${LOOP_DEV}