「シリアルコンソール」の版間の差分
(→ターミナルエミュレータプログラムを使って接続: tioを翻訳して追加) |
|||
(同じ利用者による、間の7版が非表示) | |||
36行目: | 36行目: | ||
==== GRUB Legacy ==== |
==== GRUB Legacy ==== |
||
− | + | [[GRUB Legacy]] 設定ファイル {{ic|/boot/grub/menu.lst}} を編集し、次の行を設定の一般領域に追加します。 |
|
serial --unit=0 --speed=9600 |
serial --unit=0 --speed=9600 |
||
terminal --timeout=5 serial console |
terminal --timeout=5 serial console |
||
− | {{Note| |
+ | {{Note|{{ic|1=terminal --timeout=5 Serial console}} 行が {{ic|menu.lst}} に追加されると、ブートシーケンスに一連の {{ic|Press any key to continue}} メッセージが表示されるようになります。キーが押されていない場合、ブートメニューは、{{ic|terminal}} 設定行の最初に表示される方 (シリアルまたはコンソール) に表示されます。}} |
==== rEFInd ==== |
==== rEFInd ==== |
||
− | [[rEFInd]] |
+ | [[rEFInd]] はテキストモードでのみシリアルコンソールをサポートします。{{ic|refind.conf}} を編集し、{{ic|textonly}} のコメントを解除します。 |
==== Syslinux ==== |
==== Syslinux ==== |
||
+ | [[Syslinux]] でシリアルコンソールを有効にするには、{{ic|syslinux.cfg}} を編集し、構成ファイルの最初のディレクティブとして {{ic|SERIAL}} を追加します。 |
||
− | To enable serial console in [[Syslinux]], edit {{ic|syslinux.cfg}} and add {{ic|SERIAL}} as the first directive in the configuration file. |
||
− | + | ボーレート 115200 bit/s の COM1 ({{ic|/dev/ttyS0}}) の場合: |
|
SERIAL 0 115200 |
SERIAL 0 115200 |
||
− | + | シリアルパラメータは 8 ビット、パリティなし、1 ストップビットにハードコーディングされています。[https://wiki.syslinux.org/wiki/index.php/SYSLINUX#SERIAL_port_.5Bbaudrate_.5Bflowcontrol.5D.5D] ディレクティブのオプションについては、[https://wiki.syslinux.org/wiki/index.php?title=Config#SERIAL Syslinux Wiki:Config#SERIAL] を参照してください。 |
|
− | === |
+ | === カーネル === |
− | + | カーネルの出力は、{{ic|1=console=}} [[カーネルパラメータ]] を設定することでシリアルコンソールに送信できます。最後に指定された {{ic|1=console=}} は、{{ic|/dev/console}} として設定されます。 |
|
console=tty0 console=ttyS0,115200 |
console=tty0 console=ttyS0,115200 |
||
− | + | https://docs.kernel.org/admin-guide/serial-console.html を参照してください。 |
|
=== getty === |
=== getty === |
||
− | + | 起動時に、{{man|8|systemd-getty-generator}} は、カーネルコマンドラインで指定された各コンソールの [[getty]] インスタンスを起動します。 |
|
− | + | カーネルコマンドラインで {{ic|1=console=}} を設定していない場合は、{{ic|serial-getty@''device''.service}} を [[起動]] します。{{ic|/dev/ttyS0}} (COM1) の場合、{{ic|serial-getty@ttyS0.service}} になります。 |
|
+ | サービスを [[有効化]] して起動時に開始します。 |
||
+ | カーネルコマンドラインで特に指定がない限り、getty はボーレート 38400ビット/秒、データビット8、パリティなし、ストップビット1回を想定します。 |
||
− | Unless specified otherwise in the kernel command line, getty will be expecting 38400 bit/s baud rate, 8 data bits, no parity and one stop bit-times. |
||
==接続== |
==接続== |
||
128行目: | 129行目: | ||
==== tinyserial ==== |
==== tinyserial ==== |
||
+ | {{pkg|tinyserial}} は、FreeBSD 'tip' からインスピレーションを得た、Linux 上のシリアルポートにアクセスするための {{pkg|minicom}} の代替品です。 |
||
− | {{pkg|tinyserial}} is a {{pkg|minicom}} replacement for accessing serial ports on Linux inspired by FreeBSD 'tip'. |
||
$ com /dev/ttyS0 9600 |
$ com /dev/ttyS0 9600 |
||
+ | |||
+ | ==== tio ==== |
||
+ | |||
+ | {{AUR|tio}} は、簡単なコマンドラインと設定ファイルインターフェイスを備えたシンプルなシリアルデバイスツールです、基本的な I/O 操作のためにシリアル TTY デバイスに簡単に接続できます。従来の端末/モデム機能にはあまり重点を置かず、組み込み開発者やハッカーのニーズに重点を置いています。tio は元々、tmux と組み合わせて使用した場合に、シリアルデバイスに接続するための画面を置き換えるために作成されました。 |
||
+ | |||
+ | $ tio /dev/ttyUSB0 |
||
=== グラフィカルフロントエンド === |
=== グラフィカルフロントエンド === |
||
157行目: | 164行目: | ||
* このガイドでは例としてポート速度を 9600 としていますが、もっと高い値を使うことが推奨されます (Minicom で 'Ctrl-A' を押してから 'P' を押すことで利用可能な速度を確認できます)。}} |
* このガイドでは例としてポート速度を 9600 としていますが、もっと高い値を使うことが推奨されます (Minicom で 'Ctrl-A' を押してから 'P' を押すことで利用可能な速度を確認できます)。}} |
||
+ | == シリアルコンソールを使用した応答しないマシンのデバッグ == |
||
− | == Debugging an unresponsive machine using a serial console == |
||
+ | [https://lists.archlinux.org/archives/list/arch-general@lists.archlinux.org/message/R3B32YF5EBKZCYF3TGKG6WTDONQ6RFS4/] には簡潔な説明しかありませんが、シーン全体が示されています。ここで、テスト対象のマシンが再現可能な方法で応答しなくなったことに注意することが重要です。そしてそれは通常の運用中に起こったということです。そのため、デバッグが必要になる前に通常どおりにアクセスできました。ただし、一般に、シリアルコンソールはブートの問題のデバッグにも役立ちます。おそらく、マシンの起動時に手動でブートローダーのによります。このセクションの外部リンクの PS 段落内で言及されている [[netconsole]] にも注意してください。 |
||
− | Even though [https://lists.archlinux.org/archives/list/arch-general@lists.archlinux.org/message/R3B32YF5EBKZCYF3TGKG6WTDONQ6RFS4/] has only raw and terse instructions, it presents the full scene. It is important to note that here, the machine under test got unresponsive in a reproducible manner. And that it happened during normal operation. So it could be accessed normally before it needed debugging. However, in general, the serial console is also useful for debugging boot issues. Perhaps by configuring the boot loader by hand at machine startup time. Also note the mentioned [[netconsole]] within the P.S paragraph of the external link from this section. |
||
==トラブルシューティング== |
==トラブルシューティング== |
2024年1月24日 (水) 23:30時点における最新版
Arch Linux マシンを設定してシリアルコンソールポート (com ポート) でマシンを接続することができます。キーボードやマウス、モニター、ネットワークが接続されていなくても (ヘッドレスサーバー)、マシンを管理することが可能です。
Arch Linux をシリアルコンソールでインストールすることもできます。
シリアルケーブル (9ピンの接続ケーブル) を使ってマシンを接続されていることが基本条件とします。管理用のマシンはターミナルエミュレータプログラム (PuTTY や Minicom など) が動作するのであれば Unix/Linux あるいは Windows のどちらでもかまいません。
以下の設定では GRUB のメニュー選択とブートメッセージを有効にしてシリアルコンソールに端末を転送します。
目次
接続先のマシンのコンソールを設定
ブートローダー
GRUB
生成された grub.cfg
で GRUB を使用する場合、/etc/default/grub
を編集し、シリアル入出力サポートを有効にします。
/etc/default/grub
... GRUB_TERMINAL_INPUT="console serial" ... GRUB_TERMINAL_OUTPUT="gfxterm serial" ...
次に GRUB_SERIAL_COMMAND
変数を追加し、シリアル接続のオプションを設定します。 COM1 (/dev/ttyS0
) のボーレートが 115200 ビット/秒の場合:
/etc/default/grub
... GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200"
利用可能なオプションの詳細な説明については、Using GRUB via a serial line および serial command を参照してください。
GRUB Legacy
GRUB Legacy 設定ファイル /boot/grub/menu.lst
を編集し、次の行を設定の一般領域に追加します。
serial --unit=0 --speed=9600 terminal --timeout=5 serial console
rEFInd
rEFInd はテキストモードでのみシリアルコンソールをサポートします。refind.conf
を編集し、textonly
のコメントを解除します。
Syslinux
Syslinux でシリアルコンソールを有効にするには、syslinux.cfg
を編集し、構成ファイルの最初のディレクティブとして SERIAL
を追加します。
ボーレート 115200 bit/s の COM1 (/dev/ttyS0
) の場合:
SERIAL 0 115200
シリアルパラメータは 8 ビット、パリティなし、1 ストップビットにハードコーディングされています。[1] ディレクティブのオプションについては、Syslinux Wiki:Config#SERIAL を参照してください。
カーネル
カーネルの出力は、console=
カーネルパラメータ を設定することでシリアルコンソールに送信できます。最後に指定された console=
は、/dev/console
として設定されます。
console=tty0 console=ttyS0,115200
https://docs.kernel.org/admin-guide/serial-console.html を参照してください。
getty
起動時に、systemd-getty-generator(8) は、カーネルコマンドラインで指定された各コンソールの getty インスタンスを起動します。
カーネルコマンドラインで console=
を設定していない場合は、serial-getty@device.service
を 起動 します。/dev/ttyS0
(COM1) の場合、serial-getty@ttyS0.service
になります。
サービスを 有効化 して起動時に開始します。
カーネルコマンドラインで特に指定がない限り、getty はボーレート 38400ビット/秒、データビット8、パリティなし、ストップビット1回を想定します。
接続
ターミナルエミュレータプログラムを使って接続
dterm
dtermAUR は小さなシリアル接続プログラムです。パラメータを付けずに起動した場合、デフォルトでは /dev/ttyS0
に 9600 ボーで接続します。以下の例は /dev/ttyS0
に 115200 ボーで、パリティビットを使わずストップビットを1個使用する、8 データビットで接続します:
$ dterm 115200 8 n 1
詳しくは ホームページ を見てください。
Minicom
minicom は公式リポジトリからインストールできます。セットアップモードで Minicom を起動:
$ minicom -s
テキストのナビゲーションメニューを使って、以下のようにシリアルポートの設定を変更:
Serial Device: /dev/ttyS0 Bps/Par/Bits: 9600 8N1
Enter を押してメニューを終了してください (Esc を押した場合、変更が保存されません)。モデムには接続しないため、モデムの Init と Reset の文字列は削除します。Modem and Dialing
メニューで Init と Reset 文字列を削除してください。メインメニューから save setup as dfl
を選択することで設定が保存されます。マシンにシリアルケーブルを接続したまま minicom を再起動してください。セッションを終了するには Ctrl+A
を押してから Ctrl+X
を押します。
picocom
picocom は minicom とよく似ている小さなダム端末エミュレーションプログラムです。以下の例は ttyS0
に 9600 bps で接続します:
$ picocom -b 9600 /dev/ttyS0
詳しい使い方はマニュアルを見てください。
Screen
screen はシリアルポートに接続することができます。デフォルトでは 9600 ボーで接続します:
$ screen /dev/ttyS0
コマンドラインからボーレート (例: 115200) を指定できます:
$ screen /dev/ttyS0 115200
Serialclient
Serialclient は Ruby で書かれたシリアル接続 CLI クライアントです [2]。Gem を使ってインストールしてください。
以下のようにして使うことが可能です:
$ serialclient -p /dev/ttyS0
tinyserial
tinyserial は、FreeBSD 'tip' からインスピレーションを得た、Linux 上のシリアルポートにアクセスするための minicom の代替品です。
$ com /dev/ttyS0 9600
tio
tioAUR は、簡単なコマンドラインと設定ファイルインターフェイスを備えたシンプルなシリアルデバイスツールです、基本的な I/O 操作のためにシリアル TTY デバイスに簡単に接続できます。従来の端末/モデム機能にはあまり重点を置かず、組み込み開発者やハッカーのニーズに重点を置いています。tio は元々、tmux と組み合わせて使用した場合に、シリアルデバイスに接続するための画面を置き換えるために作成されました。
$ tio /dev/ttyUSB0
グラフィカルフロントエンド
- cutecomAUR は gui で使えるシリアルモニターです。
- putty は Linux からでも使うことができます。
- moserial は gtk ベースのシリアルターミナルです。組み込み環境や試験装置、シリアルコンソールを使う必要がある技術者やハードウェアハッカー用に作られています。
Windows
Windows マシンでは PuTTY や Terminalbpp などのプログラムを使ってシリアルポートに接続してください。
シリアルコンソールを使って Arch Linux をインストール
- 上に書かれている方法でインストールを行うマシンに接続。
- Arch Linux インストール CD を使ってマシンを起動。
- ブートローダーが表示されたら Boot Arch Linux (<arch>) を選択して
Tab
を押してエントリを編集。 console=ttyS0,38400
を追加してEnter
を押す。- systemd によって ttyS0 が認識されシリアル getty が起動します。
root
でログインして通常通りにインストールを行ってください。
シリアルコンソールを使用した応答しないマシンのデバッグ
[4] には簡潔な説明しかありませんが、シーン全体が示されています。ここで、テスト対象のマシンが再現可能な方法で応答しなくなったことに注意することが重要です。そしてそれは通常の運用中に起こったということです。そのため、デバッグが必要になる前に通常どおりにアクセスできました。ただし、一般に、シリアルコンソールはブートの問題のデバッグにも役立ちます。おそらく、マシンの起動時に手動でブートローダーのによります。このセクションの外部リンクの PS 段落内で言及されている netconsole にも注意してください。
トラブルシューティング
Ctrl-C と Minicom
minicom で Control-C コマンドを送ったときに問題が起こる場合、デバイス設定 (minicom -s) でハードウェアフロー制御をオフにしてください。ブレークが有効になります。
ターミナルのサイズ変更
ssh と異なり、シリアル接続にはターミナルのサイズを変更したときに SIGWINCH
を転送する機能がありません。そのため、ターミナルウィンドウのサイズを変更したときにフルスクリーンプログラム (例: less
) で表示が崩れてしまいます。
解決方法として stty
でターミナルのサイズを変えることができます:
$ stty rows lines cols columns
ただし上記の方法ではサイズを手動で入力する必要があります。以下の方法でサイズ変更を簡単にすることができます。
1. xterm に付属している知名度の低いユーティリティ resize
で問題を解決できます。ターミナルエミュレータのウィンドウのサイズを変更した後にパラメータを付けずに起動してください:
$ resize
2. xterm をインストールしたくない場合、シンプルなシェル関数で同じことができます。以下の関数をシェルの設定ファイルに記述して、パラメータを付けずに実行してください:
rsz() { if [[ -t 0 && $# -eq 0 ]];then local IFS='[;' escape geometry x y print -n '\e7\e[r\e[999;999H\e[6n\e8' read -sd R escape geometry x=${geometry##*;} y=${geometry%%;*} if [[ ${COLUMNS} -eq ${x} && ${LINES} -eq ${y} ]];then print "${TERM} ${x}x${y}" else print "${COLUMNS}x${LINES} -> ${x}x${y}" stty cols ${x} rows ${y} fi else [[ -n ${commands[repo-elephant]} ]] && repo-elephant || print 'Usage: rsz' ## Easter egg here :) fi }
マルチポート拡張カードにポートがありません
デフォルトのカーネル構成で汎用 8250 ドライバーを使用するシリアルポートの数は、実行時に 4 に設定され、最大は 32 になります。これにより、/dev/ttyS4
以上の作成が防止されます。マザーボード上の一般的な内蔵シリアルポートを数えると、4 ポート拡張カードの 4 番目のシリアルポートは使用できなくなります。
これは カーネルパラメータ 8250.nr_uarts
でオーバーライドできます。例えば:
8250.nr_uarts=5