1. 程式人生 > >emmc分割槽指令碼編寫示例

emmc分割槽指令碼編寫示例

一 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>

一 sfdisk指令碼例項
1.1 例項指令碼