このセクションでは、Raspberry Pi OSを実行しているデバイスにソフトウェアのアップデートを展開する方法を説明します。
先に進む前に、デバイスをアップデートし続けることがなぜ重要なのかを調べてみましょう。
最初の、そしておそらく最も重要な理由は、セキュリティです。 Raspberry Pi OS を実行しているデバイスには、あなたが依存している何百万行ものコードが含まれています。 これらの何百万行ものコードは、時間の経過とともに、CVE (Common Vulnerabilities and Exposures) と呼ばれる有名な脆弱性を露呈します。 ここでは、KODIで発見された最近のCVEの例を紹介し、データベースでどのような情報が入手できるか、CVEがどのように追跡されているかについてもう少し詳しく説明します。
2つ目の理由は、1つ目の理由と関連していますが、あなたのデバイス上で実行しているソフトウェアには確実にバグが含まれているということです。 バグの中にはCVEもありますが、セキュリティとは関係なく、必要な機能に影響を与えるものもあります。
APT (Advanced Packaging Tool)
Raspberry Pi OSのソフトウェアをアップデートするには、ターミナルでaptツールを使用します。 タスクバーやアプリケーションメニューからターミナルウィンドウを開きます:
まず、次のコマンドを入力してシステムのパッケージリストを更新します:
sudo apt update
次に、次のコマンドで、インストールされているすべてのパッケージを最新バージョンにアップグレードします。
sudo apt full-upgrade
なお、full-upgrade
upgrade
よりも優先して使用されます。
一般的には、この作業を定期的に行うことで、使用しているRaspberry Pi OSのメジャーリリース(例:Stretch)に合わせて、インストールを最新の状態に保つことができます。 しかし、当財団の Raspberry Pi OS イメージには、新しく導入されたパッケージなど、手動での操作が必要な変更が時々加えられます。
カーネルとファームウェアのアップグレード
カーネルとファームウェアは Debian パッケージとしてインストールされているため、上記の手順を使用した場合にも更新されます。
容量不足
sudo apt full-upgrade
を実行していると、ダウンロードされるデータの量と SD カードの容量が表示されます。 残念ながらapt
df -h
.deb
/var/cache/apt/archives
に保存されていることにも注意してください。
StretchからBusterへのアップグレード
Warning: 既存の Stretch イメージをアップグレードすることは可能ですが、すべての状況で動作することは保証されていないため、お勧めできません。
アップグレードするには、まず /etc/apt/sources.list
/etc/apt/sources.list.d/raspi.list
stretch
buster
に変更します。
その後、ターミナル ウィンドウを開き、次のように実行します:
sudo apt updatesudo apt -y dist-upgrade
すべてのプロンプトに「はい」と答えます。 スペースキーを押して情報をスクロールし、q を押して続行してください。
最後に、PulseAudio を Bluetooth オーディオ以外に使用していない場合は、次のように入力してイメージから削除します:
sudo apt -y purge "pulseaudio*"
新しい Pi モデル (例えば Pi 3B+) に移行する場合は、上記の手順でカーネルとファームウェアを更新する必要があります。
サード パーティ ソリューション
このセクションでは、なぜサードパーティのソリューションが役に立つのか、なぜ apt がすべての状況に最適ではないのかを説明します。 Raspberry Pi は特定のサードパーティ製ツールを推奨していません。
apt は、Raspberry Pi OS を実行しているデバイスのソフトウェアをアップデートする便利な方法ですが、アップデートするデバイスの数が多い場合、特にデバイスに物理的にアクセスできない場合や、デバイスが地理的に分散している場合には、この方法の限界が明らかになります。
デバイスへの物理的なアクセスがなく、OTA (Over-The-Air) による無人アップデートを展開したい場合、以下のような一般的な要件があります:
- アップデートは、どのような状況であってもデバイスを壊してはなりません。例えば、更新が中断された場合 (電源損失、ネットワーク損失など)、システムは元の状態に戻るべきです。例えば、アップデートが中断された場合 (電源損失、ネットワーク損失など)、システムは動作可能な状態に戻るべきです
- アップデートはアトミックでなければなりません。 例えば、アップデートが中断された場合 (電力損失やネットワーク損失など)、システムは動作可能な状態に戻る必要があります
- アップデートはアトミックでなければなりません: アップデートが成功したか、アップデートが失敗したか。つまり、アトミック性とフォールバックです。 そのため、無人のアップデートを OTA で展開するために解決しなければならない問題を解決しようとするサードパーティのソリューションが登場し始めています。