2018年12月19日水曜日

from HFS+ to APFS

 「macOS Mojave」へアップデートしたとき、APFSはLinuxで使えると知って1、外部ディスクとして使っている3TBをAPFSにしたいな、と思っていた2。それでうだうだ、考えた。余っているハードディスクにcopyして——でも3TBも入らないよな——別々にばらさなきゃ、いかんし——どうしよう。
 で、ふと気づいた。
 OSのアップデートのとき、HFS+から変換してくれたんだから直接、変換できるんじゃね?
 ググったらでてきた。
 なるほど、ディスクユーティリティを使えば、いいのか。
 ところが。
 ところがである。
 3TBではAPFS変換が選べない。

 なんでよ、なんで。ググっても対応方法は見つからず。
 調べてみるうちにLinuxからHFS+をmountできることを知る(そもそもAPFSへ変換する意味がなくなった)。FreeBSDからはうまくいかなかった記憶があるのでだめだ、と思いこんでいた。
 それならAPFSにしなくていいか。
 そうなったら手を思いつくもので。
 commandレベルからならできるんじゃね? APFS変換。
 「man diskutil」を見てみると、できるっぽい。しかもdryrunが可能。
 試してみる。

bash-3.2$ diskutil APFS convert /dev/disk4s2 -dryrun
Rehearsing the conversion of the volume on disk4s2 to an APFS Volume on an APFS Container
Started APFS operation on disk4s2 3TB
Dry run of HFS Volume conversion to an APFS Container with a single APFS Volume
The target is the Journaled HFS+ volume "3TB" backed by the GPT partition disk4s2
The target is a data disk; it is not a macOS system disk
Found APFS EFI driver /usr/standalone/i386/apfs.efi to install into the APFS Container
The target is not encrypted
Unmounting disk4s2
Starting dry run test of conversion from HFS to APFS
Performing apfs_hfs_convert --dry-run --watchdog=1800 -x --verbose=0x400 /dev/disk4s2
Reporting pre-conversion statistics
Reporting post-conversion statistics
Successfully finished dry run of conversion from HFS to APFS
Dry run mode so will not touch type
Not mounting APFS Volume
Exiting conversion operations with error code 0
Finished APFS operation on disk4s2 3TB
bash-3.2$

 おっ、できそうだ。

Footnotes:

1

wikiにも書かれていた。

2

何か、あったとき、Beelink S1のUbuntu経由でレスキューできる。