TF卡分区
在TF卡上构建系统之前,需要将TF卡进行分区与格式化;
sudo fdisk -l # 首先查看电脑上已插入的TF卡的设备号(一般为 /dev/sdb1,下面以/dev/sdb1为例)
sudo umount /dev/sdb1 # 若自动挂载了TF设备,请先卸载(有多个分区则全部卸载)
sudo fdisk /dev/sdb # 进行分区操作
##### 操作步骤如下 #####
# 若已存分区即按 d 删除各个分区
# 通过 n 新建分区,第一分区暂且申请为16M(f1c100s)、32M(v3s),剩下的空间都给第二分区
# 第一分区操作:n p 1 2048 +16M
# p 主分区、默认 1 分区、默认2048、+16M
# 第二分区操作:n 后面全部回车默认即可
# p 主分区、默认 2 分区、默认2048、默认剩下的全部空间
# w 保存写入并退出
# p 查询分区表确定是否分区成功
########################
sudo mkfs.vfat /dev/sdb1 # 将第一分区格式化成FAT
sudo mkfs.ext4 /dev/sdb2 # 将第一分区格式化成EXT4
# 格式说明
# EXT4:只用于Linux系统的内部磁盘
# NTFS:与Windows共用的磁盘
# FAT:所有系统和设备共用的侧畔
注意: 如果写入文件系统报错:
umount: /dev/sdb2: not mounted
,则是TF卡未格式化。
之前使用的2G的TF卡,发现格式化成ext4
格式显示成功,但是无法使用,fat
格式可以用。
打开该分区报错如图:
不要怀疑其他的,这个卡无法格式化成ext4
格式使用,我换了另外一张32G的卡同样操作没问题。
脚本实现:
# 创建脚本
vim create_partion.sh
# 给予权限
chmod u+x create_partion.sh
# 执行脚本
./create_partion.sh
create_partion.sh
#!/bin/sh
# PJW
# 创建TF卡分区表
# PJW
# 删除分区
sudo umount "$1"1
sudo umount "$1"2
echo $11
sudo fdisk $1 <<EOF
d
1
d
2
d
3
d
4
w
p
q
EOF
sync
# 新建两个分区
sudo fdisk $1 <<EOF
n
p
1
+32M
n
p
2
p
w
q
EOF
# 格式化两个分区
sleep 2
sudo partx -u "$1"
sudo mkfs.vfat "$1"1 &&\
sudo mkfs.ext4 "$1"2
if [ $? -ne 0 ]
then
echo "error in creating partitions"
>/dev/null 2>&1 && exit
fi
TF卡内容存放
第一分区
- boot.scr
- zImage
- suniv-f1c100s-licheepi-nano.dtb
第二分区
- 根文件系统内容
分区及烧录脚本
具体分区操作参考github上的 write_all.sh 脚本,该处有所有的烧录脚本参考。
Nano一键快速烧录镜像包地址 (包含各种资料、SDK、镜像、烧录脚本等)
分区操作脚本:
write_all.sh — 为tf卡创建全套内容`使用:write_all.sh /dev/sdX (sdX修改为tf设备号)`
write_flash.sh — 为spi-flash写入全套内容
write_dd.sh — 以dd镜像的方式写入全套内容(规定了分区信息)(生成方式见下一节)
write_boot.sh — 向tf卡dd进Uboot
write_mkfs.sh — 单纯的为两个分区进行硬盘格式化
write_p1.sh — 单纯的向第一分区写入设备树内核等
write_p2.sh — 单纯的向第二分区写入rootfs
clear_partion.sh — 擦除分区表
write_partion.sh — 写入分区表
write_swap.sh — 增加swap
镜像生成 脚本:
# 镜像生成最简单的方法是借助tf卡,手动或使用脚本向tf写入完结构,再dd出来
# 能够判断镜像大小是否符合启动要求,且借助loop模拟创建设备,快速高效。
# 生成的镜像在 ./image 目录下
sh pack_tf_img.sh — 生成TF卡镜像
sh pack_flash_img.sh — 生成SPI-FLASH镜像
自建脚本[分区及烧录]
将program
文件夹放在uboot
、linux
、buildroot
同级目录。
chmod -R 777 program/
./configs/cp_files.sh # 拷贝uboot、kernel、dtb、rootfs、boot.scr
./create_partion.sh # 建立分区
./p-tf/write_uboot.sh /dev/sdb # 烧录uboot
./p-tf/write_partion1.sh /dev/sdb # 烧录分区一
./p-tf/write_partion2.sh /dev/sdb # 烧录分区二
附:fdisk
操作参数表:
DOS (MBR)
a 开关 可启动 标志
b 编辑嵌套的 BSD 磁盘标签
c 开关 dos 兼容性标志
常规
d 删除分区
F 列出未分区的空闲区
l 列出已知分区类型
n 添加新分区
p 打印分区表
t 更改分区类型
v 检查分区表
i 打印某个分区的相关信息
杂项
m 打印此菜单
u 更改 显示/记录 单位
x 更多功能(仅限专业人员)
脚本
I 从 sfdisk 脚本文件加载磁盘布局
O 将磁盘布局转储为 sfdisk 脚本文件
保存并退出
w 将分区表写入磁盘并退出
q 退出而不保存更改
新建空磁盘标签
g 新建一份 GPT 分区表
G 新建一份空 GPT (IRIX) 分区表
o 新建一份的空 DOS 分区表
s 新建一份空 Sun 分区表