OK335x mksd.sh hacking

简介: #! /bin/sh # mk3PartSDCard.sh v0.3 # Licensed under terms of GPLv2 # 参考文档: # 1. sfidsk创建可启动分区问题 # http://segmentfault.
#! /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

 

目录
相关文章
|
Linux
linux常用命令-离线安装PM2
因为要部署应用的机器没有公网连接,所以直接npm install pm2是不可能了, 简单记录一下怎么离线安装pm2
762 0
|
Shell Windows
[记录condaのbug] CommandNotFoundError: Your shell has not been properly configured to use ‘conda...
[记录condaのbug] CommandNotFoundError: Your shell has not been properly configured to use ‘conda...
[记录condaのbug] CommandNotFoundError: Your shell has not been properly configured to use ‘conda...
|
Ubuntu
WARNING: The scripts f2py, f2py3 and f2py3.9 are installed in ‘/home/ubuntu/.local/bin‘ which is no
WARNING: The scripts f2py, f2py3 and f2py3.9 are installed in ‘/home/ubuntu/.local/bin‘ which is no
544 0
WARNING: The scripts f2py, f2py3 and f2py3.9 are installed in ‘/home/ubuntu/.local/bin‘ which is no
|
Ubuntu 关系型数据库 MySQL
How to Install and Configure Icinga2 Monitoring Tool on Ubuntu 16.04
In this tutorial, we will explore how to install Docker on Alibaba Cloud and learn some important Docker commands to help you deploy and manage your container services.
3004 0
How to Install and Configure Icinga2 Monitoring Tool on Ubuntu 16.04
|
MySQL 关系型数据库 SQL
buildroot mysql mysql.mk hacking
/*********************************************************************** *        buildroot mysql mysql.mk hacking * 说明: * 大致看一下buildroot中mysql是如何进行配置,主要是看运行./configure * 的时候配置,有时候配置buildroot的时候,有些选项不知道,也可以到这些 * mk文件去看看,这样就知道在make menuconfig中打开什么选项了。
939 0
|
Android开发
I.MX6 mkuserimg.sh hacking
/*********************************************************************** * I.MX6 mkuserimg.sh hacking * 说明: * 上次发现Android源码使用mkuserimg.sh来打包Android文件系统,现在来 * 跟踪一下其内部的工作机制。
652 0
|
Ubuntu Shell Linux
Woobuntu woobuntu_build.sh hacking
# Woobuntu woobuntu_build.sh hacking # 说明: # 有时候因为一些需求,我们需要定制一些系统,包括Ubuntu系统,于是 # 我们自然需要知道如何去解包一个Ubuntu镜像,如何合成一个Ubuntu镜像。
809 0
|
Linux 开发工具 AI芯片
ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking
#!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking # 说明: # 本文主要对TI的sdk中的setup-minicom.sh脚本进行解读,是为了了解 # 其工作机制。
951 0