【Linux】【cu】cu導入【SW】

cu はシリアル経由で別のシステムに接続するためのツール。
公開元であるTaylor UUCP 1.07には、ライセンスは GNU Public License (GPL) となっている。

インストール方法

debian系であれば以下でインストール可能である。

# apt-get install cu

 

アクセス権限の付与

Linux ではシリアル端末は /dev/ttyS0 であり、/dev/ttyS0 の所属グループは dialout *1である。
しかし、/dev/ttyS0 を使うためには root 権限が必要であり、sudo としても次のようにエラーが出現する。

% sudo cu -s 9600 -l /dev/ttyUSB0
cu: open (/dev/ttyUSB0): Permission denied
cu: /dev/ttyUSB0: Line in use

そこで、以下の2つのどちらかの対応方法がある。
基本的には前者を選択する方が良いかと思う。

  • dialout グループに root を付与する
  • "Line in use" が出ないように cu をビルドする

対策案1:dialout グループに root を付与する

一般的な対策方法かと思う。
次のように vigr を実行して dialout グループに root を追加した。

% sudo vigr -s
 man:*::
 proxy:*::
 kmem:*::
-dialout:*::
+dialout:*::root
 fax:*::
 voice:*::
 cdrom:*::neko
% sudo vigr
 man:x:12:
 proxy:x:13:
 kmem:x:15:
-dialout:x:20:
+dialout:x:20:root
 fax:x:21:
 voice:x:21:

 

対策案2:"Line in use" が出ないように cu をビルドする

ソースコードからビルドする場合は以下である。(インストールが不要なら、make までで良い)。
ただし、以下の手順でインストールをすると、cu 実行時に /usr/spool/ にスプールファイルを作成しようとして、「Line in use」とログを出してエラーとなる。
そこで、レッツ! コンパイルを参考にして、手順 1' のように /tmp を使用するように変更する。(/var/spool/ の使用だと引き続きエラーが残るため)

1. コード入手&展開

% wget ftp://ftp.gnu.org/pub/gnu/uucp/uucp-1.07.tar.gz
% tar xvfz uucp-1.07.tar.gz
% cd uucp-1.07

2. スプール関連のディレクトリ設定を /usr/spool から /var/spool に変更する

% cp  -p  policy.h  policy.h.orig
% sed -i 's%/usr/spool/%/tmp/%g' policy.h
% diff policy.h  policy.h.orig   # /usr/spool が /tmp に変わったことを確認する

3. Makefileの作成&コンパイル

% ./configure
% make

4. インストール実行

% su
# make install 

使用例

「cu -s ボーレート -l デバイスファイル」という使い方をする。
なお、デバイスファイルに 666 などと権限を与えておけば、cu を管理者権限で操作する必要は無い。

ボーレート 38400 bps、シリアル使用時

「Connected.」とログに表示されればOK。

# cu -s 38400 -l /dev/ttyS0
Connected.

ボーレート 38400 bps、USBシリアルアダプタ使用時

「Connected.」とログに表示されればOK。

# cu -s 38400 -l /dev/ttyUSB0  
Connected.  

終了時

~. として、チルダとドットを連続して入力すればよい。


おまけ

setserial コマンド

シリアルデバイスの設定を確認するためのコマンド。

インストール

1. コードのダウンロード&展開

% wget  http://http.debian.net/debian/pool/main/s/setserial/setserial_2.17.orig.tar.gz
% tar xvfz setserial_2.17.orig.tar.gz

 
2. Makefile の作成

% cd  setserial-2.17
% ./configure
% make

実行
% setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

sttyコマンド

デフォルトのキャラクタデバイスファイルに対しては以下のように -F を使ってデバイスファイルにアクセスすれば端末設定が読み出せる。

% sudo stty -F /dev/tty0
speed 38400 baud; line = 0;

min = 1; time = 0;
ignbrk -brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
% sudo stty -F /dev/ttyS0
speed 9600 baud; line = 0;
-brkint -imaxbel

 
ちなみに画面が崩れた場合は次のように sane を指定すれば大抵は直る。

% stty sane

*1:シリアルコンソール管理グループ