linux启动镜像文件(*.img)的制作

来源:互联网 发布:电脑桌面上软件打不开 编辑:程序博客网 时间:2024/06/15 04:10

在经过编译u-boot、编译kernel、debootstrap构建文件系统,做成一个可以运行的linux后,你可能想把你这系统跟别人分享或做个备份,下次就不用从头开始做系统,只需要把备份”烧录”一下就可以了,这时侯你就需要做个”系统镜像”文件了,下面是做NanoPi M3开发板镜像的步骤(注:做好的linux在sd卡上,sd卡插入x86主机后的设备名是:/dev/sdc1)。
步骤:

1,$cd ./tmp2,$sudo dd if=/dev/zero of=debian_stretch-nanopi-m3.img bs=1M count=2253  //用df -h看下系统的大小,根据大小生成一个相应的空白镜像文件(这里是2.2G)。3,$sudo parted debian_stretch-nanopi-m3.img --script mklabel msdos //设置卷标4,$sudo parted debian_stretch-nanopi-m3.img --script mkpart primary ext4 8 100% //分区,开始扇区号是8M,100%表示余下的空间全用了,所以这里只分了一个分区5,$sudo kpartx -av debian_stretch-nanopi-m3.img //将debian_stretch-nanopi-m3.img挂载后,有了/dev/loop0和/dev/mapper/loop0p1两个设备文件6,$sudo mkfs.ext4 -L nanopim3 /dev/mapper/loop0p1 //将分区格式化成ext4文件系统7,$sudo mkdir ./nanopim3 ./sd_card8,$sudo mount -t ext4 /dev/sdc1 ./sd_card  //将需要被拷贝的"源"挂在目录下  $sudo mount -t ext4 /dev/mapper/loop0p1 ./nanopim39,cd ./sd_card10,$sudo rsync -Hpavz -q ./ ../nanopim3 //进行"本地"两个目录文件同步,./sd_card是"源目录",./nanopim3是"目的目录",同步结束后,./sd_card目录下的所有文件就被拷到./nanopim3下了11,$sudo umount /dev/sdc1 /dev/mapper/loop0p112,$sudo dd if=bl1-drone.bin of=/dev/loop0 seek=1 //embedded入Nanopi M3开发板的bl1程序13,$sudo dd if=u-boot-nsih.bin of=/dev/loop0 seek=64 //embedded入Nanopi M3开发板的u-boot程序14,$sudo kpartx -dv debian_stretch-nanopi-m3.img //解除挂载15,$sudo gzip debian_stretch-nanopi-m3.img //生成debian_stretch-nanopi-m3.img.gz以节省空间和网络传输时间(注意:烧录时需将它还原成*.img文件:gzip -d debian_stretch-nanopi-m3.img.gz)。
注:如果没安装parted和kpartx则需先安装:$sudo apt install parted和$sudo apt install kpartx。

这样就做好了linux镜像,用Etcher(linux下)或win32diskimager(window下)写入SD卡就可启动开发板了。