版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vertor11/article/details/70332658
一 sfdisk脚本实例
1.1 实例脚本
#!/bin/sh
#mmcblk1p01 boot
BOOT_SYSTEM_OFFSET=10
ROOT_SYSTEM_SIZE=90
#mmcblk1p2 rootfs
MMC_PARTITION1_OFFSET=100
MMC_PARTITION1_SIZE=300
#mmcblk1p3 app1
MMC_PARTITION2_OFFSET=400
MMC_PARTITION2_SIZE=200
#mmcblk1p4 data
MMC_PARTITION3_OFFSET=600
MMC_PARTITION3_SIZE=2500
#mmcblk1p5 app2
MMC_PARTITION4_OFFSET=3100
MMC_PARTITION4_SIZE=200
#mmcblk1p6 rootfs2
MMC_PARTITION5_OFFSET=3300
MMC_PARTITION5_SIZE=300
#mmcblk1p7 other
MMC_PARTITION6_OFFSET=3600
# 将node赋值为传入此脚本的第一个参数,有下文xml中,该值为/dev/mmcblk1
node=$1
#清除分区表,即将前导一个1024字节(1KB)大小的分区零0
dd if=/dev/zero of=${node} bs=1024 count=1
#SmartFdisk –uM表示以MB为单位生成报告。
#0c: 即id=c,表示分区格式为Win95 FAT32 (LBA)。
#L: 即id=83,表示分区格式为linux 。
#E: 即id=5,表示分区格式为Extended。
sfdisk --force -uM ${node} << EOF
${BOOT_SYSTEM_OFFSET},${ROOT_SYSTEM_SIZE},0c
100,300,L
400,200,L
600,,E
600,2500,L
3100,200,L
3300,300,L
EOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
1.2 mfgtool xml调用脚本
此处mmc=1
<!-- create partition -->
<CMD state="Updater" type="push" body="send" file="mksdcard.sh.tar">Sending partition shell</CMD>
<CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
<CMD state="Updater" type="push" body="$ sh mksdcard.sh /dev/mmcblk%mmc%"> Partitioning...</CMD>
- 1
- 2
- 3
- 4
二 fdisk 分区脚本实例
实例1
#!/bin/bash
fdisk /dev/sdb <<EOF
n
p
1
wq
EOF
/sbin/mkfs.ext4 /dev/sdb1 && /bin/mkdir -p /data && /bin/mount /dev/sdb1 /data
echo 'LABEL=data_disk /data ext4 defaults 0 2' >> /etc/fstab
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
实例2
#!/bin/bash
#
# Exit status is 0 for PASS, nonzero for FAIL
#
STATUS=0
run_mmc_case()
{
# create two partitions
fdisk /dev/mmcblk0 2>&1 1>/dev/null << EOF
p
d
1
d
2
d
3
d
n
p
1
+10M
n
p
2
+20M
w
EOF
sleep 1
if [ "$?" = 0 ]; then
if [ -e '/dev/mmcblk0p1' ] && [ -e '/dev/mmcblk0p2' ]; then
printf "MMC test passes \n\n"
return
fi
fi
STATUS=1
printf "MMC test fails \n\n"
}
# devnode test
check_devnode "/dev/mmcblk0"
if [ "$STATUS" = 0 ]; then
run_mmc_case
fi
print_status
exit $STATUS
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
三:实际应用
#!/bin/sh
set -e
run_mmc_case()
{
# create two partitions
fdisk /dev/mmcblk0 2>&1 1>/dev/null << EOF
p
d
1
d
2
d
3
d
n
p
1
+80M
n
p
2
+80M
n
p
3
+10M
n
p
w
EOF
sleep 2
if [ "$?" = 0 ]; then
if [ -e '/dev/mmcblk0p1' ] && [ -e '/dev/mmcblk0p2' ] && [ -e '/dev/mmcblk0p3' ] && [ -e '/dev/mmcblk0p4' ]; then
printf "MMC part ok! \n\n"
return
fi
fi
printf "MMC test fails \n\n"
}
umount /dev/mmcblk0p*
#fdisk
run_mmc_case
sleep 1
mkfs.ext4 -E nodiscard -F /dev/mmcblk0p1
mkfs.ext4 -E nodiscard -F /dev/mmcblk0p2
mkfs.ext4 -E nodiscard -F /dev/mmcblk0p3
mkfs.ext4 -E nodiscard -F /dev/mmcblk0p4
#重新挂载
if [ ! -d /app ]
then
mkdir /app
fi
if [ ! -d /app_bk ]
then
mkdir /app_bk
fi
if [ ! -d /ch_sys ]
then
mkdir /ch_sys
fi
if [ ! -d /ch_data ]
then
mkdir /ch_data
fi
sleep 0.2
mount -o rw /dev/mmcblk0p3 /ch_sys/
mount -o rw /dev/mmcblk0p4 /ch_data/
mount -o rw /dev/mmcblk0p1 /app/
mount -o rw /dev/mmcblk0p2 /app_bk/
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-a47e74522c.css" rel="stylesheet">
</div>
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vertor11/article/details/70332658
一 sfdisk脚本实例
1.1 实例脚本