私が達成したいこと

私が達成したいこと

私が達成したいこと

USB-RS232アダプタを介して自分のNAS(Debian Stretchを実行)にリモートでアクセスしたいです。このシステムはヘッドレスになっているのでシリアルラインでブートプロセスも確認したいと思います。

(ただし、この問題を評価するために現在HDMIポートに画面が接続されています。)

私がとった行動

console=ttyUSB0カーネルパラメータリストに追加します。これにより、起動時にシステムが停止します。

ブート出力の最後の数行は次のとおりです。 (ブートローダはextlinuxです)

Loading /vmlinuz... ok
Loading /initrd.img...ok
Probing EDD (edd=off to disable)... ok

そのカーネルパラメータを使用しないと、システムは問題なく起動します。ここでは、次を実行してシリアル端末アクセスを簡単に実行できます。

systemctl enable [email protected]
systemctl start [email protected]

リモートサーバーから

screen -F /dev/ttyUSB0 9600

私のローカルコンピュータから。したがって、USB-RS232アダプタは正しく動作します。サーバーはインテル NUC 5CPYHBraswellチップセットが装備され、Linux 4.9.0-4-amd64Debianカーネルを実行します。

私の質問

これを機能させるにはどのような措置を講じるべきですか?

編集1

起動パラメータが指定されていると、console=tty0 console=ttyUSB0,9600n8マシンは正常に起動しますが、シリアルポートにはまだ接続できません。また、サービスは次のとおりです。私はそれが実行されることを望みました。systemctl status [email protected]loadedinactive (dead)

編集2

私はいくつかの調査を行った結果、私のinitramfsに関連するカーネルモジュールがないことがわかりました。カーネル引数を提供してinitramfsシェルに入ることができましたが、デバイスはbreak=init見えませんでした/dev/ttyUSB0

initramfsを再生成した後、、、およびを追加しましたが、cp210xinitramfspl2303シェルにデバイスがあることを確認しました。ftdi_sio/etc/initramfs-tools/modules/dev/ttyUSB0

それでも他のコンピュータでは接続できません。そのため、そのデバイスで手動でgettyを起動しようとしています。

# /sbin/getty -L 9600 /dev/ttyUSB0 vt100
getty: setsid: Operation not permitted
# su root -c "/sbin/getty -L 9600 /dev/ttyUSB0 vt100"
sh: su: not found

これが私が今いるところです。

答え1

システムが停止していません。先ほど監督しました。みんなシリアルコンソールに出力されます。

コンソールパラメータをカーネルに渡すには、ローカルコンソールとシリアルインタフェースの両方を含める必要があります。

バラよりTLDP - リモートシリアルコンソール方法 - 第5章Linuxカーネルの設定

図 5-2.推奨カーネルパラメータ、グラフィックカードを搭載したコンピュータ

console=tty0 console=ttyS0,9600n8

カーネルメッセージは、最初の仮想端末とシリアルポートに表示されます。初期化システムおよびシステムロガーのメッセージは、最初のシリアルポートにのみ表示されます。接続されているモニターを見ると少し混乱することがあります。コンピュータが起動して停止するようです。パニックにならないでください。初期化システムは起動しましたが、シリアルポートにメッセージを印刷していますが、画面には何も印刷されません。 gettyが設定されると、最終的にlogin:プロンプトが接続されたモニタに表示されます。

グラフィックカードを持たないPCの場合、このHOWTOではカーネルパラメータをお勧めします。

図 5-3.推奨カーネルパラメータ、グラフィックカードのないコンピュータ

console=ttyS0,9600n8

これらのパラメータはブートローダによってブートカーネルに渡されます。次に、Linuxのインストールに使用されるブートローダを設定して、コンソールパラメータをカーネルに渡します。

答え2

CONFIG_USB_SERIAL_CONSOLE=yDebianは現在、この機能が正しく機能するために必要なものを使用してLinuxカーネルを構築しません。

対応するバグレポートは次のとおりです。https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868352

独自のカーネルを構築した後CONFIG_USB_SERIAL_CONSOLE=y(参照https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official)、またinitrdにアダプタのFTDIシリアルドライバを含める必要がありました。

# echo ftdi_sio >> /etc/initramfs-tools/modules
# update-initramfs -u

最後に、/etc/default/grub次の内容を読むように調整しました。

GRUB_CMDLINE_LINUX_DEFAULT="panic=10 panic_on_oops=1 console=tty0 console=ttyUSB0,115200"

...そして逃げましたupdate-grub

その後、起動メッセージを正常に確認し、自動起動されたserial-getty@ttyUSB0サービスを介してログインできました。

関連情報