Skip to content
と、あんりみは思った。
Go back

秋月謎SoC基板付きケース with Debian x HomeAssistant 2026

Edit page

SDカード上のExt4 FSが壊れてカーネルパニック

[    4.686189] Run /sbin/init as init process
[    4.690349]   with arguments:                                                                                                                                                         [    4.693331]     /sbin/init
[    4.696046]   with environment:
[    4.699218]     HOME=/
[    4.701585]     TERM=linux
[    4.844857] EXT4-fs error (device mmcblk0p2): ext4_lookup:1752: inode #5496: comm init: iget: checksum invalid
[    4.874319] EXT4-fs error (device mmcblk0p2): ext4_lookup:1752: inode #5496: comm init: iget: checksum invalid
/sbin/init: error while loading shared libraries: libapparmor.so[    4.885876] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[    4.899099] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---
.1: cannot open shared object file: Error 74

SDが壊れてhassのwebhookにデータが飛んでこなくなったので再構築がてらメモ

BuildrootでSD用のイメージ作成

GitHub - bakueikozo/buildroot_am3352_aki

cd ~/
sudo apt -y install build-essential bc libssl-dev unzip ncurses-dev
git clone git@github.com:bakueikozo/buildroot_am3352_aki.git
cd buildroot_am3352_aki
make akiduki_am3352_defconfig
make menuconfig

rootfsのサイズを拡大

Filesystem images -> exact size -> 1200M

イメージサイズを拡大

vim board/akiduki_am3352/genimage.cfg
# size = 512MB => 1536MB
make

Debian に置き換える

debootstrap で rootfs を作成する

cd ~/
sudo apt-get install debootstrap qemu-user-static
sudo qemu-debootstrap --verbose --arch=armhf --variant=buildd \
  bookworm rootfs-debian-armhf \
  http://ftp.jp.debian.org/debian/
# 時代はbookworm (Debian 12)に

chrootでDebianイメージ内のセットアップ

sudo chroot ./rootfs-debian-armhf /bin/bash
apt update
apt upgrade -y
apt install -y ifupdown iproute2 iputils-ping net-tools dnsutils sudo vim screen tcpdump ca-certificates locales locales-all avahi-daemon kmod fdisk e2fsprogs curl wget openssh-server udev
echo "Asia/Tokyo" > /etc/timezone
cp /usr/share/zoneinfo/Japan /etc/localtime
locale-gen en_US.UTF-8
locale-gen ja_JP.UTF-8
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyS0.service
apt clean

chrootから抜ける

SDカードイメージのrootfsを差し替え

cp ~/buildroot_am3352_aki/output/images/sdcard.img ~/debian.img
sudo losetup -f ~/debian.img -P --show
sudo mkfs.ext4 -L rootfs -F /dev/loop0p2
sudo mkdir /mnt/rootfs
sudo mount /dev/loop0p2 /mnt/rootfs
sudo rsync -av ~/rootfs-debian-armhf/ /mnt/rootfs/
sudo umount /mnt/rootfs
sync; sync; sync;
sudo losetup -d /dev/loop0

~/debian.imgのrootfsがDebianに差し替わったのであとは焼くだけ。

ssh-copy-id debian@akiduki.local
ssh debian@akiduki.local
sudo fdisk /dev/mmcblk0 <<EOF
p
d
2
n
p
2
32769

p
w
EOF
Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *        1    32768    32768   16M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      32769 62552063 62519295 29.8G 83 Linux

Command (m for help): The partition table has been altered.
Syncing disks.

パーティションを32GBいっぱいまでexpand

fsもexpand

sudo /sbin/resize2fs /dev/mmcblk0p2

HomeAssistant Pythonスクリプト用セットアップ

GitHub - unlimish/GetSmartMeterData: Get SmartMeter Data for WI-SUN · GitHub

1. 必要なパッケージ全部入れる

sudo apt update && sudo apt install python3-serial python3-pip git -y
sudo pip3 install requests

2. スクリプト clone

git clone https://github.com/unlimish/GetSmartMeterData.git

3. 設定書き換え(B_ROUTE_ID, B_ROUTE_PW)

nano GetSmartMeterData/GetSmartMeterData.py

4. 動作確認(手動起動してログ見る)

cd GetSmartMeterData && sudo python3 GetSmartMeterData.py

5. 動いたら systemd サービス化(自動起動)

sudo tee /etc/systemd/system/smartmeter.service <<'EOF'
[Unit]
Description=Wi-SUN SmartMeter Data
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/debian/GetSmartMeterData/GetSmartMeterData.py
Restart=always
RestartSec=30
User=root

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now smartmeter

6. 全部確認できたら FSをread-only 化

sudo sed -i 's|\(/dev/mmcblk0p2.*\)\(defaults\)|\1\2,noatime,ro,commit=600|' /etc/fstab
sudo reboot

設定が書き換え必要になったときは

sudo mount -o remount,rw /
# 書き込み作業をする
sudo mount -o remount,ro /

Edit page
Share this post:

Previous Post
Windowsが0xc000000eでブートしなくなった