全志系列芯片linux下格式化SD卡脚本工具

2024-02-02 15:26:01 浏览数 (2)

代码语言:javascript复制
 #!/bin/bash

function pt_error()
{
    echo -e "33[1;31mERROR: $*33[0m"
}

function pt_warn()
{
    echo -e "33[1;31mWARN: $*33[0m"
}

function pt_info()
{
    echo -e "33[1;32mINFO: $*33[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卡。使用方法:

代码语言:javascript复制
sudo ./format_sd.sh 你的盘符

eg:

代码语言:javascript复制
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.

原贴链接:https://bbs.aw-ol.com/topic/103/

0 人点赞