Raspbianのバージョンを知りたい

Raspbianのバージョンを知りたいときにはどうすると良いでしょう。いくつか方法はありますが、どこまで詳しく知りたいのかによって、どうすれば良いかが変わってきます。

(「Raspberry Pi Advent Calendar 2017 – Adventar」で2017-12-14の分が空いていたので登録させていただきました)

目次

OSのバージョン

OSのバージョンを知りたい場合は、/etc/os-releaseを確認します。

$ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

いつダウンロードしたか

Raspbianはダウンロードするページに配布開始の日付がついていて、これを知りたいときもあります。/boot/issue.txtを見るとわかります。同じものは /etc/rpi-issue にもあります。

$ cat /boot/issue.txt 
Raspberry Pi reference 2017-11-29
Generated using pi-gen, https://github.com/RPi-Distro/pi-gen, b71bf3179310aadf9aaf2ffcdf094a88e488dce8, stage5

カーネルのバージョン(その1)

使っているカーネルのバージョンを知りたい場合は unameコマンドを使います。

$ uname -a
Linux raspberrypi 4.9.68-v7+ #1064 SMP Tue Dec 12 15:08:24 GMT 2017 armv7l GNU/Linux

カーネルのバージョン(その2)

カーネルのコンパイルに使われたgccのバージョンも一緒に知りたい場合は、/proc/versionを参照します。

$ cat /proc/version 
Linux version 4.9.68-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #1064 SMP Tue Dec 12 15:08:24 GMT 2017

rpi-update

Raspbianではファームウェアのアップデートをすると、カーネルアップデートがされます。https://github.com/Hexxeh/rpi-update/blob/master/rpi-updateで公開されているrpi-updateコマンドを使います。

$ sudo rpi-update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 13403  100 13403    0     0  30202      0 --:--:-- --:--:-- --:--:-- 30255
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** We're running for the first time
 *** Backing up files (this will take a few minutes)
 *** Backing up firmware
 *** Backing up modules 4.9.59-v7+
#############################################################
This update bumps to rpi-4.9.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=167934
##############################################################
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168    0   168    0     0    220      0 --:--:-- --:--:-- --:--:--   220
100 54.1M  100 54.1M    0     0  1577k      0  0:00:35  0:00:35 --:--:-- 2300k
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 4.9.68-v7+
 *** depmod 4.9.68+
 *** Updating VideoCore libraries
 *** Using HardFP libraries
 *** Updating SDK
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to cc06d1a475531195a3e268e36be0e5eabff5265a
 *** A reboot is needed to activate the new firmware

この rpi-updateコマンドを実行すると、/boot/.firmware_revisionにアップデートしたカーネルのハッシュコードが保存されます。

$ cat /boot/.firmware_revision 
cc06d1a475531195a3e268e36be0e5eabff5265a

このハッシュコードはhttps://github.com/Hexxeh/rpi-firmwareのリポジトリでコミット時につけられているものです。リポジトリでつけられているハッシュコードを使うと、アップグレードやダウングレードができます。

たとえば、4.9.59-v7+は、https://github.com/Hexxeh/rpi-firmware/commits/masterを見ると、ハッシュコードがa6b3e85で始まっていて、これをコピーするとa6b3e852ca70f2a12850b4542438583cc3b29788になります。下記のコマンドでダウングレードできます。

$ sudo rpi-update a6b3e852ca70f2a12850b4542438583cc3b29788

ファームウェアのバックアップからのリストア(未検証)

ちなみに、rpi-updateをするとファームウェアのバックアップがされます。これは /boot.bak にあります。モジュールは/lib/modules.bakにあります。ですから、手動でバックアップからファームウェアを戻すには、/boot.bak/* を /boot/ へコピーし、/lib/modules.bak を /lib/modules に移動すれば良いということになります。/bootはパーティションが別なので、ディレクトリ単位で移動では反映されないので気をつけましょう。/lib/modulesはrootパーティション内なので移動でも大丈夫です。まとめると、具体的には下記コマンドを実行すれば良いはずです。

$ sudo mkdir /boot.next
$ sudo mv -a /boot/* /boot.next/
$ sudo mv -a /boot.bak/* /boot/
$ sudo rmdir /boot.bak
$ sudo mv /lib/modules /lib/modules.next
$ sudo mv /lib/modules.bak /lib/modules

ところで、ロボットカー・センサー・ディスプレイもいろいろあって、眺めていると欲しくなってしまいます。全部が必要というわけではないのですが、どれか選んで遊んでみたいですね。

同じタグの記事: Raspberry Pi
同じタグの記事: Raspbian
同じタグの記事: ラズパイ
同じカテゴリの記事: Linux