CentOS7の初期状態では使おうとしてもエラー(コマンドが見つからない)となってしまう。
何となく悔しいのでRaspbianだけではなくCentOS7で何とか利用できるようにしてみたい。
■本日の目標
・vcgencmdコマンドはCentOS7を載せたRaspberry Piで実行する■主な作業環境
・HW:Raspberry Pi 3 Model B・OS:CentOS Linux release 7.3.1611 (Core)
■vcgencmdの場所
・ところでvcgencmdはどこにいるのだろうか・・・。それがわからないとどうにもならない。
・・・そもそも見つからなかったら・・・これでおしまいなのだが・・・。
早速探してみる。
$ find / -name "vcgencmd" /opt/vc/bin/vcgencmd
■試しにvcgencmdを動かしてみる
・vcgencmdが見つかったので、とりあえず電圧を計るコマンドで試してみる。$ /opt/vc/bin/vcgencmd measure_volts core /opt/vc/bin/vcgencmd: error while loading shared libraries: libvchiq_arm.so: cannot open shared object file: No such file or directory動かないか・・・。
エラーメッセージからすると、libvchiq_arm.soとやらが無いようだ。
では、vcgencmdの利用ライブラリを確認しよう。
$ ldd /opt/vc/bin/vcgencmd linux-vdso.so.1 => (0x7ee61000) libvchiq_arm.so => not found libvcos.so => not found libpthread.so.0 => /lib/libpthread.so.0 (0x76f93000) libdl.so.2 => /lib/libdl.so.2 (0x76f7d000) librt.so.1 => /lib/librt.so.1 (0x76f66000) libc.so.6 => /lib/libc.so.6 (0x76e15000) /lib/ld-linux-armhf.so.3 (0x54b9d000)確かに「libvchiq_arm.so」が無いようだ。
※lddコマンドとは「共有ライブラリへの依存関係を表示する」コマンドで、
依存関係のあるライブラリの場所を確認することが可能。
■エラー解消
・次は、本当に「libvchiq_arm.so」が無いのか探してみよう。$ find / -name "libvchiq_arm.so" /opt/vc/lib/libvchiq_arm.so/opt/vc/lib配下にあった。
近所にあったけど参照されていなかったのね・・・。
・・・というわけで、共有ライブラリへパスを通して参照できるようにしてみよう。
【変更前】
$ cat /etc/ld.so.conf include ld.so.conf.d/*.conf
【編集】
$ echo '/opt/vc/lib' >> /etc/ld.so.conf
【変更後】
$ cat /etc/ld.so.conf include ld.so.conf.d/*.conf /opt/vc/lib
【キャッシュ化】
$ ldconfig※OSの仕組みとして、速度向上のためキャッシュファイルからライブラリパスを参照しているので、
上記コマンドで設定ファイルの内容をキャッシュファイルに反映している。
■vcgencmdの起動確認
・先ほどと同じように、電圧を計るコマンドで確認する。$ /opt/vc/bin/vcgencmd measure_volts core volt=1.2000V電圧が取れた!
■Path追加
・最後に「/opt/vc/bin」にパスを通して、Raspbianと同じように実行モジュール単体指定で起動できるようにする。一時的であれば、
$ export PATH=$PATH:/opt/vc/binで良いけど、
恒久的にパスを通しておきたいので、「/etc/profile」の末尾にパスを追記する。
$ echo 'export PATH=$PATH:/opt/vc/bin' >> /etc/profile(恒久対応の上記コマンドの内容は、次回セッションから有効なので注意)
これでRaspbianと同じように「vcgencmd」だけで結果が取れるようになった。
$ vcgencmd measure_volts core volt=1.2000V
■vcgencmdで取得できる主な情報
【ファームウェアのバージョン】$ vcgencmd version Feb 26 2017 20:30:04 Copyright (c) 2012 Broadcom version 6e74add571c9691b108c68f29c3f45374cac24e6 (clean) (release)【CPUの温度】
$ vcgencmd measure_temp temp=40.8'C【CPUの動作周波数】
$ vcgencmd measure_clock arm frequency(45)=600000000【CPUの動作電圧】
$ vcgencmd measure_volts volt=1.2000V【メモリ割当(前者はCPU、後者はGPU)】
$ vcgencmd get_mem arm arm=944M $ vcgencmd get_mem gpu gpu=64M