私が達成したいこと
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-amd64
Debianカーネルを実行します。
私の質問
これを機能させるにはどのような措置を講じるべきですか?
編集1
起動パラメータが指定されていると、console=tty0 console=ttyUSB0,9600n8
マシンは正常に起動しますが、シリアルポートにはまだ接続できません。また、サービスは次のとおりです。私はそれが実行されることを望みました。systemctl status [email protected]
loaded
inactive (dead)
編集2
私はいくつかの調査を行った結果、私のinitramfsに関連するカーネルモジュールがないことがわかりました。カーネル引数を提供してinitramfsシェルに入ることができましたが、デバイスはbreak=init
見えませんでした/dev/ttyUSB0
。
initramfsを再生成した後、、、およびを追加しましたが、cp210x
initramfspl2303
シェルにデバイスがあることを確認しました。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=y
Debianは現在、この機能が正しく機能するために必要なものを使用して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サービスを介してログインできました。