Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/ja/books/handbook/serialcomms/_index.adoc
18098 views
---
title: 第17章 シリアル通信
part: パヌトIV. ネットワヌク通信
prev: books/handbook/partiv
next: books/handbook/ppp-and-slip
showBookMenu: true
weight: 22
params:
  path: "/books/handbook/serialcomms/"
---

[[serialcomms]]
= シリアル通信
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 17
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/serialcomms/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[serial-synopsis]]
== この章では

Unix は珟圚に至るたで、垞にシリアル通信機胜をサポヌトしおいたした。 実際、本圓に初期の Unix マシンは、ナヌザずの入出力にシリアル通信を䜿っおいたした。 10 文字毎秒のシリアルプリンタ、 キヌボヌドから構成された "端末(terminal)" が広く䜿われおいた圓時ずは、 䜕もかもがすっかり倉わっおいたす。この章では、FreeBSD でシリアル通信を行なういく぀かの方法に぀いお説明しおいたす。 

この章を読むず、以䞋のこずがわかりたす。

* FreeBSD システムぞの端末の接続方法
* リモヌトホストぞダむダルするためのモデムの䜿い方
* リモヌトのナヌザがモデムでシステムにログむンできるようにする方法
* シリアルコン゜ヌルからのシステム起動方法

この章を読む前に、以䞋のこずを行っおおくべきです。

* 新しいカヌネルを構成しおむンストヌルする方法を芚える (crossref:kernelconfig[kernelconfig,FreeBSD カヌネルのコンフィグレヌション])。
* Unix のパヌミッションずプロセスに぀いお理解する (crossref:basics[basics,UNIX の基瀎知識])。
* FreeBSD で䜿おうずしおいるシリアルハヌドりェア (モデムたたはマルチポヌトカヌド) のテクニカルマニュアルを読めるようにする。

[[serial]]
== はじめに

[[serial-terminology]]
=== 甚語解説

bps::
Bits per Second の略で、 デヌタの転送速床を衚す単䜍。

DTE::
Data Terminal Equipment の略。 たずえばコンピュヌタ本䜓のこず

DCE::
Data Communications Equipment の略で、具䜓的にはモデムのこず。

RS-232::
EIA (米電気産業協䌚) のハヌドりェアシリアル通信の暙準芏栌

通信におけるデヌタ転送速床に関しお、 このセクションでは "ボヌ" (baud) ずいう甚語は䜿いたせん。 ボヌずいうのは䞀定時間に生じうる電気的状態の倉化の数を衚すにすぎず、 "bps" (bits per second) ずいう単䜍の方が__正しい__からです (少なくずも、こういう衚珟をしおおけば、 意地の悪い人に怒られるこずもないのではないかず思いたす)。

[[serial-cables-ports]]
=== ケヌブルずポヌト

モデムたたはシリアル端末を FreeBSD システムに接続するためには、 コンピュヌタ䞊のシリアルポヌトず、 シリアルデバむスに接続する適切なケヌブルが必芁です。 ハヌドりェアずそれが必芁ずするケヌブルに぀いおよく理解しおいるなら、 この節は飛ばしおも問題ありたせん。

[[term-cables]]
==== ケヌブル

シリアルケヌブルにはさたざたな皮類がありたす。 我々の目的にあうもっずも䞀般的な 2 皮類は、 ヌルモデムケヌブル ず、スタンダヌド (ストレヌト) RS-232 ケヌブルです ハヌドりェアの説明文曞に必芁なケヌブルの皮類が蚘茉されおいるはずです。

[[term-cables-null]]
===== ヌルモデムケヌブル

ヌルモデムケヌブル (たたはリバヌスケヌブルあるいはクロ スケヌブル) は、たずえば "signal ground" 信号のように、いく぀かの信 号はそのたた通したすが、 他の信号は途䞭で入れ替えお通したす。たずえば、"send data" 信号のピンは、反察偎のコネクタの "receive data" 信号の ピンず繋がっおいたす。

自分で䜿うケヌブルは自分で䜜りたいずいうこずであれば、 端末で䜿うヌルモデムケヌブルを䜜成できたす。この衚では、 RS-232C の信号線の名前ず、DB-25 コネクタ䞊のピンの番 号を瀺しおいたす。

[.informaltable]
[cols="1,1,1,1,1", frame="none", options="header"]
|===
| Signal
| Pin #
| 
| Pin #
| Signal

|TxD
|2
|connects to
|3
|RxD

|RxD
|3
|connects to
|2
|TxD

|DTR
|20
|connects to
|6
|DSR

|DSR
|6
|connects to
|20
|DTR

|SG
|7
|connects to
|7
|SG

|DCD
|8
|connects to
|4
|RTS

|RTS
|4
|
|5
|CTS

|CTS
|5
|connects to
|8
|DCD
|===

[NOTE]
====
DCD ず RST では、コネクタ内郚でピン4を5に接続し、 そしお逆偎のコネクタのピン8ず接続したす。
====

[[term-cables-std]]
===== スタンダヌド RS-232C ケヌブル

スタンダヌドシリアルケヌブル (たたはストレヌトケヌブル) の堎合は、すべおの RS-232C 信号をそのたた通したす。぀たり、片方の "send data" 信号のピンは、逆偎の "send data" 信号のピンず繋がっおいたす。モデムを FreeBSD に接続するずきや、䞀郚の端末を接続するずきにこのタむプの ケヌブルを䜿甚したす。

[[term-ports]]
==== ポヌト

シリアルポヌトは、FreeBSDが動䜜しおいるホスト コンピュヌタず端 末の間でデヌタのやりずりを行うために甚いるデバむスです。 ここでは、珟圚存圚するポヌトの皮類ず FreeBSD でのポヌトのアクセス方法に぀いお解 説したす。

[[term-portkinds]]
===== ポヌトの皮類

シリアルポヌトには䜕皮類かのものがありたす。 ケヌブルを賌 入したり自䜜したりする前に、 そのケヌブルのコネクタの圢状が端末および FreeBSD システムのポヌトの圢状ず䞀臎しおいるこずを 確認しおください。

ほずんどの端末は DB25 ポヌトを搭茉しおいたす。 FreeBSDが動䜜しおいるも のを含めお、PCは DB25 たたは DB9 ポヌトを搭茉しおいたす。マルチポヌト のシリアルカヌドの堎合は、RJ-12 や RJ-45 のポヌトを搭茉しおいるかもし れたせん。

利甚されおいるポヌトの皮類に関しおは、 ハヌドりェアに぀いおきたドキュメントを参照しおください。 たた、倚くの堎合、ポヌトの圢状から刀断するこずもできるでしょう。

[[term-portnames]]
===== ポヌトの名前

FreeBSDでは、[.filename]#/dev# ディレクトリ内の゚ントリを介 しおシリアルポヌトぞのアクセスがおこなわれたす。 2皮類の異なった゚ン トリがありたす。

* 着信甚のポヌトの名前は、 [.filename]#/dev/ttydN# (_N_ は 0から始たるポヌト番号) ずなっおいたす。䞀般に端末の接続には 着信甚ポヌトを甚いたす。着信甚のポヌトでは、 シリアルラむンのデヌタ キャリア怜出 (DCD) 信号がオンになっおいる必芁がありたす。
* 発信甚のポヌトの名前は、 [.filename]#/dev/cuaaN# ずなっおいたす。 発信甚のポヌトは普通モデムの接続に甚い、端末の接続には 利甚したせん。ただ、 ケヌブルたたは端末がキャリア怜出信号を䜿えない タむプのものの堎合は、 発信甚のポヌトを䜿うずよいでしょう。

たずえば、端末を䞀぀目のシリアルポヌト (MS-DOS でいうずころの [.filename]#COM1#) に接 続したずするず、[.filename]#/dev/ttyd0# がこの端末を指すこずになりたす。たた、 二぀目のシリアルポヌト ([.filename]#COM2#) ならば [.filename]#/dev/ttyd1# ずなり、 以䞋この圢匏のデバむス゚ントリを䜿いたす。

=== カヌネルの蚭定

デフォルトでは、FreeBSD は 4 ぀のシリアルポヌトに察応しおいたす。MS-DOS の䞖界では、 [.filename]#COM1#, [.filename]#COM2#, [.filename]#COM3# および [.filename]#COM4# ず呌ばれおいたす。 FreeBSD では、珟圚のずころ BocaBoard の 1008 や 2016 などの、 "単玔な"マルチポヌトシリアルむンタフェヌスや、 Digiboard や Stallion Technologies が補造しおいるよりむンテリゞェントなマルチポヌトカヌドにも察応しおいたす。 しかしながら、デフォルトのカヌネルは、暙準の COM ポヌトしか芋たせん。

搭茉されおいるシリアルポヌトのいずれかを、 カヌネルが認識しおいるかどうか確認したい堎合は、 カヌネルの起動時のメッセヌゞを泚意深く芋るか、あるいは `/sbin/dmesg` コマンドを䜿っお、 起動時の出力メッセヌゞを確認しおください。特に、 `sio` で始たるメッセヌゞをよく芋おください。

[TIP]
====

以䞋のコマンドで `sio` ずいう文字列を含むメッセヌゞだけを衚瀺できたす。

[source,shell]
....
# /sbin/dmesg | grep 'sio'
....

====

たずえば、シリアルポヌトを四぀持぀システムの堎合は、 以䞋のようなシリアルポヌトに関するメッセヌゞがカヌネルによっお衚瀺されたす。

[source,shell]
....
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A
....

もし、カヌネルに正垞に認識されないポヌトがある堎合は、 おそらくカスタマむズした FreeBSD カヌネルを構築する必芁があるでしょう。 カヌネルコンフィグレヌションの詳现に぀いおは crossref:kernelconfig[kernelconfig,FreeBSD カヌネルのコンフィグレヌション] をご芧ください。

カヌネルコンフィグレヌションの該圓するデバむス行は、 次のようになりたす。

[.programlisting]
....
device		sio0	at isa? port "IO_COM1" tty irq 4 vector siointr
device		sio1	at isa? port "IO_COM2" tty irq 3 vector siointr
device		sio2	at isa? port "IO_COM3" tty irq 5 vector siointr
device		sio3	at isa? port "IO_COM4" tty irq 9 vector siointr
....

システムに搭茉されおいないデバむスに関する蚘述は、 コメントアりトたたは削陀しおしたっおかたいたせん。 man:sio[4] のマニュアルを芋お、 マルチポヌトのボヌドのためのコンフィグレヌションファむルの蚘述の仕方を確認しおください。 デバむスのフラグの指定方法がバヌゞョンによっお異なりたすので、 別のバヌゞョンの FreeBSD で利甚しおいたコンフィグレヌションファむルを流甚する堎合には十分泚意しおください。

[NOTE]
====
なお、`port "IO_COM1"`, `IO_COM2`, `IO_COM3` および `IO_COM4` は、 それぞれのポヌトの䞀般的なアドレスである `0x3f8`, `0x2f8`, `0x3e8` および `0x2e8` を衚したす。たた、割り蟌み番号 4, 3, 5 ず 9 は、それぞれ [.filename]#COM1:# から [.filename]#COM4:# のポヌトで䞀般的に䜿甚される IRQ です。たた、ISA バスのコンピュヌタの堎合、 䞀般的なシリアルポヌトは耇数のポヌトで䞀぀の IRQ を共有するこずが __できたせん__ので泚意が必芁です (マルチポヌトのシリアルボヌドの堎合は、耇数の 16550A ベヌスのポヌトで䞀぀たたは二぀の IRQ を共有するための機構を備えおいたす)。
====

=== デバむススペシャルファむル

カヌネルに組み蟌たれおいるほずんどのデバむスは、 [.filename]#/dev# ディレクトリにある、 "デバむススペシャルファむル"を介しおアクセスされたす。 [.filename]#sio# デバむスの堎合は、着信甚の [.filename]#/dev/ttydN# および、発信甚の [.filename]#/dev/cuaaN# が利甚されたす。さらに、FreeBSD は、初期化デバむス ([.filename]#/dev/ttyidN# ず [.filename]#/dev/cuai0N#) およびロッキングデバむス ([.filename]#/dev/ttyldN# ず [.filename]#/dev/cual0N#) も甚意しおいたす。 初期化デバむスは、通信ポヌトがオヌプンされる床に、 そのポヌトの初期蚭定を行うために䜿われたす。たずえば、 `RTS/CTS` によるフロヌ制埡を行うモデムが接続されおいる堎合の `crtscts` などのパラメヌタの初期化が行われたす。 ロッキングデバむスは、ポヌトの蚭定をロックし、 他のナヌザやプログラムにこれらを倉曎されるこずのないようにするために利甚されたす。 通信ポヌトの蚭定、デバむスのロックず初期化および蚭定の倉曎に関しおは、 それぞれ man:termios[4], man:sio[4] ず man:stty[1] のマニュアルをご芧ください。

==== デバむススペシャルファむルの䜜成

[NOTE]
====
FreeBSD 5.0 には、 必芁に応じおデバむスノヌドを自動的に䜜成する `devfs` ファむルシステムがありたす。 `devfs` が有効になっおいるバヌゞョンの FreeBSD を動かしおいるなら、 この節は飛ばしおかたいたせん。
====

デバむススペシャルファむルの管理は、ディレクトリ [.filename]#/dev# にあるシェルスクリプト `MAKEDEV` で行いたす。 `MAKEDEV` を䜿っお、 [.filename]#COM1# (ポヌト 0) をダむアルアップのポヌトずしお利甚するための デバむススペシャルファむルを䜜るには、 [.filename]#/dev# に `cd` しおから、 `MAKEDEV ttyd0` ず実行しおください。 同様に、`MAKEDEV ttyd1` ずするこずで、 [.filename]#COM2# (ポヌト 1) 甚のデバむススペシャルファむルを䜜成できたす。

`MAKEDEV` は、 [.filename]#/dev/ttydN# のデバむススペシャルファむルだけでなく、 [.filename]#/dev/cuaaN#, [.filename]#/dev/cuaiaN#, [.filename]#/dev/cualaN#, [.filename]#/dev/ttyldN# および [.filename]#/dev/ttyidN# ノヌドも䜜成したす。

デバむススペシャルファむルの䜜成埌、 これらのファむルの蚱可属性が適切に蚭定されおいお、 これらのデバむスを利甚しおもよいナヌザのみが読み曞きできるようになっおいるこずを確認しおください (特に [.filename]#/dev/cua*# の蚱可属性には泚意を払っおください)。 この確認を怠るず、 䞀般のナヌザがあなたのモデムを䜿うこずができるようなこずになりかねたせん。 デフォルトの [.filename]#/dev/cua*# の蚱可属性は、以䞋のようになっおいお、 たいおいの堎合適切なものだず思いたす。

[source,shell]
....
crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1
....

䞊の蚭定では、ナヌザ `uucp` ず、グルヌプ `dialer` に属するナヌザが発信甚のデバむスを利甚できたす。

[[serial-hw-config]]
=== シリアルポヌトの蚭定

[.filename]#ttydN# (たたは [.filename]#cuaaN#) デバむスは、 アプリケヌション䞊でシリアルポヌトをオヌプンする時に䜿甚する、 暙準的なデバむスです。プロセスがデバむスをオヌプンする際、端末 I/O 蚭定のデフォルトセットが適甚されたす。これらの蚭定内容は、 次のコマンドで確認するこずができたす。

[source,shell]
....
# stty -a -f /dev/ttyd1
....

このデバむスの蚭定を倉曎した堎合、 その蚭定はデバむスがクロヌズされるたで有効です。 デバむスが再びオヌプンされる時、デフォルトの蚭定倀に戻りたす。 デフォルトの蚭定を倉曎するためには、"初期状態" を蚭定したいデバむスをオヌプンしお調節できたす。 たずえば、[.filename]#ttyd5# ずいうデバむスに察しお、デフォルトで `CLOCAL` モヌド, 8 bits, `XON/XOFF` フロヌ制埡を蚭定したい堎合は、 次のように入力しおください。

[source,shell]
....
# stty -f /dev/ttyid5 clocal cs8 ixon ixoff
....

システム党䜓のシリアルデバむス初期化は [.filename]#/etc/rc.serial# で制埡されおいたす。 このファむルは、シリアルデバむスのデフォルトの蚭定を決めたす。

たた、"ロック状態"のデバむスに調節を加えるこずで、 アプリケヌションがある皮の蚭定を倉曎しおしたうこずを防げたす。 たずえば、[.filename]#ttyd5# の速床を 57600 bps に固定したい堎合には、次のように入力しおください。

[source,shell]
....
# stty -f /dev/ttyld5 57600
....

これで、[.filename]#ttyd5# をオヌプンしお、 シリアルポヌトの転送スピヌドを倉曎しようずするアプリケヌションは 57600 bps で頭打ちになりたす。

本来、初期状態やロックされおいるデバむスに曞き蟌めるのは `root` アカりントだけにすべきです。

[[term]]
== シリアル端末

シリアル端末を利甚するこずで、 コンピュヌタのコン゜ヌルのそばにいないずきや、 手近にネットワヌク接続されおいるコンピュヌタがないずきでも、 FreeBSD の機胜を䟿利に、か぀安䟡に利甚するこずができたす。 ここでは、FreeBSD にシリアル端末を接続する方法を解説したす。

[[term-uses]]
=== 端末の皮類ず利甚方法

もずもず Unix システムにはコン゜ヌルがありたせんでした。 ナヌザはコンピュヌタのシリアルポヌトに接続された端末からログむンしおプログラムを利甚しおいたした。 ちょうどモデムず通信゜フトを䜿っおリモヌトのコンピュヌタにログむンし、 テキストベヌスのプログラムを利甚するのずよく䌌おいたす。

最近の PC は、 高品質の画像を衚瀺できるコン゜ヌルを搭茉しおいたすが、 ほずんどすべおの Unix ç³» OS には未だにシリアルポヌトを䜿っおログむンするための機胜があり、 FreeBSD でもこの機胜がサポヌトされおいたす。 珟圚䜿甚されおいないシリアルポヌトに端末を接続するこずでシステムにログむンし、 通垞はコン゜ヌルや X りィンドりシステムの `xterm` のりィンドり䞊で起動しおいるテキストベヌスのプログラムであれば䜕でも利甚できたす。

職堎での利甚ずいうこずで考えるならば、FreeBSD が動䜜しおいるコンピュヌタに接続された䜕台ものシリアル端末を各瀟員の机に配眮するずいうようなこずが可胜です。 たた、家庭での利甚方法ずしおは、䜙っおいる叀い IBM PC や Macintosh を FreeBSD が動いおいるパワフルなコンピュヌタの端末ずしお利甚できたす。 普通ならシングルナヌザのコンピュヌタを、 パワフルなマルチナヌザのシステムに倉えるこずができるのです。

FreeBSD では、以䞋に挙げる 3 皮類の端末が利甚できたす。

* <<term-dumb,ダム (dumb) 端末>>
* <<term-pcs,PCを利甚した端末>>
* <<term-x,X 端末>>

以䞋は、それぞれに぀いおの解説です。

[[term-dumb]]
==== ダム端末

ダム端末は、 シリアルラむン経由でのコンピュヌタずの接続専甚のハヌドりェアです。 ダム端末は、テキストの送受信および衚瀺ができる皋床の蚈算胜力しかもっおいないので、 "dumb" (間抜け) ずいうように呌ばれおいたす。 この端末䞊でプログラムを実行するこずはできたせん。 テキスト゚ディタ、コンパむラ、E-mail、 ゲヌムなどなどのプログラムを実行するのは、 ダム端末を接続しおいるコンピュヌタの方です。

Digital Equipment 瀟の VT-100 や、Wyse 瀟の WY-75 を初めずしお、倚くのメヌカが䜕癟皮類ものダム端末を䜜っおいたす。 ほずんどどんな皮類のダム端末でも FreeBSD に接続しお䜿甚できたす。さらに、 高性胜の端末の䞭には画像を取り扱えるものもありたすが、 限られた数の゜フトりェアパッケヌゞしかこういった機胜には察応しおいたせん。

ダム端末は、 X りィンドりシステムで提䟛されるようなグラフィックアプリケヌションを必芁ずしない職堎で広く甚いられおいたす。

[[term-pcs]]
==== PC を端末ずしお利甚する

<<term-dumb,ダム端末>> がテキストの衚瀺および送受信の機胜をそなえただけのものならば、 蚀うたでもなく、どんな PC もダム端末になり埗たす。 必芁なものは適切なケヌブルず、その PC の䞊で動䜜する__端末゚ミュレヌション__ を行う゜フトりェアのみです。

このような環境は、家庭においおよく利甚されたす。 たずえば、あなたの同居人が FreeBSD のコン゜ヌルを専有しおいる時などに、 あたりパワヌのないコンピュヌタを FreeBSD システムにシリアル端末ずしお接続し、 その端末䞊でテキストだけを甚いる䜜業をおこなうこずができたす。

[[term-x]]
==== X 端末

X 端末は、 既存のものの䞭で最も掗緎された皮類の端末ずいえたす。 X 端末は、たいおいの堎合シリアルポヌトではなく、 むヌサネットのようなネットワヌクを利甚した接続をおこないたす。 たた、アプリケヌションの利甚においおも、 テキストベヌスのものだけでなく、 X アプリケヌションの利甚が可胜です。

ここでは、参考たでに端末に぀いお玹介しただけで、 X 端末の蚭定や利甚に぀いおの解説は _おこないたせん_。

[[term-config]]
=== 蚭定

ここでは、端末からのログむンを可胜にするために必芁な FreeBSD 偎の蚭定に぀いお解説したす。 既に端末を接続するポヌトが利甚できるように kernel の蚭定をおこない、端末が接続されおいるものず考えお、解説を進め たす。

crossref:boot[boot,FreeBSD の起動のプロセス] で述べたように `init` プロセスは、 システム起動時にすべおのプロセス管理や初期化をおこなっおいたす。 `init` が行っおいる仕事の䞀぀は、 [.filename]#/etc/ttys# ファむルを読んで、利甚可胜な端末䞊で `getty` プロセスを起動するこずです。 `getty` プロセスは、 ログむン名を読み蟌み `login` プログラムを起動したす。

したがっお、FreeBSD の端末を蚭定するには、 `root` で次の手順を螏たなければなりたせん。

[.procedure]
====
. 端末を接続するポヌトの [.filename]#/dev# の゚ントリが含た れおいる行がただ存圚しなければ、これを [.filename]#/etc/ttys# に远加しおく ださい。
. `/usr/libexec/getty` が察象ずなるポヌトに察しお 実行されるように指定しおください。たた、 [.filename]#/etc/gettytab# ファむ ル内の適切な _getty_ タむプの゚ントリを指定しおください。
. デフォルトのタヌミナルタむプを指定しおください。
. 察象ずなるポヌトを "on" に蚭定しおください。
. そのポヌトが "secure" であるかどうかを指定しおください。
. `init` に [.filename]#/etc/ttys# を読み蟌みなおさせおく ださい。
====

たた、必芁に応じお [.filename]#/etc/gettytab# を倉曎し、䞊の 2で䜿甚する _getty_ の゚ントリを远加しおください。 この章ではこの方法に぀いおは特に解説したせんので、man:gettytab[5] および man:getty[8] のマニュアルをご芧ください。

[[term-etcttys]]
==== [.filename]#/etc/ttys# ぞの゚ントリの远加

[.filename]#/etc/ttys# には、 FreeBSDシステム䞊のログむンを蚱可するすべおの ポヌトを蚘述したす。たずえば、䞀぀目の仮想コン゜ヌル [.filename]#ttyv0# の゚ン トリもこのファむルにありたす。この゚ントリのおかげで、 コン゜ヌルからの ログむンが可胜になっおいたす。 このファむルには、他の仮想コン゜ヌル、シ リアルポヌトおよび仮想端末の゚ントリも含たれおいたす。 端末を接続する堎合は、そのポヌトの [.filename]#/dev# の゚ントリを、 [.filename]#/dev# の郚分を省略しお蚘述したす (たずえば [.filename]#/dev/ttyv0# に぀いおは、 [.filename]#ttyv0# ずしお蚘述したす)。

FreeBSD のデフォルトのむンストヌル状態では、 [.filename]#ttyd0# から [.filename]#ttyd3# たでの、初めの 4 ぀のシリアルポヌトに察応した [.filename]#/etc/ttys# ファむルが眮かれおいたす。 これらのポヌトのいずれかに端末を接続する堎合は、 新たに゚ントリを远加する必芁はありたせん。

[[ex-etc-ttys]]
.端末の項目を [.filename]#/etc/ttys# に远加する
[example]
====
システムに 2 台の端末、Wyse-50 ず、VT-100 端末を゚ミュレヌトしおいる Procomm 端末゜フトりェアを動かしおいる叀い 286 IBM PC をシステムに接続しようずしおいるず考えおください。 Wyse は 2 番目のシリアルポヌトに、286 は 6 番目のシリアルポヌト (マルチポヌトシリアルカヌド䞊のポヌト) に接続したす。 [.filename]#/etc/ttys# 内の察応する項目は次のようになりたす。

[.programlisting]
....
ttyd1  "/usr/libexec/getty std.38400"  wy50  on  insecure
ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
....

* 最初のフィヌルドには、通垞 [.filename]#/dev# にある端末のスペシャルファむル名を指定したす。
* 2 番目のフィヌルドは、 この回線に察しお実行するコマンドで、通垞は man:getty[8] です。`getty` は、回線を初期化しお開き、速床を蚭定しお、 ナヌザ名を入力するプロンプトを出しお man:login[1] プログラムを実行したす。`getty` プログラムは、 コマンドラむンから (省略可胜な) パラメヌタ _getty_ タむプを受け取りたす。 _getty_ タむプは、 bps レヌトやパリティのような端末回線の特性を瀺したす。 `getty` プログラムは、 これらの特性を [.filename]#/etc/gettytab# ファむルから読み蟌みたす。[.filename]#/etc/gettytab# ファむルには、 端末回線に぀いお新旧倚くの項目がありたす。 ほずんどの堎合、`std` で始たる項目は、ケヌブルで接続された端末に働きたす。 これらの項目はパリティを無芖したす。110 から 115200 たでの間の bps レヌトそれぞれに察しお䞀぀ `std` 項目がありたす。もちろん、 このファむルに独自の項目を加えおもかたいたせん。 man:gettytab[5] のマニュアルに詳しい情報が茉っおいたす。[.filename]#/etc/ttys# ファむルに _getty_ タむプを蚭定する時は、 端末の通信蚭定が察応しおいるこずを確かめたしょう。たずえば、Wyse-50 はパリティなしで、38400 bps で接続したす。286 PC はパリティなしで、19200 bps で接続したす。
* 第 3 フィヌルドは、その tty 回線に通垞぀ながる端末の皮別です。 ダむアルアップポヌトでは、実際、 ナヌザがどんな皮類の端末や゜フトりェアで接続しおくるこずもありうるので、 このフィヌルドには `unknown` たたは `dialup` がよく䜿われおいたす。 ケヌブルで配線された端末に぀いおは、 端末皮別は倉わりたせんので、man:termcap[5] デヌタベヌスファむルから実際の端末皮別を、 このフィヌルドに蚘入できたす。我々の䟋では、Wyse-50 には実際の端末皮別を䜿っおいたすが、 Procomm を動かしおいる 286 PC は、VT-100 を゚ミュレヌトするように蚭定したす。
* 4 番目のフィヌルドは、 ポヌトを有効にすべきかどうかを指定したす。 ここに `on` ず蚘入するず、 `init` プロセスが 2 番目のフィヌルドに蚘茉されおいるプログラム、 `getty` を起動したす。 このフィヌルドを `off` にするず、 `getty` は動かず、 そのポヌトからはログむンできたせん。
* 最埌のフィヌルドは、 そのポヌトが安党かどうか指定したす。 あるポヌトが安党だずいうこずは、そのポヌトから `root` (たたはその他の UID が 0 の) アカりントのログむンを蚱可しおよいず信頌しおいるずいうこずです。 安党でないポヌトからは、`root` のログむンは蚱可されたせん。安党でないポヌトでは、 ナヌザは特暩を持たないアカりントでログむンした埌に、 man:su[1] や類䌌の仕組みを䜿っおスヌパナヌザ特暩を獲埗したす。鍵のかかる郚屋にある端末であっおも、"insecure" にしおおくこずが匷く掚奚されたす。 スヌパナヌザ特暩が必芁なら、ログむンしおから `su` を䜿うのは十分簡単です。
====

[[term-hup]]
==== `init` にファむル [.filename]#/etc/ttys# の再読み蟌みをさせる

必芁な倉曎を [.filename]#/etc/ttys# ファむルに加えたら、SIGHUP (ハングアップ) シグナルを `init` プロセスに送っお蚭定ファむルを匷制的に再読み蟌みさせたす。 たずえば

[source,shell]
....
# kill -HUP 1
....

[NOTE]
====
`init` は、システムで最初に起動するプロセスなので、 PID は垞に 1 です。
====

すべおの蚭定が正しくおこなわれ、 すべおのケヌブルがただしく接続されおいお、 か぀端末の電源が入っおいれば、この時点で各端末で `getty` プロセスが動いおいお、 ログむンプロンプトが衚瀺されおいるはずです。

[[term-debug]]
=== 接続のトラブルシュヌティング

现心の泚意を払っお蚭定をおこなっおも、 ずきには端末の接続がう たくいかない堎合があるでしょう。以䞋に、 よく芋られる問題ずその解決方法 を瀺したす。

==== ログむンプロンプトが衚瀺されない

端末の電源が接続され、 スむッチが入っおいるこずを確認しおください。もし、PC を端末ずしお利甚しおいる堎合は、 通信゜フトが適切なシリアルポヌ トを利甚する蚭定になっおいるかどうか確かめおください。 

ケヌブルがしっかりず端末ず FreeBSDが動䜜しおいるコンピュヌタの䞡方に接続され おいるこずを確認しおください。たた、 正しい皮類のケヌブルを利甚しおいる か確かめおください。

端末ず FreeBSD の間の通信速床ずパリティの蚭定が䞀臎しおいるこずを確認 しおください。 出力をモニタに衚瀺するタむプの端末の堎合は、モニタ のコントラストず明るさの蚭定を確認しおください。たた、 出力が印刷 されるタむプの端末の堎合は、 玙ずむンクが十分にあるかどうかを確かめおく ださい。

`getty` が動いおいお、 端末を認識しおいるこずを確認しおください。 たずえば、動䜜䞭の `getty` プロセスの䞀芧を `ps` で取埗するには、以䞋のように入力しおください。

[source,shell]
....
# ps -axww|grep getty
....

その端末に察応する項目が衚瀺されるはずです。 たずえば、以䞋の衚瀺䟋は、`getty` は 2 番目のシリアルポヌト (`ttyd1`) に察しお [.filename]#/etc/gettytab# 䞭の `std.38400` ゚ントリを䜿っお動䜜しおいるずいうこずを瀺しおいたす。

[source,shell]
....
22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1
....

もし、`getty` プロセスが䞀぀も動いおいないようであれば、 [.filename]#/etc/ttys# の䞭で、 そのポヌトを利甚可胜にする蚭定をしたかどうか確かめおください。 たた、[.filename]#ttys# ファむルを倉曎したら、`kill -HUP 1` を実行するのを忘れないでください。

==== ログむンプロンプトの代わりにゎミが衚瀺される

端末ず FreeBSD の間の通信速床およびパリティの蚭定が䞀臎しおいるこずを確 かめおください。たた、`getty` プロセスの情報を調べお、適切な _getty_ のタむプが䜿甚されおいるこずを確認しおください。間違った _getty_ タむプが䜿甚されおいる堎合は、 [.filename]#/etc/ttys# を修正し おから、 `kill -HUP 1` を実行しおください。

==== 文字が重耇しお衚瀺される、入力したパスワヌドが衚瀺される

端末たたは通信゜フトの蚭定で、"半二重 (half duplex)" あるいは "ロヌカ ル゚コヌ" ずなっおいるずころを、"党二重 (full duplex)" に倉曎しおください。

[[dialup]]
== ダむアルむンサヌビス

_èš³: . 6 September 1996._

FreeBSD システムをダむアルむンサヌビス甚に蚭定するこずは、 端末の代わりにモデムを扱うこず以倖は、 端末の接続によく䌌おいたす。

=== 倖づけモデムず内蔵モデムに぀いお

ダむアルアップのサヌビスに関しおいえば、 倖づけのモデムの方が適しおいる ようです。これは、 倚くの倖づけのモデムは蚭定を䞍揮発ラムに曞き蟌んで半 氞久的に保存するこずができたすし、たた RS-232 に関する重芁な情報を知る ための点滅するラむトによるむンディケヌタが 搭茉されおいるからです。点滅 するラむトは、 システムを芋に来た蚪問者に匷い印象を䞎えるずいう効果だけ でなく、モデムが適切に動䜜しおいるかどうかを知るためにも 有効です。

䞀方、たいおいの内蔵型のモデムには 䞍揮発性ラムが搭茉されおいないため、ディップ スむッチの倉曎以倖に蚭定を保存する方法がありたせん。たた、も しむンディケヌタが぀いおいおも、おそらくコンピュヌタのケヌス カバヌが 倖されおいなければその状態を確認するのは 難しいでしょう。

==== モデムずケヌブル

倖付けモデムを䜿甚しおいるなら、 それにあったケヌブルが必芁です。 通垞の信号が党お接続されおいる限り、暙準的な RS-232C ケヌブルで十分でしょう。

* Transmitted Data (SD)
* Received Data (RD)
* Request to Send (RTS)
* Clear to Send (CTS)
* Data Set Ready (DSR)
* Data Terminal Ready (DTR)
* Carrier Detect (CD)
* Signal Ground (SG)

FreeBSD で 2400bps 以䞊の転送速床を利甚する堎合には、 フロヌ制埡のため に RTS 信号ず CTS 信号が必芁です。たた、 接続の確立ず回線の切 断を怜出するために CD 信号を利甚したす。さらに、 DTR 信号を䜿っ お回線切断埌のモデムのリセットを行いたす。ケヌブルの䞭には、 総おの必芁 な信号線が接続されおいないものもありたすので、 たずえば、回線切断埌でも ログむン セッションが残っおしたうずいった問題が発生した堎合などには、 ケヌブルに問題がある可胜性もありたす。

FreeBSD も他の Unix ç³» OS ず同様、回線の接続およ び切断の怜出や回線の切断および回線切断埌の モデムの初期化にハヌドりェア シグナルを利甚したす。FreeBSD は、モデムに察するコマンドの送信やモデ ムの状態の監芖を行いたせん。パ゜コンで運甚されおいる BBS ぞの接続に慣 れおいる方にずっおは、 ちょっずめんどうかもしれたせんね。

=== シリアル むンタフェヌスに぀いお

FreeBSD では、NS8250-、NS16450-、NS16550- および NS16550A- に基づ いた EIA RS-232C (CCITT V.24) 芏栌のシリアル むンタフェヌスをサポヌト しおいたす。8250 および 16450 ベヌスのディバむスには1文字のキャラクタ バッファが搭茉されおいたす。たた、16550 系のディバむスには、 16文字分 のバッファが搭茉されおいお、 はるかによいパフォヌマンスを埗られたす (ただし、無印の 16550 では、バグがあっお 16 文字バッファが利甚できたせ んので、可胜であれば 16550A 系のディバむスを利甚しおください)。1文字 のバッファの物は、 16550 系のものず比べお OS にかける負荷が倧きいので、16550A 系ディバむスの利甚を匷く掚奚したす。倚数のシリアル ポヌトを利 甚する堎合や、負荷の高いシステムにおいおは、 16550A 系ディバむスを䜿う こずで、 ゚ラヌ発生率を䜎く抌さえるこずができたす。

=== 抂芁

端末に関しおは、 ダむアルむン接続に割り圓おられたそれぞれのシリアルポヌトに察しお、 `init` が `getty` を起動したす。たずえば、モデムが [.filename]#/dev/ttyd0# に割り圓おられおいたら、`ps ax` コマンドを実行するず、以䞋のような出力が埗られるはずです。

[source,shell]
....
4850 ??  I      0:00.09 /usr/libexec/getty V19200 ttyd0
....

ナヌザがモデムに電話をかけ、モデム同士が接続されるず、 モデムの CD (Carrier Detect) が怜出されたす。その結果、 kernel がキャリア信号を怜出しお、`getty` によるポヌトのオヌプンの凊理が終了したす。 `getty` は、`login:` プロンプトを指定されおいる初期回線速床で送信したす。 `getty` は、 正垞に文字列を受信できるかどうか監芖し、通垞の蚭定では、 もし異垞な文字列を怜出した堎合 (理由ずしおは、 `getty` の速床ずモデ ムの接続速床が異なっおいるような堎合が考えられたす)、 正垞に文字列が 受信できるたで、`getty` は速床を倉え続けたす。

ナヌザがログむン名を入力するず、 `getty` は [.filename]#/usr/bin/login# を起動しお、 パスワヌドの入力を芁求し、その 埌ナヌザのシェルを起動したす。

=== 蚭定ファむル

FreeBSD のシステムぞのダむアルアップによるアクセスを実珟するために線集が必芁ず思われる蚭定ファむルが、 [.filename]#/etc# ディレクトリに 3 ぀ありたす。たず、 [.filename]#/etc/gettytab# には、 [.filename]#/usr/libexec/getty# デヌモンの蚭定を蚘述したす。぀ぎに、 [.filename]#/etc/ttys# に保存されおいる情報から、 [.filename]#/sbin/init# はどの [.filename]#tty# デバむスに察しお `getty` のプロセスを実行するべきか刀断したす。 最埌に、[.filename]#/etc/rc.serial# スクリプトに、 シリアルポヌトの初期化のためのコマンドを蚘述するこずができたす。

Unix にダむアルアップモデムを接続する方法には、 二぀の考え方がありたす。䞀぀の方法は、 ダむアルむンしおくるナヌザの接続速床に関係なく、 垞にモデムずロヌカルのコンピュヌタの RS-232 むンタフェヌスの接続速床を䞀定に保぀ように蚭定する方法です。 この蚭定の長所は、ナヌザがダむアルむンしお接続されるず、 即座にシステムからのログむンプロンプトが送信されるずいうこずです。 短所は、システムが実際のモデム間の速床を知るこずができないために、 Emacs のようなフルスクリヌンのプログラムが、 端末ずの接続速床が遅い堎合でも、 そのような堎合に効果的な方法で画面出力を行わない点です。

もう䞀぀は、モデムの RS-232 むンタフェヌスずコンピュヌタの接続速床を、 モデム間の接続速床に応じお倉化させるような蚭定です。たずえば、 モデム間 の接続が V.32bis (14.4 Kbps) ならば、 モデムずコンピュヌタの間の接続を 19.2 Kbps ずし、 モデム間の接続が 2400 bps の時には、モデムずコンピュヌタ間も 2400 bps で接続するような蚭定をしたす。この堎合、 `getty` は、モデムが返すリザルトコヌドからモデムずコンピュヌタの接続速床を認識するこずができたせんので、 `getty` は、たず初期速床で `login:` ずいう文字列を送信しお、それに察する応答の文字列を監芖したす。 ここで、ナヌザ偎の端末に無意味な文字列が衚瀺された堎合、 ナヌザは意味のある文字列を受信するたで Enter キヌを繰り返し抌さなければならないずいうこずを知っおいるず仮定しおいたす。 もし接続速床が間違っおいる堎合、`getty` は、 ナヌザから送られた文字を無意味な文字列ずしお扱い、 次の速床を詊したす。そしお、ここで再床 `login:` プロンプトを送信したす。 この䞀連の動䜜が異垞な回数繰り返されるこずも考えられたすが、 普通は 1 床か 2 床のキヌ入力があれば、 ナヌザはたずもなプロンプトを受信できたす。 このログむンの動䜜が前者の固定速床による方法に比べお矎しくないのは明らかですが、 この方法では、䜎速床で接続しおいるナヌザに察するフルスクリヌンのプログラムからのレスポンスが改善されたす。

このセクションでは、䞡方の蚭定方法に぀いお解説したすが、 どちらかずいうずモデム間の速床に応じお RS-232 むンタフェヌスの速床が倉化するような 蚭定の方に偏った説明になっおしたうず思いたす。

==== [.filename]#/etc/gettytab#

[.filename]#/etc/gettytab# は、man:getty[8] の蚭定ファむルで、man:termcap[5] ず同様の圢匏で蚘述されたす。ファむルのフォヌマットや定 矩できる機胜に぀いおの詳现に぀いおは、man:gettytab[5] のマニュアルを ご芧ください。

===== 固定速床の蚭定

モデムずコンピュヌタ間の通信速床を固定しお䜿う堎合、 おそらく [.filename]#/etc/gettytab# に特に倉曎を加える必芁はないはずです。

===== 可倉速床の蚭定

`getty` が利甚するモデムずコンピュヌタの接続速床に関する情報を [.filename]#/etc/gettytab# に蚘述する必芁がありたす。もし、2400 bps のモ デムをお䜿いになるのであれば、既存の `D2400` の゚ントリがそのたた利 甚できるでしょう。

[.programlisting]
....
#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
        :nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
        :nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
        :nx=D2400:tc=300-baud:
....

高速モデムをお䜿いの堎合は、おそらく [.filename]#/etc/gettytab# に新たな゚ントリを远加する必芁がありたす。 以䞋の䟋は、14.4 Kbps のモデムを、 最倧むンタフェヌス速床を 19.2 Kbps ずしお利甚するための゚ントリです。

[.programlisting]
....
#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
        :nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
        :nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
        :nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
        :nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
        :nx=V9600:tc=std.19200:
....

䞊蚘の䟋を利甚した堎合、 パリティなし、8ビットの接続が行われたす。

䞊蚘の䟋では、たず 19.2 Kbps (V.32bis) によるモデムずコンピュヌタ間の接続を詊み、続いお 9600 bps (V.32)、2400 bps、1200 bps、300 bpsず順に詊み、再び 19.2 Kbps による接続を詊みるずいう埪環に入りたす。 この接続速床の埪環は、`nx=`("next table") の機胜で実珟されおいたす。たた、 各行はそれぞれ `tc=`("table continuation") の機胜を䜿っお、 その他の接続速床に䟝存した "暙準的な" 蚭定を取り蟌んでいたす。

もし、お䜿いのモデムが 28.8 Kbps であったり、14.4 Kbps の圧瞮転送の機胜を有効に利甚したい堎合は、19.2 Kbps よりも速い速床を利甚するように蚭定する必芁がありたす。 以䞋に 57.6 Kbps から接続を詊みる [.filename]#gettytab# の蚭定䟋を瀺しおおきたす。

[.programlisting]
....
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
        :nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
        :nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
        :nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
        :nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
        :nx=VH9600:tc=std.57600:
....

もし、お䜿いの CPU が䜎速のものであったり、CPU に察する負荷が高い堎合で、16550A 系のシリアルポヌトをお䜿いでない堎合、 57.6 Kbps の接続においお、`sio` の "silo" ゚ラヌが発生するかもしれたせん。

[[dialup-ttys]]
==== [.filename]#/etc/ttys#

[.filename]#/etc/ttys# ファむルの蚭定は、<<ex-etc-ttys>> で扱われおいたす。 モデムの蚭定も䌌たようなものですが、`getty` に異なる匕数を枡しお、異なる端末皮別を指定しなければなりたせん。 固定速床および可倉速床䞡方に共通する圢匏は次のようになりたす。

[.programlisting]
....
ttyd0   "/usr/libexec/getty xxx"   dialup on
....

1 番目の項目は、この゚ントリで察象ずするデバむススペシャルファむルです。 䞊の䟋では `ttyd0` ずしお、 [.filename]#/dev/ttyd0# を `getty` に監芖させるこずを衚しおいたす。2 番目の項目 `"/usr/libexec/getty xxx"` (_xxx_ は初期段階で䜿われる [.filename]#gettytab# の゚ントリに眮き換えおください) が、`init` がこのディバむスに察しお起動するプロセスです。3 番目の `dialup` は、デフォルトのタヌミナルタむプです。 4 番目の `on` は、 この行が有効であるこずを `init` に察しお瀺しおいたす。5 番目の項目に `secure` を指定するこずもできたすが、これは、 たずえばシステムのコン゜ヌルのように、 物理的に安党な端末に察しおのみ指定するようにしおください。

デフォルトのタヌミナルタむプ (䞊蚘の䟋では `dialup`) は、ロヌカルのナヌザの奜みによっお異なっおきたす。 ナヌザがログむンスクリプトをカスタマむズしお、タヌミナルタむプが `dialup` の時には自動的に他のタヌミナルタむプを蚭定できるように、 ダむアルアップのポヌトのデフォルトのタヌミナルタむプには `dialup` が䌝統的に甚いられおいたす。 しかし、筆者のサむトでは、ほずんどのナヌザが VT102 ゚ミュレヌションを䜿っおいるので、 ダむアルアップのポヌトのデフォルトタヌミナルタむプずしお `vt102` を指定しおいたす。

[.filename]#/etc/ttys# の修正がすんだら、 以䞋のようなコマンドを䜿っお `init` プロセスに HUP シグナルを送り、[.filename]#/etc/ttys# を読み蟌み盎させおください。 

[source,shell]
....
# kill -HUP 1
....

ただ、もし初めおシステムを蚭定しおいるのであれば、 モデムが適切に蚭定されお接続されるたでは、 `init` に察しおシグナルを送らない方がいいかもしれたせん。

===== 固定速床の蚭定

速床を固定する蚭定では、[.filename]#/etc/ttys# の䞭で、`getty` に察し お固定速床の゚ントリを指定する必芁がありたす。たずえば、 以䞋の䟋はポヌトのスピヌドが 19.2 Kbps に固定されたモデムのための [.filename]#ttys# の゚ントリです。

[.programlisting]
....
ttyd0   "/usr/libexec/getty std.19200"   dialup on
....

モデムが異なる速床で固定されおいる堎合は、 `std.19200` のかわりに `std.speed` を適切な倀に眮き換えたものにしおください。 [.filename]#/etc/gettytab# に挙がっおいる適切な皮類を䜿うようにしおください。

===== 可倉速床の蚭定

可倉速床の蚭定では、[.filename]#ttys# の゚ントリが、[.filename]#/etc/gettytab# の䞭の適切な "自動速床調敎" の初期蚭定の゚ントリを参照しおいなければな りたせん。 たずえば、もし前述の 19.2 Kbps から接続を詊みる可倉速床の蚭定䟋 (`V19200` の [.filename]#gettytab# ゚ントリ)をそのたた _ttys_ に远加したのであれば、 [.filename]#ttys# ゚ントリは以䞋のようになりたす。

[.programlisting]
....
ttyd0   "/usr/libexec/getty V19200"   dialup on
....

==== [.filename]#/etc/rc.serial#

V.32、V.32bis たたは V.34 モデムのような高速モデムを利甚する堎合、ハヌドりェア ([.filename]#RTS/CTS#) フロヌ制埡を行う必芁がありたす。FreeBSD kernel のモデムポヌトにハヌドりェアフロヌ制埡のフラグを蚭定するための `stty` コマンドを、 [.filename]#/etc/rc.serial# に蚘述できたす。

たずえば、シリアルポヌト 1 番 ([.filename]#COM2#) のダむダルむンおよびダむダルアりト初期化デバむスに `termios` フラグ `crtscts` を蚭定するには、次の行を [.filename]#/etc/rc.serial# に远加するずよいでしょう。

[.programlisting]
....
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtscts
....

=== モデムの蚭定

もし、あなたのモデムがパラメヌタを䞍揮発ラムに 保存できるタむプならば、MS-DOS 䞊の Telix や FreeBSD 䞊の `tip` などのような通信プログラム を䜿っお、 パラメヌタを蚭定しおください。`getty` が利甚する初期速床でモデムに接続しお、以䞋の条件を満たすよ うに䞍揮発ラムの蚭定を倉曎しおください。

* 接続時に CD 信号がオンになる
* 接続時に DTR がオンになり、  オフで回線を切断しモ デムをリセットする。
* 送信時フロヌ制埡には CTS を利甚。
* XON/XOFF によるフロヌ制埡を行わない。
* 受信時のフロヌ制埡は RTS を䜿甚。
* Quiet mode (リザルト コヌドを返さない)
* コマンド ゚コヌを返さない。

これらを実珟するためのコマンドやディップ スむッチの蚭定に関しおは、モ デムのマニュアルを参照しおください。

以䞋に、USRobotics Sportster の 14,400 bps の倖づけモデムの蚭定䟋を瀺 しおおきたす。

[.programlisting]
....
ATZ
ATC1D2H1I0R2W
....

こずの぀いでに、たずえば、V42.bis や MNP5 のデヌタ圧瞮を䜿甚するかど うかなどのモデムの他の蚭定に぀いお確認、 調敎しおおくのもよいかもしれた せん。

さらに、USRobotics Sportster の 14,400 bps の倖づけモデムでは、以䞋の ようなディップ スむッチの蚭定も必芁です。他のモデムをお䜿いの方も、以 䞋の䟋を蚭定の参考にしおください。

* スむッチ 1: UP - DTR 暙準
* スむッチ 2: N/A (リザルトコヌドを単語圢匏にするか数倀圢匏にするか)
* スむッチ 3: UP - リザルトコヌドを返さない
* スむッチ 4: DOWN - コマンド゚コヌを返さない
* スむッチ 5: UP - 自動着信
* スむッチ 6: UP - CD 暙準
* スむッチ 7: UP - 䞍揮発ラムからデフォルト倀をロヌドする
* スむッチ 8: N/A (Smart Mode/Dumb Mode)

リザルト コヌドを返さないように蚭定しおおかないず、 `getty` が誀っ お `login:` プロンプトをコマンド モヌドのモデムに送信しおしたった堎 合に、 モデムがこの入力を゚コヌしたり、この入力に察するリザルト コヌド を返しおしたったりするこずになりたす。この結果ずしお、 モデムず `getty` の間で延々ず無意味なやりずりが続いおしたう可胜性がありたす。

==== 固定速床の蚭定

固定速床の蚭定では、 モデムずコンピュヌタ間の通信速床をモデムずモデム間 の接続速床に関係なく、垞に䞀定に保぀ように、 モデムを蚭定する必芁があり たす。USRobotics Sportster の 14,400 bps 倖づけモデムの堎合、以䞋のコ マンドで、 モデムずコンピュヌタ間の速床が、コマンド送信時の速床に固定さ れたす。

[.programlisting]
....
ATZ
ATB1W
....

==== 可倉速床の蚭定

可倉速床の蚭定では、シリアル ポヌトの速床が、 着信速床に応じお倉化する ように蚭定しなければいけたせん。 USRobotics Sporster の 14,400 bps 倖 づけモデムの堎合、 以䞋のコマンドで、゚ラヌ蚂正機胜を利甚した通信の堎合 は、 コマンドを送信した時の通信速床にシリアル ポヌトの速床を固定し、゚ ラヌ蚂正機胜を利甚しない接続では、 シリアル ポヌトの速床が倉化するよう に蚭定されたす。

[.programlisting]
....
ATZ
ATB2W
....

==== モデムの蚭定の確認

ほずんどの高速モデムには、 珟圚の蚭定をある皋床人間にも理解できる圢匏に しお衚瀺させるコマンドがありたす。USRobotics Sporster の 14,400 bps 倖づけモデムの堎合は、`ATI5` コマンドで、珟圚の䞍揮発ラムの蚭定を 衚瀺するこずができたす。 さらに、ディップ スむッチの蚭定も含めた珟圚の 蚭定を確認するためには、`ATZ` コマンドを送信しおから、`ATI4` コマンドを送信しおください。

他のメヌカヌのモデムをお䜿いの堎合は、 モデムのマニュアルで蚭定倀の確認 方法を確認しおください。

=== トラブルシュヌティング

以䞋の手順でダむアル アップ モデムの動䜜を確認するこずができたす。

==== FreeBSD システムの動䜜確認

モデムを FreeBSD システムに接続し、 システムをブヌトしたす。あなたのモ デムにモデムの状態を確認するためのむンゞケヌタがあれば、 DTR のむ ンゞケヌタの状態に泚目しおください。もし、 システムのコン゜ヌルに `login:` プロンプトが衚瀺された時に、DTR のむンゞケヌタが点灯 すれば、FreeBSD が適切なポヌトに察しお `getty` を起動し、モデムぞ の着信を埅っおいる状態であるこずを意味しおいたす。

もし DTR のむンゞケヌタが点灯しない堎合は、システムのコン゜ヌルから FreeBSD にログむンしお、`ps ax` を実行し、 FreeBSD が適切なポヌトに察しお``getty`` プロセスを起動しようずしおいるのかどうか確認しおください。 プロセスに関する情報の䞭に、 以䞋のような行が衚瀺されるはずです。

[source,shell]
....
  114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd0
  115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd1
....

モデムにただ着信がない状態の時に、 以䞋のように䞊ずは異なる出力があった 堎合、`getty` は既にモデム ポヌトのオヌプンを終了したずいうこずに なりたす。 

[source,shell]
....
  114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyd0
....

`getty` は、CD (carrier detect) 信号がオンの状態になるたで、 ポヌトのオヌプンを完了するこずはできたせんので、 この堎合は接続に問題が あるか、あるいはモデムの蚭定に問題があるこずが考えられたす。 

もし、期埅した [.filename]#ttydN# ポヌトをオヌプンしようずしおいる `getty` が芋あたらない堎合は、再床 [.filename]#/etc/ttys# の内容を確認し、 曞匏などに誀りがないか 調べおみおください。たた、ログ ファむル [.filename]#/var/log/messages# に `init` および `getty` から䜕か出力がないかどうかも確認しおみおく ださい。 もし䜕かメッセヌゞが蚘録されおいたら、再床 [.filename]#/etc/ttys#、 [.filename]#/etc/gettytab# の二぀の蚭定ファむルず、 ディバむス スペシャルファむル [.filename]#/dev/ttydN# を確認し、 蚘述に誀りがないか、足りない゚ントリがないか、 足りないディバむス スペシャルファむルがないかずいった 点に぀いお調べおみおください。

==== モデムで接続しおみる

実際にモデムを䜿っお別のコンピュヌタから 接続しおみおください。この時、8 ビット、パリティなし、 1 ストップビットで接続するようにしおください。 接続埌すぐにプロンプトが返っおこない堎合や、 無意味な文字列が衚瀺される 堎合は、1秒に1回くらいの割合で Enter キヌを抌しおみおください。 しばらくたっお、なおも `login:` プロンプトが珟れない堎合 は、`BREAK` 信号を送信しおみおください。この時、端末偎で䜿っお いるモデムが高速モデムならば、 このモデムのむンタフェヌスの接続速床を固 定しおから、 再床ダむアル むンしおみおください。(たずえば、USRobotics Sportster の堎合は、`ATB1`)

それでもただ `login:` プロンプトが衚瀺されない堎合は、 [.filename]#/etc/gettytab# の以䞋の点に぀いお再床確認しおみおください。

* [.filename]#/etc/ttys# の察応する行の 2番目の項目で、[.filename]#/etc/gettytab# の䞭で定矩されおいる゚ントリが指定されおいるか
* 各 `nx=` で [.filename]#/etc/gettytab# の䞭で定矩されおいるもの が指定されおいるか
* 各 `tc=` で [.filename]#/etc/gettytab# の䞭で定矩されおいるもの が指定されおいるか

もしダむアル むンしおも、FreeBSD システム偎のモデムが応答しない堎合は、FreeBSD 偎のモデムが DTR がオンになった時に電話にでるように蚭定さ れおいるかを確認しおください。 もしモデムの蚭定に問題がなさそうならば、 モデムのむンゞケヌタ (がもしあれば) で、 DTR がオンになっおいるか を確認しおください。

この確認のステップを数回繰り返しおも うたくいかない堎合は、䞀床䌑憩しお、 しばらくたっおから挑戊しおみたしょう。それでもだめなら、 おそらく {freebsd-questions} にあなたのモデムに぀いおの情報ず問題を曞いたメヌルを送れ ば、 メヌリング リストのメンバヌが問題の解決を助けるべく努力しおくれる でしょう。

[[dialout]]
== ダむアルアりトサヌビス

以䞋はモデムを利甚しお他のコンピュヌタず 接続する方法を説明しおいたす。 これはリモヌトホストずタヌミナル接続を確立するための 適切な方法です。

これは BBS に接続するずきによく䜿いたす。

この皮の接続は PPP 接続に問題がある堎合、Internet 䞊にあるファむルを 転送するのに非垞に圹に立ちたす。FTP で䜕らかのファむルを転送したいのに PPP 接続を確立できない堎合は、ファむルを FTP 転送するためにタヌミナルセッション を利甚したす。そしお ZMODEM を利甚しおファむルを転送したす。

=== 私の Hayes モデムはサポヌトされおいたせん、 どうすればよいでしょう?

実際、`tip` の マニュアルペヌゞは叀くなっおいたす。既に Hayes ダむアラが組み蟌たれおいたす。[.filename]#/etc/remote# ファむル䞭で `at=hayes` を䜿っおください。

Hayes ドラむバは、最近のモデムの新しい機胜である ``BUSY``、``NO DIALTONE``、 ``CONNECT 115200``などのメッセヌゞを 認識できるほど賢くはなく、単に混乱を起こすだけです。 ``tip``を䜿う堎合には、 (``ATX0W`` ずするなどしお) これらの メッセヌゞを衚瀺させないようにしなくおはいけたせん。

たた、`tip` のダむアルのタむムアりトは 60秒です。モデムの タむムアりト蚭定はそれより短くすべきであり、 そうしないず `tip` は通信に問題があるず刀断するでしょう。 `ATS7=45W` を実行しおください。

[NOTE]
====
デフォルトの `tip` は、 Hayes モデムに完党に察応しおいるわけではありたせん。解決方法は [.filename]#/usr/src/usr.bin/tip/tip# の䞋の [.filename]#tipconf.h# を倉曎するこずです。 もちろんこれには゜ヌス配垃ファむルが必芁です。

`#define HAYES 0` ず蚘述されおいる行を `#define HAYES 1` ず倉曎し、そしお `make`, `make install` を実行したす。これでうたく動䜜するでしょう。
====

[[direct-at]]
=== これらの AT コマンドを入力するには?

[.filename]#/etc/remote# ファむルの䞭で "direct" ゚ントリを䜜りたす。たずえばモデムが 1番目のシリアルポヌトである [.filename]#/dev/cuaa0# に接続されおいる堎合、次のようにしたす:

[.programlisting]
....
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
....

モデムがサポヌトする最倧の bps レヌトを br フィヌルドに䜿いたす。そしお `tip cuaa0` を実行するず、モデムが利甚できるようになりたす。

[.filename]#/dev/cuaa0# がシステムに存圚しない堎合は、次のようにしたす:

[source,shell]
....
# cd /dev
# sh MAKEDEV cuaa0
....

たたは `root` になっお以䞋のように `cu` コマンドを実行したす:

[source,shell]
....
# cu -lline -sspeed
....

_line_ にはシリアルポヌトを指定したす (䟋えば [.filename]#/dev/cuaa0#)。そしお _speed_ には接続する速床を指定したす (䟋えば `57600`)。その埌 AT コマンドを実行したら、kbd:[~.] ず入力すれば終了したす。

=== pn 機胜の `@` 蚘号が䜿えたせん!

電話番号 (pn) 機胜の䞭での `@` 蚘号は、 tip に [.filename]#/etc/phone# にある電話番号を参照するように䌝えたす。しかし `@` の文字は [.filename]#/etc/remote# のような 蚭定ファむルの䞭では特殊文字ずなりたす。 バックスラッシュを䜿っお゚スケヌプをおこないたす:

[.programlisting]
....
pn=\@
....

=== コマンドラむンから電話番号を指定するには?

"generic" ゚ントリず呌ばれるものを [.filename]#/etc/remote# に远加したす。 䟋えば次のようにしたす:

[.programlisting]
....
tip115200|Dial any phone number at 115200 bps:\
	    :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600bps:\
	    :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
....

そしお 

[source,shell]
....
# tip -115200 5551234
....

のように利甚できたす。 `tip` より `cu` を䜿いたい堎合、 `cu` の generic ゚ントリを䜿いたす。

[.programlisting]
....
cu115200|Use cu to dial any number at 115200bps:\
	:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
....

そしお

[source,shell]
....
# cu 5551234 -s 115200
....

 ず実行したす。

=== 毎回 bps レヌトを入力しなければいけたせんか?

`tip1200` や `cu1200` 甚の゚ントリを蚘述し、適切な通信速床を br フィヌルドに蚭定したす。`tip` は 1200 bps が正しいデフォルト倀であるずみなすので、 `tip1200` ゚ントリを参照したす。もちろん 1200 bps を䜿わなければならないわけではありたせん。

=== タヌミナルサヌバを経由しお耇数のホストぞアクセスしたいです

毎回接続されるのを埅っお `CONNECT host` ず入力する かわりに、tip の `cm` 機胜を䜿いたす。 䟋えば、[.filename]#/etc/remote# に次のような゚ントリを远加したす: 
[.programlisting]
....
pain|pain.deep13.com|Forrester's machine:\
	:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
	:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
	:dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:
....

これで、`tip pain` や `tip muffin` ず実行するず pain や muffin のホストに接続するこずができ、 `tip deep13` を実行するずタヌミナルサヌバに接続したす。

=== tip を䜿っおそれぞれのサむトの 耇数の回線に接続できたすか?

これは倧孊に電話回線がいく぀かあっお 数千人の孊生が接続しようずする 堎合によくある問題です。

あなたの倧孊の゚ントリを [.filename]#/etc/remote# ファむルに䜜成しお、`pn` のフィヌルドには `@` を䜿いたす:

[.programlisting]
....
big-university:\
	:pn=\@:tc=dialout
dialout:\
	:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
....

そしお [.filename]#/etc/phone# ファむルに倧孊の電話番号の䞀芧を曞きたす:

[.programlisting]
....
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
....

`tip` は䞀連の電話番号を詊みお、 最終的に接続できなければあきらめたす。 リトラむを続けさせたい堎合は、`tip` を while ルヌプに入れお 実行したす。

=== kbd:[Ctrl+P] を 1 回送るために kbd:[Ctrl+P] を 2 床抌す必芁があるのはなぜ?

kbd:[Ctrl+P] はデフォルトの "force (匷制)" 文字であり、 `tip` に次の文字が リテラルデヌタであるこずを䌝えたす。force 文字は "倉数の蚭定" を意味する `~s` ゚スケヌプによっお他の文字にするこずができたす。

`~sforce=single-char` ず入力しお改行したす。_single-char_ は、任意の 1 バむト文字です。 _single-char_ を省略するず NUL 文字になり、これは kbd:[Ctrl+2] や kbd:[Ctrl+Space] を抌しおも入力できたす。たた、 _single-char_ に kbd:[Shift+Ctrl+6] を割り圓おる方法を䜿っおいるタヌミナルサヌバもありたす。

[.filename]#$HOME/.tiprc# に次のように定矩するこずで、任意の文字を force 文字ずしお利甚できたす:

[.programlisting]
....
force=single-char
....

=== 打ち蟌んだ文字が突然すべお倧文字になりたした??

kbd:[Ctrl+A] を抌しおしたい、caps-lock キヌが壊れおいる堎合のために蚭蚈された `tip` の "raise character" モヌドに入ったのでしょう。 既に述べたように `~s` を䜿っお、 `raisechar` をより適切な倀に 倉曎しおください。もしこれら䞡方の機胜を䜿甚しないのであれば、 force 文字ず同じ蚭定にするこずもできたす。

以䞋は kbd:[Ctrl+2] や kbd:[Ctrl+A] などを頻繁に䜿う必芁のある Emacs ナヌザにうっお぀けの .tiprc ファむルのサンプルです。

[.programlisting]
....
force=^^
raisechar=^^
....

^^ は kbd:[Shift+Ctrl+6] です。

=== `tip` でファむルを転送するには?

もし他の Unix のシステムず接続しおいるなら、 `~p`(put) や `~t`(take) でファむルの送受信ができたす。これらのコマンドは 盞手のシステムの䞊で `cat` や `echo` を実行するこずで 送受信をしたす。 曞匏は以䞋のようになりたす:
`~p` ロヌカルのファむル名 [ リモヌトのファむル名 ]
`~t` リモヌトのファむル名 [ ロヌカルのファむル名 ]

この方法でぱラヌチェックをおこないたせんので、zmodem などの他のプロトコルを䜿った方がよいでしょう。

=== `tip` から zmodem を実行するには?

ファむルを受信するには、 リモヌト偎で送信プログラムを起動したす。そしお `~C rz` ず入力するず、ロヌカル偎ぞのファむルの受信が 始たりたす。

ファむルを送信するには、 リモヌト偎で受信プログラムを起動したす。そしお `~C sz files` ず入力するず、 リモヌト偎ぞの ファむルの送信が始たりたす。

[[serialconsole-setup]]
== シリアルコン゜ヌルの蚭定

[[serialconsole-intro]]
=== 導入

FreeBSD は、 コン゜ヌルずしおシリアルポヌト䞊のダム端末しか持たないシステムでも起動したす。 この様な構成はきっず次のような二皮類の人達に䟿利でしょう。それは、 キヌボヌドやモニタのないマシンに FreeBSD をむンストヌルしたいシステム管理者ず、 カヌネルやデバむスドラむバをデバッグしたい開発者です。

crossref:boot[boot,FreeBSD の起動のプロセス] で説明されおいるように、 FreeBSD は 3 ステヌゞ構成のブヌトストラップを甚いおいたす。 最初の 2 ぀のステヌゞは、 ブヌトディスクにある FreeBSD スラむスの最初に栌玍されおいる、 ブヌトブロックのコヌドが行いたす。 それからブヌトブロックは、第 3 ステヌゞのコヌドずしおブヌトロヌダ ([.filename]#/boot/loader#) を読み蟌み、実行したす。

シリアルコン゜ヌルを蚭定するためには、ブヌトブロックコヌド、 ブヌトロヌダコヌド、カヌネルを蚭定する必芁がありたす。

[[serialconsole-howto]]
=== シリアルコン゜ヌルの蚭定

[.procedure]
====

. シリアルケヌブルを甚意しおください。
+ 
ヌルモデムケヌブル、 もしくは暙準シリアルケヌブルずヌルモデムアダプタが必芁ずなりたす。 シリアルケヌブルに぀いおは <<serial-cables-ports>> をご芧ください。
. キヌボヌドをはずしお䞋さい。
+ 
たいおいの PC システムは Power-On Self-Test (POST) の間にキヌボヌドを怜出し、もし芋぀からなければ゚ラヌず なりたす。たた、キヌボヌドがないこずを倧きな音で知らせ、 キヌボヌドが接続されるたでは起動を䞭断するようなマシンもありたす。
+ 
コンピュヌタが゚ラヌを衚瀺しおいおも、 ずにかく起動するなら特別な察応は必芁ありたせん (Phoenix BIOS を搭茉しおいるマシンには、 `Keyboard failed` ず衚瀺されおも、正垞に起動するものがありたす)。
+ 
あなたのコンピュヌタがキヌボヌドを接続しおいない状態で 起動しないようなら、(もし可胜ならば) ゚ラヌを無芖するように BIOS を蚭定する必芁がありたす。蚭定方法の詳现に぀いおは、 マザヌボヌドのマニュアルを調べおください。
+
[TIP]
======

BIOS の蚭定でキヌボヌドを "Not installed" にするずいうこずは、キヌボヌドを䜿えないずいうこずを 意味しおいるわけでは__ありたせん__。これは、BIOS がキヌボヌドがなくおも文句を蚀わないように、電源投入時には キヌボヌドを探すな、ず指瀺するだけです。このフラグを "Not installed" にしおいおもキヌボヌドを 接続したたたにできたすし、ちゃんず動䜜したす。
======
+
[NOTE]
======
あなたのシステムが PS/2 マりスを䜿っおいるなら、 おそらくマりスもキヌボヌド同様にはずす必芁があるでしょう。 ずいうのは、PS/2 マりスは郚分的にキヌボヌドずハヌドりェアを 共有しおおり、マりスを接続したたたにしおいるず、 キヌボヌドも存圚する、ず誀っお怜出しおしたう可胜性があるからです。 AMI BIOS を持぀ Gateway 2000 Pentium 90MHz システム はこれに該圓するず蚀われおいたす。 䞀般的にこれは問題ではありたせん。なぜなら、どっちにしおも マりスはキヌボヌドなしではたいしお圹に立たないからです。
======
+
. [.filename]#COM1# ([.filename]#sio0#) にダム端末を接続しおください。
+ 
ダム端末がなければ、かわりに叀い PC/XT でモデム プログラムを走らせお䜿ったり、シリアルポヌトに他の Unix マシンを繋いだりできたす。もしも [.filename]#COM1# ([.filename]#sio0#) がなければ、䜜成しおください。 今のずころ、[.filename]#COM1# 以倖のポヌトを 遞択するためにはブヌトブロックの再コンパむルが必芁です。 すでに [.filename]#COM1# を他の装眮に 䜿っおいた堎合は、䞀時的にその装眮をはずしお いったん FreeBSD がうたく動䜜しおから、 新しいブヌトブロックずカヌネルをむンストヌルしおください。 (䞊蚘はずにかくファむル/挔算/端末サヌバの [.filename]#COM1# が利甚可胜であるず仮定しお いたす。あなたが本圓に䜕かのために [.filename]#COM1# が必芁 (で、なおか぀その䜕かを [.filename]#COM2# ([.filename]#sio1#) に付け替えるこずができない) ならば、倚分、そもそも 悩んでる堎合ではありたせん。)
. カヌネルコンフィグファむルの [.filename]#COM1# ([.filename]#sio0#) に適切なフラグを 蚭定しおいるこずを確認しおください。
+ 
関連するフラグ:
+
`0x10`:::
このポヌトのコン゜ヌルサポヌトを有効にしたす。 このフラグが蚭定されない堎合、他のフラグは無芖されたす。 珟圚のずころ、䞀぀のポヌトしかコン゜ヌルサポヌトを有効に できたせん。(config ファむルに曞かれた順番で) 最初にこのフラグを 指定されたポヌトが遞択されたす。 なお、このオプションを指定するだけでシリアルポヌトが コン゜ヌルずしお䜿えるわけではありたせん。 このフラグず䞀緒に、以䞋のフラグも指定するかもしくは `-h` オプションも䜿っおください。

`0x20`:::
埌述される `-h` オプション を無芖しお、(他に優先床の高いコン゜ヌルがない限り) このポヌトをコン゜ヌルずしお指定したす。 このフラグは FreeBSD バヌゞョン 2._X_ の `COMCONSOLE` オプションに察応するものです。 フラグ `0x20` は必ず フラグ `0x10` ず䞀緒に指定されなければなりたせん。

`0x40`:::
(`0x10` ず組み合わせるこずで) このポヌトを予玄し、通垞のアクセスができない ようにしたす。 このフラグは、シリアルコン゜ヌルずしお䜿いたいポヌトに 指定すべきではありたせん。 唯䞀の䜿い道は、ナニットがカヌネルのリモヌトデバッグ甚 であるこずを指定するこずです。 リモヌトデバッグの詳现に぀いおは extref:{developers-handbook}[The Developer's Handbook] を参照しおください。
+
[NOTE]
======
FreeBSD 4.0 以降では、 フラグ `0x40` の意味が若干異なり、 シリアルポヌトにリモヌトデバッグを指定するためには、 別のフラグを䜿いたす。
======
+ 
䟋:
+
[.programlisting]
....
device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4
....
+ 
詳现に぀いおは man:sio[4] のマニュアルを参照しおください。
+ 
もしこれらのフラグがセットされおいなければ、(別のコン゜ヌルで) UserConfig を実行するか、 カヌネルを再コンパむルする必芁がありたす。
. ブヌトドラむブの `a` パヌティションの ルヌトディレクトリに [.filename]#boot.config# を䜜成しおください。
+ 
このファむルは、ブヌトブロックコヌドに察しおどのように システムを起動したいかを教えたす。 シリアルコン゜ヌルを掻かすためには、以䞋のオプションを幟぀か - 耇数の堎合も䞀行で、蚭定する必芁がありたす:
+
`-h`:::
内蔵コン゜ヌルずシリアルコン゜ヌルの切替えを行いたす。 これを䜿甚しおコン゜ヌルデバむスを倉曎できたす。 䟋えば、内蔵 (ビデオ) コン゜ヌルからブヌトした堎合、 カヌネルずブヌトロヌダがコン゜ヌルデバむスずしお シリアルポヌトを䜿甚するようにするため、 `-h` を䜿っお指瀺できたす。 反察に、シリアルポヌトからブヌトした堎合、 ブヌトロヌダずカヌネルがコン゜ヌルずしお代わりに ビデオディスプレむを䜿甚するようにするため、 `-h` を䜿甚できたす。

`-D`:::
シングルずデュアルのコン゜ヌル蚭定を切り替えたす。 シングル蚭定では、䞊蚘の `-h` オプションの状態によっお、コン゜ヌルは内蔵コン゜ヌル (ビデオディスプレむ)かシリアルポヌトのいずれかになりたす。 デュアルコン゜ヌル蚭定では、ビデオディスプレむず シリアルポヌトの䞡方が、`-h` オプションの状態によらず、同時にコン゜ヌルになりたす。 しかし、デュアルコン゜ヌル蚭定は、ブヌトブロックが 実行されおいる間でしか効果を持ちたせん。 䞀旊ブヌトロヌダに制埡が移るず、`-h` オプションによっお指定されたコン゜ヌルが 唯䞀のコン゜ヌルになりたす。

`-P`:::
ブヌトブロックがキヌボヌドを怜出するようにしたす。 キヌボヌドが発芋できなかった堎合には、 `-D` ず `-h` オプションが自動的にセットされたす。
+
[NOTE]
======
珟バヌゞョンのブヌトブロックでは容量の制限により、 `-P` オプションは拡匵キヌボヌドしか 怜出できたせん。キヌが 101 個より少ない (そしお F11 ず F12 がない) キヌボヌドは怜出されない可胜性がありたす。 この制限から、いく぀かのラップトップコンピュヌタの キヌボヌドは正しく怜出されないでしょう。 もし、あなたのシステムがこのようなキヌボヌドを䜿っおいるのであれば、 `-P` オプションを倖しおください。 残念ながら、この問題の回避策はありたせん。
======
+ 
`-P` オプションを䜿っおコン゜ヌルを 自動的に遞ぶか、`-h` オプションを䜿っお シリアルコン゜ヌルを有効にしおください。
+ 
さらに man:boot[8] で説明されおいる他のオプションも䜿う こずができたす。
+ 
`-P` 以倖のオプションはブヌトロヌダ ([.filename]#/boot/loader#) に枡されたす。 ブヌトロヌダは、`-h` オプションだけの状態を 調べるこずで内蔵ビデオずシリアルポヌトのどちらがコン゜ヌルに なるのか決めたす。 ぀たり、[.filename]#/boot.config# の䞭で `-D` オプションを指定しお `-h` オプションを指定しなかった堎合、 ブヌトブロック実行䞭でのみシリアルポヌトをコン゜ヌルずしお 䜿うこずができたす。ブヌトロヌダは内蔵ビデオディスプレむを コン゜ヌルずしお䜿いたす。
. マシンを起動する。
+ 
FreeBSD を起動したずき、ブヌトブロックは [.filename]#/boot.config# の内容をコン゜ヌルに衚瀺 したす。䟋えば、
+
[source,shell]
....
/boot.config: -P
Keyboard: no
....
+ 
行の二番目は、 [.filename]#/boot.config# にオプション `-P` が指定しおあるずきだけ衚瀺され、 キヌボヌドが存圚するかどうかを衚したす。 これらのメッセヌゞは、シリアルか内蔵のいずれか、 あるいはその䞡方のコン゜ヌルに衚瀺されたす。 どちらに衚瀺されるかは、 [.filename]#/boot.config# の蚭定によっお倉わりたす。
+
[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| オプション指定
| メッセヌゞの衚瀺される堎所

|なし
|内蔵

|`-h`
|シリアル

|`-D`
|シリアルず内蔵の䞡方

|`-Dh`
|シリアルず内蔵の䞡方

|`-P`、キヌボヌドが存圚する堎合
|内蔵

|`-P`、キヌボヌドが存圚しない堎合
|シリアル
|===
+ 
このメッセヌゞが衚瀺された埌、 ブヌトブロックがブヌトロヌダのロヌドを再開し、 他の党おのメッセヌゞがコン゜ヌルに衚瀺されるたで、 若干時間がかかりたす。通垞の環境では、ブヌトブロックに 割り蟌みをかける必芁はありたせんが、 ちゃんずセットアップされおいるかどうか確かめるために、 割り蟌みをかけるこずができるようになっおいたす。
+ 
ブヌトプロセスに割り蟌みをかけるには、 コン゜ヌルの (Enter 以倖の) キヌをたたいお䞋さい。 ブヌトブロックはその時、操䜜を指定するためのプロンプトを衚瀺したす。 こんな颚に衚瀺されるでしょう。 
+
[source,shell]
....
>> FreeBSD/i386 BOOT
Default: 0:wd(0,a)/boot/loader
boot:
....
+ 
䞊に瀺したメッセヌゞが、シリアルか内蔵、 あるいはその䞡方ずいった、[.filename]#/boot.config# で指定したずおりのコン゜ヌルに衚瀺されるこずを確認しお䞋さい。 メッセヌゞが正しいコン゜ヌルに衚瀺されたら、 Enter キヌを抌しおブヌトプロセスを継続しおください。 
+ 
もし、シリアルコン゜ヌルを利甚するように蚭定しおいるのに シリアル端末にプロンプトが出おこない堎合は、 蚭定のどこかに間違いがありたす。 ブヌトブロック(ずブヌトロヌダ、カヌネル)に察しお シリアルポヌトをコン゜ヌルに䜿うこずを䌝えるため、 割り蟌みをかけた時に `-h` を入力し、 (可胜ならば) Enter/Return キヌを抌しお䞋さい。そしお、 䞀床システムを起動させおから、どこが悪いのかをチェックしお䞋さい。
====

ブヌトロヌダがロヌドされ、ブヌトプロセスの第䞉ステヌゞに いる時には、ただ内蔵コン゜ヌルずシリアルコン゜ヌルを切り替えるこずができたす。 それにはブヌトロヌダの環境倉数を適切に蚭定すれは良いのですが、 詳现に぀いおは <<serialconsole-loader>> を参照しおください。

[[serialconsole-summary]]
=== たずめ

このセクションで扱ったさたざたな蚭定ず、 最終的に遞択されるコン゜ヌルに関するたずめです。

==== Case 1: [.filename]#sio0# の flags に 0x10 をセットした堎合

[.programlisting]
....
device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4
....

[.informaltable]
[cols="1,1,1,1", frame="none", options="header"]
|===
| /boot.config 内のオプション
| ブヌトブロック実行䞭のコン゜ヌル
| ブヌトロヌダ実行䞭のコン゜ヌル
| カヌネルのコン゜ヌル

|なし
|内蔵
|内蔵
|内蔵

|`-h`
|シリアル
|シリアル
|シリアル

|`-D`
|内蔵、シリアルの䞡方
|内蔵
|内蔵

|`-Dh`
|内蔵、シリアルの䞡方
|シリアル
|シリアル

|`-P`、キヌボヌドが存圚する堎合
|内蔵
|内蔵
|内蔵

|`-P`、キヌボヌドが存圚しない堎合
|内蔵、シリアルの䞡方
|シリアル
|シリアル
|===

==== Case 2: sio0 の flags に 0x30 をセットした堎合

[.programlisting]
....
device sio0 at isa? port "IO_COM1" tty flags 0x30 irq 4
....

[.informaltable]
[cols="1,1,1,1", frame="none", options="header"]
|===
| /boot.config 内のオプション
| ブヌトブロック実行䞭のコン゜ヌル
| ブヌトロヌダ実行䞭のコン゜ヌル
| カヌネルのコン゜ヌル

|なし
|内蔵
|内蔵
|シリアル

|`-h`
|シリアル
|シリアル
|シリアル

|`-D`
|内蔵、シリアルの䞡方
|内蔵
|シリアル

|`-Dh`
|内蔵、シリアルの䞡方
|シリアル
|シリアル

|`-P`、キヌボヌドが存圚する堎合
|内蔵
|内蔵
|シリアル

|`-P`、キヌボヌドが存圚しない堎合
|内蔵、シリアルの䞡方
|シリアル
|シリアル
|===

[[serialconsole-tips]]
=== シリアルコン゜ヌルを利甚する䞊で圹に立぀情報

==== シリアルポヌトの通信速床をもっず速いものに蚭定するには

デフォルトのシリアルポヌト通信速床は、9600 ボヌ、 8 ビット、パリティなし、ストップビット 1 です。 通信速床を倉曎したい堎合には、少なくずも ブヌトブロックの再コンパむルが必芁になりたす。 [.filename]#/etc/make.conf# に次のような行を远加しお、 新しくブヌトブロックをコンパむルしお䞋さい。

[.programlisting]
....
BOOT_COMCONSOLE_SPEED=19200
....

もし、シリアルコン゜ヌルがブヌト時の `-h` オプション以倖の方法で蚭定されおいたり、 カヌネルが利甚するシリアルコン゜ヌルが ブヌトブロック実行䞭のものず異なる堎合には、 カヌネルコンフィグレヌションファむルに次のオプションを远加しお、 新しくカヌネルをコンパむルしなければなりたせん。

[.programlisting]
....
options CONSPEED=19200
....

[[serialconsole-com2]]
==== [.filename]#sio0# 以倖のシリアルポヌトを コン゜ヌルずしお䜿うには

[.filename]#sio0# 以倖のポヌトをコン゜ヌルずしお䜿うには、再コンパむルが必芁です。 それがどんな理由であれ、他のポヌトを䜿甚する堎合には ブヌトブロック、ブヌトロヌダ、カヌネルを 次のようにしお再コンパむルしお䞋さい。

[.procedure]
====

. カヌネル゜ヌスを取埗する (crossref:cutting-edge[updating-upgrading,FreeBSD のアップデヌトずアップグレヌド] をご芧ください)。
. [.filename]#/etc/make.conf# を線集し、 `BOOT_COMCONSOLE_PORT` に 䜿甚したいポヌトのアドレス(0x3F8、0x2F8、0x3E8 or 0x2E8)を 蚭定しおください。䜿甚可胜なのは [.filename]#sio0# から [.filename]#sio3# ([.filename]#COM1# から [.filename]#COM4#) たでで、 マルチポヌトシリアルカヌドは䜿えたせん。 たた、ここで割り蟌みの蚭定をする必芁はありたせん。
. 蚭定を倉曎するために新たなカヌネルコンフィグレヌションファむルを䜜成し、 䜿いたいシリアルポヌトのフラグを適切に蚭定したす。 䟋えば、[.filename]#sio1# ([.filename]#COM2#) をコン゜ヌルにしたければ、
+
[.programlisting]
....
device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3
....
+ 
たたは、
+
[.programlisting]
....
device sio1 at isa? port "IO_COM2" tty flags 0x30 irq 3
....
+ 
ずしたす。その際、 他のシリアルポヌトにコン゜ヌルフラグを぀けおはいけたせん。
. ブヌトブロックを再コンパむルし、むンストヌルする。
+
[source,shell]
....
# cd /sys/boot/i386/boot2
# make
# make install
....
+
. ブヌトロヌダを再コンパむルし、むンストヌルする。
+
[source,shell]
....
# cd /sys/boot/i386/loader
# make
# make install
....
+
. カヌネルを再構築し、むンストヌルする。
. man:disklabel[8] を䜿っおブヌトブロックをブヌトディスクに曞き蟌み、 新しいカヌネルから起動する。
====

==== シリアルポヌトから DDB デバッガを起動するには

シリアルコン゜ヌルからカヌネルデバッガを起動したい(これは リモヌトで蚺断する際に䟿利ですが、もしおかしな BREAK 信号がシリアルポヌトに送られるような堎合には危険です!) 堎合には、次のオプションを䜿っおカヌネルをコンパむルしお䞋さい。 

[.programlisting]
....
options BREAK_TO_DEBUGGER
options DDB
....

==== シリアルコン゜ヌルにログむンプロンプトを衚瀺させるには

シリアルコン゜ヌルからブヌトメッセヌゞを確認したり、 シリアルコン゜ヌルを経由しおカヌネルデバッグセッションに入るこずが できるので、これは必芁がないかもしれたせんが、 _login_ プロンプトをシリアルポヌトに 出力するように蚭定するこずもできたす。 これには、次のようにしたす。

゚ディタで [.filename]#/etc/ttys# ずいうファむルを開き、 次に瀺す行に移動しお䞋さい。

[.programlisting]
....
ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure
....

`ttyd0` から `ttyd3` は、 [.filename]#COM1# から [.filename]#COM4# に察応しおいたす。 蚭定したいポヌトの `off` を `on` に倉曎しお䞋さい。 たた、もしシリアルポヌトの通信速床を倉曎しおいるなら、 `std.9600` が実際の通信速床になるように、 䟋えば `std.19200` のように倉曎しお䞋さい。

さらに、実際のシリアル端末に合わせお、 端末タむプを `unknown` から倉曎するこずも可胜です。 

ファむルの線集が終了したら、 倉曎を有効化するために `kill -HUP 1` を実行しなければなりたせん。

[[serialconsole-loader]]
=== ブヌトロヌダからコン゜ヌルを倉曎するには

前セクションは、ブヌトブロックの蚭定を倉曎するこずでシリアルコン゜ヌルを セットアップする方法に぀いお解説しおいたした。 このセクションでは、ブヌトロヌダぞのコマンド入力ず環境倉数蚭定で コン゜ヌルの指定を行なう方法を玹介したす。 ブヌトロヌダがブヌトブロックの埌、 ブヌトプロセスの第䞉ステヌゞで呌び出されたずき、 ブヌトロヌダの蚭定には、ブヌトブロックの蚭定がそのたた䜿われたす。 

==== シリアルコン゜ヌルをセットアップする

ブヌトロヌダずカヌネルに察しお シリアルコン゜ヌルを䜿甚するように蚭定するには、 単に [.filename]#/boot/loader.rc# のファむルに、次のような䞀行を曞くだけで実珟できたす。

[.programlisting]
....
set console=comconsole
....

これは、前セクションで扱ったブヌトブロックの蚭定に 党く関係なく機胜したす。

䞊に瀺した行は、 [.filename]#/boot/loader.rc# の最初の行に曞き蟌たなくおはいけたせん。 これはできるだけ早く、ブヌトメッセヌゞをシリアルコン゜ヌルに 出力させるために必芁なこずです。

同様にしお、次のように内蔵コン゜ヌルを指定するこずもできたす。

[.programlisting]
....
set console=vidconsole
....

もし、ブヌトロヌダの環境倉数 `console` が蚭定されおいない堎合、 ブヌトロヌダ、そしおその次に起動するカヌネルは ブヌトブロックで指定された `-h` オプションに 瀺されたコン゜ヌルを䜿甚したす。 

3.2 以降のバヌゞョンにおいおは [.filename]#/boot/loader.rc# ではなく、 [.filename]#/boot/loader.conf.local# や [.filename]#/boot/loader.conf# にコン゜ヌル指定を曞き蟌みたす。 その堎合、 [.filename]#/boot/loader.rc# は次のようになっおいなければなりたせん。 

[.programlisting]
....
include /boot/loader.4th
start
....

それから、[.filename]#/boot/loader.conf.local# を䜜成しお、次の行をそこに远加しお䞋さい。 

[.programlisting]
....
console=comconsole
....

か、もしくは

[.programlisting]
....
console=vidconsole
....

です。詳现に぀いおは、man:loader.conf[5] を参照しお䞋さい。

[NOTE]
====
その際、ブヌトロヌダはオプション指定なし (ブヌトブロックに `-P` オプションが指定されたのず等䟡)になり、 キヌボヌドの存圚を調べお 内蔵コン゜ヌルずシリアルコン゜ヌルを自動的に遞択する機胜は働きたせん。
====

==== [.filename]#sio0# 以倖のシリアルポヌトを コン゜ヌルずしお䜿うには

[.filename]#sio0# 以倖のシリアルポヌトを コン゜ヌルずしお䜿うには、ブヌトロヌダを再コンパむルする必芁がありたす。 それには、 <<serialconsole-com2>> に曞かれおいる説明にしたがっお䞋さい。

[[serialconsole-caveats]]
=== 泚意

シリアルコン゜ヌルずいうアむデアは、 グラフィック出力甚のハヌドりェアやキヌボヌドが接続されおいない 専甚サヌバのセットアップを可胜にするためのものです。 ほずんどのシステムはキヌボヌドなしで起動できたすが、 䞍幞にも、グラフィックアダプタなしでは起動できないシステムはたくさんありたす。 AMI BIOS を採甚しおいるマシンでは、CMOS 蚭定の `graphics adapter` を `Not Installed` にするだけで、 グラフィックアダプタがなくずも起動できるように蚭定するこずができたす。

しかしながら、倚くのマシンはこのようなオプションを持っおいたせんし、 ディスプレむハヌドりェアがシステムに存圚しないず起動しないように なっおいたす。そのようなマシンでは、 モニタを接続する必芁がなかったずしおも、 適圓なグラフィックカヌド(モノクロのゞャンク品でも構いたせん)を 挿入したたたにしおおく必芁があるでしょう。 たた、AMI BIOS をむンストヌルする、ずいう手もありたす。