Raspberry Pi ZeroでInternal error oops 8000000dとなる

zero-os-title Raspberry Pi

Raspberry Pi Zero W Hを久々に使ってみようとしたときに躓いたOS問題を備忘として残しておきます。

結論から申し上げると、Raspberry Pi Zero W Hは最新のbookworm OSには対応していないため、Legacyのbullseye OS 32-bitをMicroSDに書き込む必要があるということです。

今さらRaspberry Pi Zero W Hを使い始める人はほとんどいないと思いますが、どなたかの役に立てば嬉しいです。

エラー内容

sudo apt upgradeを実行すると、こちらのエラーが表示されてProgress: [ 81%]で固まり、Internal error oops 8000000dとなって、カーネルクラッシュ?の状態となります。

unable to handle kernel paging request at virtual address ...
…
Internal error Oops: 800000s [#1] ARM
…

対処法

私のケースでは、Raspberry Pi OS (Legacy) Lite 32-bitをMicroSDに書き込んで解消しました。

MicroSDやRaspberry Pi Zero 2Wをわざわざ買い直して検証していましたが、結局はOSの問題で、お金と時間がとにかくかかりました。

Raspberry PiハードとOSの種類が多いことがややこしい原因です。Raspberry Pi Zero Wに関してはbullseyeのRaspberry Pi OS (Legacy) Lite 32-bitが推奨OSであること理解不足でした。

Raspberry Pi Zero WRaspberry Pi Zero 2W
Raspberry Pi OS with desktop 64-bit
※Bookworm
×
Raspberry Pi OS Lite 64-bit
※Bookworm
×
Raspberry Pi OS (Legacy) with desktop 32-bit
※bullseye
△(重い)
Raspberry Pi OS (Legacy) Lite 32-bit
※bullseye

Raspberry Pi Imagerが最新のOSを参照しているか疑心暗鬼になっていたので、Use customで手元にダウンロードしたRaspberry Pi OS (Legacy) Lite 32-bitをMicroSDに書き込みました。

カメラの有効化

BullseyeベースのRaspberry Pi Zero W Hでカメラを用いるときは、設定画面からEnableにするだけで使うことができます。

(BookwormベースのRaspberry Pi Zero 2Wではconfig.txtの書き換えが必要で、いろいろ大変です。)

sudo raspi-config
vcgencmd get_camera

“supported=1 detected=1″と表示されていれば、接続&認識OKです。libcamera interfaces=0は気にする必要ありません。以下のコードでテスト撮影が可能です。

sudo raspistill -o image.jpg

OpenCVで写真撮影

OpenCV の import時はパッケージのインストールエラーが発生しうるので、表示されるエラーごとに一つ一つインストールして解決していきました。

sudo apt install libopenjp2-7-dev
sudo apt install libavcodec-extra58
sudo apt install libavformat58
sudo apt install libswscale5
sudo apt install libgtk-3-0
sudo apt install libatlas-base-dev

Ffmpeg系が不足していたようで、import cv2を実行するだけでこんなに大変とは、、、

カメラで撮影した画像を時刻名で保存するプログラムになります。

import cv2
from datetime import datetime

# カメラを開く
cap = cv2.VideoCapture(0)

# 画像をキャプチャする
ret, frame = cap.read()

# 画像を時刻名で保存する
date = datetime.now().strftime("%Y%m%d_%H%M%S")
path = "./" + date + ".png"
cv2.imwrite(path, frame)

# カメラを閉じる
cap.release()

コメント