「2023-05-27 Raspberry Pi4 で簡易コンソールサーバを作る」の版間の差分

提供:hkatou_Lab
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の10版が非表示)
1行目: 1行目:
中古のコンソールサーバが高い / 出回ってない + ラックスペースを消費するのが嫌だったため、余っていた Raspberry PI4 でコンソールサーバを立てました。
中古のコンソールサーバが高い / 出回ってない + ラックスペースを消費するのが嫌だったため、余っていた Raspberry Pi4 でコンソールサーバを立てました。


ポートあたりのコストは高いですが、棚板 0.5U 以下のスペースしか食わない・Syslog サーバなどと兼用できるのが良いです。
ポートあたりのコストは高いですが、棚板 0.5U 以下のスペースしか食わない・Syslog / SNMP Trap / RANCID サーバなどと兼用できるのが良いです。


== 構成 ==
== 構成 ==
16行目: 16行目:
|-
|-
|SBC
|SBC
|Raspberry PI
|Raspberry Pi
Foundation
Foundation
|Raspberry Pi4
|Raspberry Pi4
71行目: 71行目:
|\1,189
|\1,189
|2
|2
|USB-C で給電可能
|バスパワー以外に USB-C で給電してセルフパワーも可能
|-
|-
|RJ45-USB Cisco互換
|RJ45-USB Cisco互換
102行目: 102行目:
|\23,982
|\23,982
|}
|}
最近は価格が高くなっているので、ここまで安くならないでしょう。
筆者は余ってた PI4 にハブとコンソール ケーブルのみ追加購入したので、\10,368 でした。
(CH340 x8 を買って \5,000 ほどドブに捨てたのはないしょ)


== 手順 ==
== 手順 ==
116行目: 121行目:


# CentOS 9 Stream のイメージファイルをダウンロード
# CentOS 9 Stream のイメージファイルをダウンロード
# Rufas で SD カードにイメージ ファイルを書き込む
# Rufus で SD カードにイメージ ファイルを書き込む
# Raspberry PI4 に挿して起動
# Raspberry Pi4 に挿して起動
# Terminal から SD カードのパーティションを変更
# SSH ログイン or ディスプレイとキーボードを接続して、Terminal から SD カードのパーティションをリサイズ


== 02) FTDI 232R ドライバ モジュールを読み込み ==
== 02) FTDI 232R ドライバ モジュールを読み込み ==
lsmod で ftdi-sio ドライバ モジュールが読み込まれているか確認します。
lsmod で ftdi-sio ドライバ モジュールが読み込まれているか確認します。


ない場合、modprobe コマンドで FT232R ドライバ モジュールを読み込みます。<syntaxhighlight lang="diff">
ない場合、modprobe コマンドで FT232R 用ドライバ モジュール ftdi_sio を読み込みます。<syntaxhighlight lang="diff">
$ modprobe ftdi-sio
$ modprobe ftdi-sio
</syntaxhighlight>以下のような表示になれば OK.<syntaxhighlight lang="diff">
</syntaxhighlight>以下のような表示になれば OK.<syntaxhighlight lang="diff">
188行目: 193行目:
<syntaxhighlight lang="diff">
<syntaxhighlight lang="diff">
$ sudo reboot
$ sudo reboot
</syntaxhighlight><syntaxhighlight lang="diff">
$ sudo udevadm control --reload-rules
$ sudo udevadm control --reload-rules
$ sudo service systemd-udevd reload
$ sudo service systemd-udevd reload
USB を挿抜する




221行目: 230行目:


== 他の USB シリアル変換チップについて ==
== 他の USB シリアル変換チップについて ==
FTDI は知る中で最高のチップですが、他の選択肢について記載します。
FTDI は筆者が知る中で最高のチップですが、他の選択肢について記載します。


* Prolific PL2101
* Prolific PL2101
227行目: 236行目:
** コンソールは信頼性がほしいので、筆者は 2 度と買いたくない
** コンソールは信頼性がほしいので、筆者は 2 度と買いたくない
* Nanjing Qinheng Microelectronics (WCH) CH340
* Nanjing Qinheng Microelectronics (WCH) CH340
** よくできたゴミだ 気に入った 壊すのは最後にしてやる
** 面白いゴミだ 気に入った 壊すのは最初にしてやる
** 筆者が罵倒する形容詞に悩むような出来
** 筆者が罵倒する形容詞に悩むような出来
*** 燃えるゴミなら燃やせるだけマシなので、燃えるゴミに失礼
** I/O エラーが起きてアクセスできなくなるため、少なくとも Linux では使えない
** I/O エラーが起きてアクセスできなくなるため、少なくとも Linux では使えない
** Windows のドライバは、今のところ問題となる挙動は見つけられていない


== 参考 URL ==
== 参考 URL ==

2024年9月10日 (火) 14:07時点における最新版

中古のコンソールサーバが高い / 出回ってない + ラックスペースを消費するのが嫌だったため、余っていた Raspberry Pi4 でコンソールサーバを立てました。

ポートあたりのコストは高いですが、棚板 0.5U 以下のスペースしか食わない・Syslog / SNMP Trap / RANCID サーバなどと兼用できるのが良いです。

構成

BOM
メーカー 型式 内容 入手先 価格 数量 備考
SBC Raspberry Pi

Foundation

Raspberry Pi4

ModelB 4GB

4Core Amazon \6,875 1 2020/09 に購入して余ってたやつ
Micro SD SanDisk Micro SD 64GB Amazon \1,400 1 そのへんに転がってたやつ
Raspberry Pi 4 Case RETROFLAG NSEPi4 ファン付き Aliexpress \4,200 1 SSD が使える PI4 ケース

2020/08 購入

Raspberry Pi 4

USB-C (Type C)電源

Smraza SD02-JP 5V 3A Amazon \1,139 1 On / Off スイッチ付き
USB ハブ 5ポート USB 3.0 Aceele ASIN : B07RGVXFZL 20cm Amazon \1,189 2 バスパワー以外に USB-C で給電してセルフパワーも可能
RJ45-USB Cisco互換

コンソールケーブル

monofive MF-CBRJ45USB FT232R

USB

RJ-45

Amazon \1,598 5
合計 \23,982

最近は価格が高くなっているので、ここまで安くならないでしょう。

筆者は余ってた PI4 にハブとコンソール ケーブルのみ追加購入したので、\10,368 でした。

(CH340 x8 を買って \5,000 ほどドブに捨てたのはないしょ)

手順

  1. Raspberry PI4 に CentOS 9 Stream をインストール
  2. FTDI 232R ドライバ モジュールを読み込み
  3. minicom をインストール
  4. 接続できるか確認
  5. デバイスファイルのファイル名を固定
  6. エイリアス名と機器が一致するか確認

01) Raspberry PI4 に CentOS 9 Stream をインストール

Web にたくさん事例があるので、割愛します。以下の順に実施。

  1. CentOS 9 Stream のイメージファイルをダウンロード
  2. Rufus で SD カードにイメージ ファイルを書き込む
  3. Raspberry Pi4 に挿して起動
  4. SSH ログイン or ディスプレイとキーボードを接続して、Terminal から SD カードのパーティションをリサイズ

02) FTDI 232R ドライバ モジュールを読み込み

lsmod で ftdi-sio ドライバ モジュールが読み込まれているか確認します。

ない場合、modprobe コマンドで FT232R 用ドライバ モジュール ftdi_sio を読み込みます。

$ modprobe ftdi-sio

以下のような表示になれば OK.

$ lsmod | egrep -i "Module|ftd"
Module                  Size  Used by
ftdi_sio               53248  0
usbserial              45056  1 ftdi_sio

03) minicom をインストール

$ sudo dnf install minicom

04) 接続できるか確認

一般的な 9600bps の Cisco 機器と接続する場合、以下で接続が可能です。

$ minicom -b 9600 -D /dev/ttyUSB0

1 つ接続確認できたら、他の 4 つも接続してしまって OK です。

Ctrl + a の後 q を押して Enter で抜けられます。

使用方法は Ctrl + a の後 z で。

05) デバイスファイルのファイル名を固定

ttyUSB だと、

  • USB にコンソールケーブルを接続した順番によって、デバイス ファイル名が変化してしまう
  • どの機器に接続しているかわからない

ため、シリアル番号からデバイス ファイル名を固定します。

シリアル番号の確認

$ udevadm info -q property -n /dev/ttyUSB0 | grep -E "ID_SERIAL_SHORT=|ID_VENDOR_ID=|ID_MODEL_ID="

以下のような出力が得られます。

ID_MODEL_ID=6001
ID_SERIAL_SHORT=<Serial_NumN>
ID_VENDOR_ID=0403

ID_VENDOR_ID : メーカーに振られた ID. ここでは FTDI (Future Technology Devices International) を指す

ID_MODEL_ID : プロダクトの ID. ここでは FT232R を指す

ID_SERIAL_SHORT : プロダクトのシリアル番号

udev で機器接続時に tty のエイリアスを作成

5 つの USB シリアル コンバータを接続した場合は、 以下のように 5 行書きます。

# sudo vim /etc/udev/rules.d/90-usb-serial-devices.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="<Serial_Num0>", SYMLINK+="tty-rt91", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="<Serial_Num1>", SYMLINK+="tty-rt92", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="<Serial_Num2>", SYMLINK+="tty-l3sw91", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="<Serial_Num3>", SYMLINK+="tty-l3sw92", GROUP="dialout"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="<Serial_Num4>", SYMLINK+="tty-l2mgmt91", GROUP="dialout"

<Serial_Num[0-4]> には、先程の udevadm コマンドで得られた値を入れます。

別メーカーのチップの場合、idVendor と idProduct も変更が必要です。

/etc/rc.local に実行権限を付与

$ sudo ls -al /etc/rc.local

rc.local は CentOS 7 から非推奨で互換性のために残されており、今後のリリースでは使えなくなるかもしれません。

再起動 or udev 再起動

$ sudo reboot
$ sudo udevadm control --reload-rules
$ sudo service systemd-udevd reload

USB を挿抜する

エイリアス確認

$ sudo ls -al /dev/tty-*
lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-bgp91 -> ttyUSB0
lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-bgp92 -> ttyUSB2
lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-l3mgmt91 -> ttyUSB1
lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-l3sw91 -> ttyUSB4
lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-l3sw92 -> ttyUSB3

筆者はホスト名をつけました。

06) エイリアス名と機器が一致するか確認

$ sudo minicom -b 9600 -D /dev/tty-l2mgmt91

Welcome to minicom 2.7.1

OPTIONS: I18n
Compiled on Aug  9 2021, 00:00:00.
Port /dev/tty-l3mgmt91, 16:38:17

Press CTRL-A Z for help on special keys


tky-l2mgmt91#

一致しない場合、物理的に RJ-45 を差し替えるか、エイリアス作成コマンドのシリアルを入れ替え、再起動して再度確認します。

他の USB シリアル変換チップについて

FTDI は筆者が知る中で最高のチップですが、他の選択肢について記載します。

  • Prolific PL2101
    • たまにカーソル位置がずれるくらいで使えなくはない
    • コンソールは信頼性がほしいので、筆者は 2 度と買いたくない
  • Nanjing Qinheng Microelectronics (WCH) CH340
    • 面白いゴミだ 気に入った 壊すのは最初にしてやる
    • 筆者が罵倒する形容詞に悩むような出来
      • 燃えるゴミなら燃やせるだけマシなので、燃えるゴミに失礼
    • I/O エラーが起きてアクセスできなくなるため、少なくとも Linux では使えない
    • Windows のドライバは、今のところ問題となる挙動は見つけられていない

参考 URL

Raspberry Pi に CentOS Stream 9 をインストールしてみる

https://people.centos.org/pgreco/CentOS-Userland-9-stream-aarch64-RaspberryPI-Minimal-4/

USB-シリアル変換器のデバイスファイル名を固定する

弊社USBアダプタをLinuxで使うには(2019版)