我正在尝试生成startosinstall二进制文件以开始macOS升级。但是,我看到startosinstall二进制文件以root身份运行,但随后调用了一个子进程osinstallersetupd但似乎在我的标准用户帐户下运行而不是root。
最终它打破了自动化,因为我遇到了管理身份验证提示。 auth
显示流程:grep
这可能是Apple的bug /限制还是与调用第一个二进制文件的方式有关?
const spawn = require("child_process").spawn;
child = spawn("/Applications/Install macOS High Sierra.app/Contents/Resources/startosinstall",
[
"--applicationpath",
"/Applications/Install macOS High Sierra.app",
"--agreetolicense"
],
{
//maybe try some config options?
}
);
child.stderr.on("data", (data) => {
console.log(data.toString() + "\n");
});
child.stdout.on("data", (data) => {
console.log(data.toString() + "\n");
});
child.on("exit", (code, signal) => {
console.log("child process exited: " + code + "\n");
});
为了什么值得我以root身份登录并运行上面的脚本。
非常感谢任何帮助!
答案 0 :(得分:0)
我相信我已经找到了这个问题。我正在使用有助于升级的脚本部分,并发现在使用FileVault经过身份验证的重新启动时,您创建并加载了一个plist。
macOSUpgrade:https://github.com/kc9wwh/macOSUpgrade/blob/master/macOSUpgrade.sh#L278
然而,似乎我实际上并没有加载plist,这导致了一个问题。
tl; dr我没有加载plist:https://github.com/kc9wwh/macOSUpgrade/blob/master/macOSUpgrade.sh#L337