全志F1C100S/F1C200S学习笔记(2)——TF/SD卡分区及系统构建烧录

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文件夹放在ubootlinuxbuildroot同级目录。

          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 分区表
            

            猜你喜欢

            转载自blog.csdn.net/p1279030826/article/details/112937457