在玩 Beagleboard 時接觸到 sfdisk 這個指令,一開始還沒怎麼弄明白,不過爬了些文章後,試了試發現 sfdisk 這指令真的很有意思。只要將想建立的 partition 資訊「餵」給它,就會將磁碟建立出對應的 partition。所以,可以在腳本裡利用 echo 和 sfdisk 配合,來建立需要的 partition。
在反覆試了幾次,我試著改了一個 mkmmc.sh 的腳本出來:
#!/bin/bash echo "[Unmounting all existing partitions on the device ]" umount $1* echo "[Partitioning $1...]" DRIVE=$1 SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'` echo DISK SIZE - $SIZE bytes CYLINDERS=`echo $SIZE/255/63/512 | bc` echo CYLINDERS - $CYLINDERS { echo ,17,0x0C,* echo ,130,,- echo ,130,,- echo ,,0x0C,- } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE &> /dev/null echo "[Making filesystems...]" mkfs.vfat -F 32 -n boot "$1"1 &> /dev/null mkfs.ext3 -L rootfs "$1"2 &> /dev/null mkfs.ext3 -L extend "$1"3 &> /dev/null mkfs.vfat -F 32 -n data "$1"4 &> /dev/null
經過這個腳本,可以建立出如下的 partition:
Disk /dev/sdb: 3965 MB, 3965190144 bytes 255 heads, 63 sectors/track, 482 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 * 1 17 136521 c W95 FAT32 (LBA) /dev/sdb2 18 147 1044225 83 Linux /dev/sdb3 148 277 1044225 83 Linux /dev/sdb4 278 482 1646662+ c W95 FAT32 (LBA)
延伸閱讀:
沒有留言:
張貼留言