Create partitions
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): DOS Compatibility flag is not set

Command (m for help): Changing display/entry units to sectors

Command (m for help): Command action
   e   extended
   p   primary partition (1-4)
Partition number (1-4): First sector (2048-102399, default 2048): Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-102399, default 102399): 
Command (m for help): Command action
   e   extended
   p   primary partition (1-4)
Partition number (1-4): First sector (43008-102399, default 43008): Using default value 43008
Last sector, +sectors or +size{K,M,G} (43008-102399, default 102399): Using default value 102399

Command (m for help): 
Disk /dev/sdb: 52 MB, 52428800 bytes
32 heads, 32 sectors/track, 100 cylinders, total 102400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 32768 bytes


   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       43007       20480   83  Linux
/dev/sdb2           43008      102399       29696   83  Linux

Command (m for help): The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
Alignment offsets:
0
0
Create partitions (MD)
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): DOS Compatibility flag is not set

Command (m for help): Changing display/entry units to sectors

Command (m for help): Command action
   e   extended
   p   primary partition (1-4)
Partition number (1-4): First sector (2048-100095, default 2048): Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-100095, default 100095): 
Command (m for help): Command action
   e   extended
   p   primary partition (1-4)
Partition number (1-4): First sector (22528-100095, default 22528): Using default value 22528
Last sector, +sectors or +size{K,M,G} (22528-100095, default 100095): 
Command (m for help): 
Disk /dev/md8: 51 MB, 51249152 bytes
2 heads, 4 sectors/track, 12512 cylinders, total 100096 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 65536 bytes / 131072 bytes


    Device Boot      Start         End      Blocks   Id  System
/dev/md8p1            2048       22527       10240   83  Linux
/dev/md8p2           22528       43007       10240   83  Linux

Command (m for help): The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
Alignment offsets (MD):
0
0
