MacのDisk Utilityでは結合できないパーティションをdiskutilコマンドで結合する


# いきさつ
Macをクリーンインストールしようと思って，ゴミパーティションをGUIで結合しようしたけど，エラーが出て消せなかったので．

ちなみにそのゴミパーティションとは，昔Ubuntuをデュアルブートでいれていたときの名残で，LinuxSwapが1GBほど，メイン領域が100GBほどありました．

一応，パーティションを生のコマンドで操作するので，実行は **自己責任**でお願いします．



# 方法
タイトルの通り，`diskutil`コマンドを使います．

`diskutil`コマンドとは，ローカルディスク構造を操作できるコマンドです(`man diskutil`より)



# 使用する **verb**と手順
* `list`
* `eraseVolume`
* `mergePartitions`


## list
`diskutil list`で現在のローカルディクス構造が確認できます．

```
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            648.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s6
   4:                 Linux Swap                         1.1 GB     disk0s4
   5:       Microsoft Basic Data                         100.1 GB   disk0s5
/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +647.7 GB   disk1
                                 Logical Volume on disk0s2
                                 30649FB4-18AD-47BB-880F-454CE3E36A8D
                                 Unencrypted
```

今回消したいのは， **/dev/disk0**の **Linux Swap**と **Microsoft Basic Data**パーティションです(ほんとはUbuntuが入っているのだけれど)．

`eraseVolume`や`mergePartitions`するときに与えるパーティション名は一番右側の **IDENTIFIER**というのを使用します．今回の例で言えば **disk0s4**と **disk0s5**になります．



## eraseVolume
パーティションをフォーマットします．書式は次の通り．

```
eraseVolume format name device
```

**format**はフォーマット形式， **name**はフォーマット後のパーティション名，　**device**はフォーマットしたいパーティション名を指定します．

今回は， **disk0s4**および **disk0s5**を **Mac OS拡張(ジャーナル)**形式でフォーマットしたいので，以下のコマンドを順に実行しました．

```
$ diskutil eraseVolume JHFS+ new disk0s5
Started erase on disk0s5
Unmounting disk
Erasing
Initialized /dev/rdisk0s5 as a 93 GB case-insensitive HFS Plus volume with a 8192k journal
Mounting disk
Finished erase on disk0s5 new

$ diskutil eraseVolume JHFS+ new2 disk0s4
Started erase on disk0s4
Unmounting disk
Erasing
Initialized /dev/rdisk0s4 as a 1023 MB case-insensitive HFS Plus volume with a 8192k journal
Mounting disk
Finished erase on disk0s4 new2
```

実行後の状態は次の通りです．

```
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            648.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s6
   4:                  Apple_HFS new2                      1.1 GB   disk0s4
   5:                  Apple_HFS new                     100.0 GB   disk0s5
/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +647.7 GB   disk1
                                 Logical Volume on disk0s2
                                 30649FB4-18AD-47BB-880F-454CE3E36A8D
                                 Unencrypted
```



## mergePartisions
パーティション同士を結合します．書式は次の通り．

```
mergePartitions [force] format name fromDevice toDevice
```

**fromDevice**と **toDevice**に結合したい2つのパーティションを指定します．このとき **force**オプションをつけると，結合後のパーティションはフォーマットされ，既存のデータの保持はできません．

今回は既に`eraseVolume`でフォーマット済みですが， 念のため **force**を指定しました(今回の場合多分 **force**はいらないかも)．

```
$ diskutil mergePartitions force JHFS+ new3 disk0s4 disk0s5
Format disk-node disk0s4 (/Volumes/new2)? (y/N) y
Merging partitions into a new partition
     Start partition: disk0s4 new2
     Finish partition: disk0s5 new
Started partitioning on disk0
Merging partitions
Waiting for the disks to reappear
Formatting disk0s4 as Mac OS Extended (Journaled) with name new3
Initialized /dev/rdisk0s4 as a 94 GB case-insensitive HFS Plus volume with a 8192k journal
Mounting disk
Finished partitioning on disk0
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            648.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s6
   4:                  Apple_HFS new3                    101.1 GB   disk0s4
```

これで晴れてGUIのDisk Utilityでは結合できなかったパーティションを結合できました．