用Shell脚本进行fdisk分区


在嵌入式开发中经常会对mmc卡,或u盘,固态硬盘等重新分区。手动调用fdisk能完成这些重复劳动,但总是不方便。为了提高效率,写如下脚本用于方便开发。注意:其中的空行必不可少,每一个空行意味着一个回车。
partition.sh

#!/bin/bash

disk=$1
if [ -z $disk ]; then
  disk=/dev/mmcblk0
  echo "您没有指定将要分区的设备,将使用默认设备: $disk"
fi

#下面这句dd期望能够将分区表擦除,但实际操作中总是没有效果
#dd if=/dev/zero of=$disk bs=1 count=66 seek=446
fdisk $disk << EOF
d
1
d
2
d
3
d
4
d

n
p
1
1
+20M
n
p
2

+20M
n
p
3

+256M
n
e


n

+512M
n


t
1
b
t
2
53
p
w
EOF

#file end


用法:
sudo /partition.sh [设备路径]
如果设备路径未指定,则默认为/dev/mmcblk0

最后得到的分区信息:
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1         641       20504    b  W95 FAT32
/dev/mmcblk0p2             642        1282       20512   53  OnTrack DM6 Aux3
/dev/mmcblk0p3            1283        9475      262176   83  Linux
/dev/mmcblk0p4            9476       60032     1617824    5  Extended
/dev/mmcblk0p5            9476       25860      524312   83  Linux
/dev/mmcblk0p6           25861       60032     1093496   83  Linux

相关内容