I updated to Ubuntu 15.10 but it causes a huge issue for me: sfdisk doesn't work anymore.

I really need sfdisk to build partitions on SD card for my embedded Linux but it seems that options have changed.

Here is my script:


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 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

And the output error:

sfdisk: invalid option -- 'D'

 sfdisk [options] <dev> [[-N] <part>]
 sfdisk [options] <command>

Display or manipulate a disk partition table.

 -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

 -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
 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
  • Instead of this: sfdisk -D -H 255 -S 63 -C $CYLINDERS $CARD_DEV | Try this: sfdisk --DOS -H 255 -S 63 -C $CYLINDERS $CARD_DEV – Raphael Nov 10 '15 at 14:37
  • I get sfdisk: unrecognized option '--DOS'. It seems that all the options I use were removed :S – didil Nov 10 '15 at 14:49
  • Version 2.26 of sfdisk changed this: Since version 2.26 sfdisk supports MBR (DOS), GPT, SUN and SGI disk labels, but no longer provides any functionality for CHS (Cylinder- Head-Sector) – Tobias Nov 10 '15 at 15:10
  • OK. So how to continue to create partitions? Will it works with my embedded system? – didil Nov 10 '15 at 15:12
  • The man page is still the old version. – didil Nov 10 '15 at 15:58

This seems to be a working version of the command that works in both old and new sfdisk versions.

# p1 74MB FAT
# p2 Remainder Linux
sfdisk -u S -L $CARD_DEV << EOF

"-u S" sets the units to sectors which is default in the new version but required to be set in old version

"-L" keeps the old version from erroring out when creating the partitions.

source: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/509510

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.