img为一种镜像文件格式,它包含整个系统的所需要的文件。

#!/bin/bash_ersze=10# 进入脚本所在目录
_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )
cd $_DIRsdcard="bbb.img"# 设置boot分区大小为40MB,根文件系统为1G
fatsize=40
linuxsize=512# 创建普通文件,并用0填充
dd if=/dev/zero of=${sdcard}1 bs=1M count=$fatsize > /dev/null 2>&1
dd if=/dev/zero of=${sdcard}2 bs=1M count=$linuxsize > /dev/null 2>&1
_ersz=$(expr $fatsize + $linuxsize + 30)
dd if=/dev/zero of=${sdcard} bs=1M count=$_ersz > /dev/null 2>&1# 创建msdos分区表
echo ""
echo "Creating new partition table"
echo -e "o\nw" | fdisk ${sdcard} > /dev/null 2>&1
if [ $? -ne 0 ]; thenecho "ERROR"exit 0
fi
sync
echo "New filesystem created on $sdcard"
sleep 1
partprobe -s ${sdcard} > /dev/null 2>&1
if [ $? -ne 0 ]; thenecho "ERROR"exit 1
fi
sleep 1echo ""
echo "Partitioning $sdcard..."# 创建分区
sfat=40960
efat=$(expr $fatsize \* 1024 \* 1024 / 512 + $sfat - 1)
echo "  Creating boot & linux partitions"
sext4=$(expr $efat + 1)
if [ $linuxsize == 0 ]; theneext4=""
elseeext4=$(expr $linuxsize \* 1024 \* 1024 / 512 + $sext4)
fi
echo -e "n\np\n1\n$sfat\n$efat\na\nn\np\n2\n$sext4\n$eext4\nt\n1\nb\nt\n2\n83\nw" | fdisk ${sdcard} > /dev/null 2>&1
sync
sleep 2
partprobe -s ${sdcard} > /dev/null 2>&1
if [ $? -ne 0 ]; thenecho "ERROR."exit 0
fi# 格式化分区
echo "Formating fat partition ..."
mkfs -t vfat -F 32 -n BOOT ${sdcard}1 > /dev/null 2>&1
if [ $? -ne 0 ]; thenecho "ERROR formating fat partition."exit 0
fi
vfatuuid=`blkid -s UUID -o value ${sdcard}1`
echo "  fat partition formated."echo "Formating linux partition (ext4), please wait ..."
mkfs -F -t ext4 -L linux ${sdcard}2 > /dev/null 2>&1
if [ $? -ne 0 ]; thenecho "ERROR formating ext4 partition."exit 1
fi
ext4uuid=`blkid -s UUID -o value ${sdcard}2`
echo "  ext4 partition formated."# 备份镜像的分区信息
dd if=${sdcard} of=${sdcard}u bs=512 count=40960 > /dev/null 2>&1
rm -f ${sdcard}# 挂载镜像的各个分区
bootdir="boot"
rootfsdir="linux"if [ ! -d $bootdir ]; thenmkdir $bootdir
fi
if [! -d $rootfsdir ]; thenmkdir $rootfsdir
fiecho ""
echo "Mounting SD Card partitions..."if ! mount ${sdcard}1 $bootdir; thenecho "ERROR mounting fat partitions..."exit 1
fi
echo "FAT partitions mounted to $bootdir"if ! mount ${sdcard}2 $rootfsdir; thenecho "ERROR mounting linux partitions..."umount $bootdirexit 1
fi
echo "linux partition mounted to $rootfsdir"# 复制镜像到各个分区
#-----------------------------------------------------------------------------------------------
echo ""
echo "Copying file system to image ..."
echo ""cp u-boot/* $bootdir
sync #-------------------------------------------------------------------------------
rsync -r -t -p -o -g -x --delete -l -H -D --numeric-ids -s --stats rootfs/ $rootfsdir/
#-------------------------------------------------------------------------------
sync# 取消挂载的分区
if ! umount $bootdir; thenecho "ERROR unmounting fat partition."
fi
rm -rf $bootdir/* > /dev/null 2>&1
rmdir $bootdir > /dev/null 2>&1if ! umount $rootfsdir; thenecho "ERROR unmounting linux partitions."
fi
rmdir linux > /dev/null 2>&1# 将各分区合并到最后的镜像
echo "Creating SDCard image..."
dd if=${sdcard}u of=${sdcard} > /dev/null 2>&1if [ -f ${sdcard}1 ]; thendd if=${sdcard}1 of=${sdcard} bs=1M conv=notrunc oflag=append > /dev/null 2>&1
fiif [ -f ${sdcard}2 ]; thendd if=${sdcard}2 of=${sdcard} bs=1M conv=notrunc oflag=append > /dev/null 2>&1
fiexit 0

制作SD卡系统镜像img文件相关推荐

  1. Jetson Xavier NX 的SD卡系统镜像制作

    Jetson Xavier NX 的SD卡系统镜像制作 一.SD卡系统查看 二.系统镜像制作 三.系统镜像烧录 一.SD卡系统查看 现有的SD卡的内存为128G,其中64G内存并未分配. # 安装gp ...

  2. 制作SD卡备份镜像以及还原

    转载:https://blog.csdn.net/zhenguo26/article/details/799672470 补充说明: 这里介绍树莓派怎么备份一个SD卡的镜像文件,烧写到SD卡,变成一模 ...

  3. 【树莓派】树莓派SD卡系统镜像系统备份方法

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 先感谢漂移菌的技术支持,耐心.细致的帮我解决了一个困扰我很久的问题--树莓派系统备份问 ...

  4. 命令行下制作SD卡完整镜像

    作为一个嵌入式linux开发人员,镜像的制作是基础的必不可少的操作:在命令行下制作一个镜像,这也就意味着可以通过脚本将这些过程进行自动化. 首先了解几个命令:mke2fs.mkfs.ext2.mkfs ...

  5. 【nano系列】jetson nano 迁移系统、制作SD卡启动扩展内存(二)

    本文继上文刷机到EMMC内存后,为扩展内存空间,迁移系统到Micro SD卡并制作SD卡启动 我的SD卡在nano中显示的名称为 /dev/sda1 ,不同于其他文章 的 /dev/mmcblk1p1 ...

  6. openwrt 格式化_一步一步教你制作openwrt卡系统

    1.搭建交叉编译环境 sudo apt-get install build-essential u-boot-tools uboot-mkimage gcc-arm-linux-gnueabihf n ...

  7. [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...

    实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...

  8. 读取SD卡里面的BMP文件 显示到TFT上

    读取SD卡里面的BMP文件 显示到TFT上 http://blog.csdn.net/yunxianpiaoyu/article/details/8841755 我刚好最近做了一个BMP565格式的图 ...

  9. html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器

    一.项目介绍 前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器.这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可 ...

  10. sd卡有多个android文件夹,android - 如何adb拉出SD卡中存在的文件夹的所有文件

    android - 如何adb拉出SD卡中存在的文件夹的所有文件 我的SD卡中有一个文件夹:/mnt/sdcard/Folder1/Folder2/Folder3/*.jpg Folder1和Fold ...

最新文章

  1. 深度学习核心技术精讲100篇(二十三)-深度学习系列计算广告与推荐系统有哪些区别?使用的主流模型有哪些?
  2. spring教程--事务管理
  3. 谷歌是 CNCF 开源项目最大贡献者,红帽次之
  4. 【转】Java 内存模型及GC原理
  5. 通过QuartzCore/CoreAnimation.h实现让玫瑰花飞舞
  6. Gradle的script API
  7. c语言重新进入for循环,大佬们帮帮忙 帮我改改 怎样能在输入Y后 再次进行for循环...
  8. [css] 为什么要使用css sprites?
  9. 零件销售系统的质量属性
  10. “项目运行时出错,无法启动调试。绑定句柄无效”的解决办法
  11. prim算法适用条件_内部排序算法的比较及应用
  12. 多线程进行http请求
  13. 万年历插件软件测试,一个计算万年历的简单程序
  14. 2022年Web前端开发流程和学习路线(详尽版)
  15. python 音频文件下载 mp3,保存本地requests
  16. Redis原生SET、SETNX、SETEX方法以及RedisTemplate的方法 + 分布式锁的实现
  17. 浅析 Promise
  18. 【数仓设计】宽表和窄表
  19. call(zoom)_如何解决您的Zoom Call问题
  20. N1 小钢炮docker安装迅雷方法

热门文章

  1. Access to Image at 'file:///Users canvas本地图片跨域报错解决方案
  2. wordpress文章页面添加字体增大减小链接
  3. Tableau的维度、度量和连续、离散的区分
  4. 深度技术 GHOST XP 电脑城克隆版 V7.0 (NTFS/F32)
  5. linux中tmp文件在哪,学习LINUX入门,/tmp文件夹
  6. 【多线程】多线程到底是个甚——多线程初阶(复习自用)
  7. 解决SQLServer2000安装被挂起的方法
  8. Event representations with tensor-based compositions笔记
  9. MPC-BE 1.6.0.6370 Beta 经典多媒体播放器
  10. 懒惰的牛(差分) + 金发姑娘和 N 头牛(差分) + 贝茜放慢脚步(二路排序)(归并排序)