我这里有一台 WD MyBook WorldEdition II (White Light) NAS。这实际上是一个ARM926EJ-S
连接了两个 SATA 驱动器的 NAS。很长一段时间以来,我都在它上面运行 Debian 6.0 Squeeze。现在我最近更新到了 Debian 7.0 Wheezy,升级过程中有一个自定义步骤,我将在下文中介绍。
不幸的是,系统必须在内核版本 2.6.24 上运行。这是因为 WD 对内核做了一些修补,并且有一段时间没有更新了。我(目前)无法将这些修补程序应用于较新的内核版本。因此,我无法libc
在 内更新apt-get dist-upgrade
。Wheezylibc
要求最低内核为 2.6.26。但是,我交叉编译了libc
wrt 内核 2.6.24。这在某个论坛上宣传过,并声称可以工作。最终在手动升级后libc
,apt-get dist-upgrade
成功继续。
但是,重启后我无法通过 SSH 打开 shell。相反,我收到以下错误消息:
PTY allocation request failed on channel 0
[...]
stdin: is not a tty
但是我可以执行命令。
经过进一步调查后,我发现其中/var/log/auth.log
包含:
sshd[4161]: error: openpty: Invalid argument
sshd[4161]: error: session_pty_req: session 0 alloc failed
为了openpty: Invalid argument
我只找到了最少的信息,例如此论坛帖子,用户最终重新安装了 SSH 服务器。
更多信息:
mount
显示已/dev/pts
安装。/dev/pts
但是是空的(如果没有人登录,我认为这是正常的)。- 降级
openssh-server
至压缩版本没有帮助。
所以,现在我的知识已经用尽了。如果能有一种方法来调试Invalid argument
实际传递给 的内容,那就太好了openpty
。
答案1
因此,我能够通过libc
再次重新编译来解决这个问题。我猜想这一定是工具链中的问题,因为这次我使用了chroot
特别设置为的wheezy
。