我正在尝试对Mac上的磁盘分区表进行微小的修改;特别是,我需要更改分区的类型。 diskutil
不支持此操作,因此我无法使用它。如果磁盘未在使用中,则可以正常工作(例如通过修改的 gpt
命令行实用程序)。如果正在使用,则在打开设备文件时失败:
int fd = open("/dev/disk1", O_RDWR);
fd
是-1,errno
指示错误“资源繁忙”。
我意识到可以从不同的驱动器重新启动计算机,然后修改原始磁盘,然后再次启动。然而,这并不容易自动化/可靠地从我的应用程序内部进行。此外,diskutil
没有问题编辑活动设备的分区表,引导助理也是如此。
有已知的方法吗?最坏的情况下,我可以尝试在内核中执行此操作,但是kext并不真正设计用于执行一次性操作,而我需要在用户空间中非常简单但在内核中却相当困难。
有什么想法吗?
注意:我使用sudo
运行所有内容,因此不应该是权限问题。
/usr/standalone/i386/boot0
。即使不考虑这一点,它似乎也没有做任何聪明的事情。 - pmdjgpt
实用程序进行实验,该实用程序源自BSD。然而,diskutil
似乎不是gpt
的前端,正如我之前提到的,gpt
实际上并不能正常工作。diskutil
的源代码不可用。 - pmdj