2. 脚本实现通过mkimage.sh脚本来实现ubuntu烧录镜像的制作,主要有以下这几个过程。
a. 判断是否root权限,制作镜像需要root权限。
b. 切换到/usr/image目录,在/usr/image目录中已准备好相应的资源。
c. 整个img不会超过500M,分配500M的空间。分为boot0区域8K位置开始处,uboot区域16400K位置开始处,vfat文件系统启动区域,20M位置开始处,分配100M的空间,剩余空间380M格式化成ext4文件系统,作为根文件系统区域。
d. 把boot0、uboot、boot.img、根文件系统添加到img。
e. img加入相应的分区表。
#!/bin/bash
set-e
if[ "$(id -u)" != "0" ]; then
echo "Script must be run as root!"
exit 0
fi
ROOT=/usr/image
cd$ROOT
IMAGE="$ROOT/nanopi-neo2_ubuntu-base-16.04.2.img"
disk_size=500#MiB
boot0="$ROOT/boot0_sdcard.fex"
uboot="$ROOT/boot_package.fex"
echo"Crea
ting image $IMAGE of size $disk_size MiB ..."
#Partition Setup
boot0_position=8 # KiB
uboot_position=16400 # KiB
part_position=20480 # KiB
boot_size=100 # MiB
set-x
ddif=/dev/zero bs=1M count=$((part_position/1024)) of="$IMAGE"
echo"Add boot0 into Image"
ddif="$boot0" conv=notrunc bs=1k seek=$boot0_positionof="$IMAGE"
echo"Add uboot into Image"
ddif="$uboot" conv=notrunc bs=1k seek=$uboot_positionof="$IMAGE"
echo"Create boot file system (VFAT)"
ddif=/dev/zero bs=1M count=${boot_size} of=${IMAGE}1
mkfs.vfat-n BOOT ${IMAGE}1
echo"Add boot.img into Image"
mcopy-m -i ${IMAGE}1 ${ROOT}/boot.img ::
ddif=${IMAGE}1 conv=notrunc oflag=append bs=1M seek=$((part_position/1024)) of="$IMAGE"
rm-f ${IMAGE}1
echo"Create additional ext4 file system for rootfs"
ddif=/dev/zero bs=1M count=$((disk_size-boot_size-part_position/1024))of=${IMAGE}2
mkfs.ext4-F -b 4096 -E stride=2,stripe-width=1024 -L rootfs ${IMAGE}2
if[ ! -d /media/tmp ]; then
mkdir -p /media/tmp
fi
mount-t ext4 ${IMAGE}2 /media/tmp
echo"Add rootfs into Image"
cp-rfa $ROOT/rootfs/* /media/tmp
umount/media/tmp
ddif=${IMAGE}2 conv=notrunc oflag=append bs=1Mseek=$((part_position/1024+boot_size)) of="$IMAGE"
rm -f ${IMAGE}2
if[ -d /media/tmp ]; then
rm -rf /media/tmp
fi
echo"Add partition table"
cat<
o
n
p
1
$((part_position*2))
+${boot_size}M
t
c
n
p
2
$((part_position*2+ boot_size*1024*2))
t
2
83
w
EOF
sync
clear
3. 开机启动用Win32DiskImager工具把做好的镜像nanopi-neo2_ubuntu-base-16.04.2.img烧录进sd卡, 上电启动。
用df –h命令显示目前所有档案系统的最大可用空间及使用情形。
用mplayer播放mp3音频。
4. 附录制作好的ubuntu烧录镜像及相应的实现脚本。