「2023-05-27 Raspberry Pi4 で簡易コンソールサーバを作る」の版間の差分
編集の要約なし |
|||
(同じ利用者による、間の13版が非表示) | |||
1行目: | 1行目: | ||
中古のコンソールサーバが高い / 出回ってない + ラックスペースを消費するのが嫌だったため、余っていた Raspberry | 中古のコンソールサーバが高い / 出回ってない + ラックスペースを消費するのが嫌だったため、余っていた Raspberry Pi4 でコンソールサーバを立てました。 | ||
ポートあたりのコストは高いですが、棚板 0.5U 以下のスペースしか食わない・Syslog サーバなどと兼用できるのが良いです。 | ポートあたりのコストは高いですが、棚板 0.5U 以下のスペースしか食わない・Syslog / SNMP Trap / RANCID サーバなどと兼用できるのが良いです。 | ||
== 構成 == | == 構成 == | ||
16行目: | 16行目: | ||
|- | |- | ||
|SBC | |SBC | ||
|Raspberry | |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 のイメージファイルをダウンロード | ||
# | # Rufus で SD カードにイメージ ファイルを書き込む | ||
# Raspberry | # Raspberry Pi4 に挿して起動 | ||
# | # SSH ログイン or ディスプレイとキーボードを接続して、Terminal から SD カードのパーティションをリサイズ | ||
== 02) FTDI 232R ドライバ モジュールを読み込み == | == 02) FTDI 232R ドライバ モジュールを読み込み == | ||
lsmod で ftdi-sio ドライバ モジュールが読み込まれているか確認します。 | lsmod で ftdi-sio ドライバ モジュールが読み込まれているか確認します。 | ||
ない場合、modprobe コマンドで FT232R | ない場合、modprobe コマンドで FT232R 用ドライバ モジュール ftdi_sio を読み込みます。<syntaxhighlight lang="diff"> | ||
$ modprobe ftdi-sio | $ modprobe ftdi-sio | ||
</syntaxhighlight>以下のような表示になれば OK.<syntaxhighlight lang="diff"> | </syntaxhighlight>以下のような表示になれば OK.<syntaxhighlight lang="diff"> | ||
185行目: | 190行目: | ||
</syntaxhighlight>rc.local は CentOS 7 から非推奨で互換性のために残されており、今後のリリースでは使えなくなるかもしれません。 | </syntaxhighlight>rc.local は CentOS 7 から非推奨で互換性のために残されており、今後のリリースでは使えなくなるかもしれません。 | ||
=== 再起動 === | === 再起動 or udev 再起動 === | ||
<syntaxhighlight lang="diff"> | <syntaxhighlight lang="diff"> | ||
$ sudo reboot | $ sudo reboot | ||
</syntaxhighlight><syntaxhighlight lang="diff"> | |||
$ sudo udevadm control --reload-rules | |||
$ sudo service systemd-udevd reload | |||
USB を挿抜する | |||
</syntaxhighlight> | </syntaxhighlight> | ||
198行目: | 211行目: | ||
lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-l3sw91 -> ttyUSB4 | 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 | lrwxrwxrwx 1 root root 7 Feb 27 09:00 /dev/tty-l3sw92 -> ttyUSB3 | ||
</syntaxhighlight> | </syntaxhighlight>筆者はホスト名をつけました。 | ||
== 06) エイリアス名と機器が一致するか確認 == | == 06) エイリアス名と機器が一致するか確認 == | ||
217行目: | 230行目: | ||
== 他の USB シリアル変換チップについて == | == 他の USB シリアル変換チップについて == | ||
FTDI | FTDI は筆者が知る中で最高のチップですが、他の選択肢について記載します。 | ||
* Prolific PL2101 | * Prolific PL2101 | ||
223行目: | 236行目: | ||
** コンソールは信頼性がほしいので、筆者は 2 度と買いたくない | ** コンソールは信頼性がほしいので、筆者は 2 度と買いたくない | ||
* Nanjing Qinheng Microelectronics (WCH) CH340 | * Nanjing Qinheng Microelectronics (WCH) CH340 | ||
** | ** 面白いゴミだ 気に入った 壊すのは最初にしてやる | ||
** 筆者が罵倒する形容詞に悩むような出来 | ** 筆者が罵倒する形容詞に悩むような出来 | ||
*** 燃えるゴミなら燃やせるだけマシなので、燃えるゴミに失礼 | |||
** I/O エラーが起きてアクセスできなくなるため、少なくとも Linux では使えない | ** I/O エラーが起きてアクセスできなくなるため、少なくとも Linux では使えない | ||
** Windows のドライバは、今のところ問題となる挙動は見つけられていない | |||
== 参考 URL == | == 参考 URL == | ||
233行目: | 248行目: | ||
[https://smdn.jp/electronics/udev_create_persistent_usb_device_symlink/ USB-シリアル変換器のデバイスファイル名を固定する] | [https://smdn.jp/electronics/udev_create_persistent_usb_device_symlink/ USB-シリアル変換器のデバイスファイル名を固定する] | ||
[https://kondo-robot.com/faq/usb_adapter_for_linux_2019 弊社USBアダプタをLinuxで使うには(2019版)] | |||
[[カテゴリ:Linux]] | [[カテゴリ:Linux]] |
2024年9月10日 (火) 14:07時点における最新版
中古のコンソールサーバが高い / 出回ってない + ラックスペースを消費するのが嫌だったため、余っていた Raspberry Pi4 でコンソールサーバを立てました。
ポートあたりのコストは高いですが、棚板 0.5U 以下のスペースしか食わない・Syslog / SNMP Trap / RANCID サーバなどと兼用できるのが良いです。
構成
メーカー | 型式 | 内容 | 入手先 | 価格 | 数量 | 備考 | |
---|---|---|---|---|---|---|---|
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 ほどドブに捨てたのはないしょ)
手順
- Raspberry PI4 に CentOS 9 Stream をインストール
- FTDI 232R ドライバ モジュールを読み込み
- minicom をインストール
- 接続できるか確認
- デバイスファイルのファイル名を固定
- エイリアス名と機器が一致するか確認
01) Raspberry PI4 に CentOS 9 Stream をインストール
Web にたくさん事例があるので、割愛します。以下の順に実施。
- CentOS 9 Stream のイメージファイルをダウンロード
- Rufus で SD カードにイメージ ファイルを書き込む
- Raspberry Pi4 に挿して起動
- 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/