把U盘配置为两个ext3分区

#!/bin/bash  

echo -e "\\033[1;34m start make sd \\033[0m"


#获取sd卡信息
sd_main=`ls -l /dev/disk/by-id/ | grep usb- | awk -F '/'  'NR==1{print $3}'`
sd_1=`ls -l /dev/disk/by-id/ | grep usb- | awk -F '/'  'NR==2{print $3}'`
sd_2=`ls -l /dev/disk/by-id/ | grep usb- | awk -F '/'  'NR==3{print $3}'`

if [ -d "/dev/$sd_main" ]; then
    echo"please insert the sd card!"
    exit
fi

#分区前先取消挂载
disk="/dev/$sd_1"
mount | grep $disk
if [ $? = '0' ]; then
    echo umount "$disk"
    umount $disk
fi

disk="/dev/$sd_2"
mount | grep $disk
if [ $? = '0' ]; then
    echo umount "$disk"
    umount $disk
fi

#获取磁盘信息
disk="/dev$sd_main"

#磁盘分区,默认两个分区
echo -e "\\033[1;34m fdisk $disk now ... \\033[0m "

#删除分区信息
dd if=/dev/zero of=$disk bs=1 count=64 seek=446 >/dev/null

#重新分区,第一个区分配2G 第二个分区为剩余大小(如下的分区参数不能随意更改)
fdisk $disk >/dev/null <<EOF
n
p
1

4196352
n
p
2


w
EOF

#分区格式化
echo -e "\\033[1;34m format $disk ... \\033[0m "

#获取分区1的信息
sd_1=`ls -l /dev/disk/by-id/ | grep usb- | awk -F '/'  'NR==2{print $3}'`

#把分区1格式化成ext4格式
mkfs.ext3 -L rootfs /dev/$sd_1
if [ $? = '0' ]; then
    echo -e "\\033[1;34m mkfs.ext3 /dev/$sd_1 success! \\033[0m"
else
    echo -e "\\033[1;34m mkfs.ext3 /dev/$sd_1 error! \\033[0m"
fi

#获取分区2的信息
sd_2=`ls -l /dev/disk/by-id/ | grep usb- | awk -F '/'  'NR==3{print $3}'`

#把分区2格式化成ext4格式
mkfs.ext3 -L logfs /dev/$sd_2
if [ $? = '0' ]; then
    echo -e "\\033[1;34m mkfs.ext3 /dev/$sd_2 success! \\033[0m"
else
    echo -e "\\033[1;34m mkfs.ext3 /dev/$sd_2 error! \\033[0m"
fi

这段脚本主要是查找usb下的储存设备,然后获取设备号进行分区格式化

echo -e "\\033[1;34m start make host sd \\033[0m"

这主要是以黑底蓝字显示(1表示黑色底,34m表示蓝字字)

sd_main=`ls -l /dev/disk/by-id/ | grep usb- | awk -F '/'  'NR==1{print $3}'`

| 是shell中的管道,将前面的命令结果作为后面一个命令的输入

grep linux 文本搜索工具 此处是搜素以usb-开头的文本

awk 文本分析工具  -F指定输入文件文本拆分符

awk -F '/' 'NR==1{print $3}'表示以、为分隔符,输出分隔符的第三个参数

dd if=/dev/zero of=$disk bs=1 count=64 seek=446 >/dev/null

/dev/null,它是空设备.看作"黑洞",它非常等价于一个只写文件,所有写入它的内容都会永远丢失

/dev/zero也是一个伪文件,但它实际上产生连续不断的null的流(二进制的零流,而不是 ASCII型的)。写入它的输出会丢失不见

#重新分区,第一个区分配2G 第二个分区为剩余大小(如下的分区参数不能随意更改)
fdisk $disk >/dev/null <<EOF
n
p
1

4196352
n
p
2


w
EOF

使用<<EOF,告诉主shell,后续的输入,是其他命令或者子shell的输入,直到遇到EOF为止,再回到主shell。

这里是使用fdisk进行分区

分区大小的计算;我第一个分区是2G,在在上面输入的参数是4196352 这个是怎么计算出来的呢

先看看磁盘信息 fdisk -l

sdb是U盘信息

终止柱面号 = 起始柱面号 + [(需要分区的大小 * 1024 * 1024 ) / units]

4196352=2048+[(2048*1024*1024)/512]

mkfs.ext3 -L logfs /dev/$sd_2

分区完成后,最后再将分区后的盘格式化成ext3 格式,当然也可以格式化ext4、fat等格式

猜你喜欢

转载自blog.csdn.net/wwy__/article/details/82867011