我正在尝试对 Mac 上的磁盘分区表进行细微修改;特别是,我需要更改分区的类型。diskutil
不支持这个,所以我不能使用它。gpt
如果磁盘不在使用中,它可以正常工作(例如,通过修改的命令行实用程序)。如果是,则打开设备文件时失败:
int fd = open("/dev/disk1", O_RDWR);
fd
为 -1 并errno
指示错误“资源繁忙”。
我意识到我可以从另一个驱动器重新启动机器,从那里修改原始磁盘,然后重新启动。然而,从我的应用程序内部实现自动化/可靠并不容易。此外,diskutil
编辑直播设备的分区表没有问题,训练营安装程序也没有。
有没有已知的方法可以做到这一点?最坏的情况,我可以尝试在内核中进行,但 kext 并不是真正为一次性的事情而设计的,我需要做的实际上是在用户空间中非常简单,但在内核中却很难。
有任何想法吗?
注意:我用 运行所有东西sudo
,所以它不应该是权限问题。