やらないで!! rpi-update

はじめに

ラズベリーパイの更新で

sudo rpi-update

とコマンドを実行して更新したことありませんか?

実はこれ

推奨される行為ではありません。

(当たり前のごとく初期設定で紹介されていますが、諸悪の根源です)

なぜ推奨されない?

rpi-updateは、ラズベリーパイのファームウェアの更新を行いますが、このコマンドで更新されるファームウェアは

十分にテストされていません

rpi-updateのGITHUBにある説明では以下のようにあります

  • 最新の最先端のファームウェアやカーネルが手に入ります
  • バグの修正と改良後に最終的には新しいRaspbianリリースに入り、十分にテストされていると見なされるとapt-getでインストールできます。
  • あなたが、最新のファームウエア・カーネルのテスト作業を手助けしたいと考えていて、破損の危険を冒し、バグ報告を送ったりするテスターは大歓迎です。
  • 現在のファームウェアのバグがrpi-updateで修正されるのであれば、aptを待たずにインストールするのは一つの手段です。

つまり、実験台になってくれるなら大歓迎だけど、自分で対処できないなら使わないほうが良いです。ちなみにどのような問題が起こるかというと、

  • カーネルモジュール(ドライバ)がロードできない
  • ファイルシステムに読み書きできない(経験済み)
  • カーネルモジュールがバグる(最新版に対応していないことがある)
  • ネットで転がっているソースコードがコンパイルできない(経験済み)

が起きることがあります。またこのような症状は、当たり前ですが、再起動後に起こるので悲しみを抱えることになるでしょう。

推奨される方法

aptを利用して以下のパッケージを更新します。

  • raspberrypi-bootloader
  • raspberrypi-kernel

これらに更新があれば、以下のようにupgradeに含まれます。

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  firmware-realtek libavcodec57 libavformat57 libavutil55 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc
  libraspberrypi0 libswresample2 libswscale4 pi-bluetooth python-rpi.gpio raspberrypi-bootloader raspberrypi-kernel
  raspberrypi-sys-mods raspi-config
16 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 75.7 MB of archives.
After this operation, 3,820 kB of additional disk space will be used.
Do you want to continue? [Y/n]

最後に

どうしても利用していデバイスがあって認識されないときは、

firmware-

から始まるパッケージをインストールすることで解決することがあります。

この中で

  • firmware-linux
  • firmware-linux-free
  • firmware-linux-nonfree
  • firmware-misc-nonfree

を入れると大抵は認識されます。

 $ sudo apt install firmware-
firmware-amd-graphics         firmware-intel-sound          firmware-misc-nonfree
firmware-atheros              firmware-intelwimax           firmware-myricom
firmware-b43-installer        firmware-ipw2x00              firmware-netxen
firmware-b43legacy-installer  firmware-ivtv                 firmware-qlogic
firmware-bnx2                 firmware-iwlwifi              firmware-realtek
firmware-bnx2x                firmware-libertas             firmware-samsung
firmware-brcm80211            firmware-linux                firmware-siano
firmware-cavium               firmware-linux-free           firmware-ti-connectivity
firmware-crystalhd            firmware-linux-nonfree        firmware-zd1211