Linux
RaspberryPi
shell芸

RaspberryPI にSSHログインしている最中、いまアクセスしているラズパイのモデルを知る

安いからといって複数モデルのラズパイを買い足していくと、
「いまアクセスしてるこれ、どれだっけ?」となることがあります(俺だけかも)。
そんなときのためのワンライナー1

確認したモデルとディストリビューション

モデル

  • 2B
  • 3B
  • 3B+

(初代と Zero 系は持っていないもので・・・すみません。)

ディストリビューション

  • Raspbian
  • ArchLinux(armv7l + aarch64)
  • Fedora28(aarch64)

ファームウェアに依存するものなので、インストールできて、稼働させることができたならば、多分他のディストリでも大丈夫でしょう。

解決策

[hoge@fuga ~]$ cat `find /sys/firmware/devicetree -name model`

出力結果

  • 3B+
[hoge@fuga ~]$ cat `find /sys/firmware/devicetree -name model`
Raspberry Pi 3 Model B+%
[hoge@fuga ~]$
  • 3B無印
[hoge@fuga ~]$ cat `find /sys/firmware/devicetree -name model`
Raspberry Pi 3 Model B%
[hoge@fuga ~]$
  • 2B
[hoge@fuga ~]$ cat `find /sys/firmware/devicetree -name model`
Raspberry Pi 2 Model B Rev 1.1%
[hoge@fuga ~]$

この値を bash の case 文などの判定文字列として利用すれば、
モデルに応じた処理ができますね\(^o^)/

(ただし、今後、出たばかりのモデルでは、Raspbian 以外のディストリで変な結果を吐き出す可能性もあるので注意)

以上


  1. neofetch を使ってもいいんですが、出力が冗長すぎることと、ArchLinux や Fedora の aarch64 版だと Modelの項目が 'rpi' としか出てこないんですよ。ちなみに neofetch は 巨大 bash スクリプトで、特定ファイルの存在を判定してモデル名を決定しているのですが、ラズパイ向け aarch64 版にとっては存在確認するファイルの順番が変で、詳細なモデル名が書いてあるファイルよりもよりも 'rpi' 文字列が書かれているファイルのほうが先に見つかってしまうので、こちらのほうが優先されて出力されます。それゆえ私はラズパイに neofetch をインストール後、model 文字列判定部分を改造して利用しています.