OS를 Ubuntu GNOME 15.10으로 업데이트했지만 이제 큰 문제가 발생했습니다. sfdisk가 작동하지 않습니다!
임베디드 Linux용 SD 카드에 파티션을 구축하는 데 필요하지만 옵션이 변경된 것 같습니다. 계속 작동하려면 어떻게 해야 하나요?
이것은 내가 사용하는 스크립트입니다.
CARD_DEV=$1
unset LANG
umount ${CARD_DEV}* >& /dev/null
if [ -b "$CARD_DEV" ] ; then
echo "*************** Formatting SD card... ***************"
dd if=/dev/zero of=$CARD_DEV bs=1024 count=1024
SIZE=`fdisk -l $CARD_DEV | grep Disk | awk '{print $5}'`
echo DISK SIZE - $SIZE bytes
CYLINDERS=`echo $SIZE/255/63/512 | bc`
echo CYLINDERS - $CYLINDERS
{
echo 1,9,0x0C,*
echo 10,,,-
} | sfdisk -D -H 255 -S 63 -C $CYLINDERS $CARD_DEV
mkfs.vfat -F 32 -n "boot" ${CARD_DEV}1
mke2fs -j -L "filesystem" ${CARD_DEV}2
fi
나는 얻다:
sfdisk: invalid option -- 'D'
sfdisk [options] <dev> [[-N] <part>]
sfdisk [options] <command>
Display or manipulate a disk partition table.
Commands:
-A, --activate <dev> [<part> ...] list or set bootable MBR partitions
-d, --dump <dev> dump partition table (usable for later input)
-g, --show-geometry [<dev> ...] list geometry of all or specified devices
-l, --list [<dev> ...] list partitions of each device
-s, --show-size [<dev> ...] list sizes of all or specified devices
-T, --list-types print the recognized types (see -X)
-V, --verify test whether partitions seem correct
--part-label <dev> <part> [<str>] print or change partition label
--part-type <dev> <part> [<type>] print or change partition type
--part-uuid <dev> <part> [<uuid>] print or change partition uuid
--part-attrs <dev> <part> [<str>] print or change partition attributes
<dev> device (usually disk) path
<part> partition number
<type> partition type, GUID for GPT, hex for MBR
Options:
-a, --append append partitions to existing partition table
-b, --backup backup partition table sectors (see -O)
--bytes print SIZE in bytes rather than in human readable format
-f, --force disable all consistency checking
--color[=<when>] colorize output (auto, always or never)
colors disabled by default
-N, --partno <num> specify partition number
-n, --no-act do everything except write to device
--no-reread do not check whether the device is in use
-O, --backup-file <path> override default backup file name
-o, --output <list> output columns
-q, --quiet suppress extra info messages
-X, --label <name> specify label type (dos, gpt, ...)
-Y, --label-nested <name> specify nested label type (dos, bsd)
-L, --Linux deprecated, only for backward compatibility
-u, --unit S deprecated, only sector unit is supported
-h, --help display this help and exit
-v, --version output version information and exit
Available columns (for -o):
gpt: Device Start End Sectors Size Type Type-UUID Attrs Name UUID
dos: Device Start End Sectors Cylinders Size Type Id Attrs Boot End-C/H/S
Start-C/H/S
bsd: Slice Start End Sectors Cylinders Size Type Bsize Cpg Fsize
sgi: Device Start End Sectors Cylinders Size Type Id Attrs
sun: Device Start End Sectors Cylinders Size Type Id Flags
For more details see sfdisk(8).
버전:
sfdisk from util-linux 2.26.2
답변1
나에게는 좋은 소식인 것 같다. 적은 코드가 더 나은 코드입니다.
#!/bin/sh
# exit if any command fails
set -e
CARD_DEV=$1
if [ ! -b "$CARD_DEV" ] ; then
echo $CARD_DEV is not a block device
exit 1
fi
# so hopefully this will abort e.g. if we're about to blow away the root filesystem
for mounted in $(findmnt -o source | grep "^$CARD_DEV") ; do
umount "$mounted"
done
echo "*************** Formatting SD card... ***************"
wipefs --all $CARD_DEV
{
echo "$((1 * 63 * 255)), $((9 * 63 * 255)), 0x0C, *"
echo "$((10 * 63 * 255)), , , -"
} | sfdisk $CARD_DEV
mkfs.vfat -F 32 -n "boot" ${CARD_DEV}1
mke2fs -j -L "filesystem" ${CARD_DEV}2