linux下格式化SD卡脚本工具
-
#!/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.
-
扒到一个早期的好东西,顶上来供大家参考
-
@logpi 需求不是格式化卡失败,而是要烧录镜像阿
-
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号