sfdisk가 더 이상 작동하지 않나요?

sfdisk가 더 이상 작동하지 않나요?

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

관련 정보