1

作为我工作的一部分,我每天都使用 tftp。到目前为止,一切都很好,从昨天(2016 年 6 月 21 日)开始,它就不再起作用了。我不知道确切的原因,因为在讨论这个问题的人都找不到任何支持(是因为没有其他人像我一样使用 tftp 来使用 Apple 刷新路由器吗?)。

我启动 tftpd 的基本程序:

$ launchctl load -F /System/Library/LaunchDaemons/tftp.plist
$ launchctl start com.apple.tftpd

然后我将固件放在“/private/tftpboot”目录下,该目录已经设置为模式 0777。

为了下载固件,过程很简单:

$ tftp
tftp> connect
(to) localhost
tftp> get firmware.bin
Transfer timed out.

正如您可能猜到的那样,“传输超时”对我来说并不是一件好事。

查看带有尾部的“/var/log/system.log”,我可以在循环中看到以下消息(说真的,这是一个巨大的消息量,我的 SSD HD 几乎烧毁了,因为日志写入时这种高密集 I/O) :

...
Jun 22 14:36:59 MacBook-Pro tftpd[57553]: setgid to -2: Operation not permitted
Jun 22 14:36:59 MacBook-Pro com.apple.xpc.launchd[1] (com.apple.tftpd[57553]): Service exited with abnormal code: 1
Jun 22 14:36:59 MacBook-Pro tftpd[57554]: setgid to -2: Operation not permitted
Jun 22 14:36:59 MacBook-Pro com.apple.xpc.launchd[1] (com.apple.tftpd[57554]): Service exited with abnormal code: 1
Jun 22 14:36:59 MacBook-Pro tftpd[57555]: setgid to -2: Operation not permitted
Jun 22 14:36:59 MacBook-Pro com.apple.xpc.launchd[1] (com.apple.tftpd[57555]): Service exited with abnormal code: 1
...

因为它是一个不间断的服务,导致密集的 I/O,我不得不停止它,这是我一直做的通常的过程:

$ launchctl stop com.apple.tftpd
$ launchctl unload -F /System/Library/LaunchDaemons/tftp.plist

我需要这个工具,因为我正在研究它。您能否评估正在发生的事情?也许某些操作系统更新将这种错误行为带到了 tftpd?

运行绑定到 UDP/69 的 tftpd 的 Docker 容器都无法工作。我什至擦除了我所有的磁盘内容并尝试进行全新的 OS X 安装,认为某种错误的更新导致我的系统出现混乱。

笔记:

  1. 已经在禁用系统完整性保护(无根)的情况下尝试过:

  2. 已经尝试使用“sudo”运行 launchctl 启动程序(如上所述)。

  3. 为了获得更多意见,我从Ask DifferentServer Fault中复制了这个问题。

谢谢您最好的问候。

4

2 回答 2

0

这个问题也一直困扰着我。答案很简单……目录/private/tftpboot 中没有文件,因为苹果不再将其作为标准包含在内。我猜,Apple 希望人们购买 OS x Server 软件以恢复该附加功能。

于 2016-08-17T09:56:22.233 回答
0

只是为了结束这个问题,因为我发现没有办法tftpd像过去那样使用 Mac OS X,所以我决定解决这个问题并创建了一个基于 Vagrant、VirtualBox 的简单项目和 Docker 解决了我所有的需求:

https://github.com/rpherrera/docker-tftpd

于 2018-03-10T23:03:16.850 回答