Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    linux下格式化SD卡脚本工具

    MR Series
    3
    3
    2418
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • LogPI
      LogPI LV 4 last edited by

       #!/bin/bash
      
      function pt_error()
      {
          echo -e "\033[1;31mERROR: $*\033[0m"
      }
      
      function pt_warn()
      {
          echo -e "\033[1;31mWARN: $*\033[0m"
      }
      
      function pt_info()
      {
          echo -e "\033[1;32mINFO: $*\033[0m"
      }
      
      function install_package()
      {
          PACKAGE=${1}
          if dpkg -s ${PACKAGE} 2>&1 | grep "not installed" > /dev/null; then    
              apt-get install ${PACKAGE} --force-yes -y
          fi
      }
      
      if [ $UID -ne 0 ]
          then
          pt_error "Please run as root."
          exit
      fi
      
      if [ $# -ne 1 ]; then
          pt_error "Usage:./format_sd.sh device"
          exit 1
      fi
      
      case $1 in
      /dev/sd[a-z] | /dev/loop[0-9] | /dev/mmcblk1)
          if [ ! -e $1 ]; then
              pt_error "$1 does not exist."
              exit 1
          fi
          DEV_NAME=`basename $1`
          BLOCK_CNT=`cat /sys/block/${DEV_NAME}/size` ;;&
      /dev/sd[a-z])
          DEV_PART_NAME=${DEV_NAME}1
          REMOVABLE=`cat /sys/block/${DEV_NAME}/removable` ;;
      /dev/mmcblk1 | /dev/loop[0-9])
          DEV_PART_NAME=${DEV_NAME}p1
          REMOVABLE=1 ;;
      *)
          pt_error "Unsupported SD reader"
          exit 0
      esac
      
      if [ $? -ne 0 ]; then
          pt_error "Error: Can't find device ${DEV_NAME}"
          exit 1
      fi
      
      if [ ${BLOCK_CNT} -le 0 ]; then
          pt_error "Error: NO media found in card reader."
          exit 1
      fi
      
      if [ ${BLOCK_CNT} -gt 64000000 ]; then
          pt_error "Error: Block device size (${BLOCK_CNT}) is too large"
          exit 1
      fi
      
      install_package dosfstools
      umount /dev/${DEV_NAME}* >/dev/null 2>&1
      pt_info "formatting ${DEV_NAME}, please wait..."
      dd if=/dev/zero of=/dev/${DEV_NAME} bs=16M count=4
      sync
      
      fdisk /dev/$DEV_NAME <<EOF
      o
      n
      p
      
      
      
      w
      EOF
      mkfs.vfat /dev/${DEV_PART_NAME} -n SD
      sync
      pt_info "format success."
      

      phoenixCard格式化失败,可用该脚本先格式化SD卡。使用方法:

      sudo ./format_sd.sh 你的盘符
      

      eg:

      mod@archlinux sdcard $ sudo ./format_sd.sh /dev/sdb
      INFO: formatting sdb, please wait...
      记录了4+0 的读入
      记录了4+0 的写出
      67108864字节(67 MB,64 MiB)已复制,15.2602 s,4.4 MB/s
      
      欢迎使用 fdisk (util-linux 2.36.2)。
      更改将停留在内存中,直到您决定将更改写入磁盘。
      使用写入命令前请三思。
      
      设备不包含可识别的分区表。
      创建了一个磁盘标识符为 0x00c807cc 的新 DOS 磁盘标签。
      
      命令(输入 m 获取帮助):创建了一个磁盘标识符为 0x476e6317 的新 DOS 磁盘标签。
      
      命令(输入 m 获取帮助):分区类型
         p   主分区 (0 primary, 0 extended, 4 free)
         e   扩展分区 (逻辑分区容器)
      选择 (默认 p):分区号 (1-4, 默认  1): 第一个扇区 (2048-60751871, 默认 2048): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-60751871, 默认 60751871): 
      创建了一个新分区 1,类型为“Linux”,大小为 29 GiB。
      
      命令(输入 m 获取帮助):分区表已调整。
      将调用 ioctl() 来重新读分区表。
      正在同步磁盘。
      
      mkfs.fat 4.2 (2021-01-31)
      INFO: format success.
      
      
      xiaowenge A 2 Replies Last reply Reply Quote Share 0
      • xiaowenge
        DOT小文哥 LV 8 @LogPI last edited by

        扒到一个早期的好东西,顶上来供大家参考

        1 Reply Last reply Reply Quote Share 0
        • A
          aiminick LV 4 @LogPI last edited by

          @logpi 需求不是格式化卡失败,而是要烧录镜像阿

          1 Reply Last reply Reply Quote Share 0
          • Referenced by  Kirin Kirin 
          • 1 / 1
          • First post
            Last post

          Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

          行为准则 | 用户协议 | 隐私权政策