・SDカードには書き換え可能な寿命があります。
Raspberry PiはストレージとしてmicroSDを使いますので
なるべくSDカードへのアクセスを減らし長寿命化させます。
ついでに、
・ブラウザでグラフィカルにシステムの状態・負荷が見れる
netdataというソフトの導入
・同じ32GBのmicroSDカードでも
微妙に容量の小さいSDカードにイメージが書き込めない場合の
OSイメージの縮小方法も記載します。
・SDカード延命化
・スワップを無効化
sudo swapoff --all
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
確認
systemctl status dphys-swapfile

inactiveになってればOK
・fstab
ファイルアクセス日時の書き込みを制限
sudo nano /etc/fstab
nodiratimeを追記(PARTUUIDは環境によって違います。-02に追記)
PARTUUID=********-02 / ext4 defaults,noatime,nodiratime 0 1
一番下に追記
tmpfs /tmp tmpfs defaults,noatime,nodiratime,mode=1777 0 0
tmpfs /run/user/1000 tmpfs defaults,noatime,nodiratime,mode=1777 0 0
tmpfs /run/dump1090-fa tmpfs defaults,noatime,nodiratime,mode=1777 0 0
tmpfs /run/piaware tmpfs defaults,noatime,nodiratime,mode=1777 0 0
tmpfs /home/pi/.cache/lxsession/LXDE-pi tmpfs defaults,noatime,nodiratime,mode=1777 0 0
Ctrl+o、リターンで保存
Ctrl+xで終了
再起動
sudo reboot
確認
df -h

こんな感じならOK
・systemctl
不要なサービスの停止
確認
systemctl list-unit-files -t service|grep enabled
rsyslog停止
sudo systemctl stop rsyslog.service
sudo systemctl disable rsyslog.service
戻すなら
sudo systemctl enable rsyslog.service
bluetooth停止
sudo systemctl stop hciuart.service
sudo systemctl stop bluetooth.service
sudo systemctl disable hciuart.service
sudo systemctl disable bluetooth.service
戻すなら
sudo systemctl enable hciuart.service
sudo systemctl enable bluetooth.service
再起動
sudo reboot
確認
有効のサービス一覧
systemctl list-unit-files -t service
無効のサービス一覧
systemctl list-unit-files -t service|grep disabled
・folder2ram
RAMディスク化
sudo wget -O /sbin/folder2ram https://raw.githubusercontent.com/bobafetthotmail/folder2ram/master/debian_package/sbin/folder2ram
sudo chmod +x /sbin/folder2ram
sudo folder2ram -configure
sudo nano /etc/folder2ram/folder2ram.conf
一番下に追記
tmpfs /var/log
tmpfs /var/tmp
tmpfs /var/spool
tmpfs /var/cache/samba
Ctrl+o、リターンで保存
Ctrl+xで終了
マウント、自動起動化
sudo folder2ram -mountall
sudo folder2ram -enablesystemd
再起動
sudo reboot
確認
df -h

になってればOK
・journald
ジャーナルを保存させない。
sudo nano /etc/systemd/journald.conf
一番下に追記
Storage=none
Ctrl+o、リターンで保存
Ctrl+xで終了
再起動
sudo reboot
以上でSDカード長寿命化は終了です。
・システムの状態表示をするnetdataのインストール

この様な感じでブラウザから
Raspberry Piの動作状態・負荷などを確認できます。
グラフィカルに見れるので面白いです。
sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make git autoconf autogen automake pkg-config cmake libuv1-dev
git clone https://github.com/firehol/netdata.git --depth=1
cd netdata
sudo ./netdata-installer.sh

画像のようになっていればOK
失敗する場合は、エラーメッセージで
必要なパッケージが入っているかチェックします。
sudo apt-get install (パッケージ名)
でインストール
インストール後、
以下にアクセスするとRaspberry Piの
CPU、メモリ、ストレージ使用率などが表示されます。
http://192.168.1.100:19999/
・イメージファイルの縮小と展開
耐久性が高いカードに換えようと
同じ32GBの別メーカーのSDカードに
既存のバックアップイメージを書き込もうとしたところエラー発生。
同じ32GBでもメーカー・商品によって
厳密な容量は違っていて
大きいイメージを小さいSDカードには書き込めないらしい。
Raspberry Pi上で動くイメージの縮小スクリプトがあるので
手順を順に書いていきます。
1、WindowsでUSBメモリ
(32GBのイメージなら、USBメモリは64GB~)を
exFATでフォーマット
2、圧縮する元のイメージファイルと
下記のresizeimage.plをUSBメモリにコピー
resizeimage.pl
#!/usr/bin/perl
use utf8;
use 5.010;
use strict;
#use autodie;
use warnings;
#use diagnostics;
my $who = `whoami`;
if ($who !~ /root/)
{
print "This should be run as root or with the sudo command.\n";
exit 1;
}
if (!$ARGV[0])
{
print "No image file given.\n";
exit 1;
}
my $image = $ARGV[0];
if ($image !~ /^\//)
{
print "Please enter full path to image file.\n";
exit 1;
}
if (! -e $image)
{
print "$image does not exist.\n";
exit 1;
}
my @name = split (/\//, $image);
print "\n$name[(scalar @name) - 1]:\n";
print "=" x (length ($name[(scalar @name) - 1]) + 1) . "\n";
my $info = `parted -m $image unit B print | grep ext4`;
(my $num, my $start, my $old, my $dummy) = split (':', $info, 4);
chop $start;
chop $old;
printf "Old size - %d MB (%1.2f GB)\n", int ($old / 1048576), ($old / 1073741824);
my $loopback = `losetup -f --show -o $start $image`;
chop $loopback;
`e2fsck -p -f $loopback`;
if ($? != 0)
{
print "There was an error in the file system that can't be automatically fixed... aborting.\n";
`losetup -d $loopback`;
exit 1;
}
$info = `resize2fs -P $loopback 2>&1`;
($dummy, my $size) = split (': ', $info, 2);
chop $size;
$size = $size + 1024;
`sudo resize2fs -p $loopback $size 2>&1`;
sleep 1;
`losetup -d $loopback`;
$size = ($size * 4096) + $start;
`parted $image rm $num`;
`parted -s $image unit B mkpart primary $start $size`;
$size = $size + 58720257;
printf "New size - %d MB (%1.2f GB)\n", int ($size / 1048576), ($size / 1073741824);
`truncate -s $size $image`;
my $diff = $old - $size;
printf "Image file was reduced by %d MB (%1.2f GB)\n", int ($diff / 1048576), ($diff / 1073741824);
exit 0;
(TeraPad等を使い、UTF-8 改行LFで保存してください)
3、Raspberry PiでexFATを扱えるようにする
sudo apt-get -y install exfat-fuse exfat-utils
4、USBメモリを接続後Raspberry Pi起動
デバイス名(パス)の確認、マウント
sudo fdisk -l
(USBメモリの容量でデバイスを確認、/dev/sda1のようになっているはず)
マウント先のディレクトリ作成
sudo mkdir -p /mnt/hdd/usbmem
マウント
sudo mount /dev/sda1 /mnt/hdd/usbmem
(USBメモリを使う場合は /mnt/hdd/usbmem にアクセスする)
確認
df -h
(必要なら)
今後もこのUSBを差したときに自動でマウントされるように設定
UUID確認、メモする
sudo blkid
(****-****のような形式、自分は789E-D39Fでした)
sudo nano /etc/fstab
一番下に1行追加
UUID="789E-D39F" /mnt/hdd/usbmem exfat-fuse async,auto,dev,exec,gid=65534,rw,uid=65534,umask=000 0 0
Ctrl+o、リターンで保存
Ctrl+xで終了
再起動
sudo reboot
確認
df -h
5、スクリプトを使ってイメージ縮小
cd /mnt/hdd/usbmem
sudo perl ./resizeimage.pl /mnt/hdd/usbmem/200406.img
(200406.imgの部分はご自身のイメージ名を指定)

私の場合、何故か一度失敗しましたが
二度目で成功しました。
成功すると同名で上書きで作成されています。
6、USBメモリの取り外し
sudo umount /mnt/hdd/usbmem
7、WindowsでUSBメモリから縮小されたイメージをコピー
8、Win32DiskImagerで縮小されたイメージを新SDカードに書き込み
9、新SDカードを差してRaspberry Pi起動
10、イメージ拡張
sudo raspi-config
7.Advanced Options
EXPAND FILESYSTEM (次回起動時に拡張されます。)
これで小さいSDカードにも
そのまま環境をコピーできます。
以上、Raspberry PiのちょっとしたTipsでした。
今回参考にさせていただいたサイト
https://dz.plala.jp/wiki/index.php/RaspberryPi%E3%81%A8DVB-T%E3%81%A7ADS-B
https://raspi.ryo.sc/netdata_install/
http://denshikousaku.net/reduce-raspberry-pi-img-file-to-write-on-smaller-micro-sd-card
https://turtlechan.hatenablog.com/entry/2019/06/08/235327