High Sierra で Google Drive File Stream をインストールしたんだけど、アプリ開始時になんかエラーがでて動かない。通知センターに「エラー起きたから同期を止めた」みたいなエラーが出てた。
~/Library/Application\ Support/Google/DriveFS/Logs/drive_fs.txt には以下のログ。
2017-12-02T17:37:42ZE [123145486962688] stderr: mount_dfsfuse: the DFSFUSE file system is not available (255) 2017-12-02T17:37:42ZE [123145488572416] mount.cc:92:Mount Could not mount fuse at /Volumes/GoogleDrive. 2017-12-02T17:37:42ZE [123145488572416] core.cc:235:MaybeUpdateExitCode Terminating with error: FILE_SYSTEM_FAILURE 2017-12-02T17:37:42ZE [123145486962688] stderr: fuse: failed to mount file system: No such file or directory
kextstat すると確かに dfsfuse は無く、どういうエラーが出てるのかわからないので強引に kextutil(8) してみた。
% sudo kextutil -v 6 /Library/StagedExtensions/Applications/Google\ Drive\ File\ Stream.app/Contents/MacOS/dfsfuse.kext Kext user-space log filter changed from 0xff2 to 0xfff. Kext kernel-space log filter changed from 0xff2 to 0xfff. Kext library architecture set to x86_64. Can't stat /AppleInternal - No such file or directory. Defaulting to kernel file '/System/Library/Kernels/kernel' Kext library recording diagnostics for: validation authentication dependencies warnings. Reading loaded kext info from kernel. (kernel) User-space log flags changed from 0x0 to 0xfff. (kernel) Received 'Get Loaded Kext Info' request from user space. (kernel) Returning loaded kext info. Loaded kext info: { } Kext rejected due to system policy: <OSKext 0x7f8833625760 [0x7fff86190570]> { URL = "file:///Library/StagedExtensions/Applications/Google%20Drive%20File%20Stream.app/Contents/MacOS/dfsfuse.kext/", ID = "com.google.dfsfuse.filesystems.dfsfuse" } Diagnostics for /Library/StagedExtensions/Applications/Google Drive File Stream.app/Contents/MacOS/dfsfuse.kext: %
"Kext rejected due to system policy" でググったら以下を確認せよ、と。
% sqlite3 /private/var/db/SystemPolicyConfiguration/KextPolicy '.dump kext_policy' PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE kext_policy ( team_id TEXT, bundle_id TEXT, allowed BOOLEAN, developer_name TEXT, flags INTEGER, PRIMARY KEY (team_id, bundle_id) ); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmioplug.17.1.2',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmx86',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmnet',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmci',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EQHXZ8M8AV','com.google.dfsfuse.filesystems.dfsfuse',0,'Google, Inc.',4); COMMIT;
きっとこの flags=0 なのが悪いんだろうなと思って KextPolicy でググってたら、
Technical Note TN2459: User-Approved Kernel Extension Loading というページが見つかった。
結論として、 System Preferences の Security & Privacy に allow ボタンがあるので押せば動くようになりました。
% sqlite3 /private/var/db/SystemPolicyConfiguration/KextPolicy '.dump kext_policy' PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE kext_policy ( team_id TEXT, bundle_id TEXT, allowed BOOLEAN, developer_name TEXT, flags INTEGER, PRIMARY KEY (team_id, bundle_id) ); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmioplug.17.1.2',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmx86',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmnet',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EG7KH642X6','com.vmware.kext.vmci',1,'VMware, Inc.',8); INSERT INTO kext_policy VALUES('EQHXZ8M8AV','com.google.dfsfuse.filesystems.dfsfuse',1,'Google, Inc.',1); COMMIT;