Provided by: udftools_2.0-2_amd64 bug


       mkudffs - create an UDF filesystem


       mkudffs [ options ] device [ blocks-count ]


       mkudffs  is  used  to create a UDF filesystem on a device (usually a disk).  device is the
       special file corresponding to the device (e.g.  /dev/hdX) or file image.  blocks-count  is
       the  number  of  blocks  on  the  device.  If  omitted,  mkudffs automagically figures the
       filesystem size.  The order of options matters. Encoding option must be first and  options
       to override default settings implied by the media type or UDF revision should be after the
       option they are overriding.


              Display the usage and list of options.

       -l,--label= label
              Specify the UDF label. UDF label is synonym for specifying both  --lvid  and  --vid
              options.  If  omitted,  mkudffs label is LinuxUDF.  (Option available since mkudffs

       -u,--uuid= uuid
              Specify the UDF uuid. Must be exactly 16 hexadecimal lowercase digits and  is  used
              for first 16 characters of --fullvsid option. If omitted, mkudffs uuid is generated
              from local time and random number.  (Option available since mkudffs 1.1)

       -b,--blocksize= block-size
              Specify the size of blocks in bytes. Valid block size for a UDF filesystem is power
              of two in range from 512 to 32768 and must match a device logical (sector) size. If
              omitted, mkudffs block-size is set  to  device  logical  block  (sector)  size.  If
              logical  block  (sector)  size  is unknown (e.g. when creating disk image) then for
              --media-type=hd is used block-size 512 and for other media types 2048.

       -m,--media-type= media-type
              Specify the media type. Must be specified before --udfrev.  Valid media types are:

                   hd (default)    HD (Hard Disk)

                   worm            WORM (Write Once Read Many)

                   mo              MO (Magneto Optical)

                   cd              CD-ROM (CD Read-Only Memory)

                   cdr             CD-R (CD Recordable)

                   cdrw            CD-RW (CD Read-Write)

                   dvd             DVD-ROM (DVD Read-Only Memory)

                   dvdr            DVD-R (DVD Recordable)

                   dvdrw           DVD-RW (DVD Read-Write)

                   dvdram          DVD-RAM (DVD Random Access Memory)

                   bdr             BD-R (Blu-ray Disc Recordable)

              (Short option variant -m and values cd, dvdr, bdr are available since mkudffs 2.0)

       -r,--udfrev= udf-revision
              Specify the UDF revision to use, either in hexadecimal  (e.g.  0x0201)  or  decimal
              (e.g. 2.01) format. Valid revisions arei 1.02, 1.50, 2.00, 2.01, 2.50 and 2.60.  If
              omitted, mkudffs udf-revision is 2.01, except for Blu-ray Discs which is 2.50.  UDF
              revisions  higher  then  2.01  are  experimental.  Option  must  be specified after
              --media-type. (Values  in  decimal  format  and  revisions  higher  then  2.01  are
              supported since mkudffs 2.0)

              Not  really,  do  not  write to device. Just simulate and display what would happen
              with device. Useful for determining calculated location of  different  UDF  blocks.
              (Option available since mkudffs 2.0)

              Create  a  new  image  file  specified by device with blocks-count and fail if file
              already exists. If omitted, mkudffs creates a new image file only in case  it  does
              not exist yet.  (Option available since mkudffs 2.0)

       --lvid= logical-volume-identifier
              Specify     the     Logical     Volume     Identifier.    If    omitted,    mkudffs
              logical-volume-identifier  is  LinuxUDF.  Most  UDF   implementations   uses   this
              identifier as a disk label.

       --vid= volume-identifier
              Specify the Volume Identifier. If omitted, mkudffs volume-identifier is LinuxUDF.

       --vsid= volume-set-identifier
              Specify  the  17.-127.  character  of  Volume  Set  Identifier. If omitted, mkudffs
              volume-set-identifier is LinuxUDF.

       --fsid= file-set-identifier
              Specify the  File  Set  Identifier.  If  omitted,  mkudffs  file-set-identifier  is

       --fullvsid= full-volume-set-identifier
              Specify  the  full  Volume  Set  Identifier.  Overwrite  previous --uuid and --vsid
              options. (Option available since mkudffs 1.1)

       --uid= uid
              Specify the uid of the root (/) directory. If omitted, mkudffs uid  is  0.  Special
              value -1 means invalid or not specified uid.  (Option available since mkudffs 1.1)

       --gid= gid
              Specify  the  gid  of the root (/) directory. If omitted, mkudffs gid is 0. Special
              value -1 means invalid or not specified gid.  (Option available since mkudffs 1.1)

       --mode= mode
              Specify permissions in octal mode bits of  the  root  (/)  directory.  If  omitted,
              mkudffs mode is 0755. (Option available since mkudffs 2.0)

       --bootarea= fill
              Specify  how  to  fill UDF boot area which is first 32kB of disk and is not used by
              UDF itself. Option mbr make sense only when running mkudffs on whole disk,  not  on
              just one partition. Valid options are:

                   preserve        preserve  existing UDF boot area, do not touch it (default for
                                   media type different from hd)

                   erase           erase existing UDF boot area, fill it by zeros (default for hd
                                   media type on partitions and on removable disks)

                   mbr             put  MBR  table  with  one  partition which starts at sector 0
                                   (includes MBR itself) and spans whole disk device, needed only
                                   for non-removable hard disks used on Microsoft Windows systems
                                   (default for hd media type on non-removable hard disk  without
                                   partitions), see section WHOLE DISK VS PARTITION

              (Option available since mkudffs 2.0)

       --strategy= strategy
              Specify  the  allocation  strategy  to  use.  Valid  strategies  are 4 and 4096. If
              omitted, mkudffs strategy is based on the --media-type.

       --spartable, --spartable= spartable-number
              Enable usage Sparing Table. Optionally specify also the number of  sparing  tables.
              Valid numbers are 1-4. When spartable-number is omitted then two tables are written
              to disc. If option is omitted then usage of Sparing Table depends  on  media  type.
              (Option prior to mkudffs 2.0 was available only for cdrw media type)

       --sparspace= num-of-entires
              Specify  the  number  of  entries  in  Sparing Table. If omitted, default number of
              entries is 1024, but depends on media type. (Option available since mkudffs 2.0)

       --packetlen= length
              Packet length in number of blocks for Sparing Table. It specify also  size  of  the
              Sparing Space. If omitted, default value for DVD discs 16 blocks, otherwise 32.

       --vat  Enable  usage of Virtual Allocation Table (VAT). If omitted, usage depends on media
              type. (Option available since mkudffs 2.0)

              Close disc with Virtual Allocation Table. AVDP is written also to the end of  disc.
              By default disc with Virtual Allocation Table is not closed.

       --space= space
              Specify  the Space Set. Unallocated Space Set is used for media which blocks may be
              allocated immediately. Freed Space Set is used for media which blocks needs  to  be
              specially  prepared/erased  before  allocation.  In  Space  Table is stored list of
              unallocated extents. In Space Bitmap is stored bitmap of  unallocated  blocks.  Not
              used for VAT.

                   freedbitmap     Freed Bitmap

                   freedtable      Freed Table

                   unallocbitmap   Unallocated Bitmap (default)

                   unalloctable    Unallocated Table

       --ad= ad
              Specify the Allocation Descriptors of the root (/) directory.

                   inicb           Allocation Descriptors in ICB (default)

                   short           Short Allocation Descriptors

                   long            Long Allocation Descriptors

              Don't  Use  Extended File Entries for the root (/) directory. Affects only UDF 2.00
              or higher. Must be specified after --udfrev.

              Treat identifier string options as strings  encoded  according  to  current  locale
              settings  (default).  Must be specified as first argument.  (Option available since
              mkudffs 2.0)

       --u8   Treat identifier string options as strings encoded in 8-bit OSTA Compressed Unicode
              format, equivalent to Latin1 (ISO-8859-1). Must be specified as first argument.

       --u16  Treat  identifier  string  options  as  strings  encoded  in 16-bit OSTA Compressed
              Unicode format, equivalent to UCS-2BE. Note that it is not possible to include zero
              byte  in  command line options, therefore any character which has at least one zero
              byte cannot be supplied (this applies to all Latin1 characters). Must be  specified
              as first argument.

       --utf8 Treat  identifier  string options as strings encoded in UTF-8. Must be specified as
              first argument.


       UDF filesystem is natively supported by large amount of operating systems.  See  following
       compatibility table:

       │     Operating system       │ Maximum UDF revision for │
       │  Name   │     Version      │    read    │    write    │
       │         │ 2.3.17 - 2.4.5   │    2.00    │    2.00     │
       │Linux    │ 2.4.6 - 2.6.25   │    2.01    │    2.01     │
       │         │ 2.6.26 (and new) │    2.50    │    2.01     │
       │         │ 98/Me            │    1.02    │    none     │
       │Windows  │ 2000             │    1.50    │    none     │
       │         │ XP               │    2.01    │    none     │
       │         │ Vista (and new)  │    2.60    │    2.50     │
       │Mac OS   │ 8.1 - 8.5        │    1.02    │    none     │
       │         │ 8.6 - 9.2        │    1.50    │    1.50     │
       │         │ 10.0 - 10.3      │    1.50    │    1.50     │
       │Mac OS X │ 10.4             │    2.01    │    2.01     │
       │         │ 10.5 (and new)   │    2.60    │    2.50     │
       │FreeBSD  │ 5 (and new)      │    1.50    │    none     │
       │NetBSD   │ 4.0              │    2.60    │    none     │
       │         │ 5.0 (and new)    │    2.60    │    2.60     │
       │         │ 3.8 - 3.9        │    1.02    │             │
       │OpenBSD  │ 4.0 - 4.6        │    1.50    │    none     │
       │         │ 4.7 (and new)    │    2.60    │             │
       │Solaris  │ 7 (and new)      │    1.50    │    1.50     │
       │AIX      │ 5.2 (and new)    │    2.01    │    2.01     │

       Note  that  Windows 98 and Windows Me can read UDF filesystem only from CD and DVD optical
       discs, not from hard disks.

       In most cases operating systems are unable to mount  UDF  filesystem  if  UDF  block  size
       differs  from  logical  sector  size  of device. Typically hard disks have sector size 512
       bytes and optical media 2048 bytes. Therefore UDF block size  must  match  logical  sector
       size of device.

       Linux  kernel  prior  to  version  2.6.30  used  hardcoded  UDF  block  size of 2048 bytes
       independently of logical sector size, therefore it was not able to automatically mount UDF
       filesystem  if  block size differed from 2048. Since 2.6.30 and prior to 4.11 Linux kernel
       used logical sector size of device as UDF block size, plus  it  tried  fallback  to  2048.
       Since  4.11  it  uses  logical  sector  size and fallbacks to any valid block size between
       logical  sector  size  and  4096.  Therefore  since  version  2.6.30  Linux   kernel   can
       automatically  mount  UDF  filesystems  correctly if UDF block size matches device logical
       sector size and since version 4.11 can automatically also mount devices which sector  size
       does  not  match  UDF  block  size. In any case and also for Linux kernel prior to version
       2.6.30, different UDF block size (which is not autodetected) can be manually specified via
       bs=blocksize mount parameter.

       UDF  filesystem  is supposed to be formatted on the whole media and not to the partitioned
       hard disk. Mac OS X systems enforce this  rule  and  reject  to  automatically  mount  UDF
       filesystem unless it is formatted on the whole unpartitioned hard disk. Possible partition
       table (e.g. MBR or GPT) on disk with valid UDF filesystem is ignored. On  the  other  hand
       Microsoft Windows systems are unable to detect non-removable hard disks without MBR or GPT
       partition table.  Removable disks do not have this restriction. Consequence is  that  non-
       removable  hard  disks  formatted  to UDF by Windows Vista+ are not recognized by Mac OS X
       systems and vice-versa. Note that manual mount of UDF partition on partitioned  hard  disk
       on   Mac   OS   X  system  is  possible  and  working  (e.g.  by  running  commands  mkdir
       /Volumes/DriveName && mount_udf /dev/disk1s1 /Volumes/DriveName). But there  is  no  known
       way to mount unpartitioned non-removable disk on Windows system.

       Thanks  to reserved and unused UDF boot area (first 32kB of UDF filesystem) it is possible
       to deal with this problem, by putting  MBR  on  such  non-removable  hard  disk  just  for
       compatibility  reasons  with  Windows.  Such  MBR  table would contain one partition which
       starts at sector 0 (includes MBR itself) and span whole disk device.  So  the  whole  disk
       device  and  also first partition on disk points to same sectors. Therefore UDF filesystem
       can be mounted either from whole disk device (needed for Mac OS X systems) or  from  first
       partition (needed for Microsoft Windows systems).

       Linux  kernel  ignores MBR table if contains partition which starts at sector 0.  Normally
       Linux kernel can detect and mount UDF filesystem either on  partition  or  on  whole  disk
       device. It does not have any restrictions.

       mkudffs  option --bootarea=mbr put such MBR table for compatibility with Microsoft Windows
       systems into disk when formatting.

       In most cases Logical Volume Identifier is used as UDF label. But Linux libblkid prior  to
       version  2.26  used Volume Identifier. Therefore mkudffs --label for compatibility reasons
       set both Logical Volume Identifier and Volume Identifier.

       Linux libblkid prior to version 2.30 incorrectly processed  non-ASCII  identifier  strings
       encoded  in  8-bit OSTA Compressed Unicode format. Therefore mkudffs since version 2.0 for
       compatibility reasons  tries  to  encode  non-ASCII  identifier  strings  in  16-bit  OSTA
       Compressed Unicode format and then fallbacks to 8-bit format.

       For more information about UDF Label and UUID see udflabel(8) section UDF LABEL AND UUID.


       mkudffs returns 0 if successful, non-zero if there are problems.


       mkudffs  cannot  create  UDF  2.50  Metadata  partition, therefore it does not support UDF
       revisions higher then 2.01 for non Write Once media  yet.  So  there  is  no  support  for
       Blu-ray  discs  which  needs  UDF  2.50 (except for Blu-ray Disc Recordable which does not
       require Metadata partition).


       mkudffs prior to version 1.1 was unable to process non-ASCII  characters  from  identifier
       strings in --utf8 mode, --vsid option was completely broken and --blocksize must have been
       manually specified for hard disks as  default  value  was  hardcoded  for  optical  disks.
       mkudffs prior to version 2.0 generated broken and unreadable cdr disc images.


       Ben Fennema <>
       Pali Rohár <>


       mkudffs    is    part    of    the    udftools    package    and    is    available   from


       pktsetup(8), udflabel(8), cdrwtool(1), udfinfo(1), wrudf(1)