zoukankan      html  css  js  c++  java
  • OK335x mksd.sh hacking

    #! /bin/sh
    # mk3PartSDCard.sh v0.3
    # Licensed under terms of GPLv2
    
    # 参考文档:
    #     1. sfidsk创建可启动分区问题
    #         http://segmentfault.com/a/1190000002493628
    #     2. sfdisk 中文手册
    #         http://blog.csdn.net/hnmsky/article/details/7650964
    #     3. linux sfdisk partition
    #         http://blog.csdn.net/shell_albert/article/details/8425530
    #     4. How to Make 3 Partition SD Card
    #         http://processors.wiki.ti.com/index.php/How_to_Make_3_Partition_SD_Card
    
    if [ $# -ne 1 ]; then
        echo "USAGE:"
        echo "    $0 <device node>"
        exit -1;
    fi
    
    # 获取SD卡设备节点,并擦除分区表
    DRIVE=$1
    dd if=/dev/zero of=$DRIVE bs=1024 count=1024
    
    # 获取SD卡大小,并在terminal中显示字节大小
    SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
    echo DISK SIZE - $SIZE bytes
    
    # 计算磁柱数
    # 每一个柱面的大小为255*63*512=8,225,280 Bytes
    CYLINDERS=`echo $SIZE/255/63/512 | bc`
    
    # Usage:
    #  sfdisk [options] <device> [...]
    # 
    # Options:
    #  -s, --show-size           list size of a partition
    #  -c, --id                  change or print partition Id
    #      --change-id           change Id
    #      --print-id            print Id
    #  -l, --list                list partitions of each device
    #  -d, --dump                idem, but in a format suitable for later input
    #  -i, --increment           number cylinders etc. from 1 instead of from 0
    #  -u, --unit <letter>       units to be used; <letter> can be one of
    #                              S (sectors), C (cylinders), B (blocks), or M (MB)
    #  -1, --one-only            reserved option that does nothing currently
    #  -T, --list-types          list the known partition types
    #  -D, --DOS                 for DOS-compatibility: waste a little space
    #  -E, --DOS-extended        DOS extended partition compatibility
    #  -R, --re-read             make the kernel reread the partition table
    #  -N <number>               change only the partition with this <number>
    #  -n                        do not actually write to disk
    #  -O <file>                 save the sectors that will be overwritten to <file>
    #  -I <file>                 restore sectors from <file>
    #  -V, --verify              check that the listed partitions are reasonable
    #  -v, --version             display version information and exit
    #  -h, --help                display this help text and exit
    # 
    # Dangerous options:
    #  -f, --force               disable all consistency checking
    #      --no-reread           do not check whether the partition is in use
    #  -q, --quiet               suppress warning messages
    #  -L, --Linux               do not complain about things irrelevant for Linux
    #  -g, --show-geometry       print the kernel's idea of the geometry
    #  -G, --show-pt-geometry    print geometry guessed from the partition table
    #  -A, --activate[=<device>] activate bootable flag
    #  -U, --unhide[=<dev>]      set partition unhidden
    #  -x, --show-extended       also list extended partitions in the output,
    #                              or expect descriptors for them in the input
    #      --leave-last          do not allocate the last cylinder
    #      --IBM                 same as --leave-last
    #      --in-order            partitions are in order
    #      --not-in-order        partitions are not in order
    #      --inside-outer        all logicals inside outermost extended
    #      --not-inside-outer    not all logicals inside outermost extended
    #      --nested              every partition is disjoint from all others
    #      --chained             like nested, but extended partitions may lie outside
    #      --onesector           partitions are mutually disjoint
    # 
    # Override the detected geometry using:
    #  -C, --cylinders <number>  set the number of cylinders to use
    #  -H, --heads <number>      set the number of heads to use
    #  -S, --sectors <number>    set the number of sectors to use
    #
    
    # sfdisk的-D参数指定与DOS兼容,并自动在每个分区前预留空间,以存放MBR(Master Boot Record);
    #
    # <start>, <size>, <id>, <bootable> 
    #
    # bootable 可以指定为[*|-]格式,默认值是"-"也就是没有可引导标记。
    # 这个标记仅对DOS有意义:DOS会给带有可引导标记的主分区分配 C: 盘符
    #
    # id 应该以无"0x"前缀的格式给出其十六进制值,或者[E|S|L]简写字母:
    #     L(83)是默认值;
    #     S(82,LINUX_SWAP);
    #     E(5,扩展分区)。
    # 
    # 第一行分区描述,9,0x0C,* 自动分配起始柱面,数量为9,分区ID为0x0C(表示FAT32分区),<bootable>为*, 表示可启动分区。
    # 第二行分区描述10,115,,- 同样自动分配起柱面,数量为115,其它为默认。
    # 第三行分区描述126,,,- 同样自动分配起柱面,剩下所有的数量,其它为默认。
    sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
    ,9,0x0C,*
    10,115,,-
    126,,,-
    EOF
    
    # 这里可以得到一张FAT32分区的SD卡,我有时候我们就只需要一张这样的卡
    # sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
    # ,,0x0C,*
    # EOF
    
    # 格式化各个分区,格式化完卸载对应的分区
    mkfs.vfat -F 32 -n "boot" ${DRIVE}1
    umount ${DRIVE}1
    mkfs.ext3 -L "rootfs" ${DRIVE}2
    umount ${DRIVE}2
    mkfs.ext3 -L "START_HERE" ${DRIVE}3
  • 相关阅读:
    工作流flowable官方文档阅读笔记2
    bladex代码生成表单字典(非普通字典)改造
    bladex代码生成改造字典(表管理字段带入)
    bladex前端页面设置
    重链剖分
    CodeForces 311B
    洛谷 P6302
    AtCoder abc164_f
    ISIJ2020 不知道算不算游记
    AtCoder abc165
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/4968170.html
Copyright © 2011-2022 走看看