Open4
WasmLinux: Telnetしたい
まぁWeb向けにはTelnetクライアント作って載せれば良いんじゃないかなということで。。細かいプロトコルはlibtelnetとかがカバーしてくれるし、自前で実装するのもそんなに大変じゃないし。。
socketpair
して渡してみる
とりあえず
しかし上手くいかない。。
sendto
connect
に失敗している
Thread: 91 Call = 206 Ret = -107
USERTLS[91] = 3e26fb0c
(user) syscall = 203
Override syscall args (203: 6 => 3)
TLS[91]: 1 -> 38a38000
Thread: 91 Call = 203 Ret = -2
このあたりが怪しいな。。 -107
は ENOTCONN
、 -2
は ENOENT
。特に後者は一般的なエラーでないので何か間違っていることが起きていそう。
前者 w2c_kernel_0x5F_sys_sendto
にブレークポイントを貼ると ... gdbでブレークできない! ちょっとソースコードがでかすぎるか。。?
w2c_busybox__base__w2c_make_new_session
はちゃんと 0
に対して呼ばれているので、inetdとして動作しているのは間違いないが、そこから先に socket
とかで追加のsocketを生成する要因が見あたらない。
/dev/ptmx
が無い
[stdout]: drwxr-xr-x 2 0 0 0 Feb 5 21:31 .
[stdout]: drwxr-xr-x 9 0 0 0 Feb 5 21:31 ..
[stdout]: crw------- 1 0 0 5, 1 Feb 5 21:31 console
というか /dev/console
しか無いのかよ。。
... これもしかしてudevとか必要なコースか。。?とりあえず mknod
→ /dev/pts
とかをマウントしてお茶を濁す方向で。。
動いた
なんとPTYを確保してないだけだった。。
というわけで、 mknod
して、 /bin/login
の代わりに /bin/sh
を実行すればとりあえずプロンプトに入ることはできた。
ただ数秒操作すると死ぬので、その辺はデバッグしないといけない。。