web-dev-qa-db-ja.com

シリアルコンソールで入力を再度有効にする方法

Linuxを実行する古いルーターがあり、シリアルコンソールをオンにしたい。これは以前は正常に機能していましたが、ファームウェアの更新後、コンソールでのみ出力を取得でき、デバイスに入力を返すことができなくなりました。起動中に、以前はなかった「コンソール入力が無効になっています」という行があります。

ファームウェアを変更せずに、シリアルコンソールで入力を再度有効にするにはどうすればよいですか?

...これまでの私の試み...

LAN経由でログインして、任意のファイル(および必要に応じてクロスコンパイルツール)をロードできます。また、小さな不揮発性ユーザーフラッシュパーティションがあるため、ioctlなどを使用して簡単なプログラムを作成する必要があるソリューションであれば問題ありません。組み込みLinuxには、便利な場合に備えて、/sys/bus/sys/devices/platform/serial8250.0などのシステムファイルがあります。ファイル/dev/console/dev/ttyS0/dev/ttyには、すべて読み取りおよび書き込み権限があります。 getty -L 115200 ttyS0を実行すると、シリアルコンソールにログインプロンプトが表示されますが、入力を受け入れることができません。行を追加する

::respawn:-/bin/sh

to inittabはbusyboxにシェルプロンプトを表示させます...しかし、繰り返しになりますが、シリアルコンソールは入力を受け取りません。

dmesgレポート

Kernel command line: root=/dev/ram rw init=/init console=ttyS0,115200

そしてstty

speed 38400 baud; line=0;  

重要でない見た目の設定の束と一緒に、stty -a -F /dev/ttyS0は与えます

speed 115200 baud; stty: /dev/ttyS0  
line = 0;  

(そして、重要ではないように見える設定がたくさんありますが、必要に応じて入力します。)

ここで途方に暮れているので、どのような情報が必要かわかりません。
このパズルを解くためのアイデアはありますか?試してみ忘れたシンプルなものがあるような気がします。

2

busyboxの例inittab 少し違って見えますが、

# Example of how to put a getty on a serial line (for a terminal)
#
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100

これを試していただけませんか?

1
sr_

これは非常に古い投稿だと思いますが、SamsungTVを更新した後に同様の問題が発生したことを思い出します。おそらく、お持ちのルーターモデルは、OpenWRTなどの外部変更を許可しない会社に属しています。たとえば、ターミナルシェルアクセスを無効にする一般的な方法は、カーネルソースで無効にすることです/linux-2.6.35.11/drivers/char/n_tty.cまたはカーネルを次のようにコンパイルします:CONFIG_SERIAL_INPUT_DISABLE_STRING.。

0
not2qubit