emmc分区脚本编写示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 实例脚本

猜你喜欢

转载自blog.csdn.net/Qinus/article/details/84761473
今日推荐