奇跡的にRaspberry Pi Zero 2 Wの販売開始メールに気付くことができ、購入できました。
ラズパイ3B+も持っているのですが、こっちは別NWでDLNAサーバにしたいと考えていたところなので、Zero2Wにcactiサーバとなってもらいます。
- 本体: Raspberry Pi Zero 2 W 裸運用
- MicroSD: Kingston Canvas Select Plus SDCS2/32GB
→ WD SC QD101 WDD032G1P0Cにクローン引っ越し(容量はWDのが大きい) @2022/9月 - USBデバイス: USBRH (ケーブル5m)
- 電源ケーブル: 部屋に転がってたスマホ充電用ケーブル
- ACアダプタ: 部屋に転がってた2ポート充電器(Motorola)、1ポート0.75Aくらいしか出ない
現在は一応ACアダプタに電流電圧チェッカーを噛ませているのですが、0.5A出た試しがないですね。素敵。
というわけでセットアップの手順を・・cacti導入前のところまでメモ。
headlessで起動
raspberry pi imagerでSDカードにインストール
Raspberry pi os lite (64-bit)を選択。現在Bullseye。
wifiパスワード等設定できる項目は全て入れておく。
ラズパイに挿す前に /boot/ssh を配置しておく方がいい気がする。
imagerでssh有効化してもされてないような・・・気のせい?
headlessなので状況の確認手段なし。mini HDMI持ってない
数分経つとwifi接続される。ルーターの画面等からIPとMacアドレス確認。
参考
初期設定
rootのパスワード作成
sudo su - #rootへ
passwd #rootのパスワード作成
exit #ユーザー権限へ
su #su入れることを確認
raspi-configで出来ることやる
raspi-config
S5 B1を選択 自動ログインしない
I1 legacy camera disable カメラ使わないので不要?
P2 GPU Memory 64→16
L2 Timezone Asia/Tokyo imagerで設定しないと抜けてる
L4 WLAN Country JP
rebootする
アプデ #rpi-updateはプレリリース版にアプデするため実行非推奨らしい
apt update
apt upgrade -y
apt dist-upgrade -y #意味なしだった
apt autoremove -y #意味なしだった
エイリアスコマンド 適当にコメントアウト取ったり -la つけたりしとく
nano ~/.bashrc
alias ll='ls -la'
nano ~/.bashrc #rootにて 色が付くように通常ユーザーからコピペ
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "$(dircolors)"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -la'
alias l='ls $LS_OPTIONS -lA'
shがdashにリンクされている問題の修正 #dashは低機能らしい
ls -l /bin/sh #dashを確認。bashなら修正不要
dpkg-reconfigure dash
No
ls -l /bin/sh #bashを確認
sshポート変更
nano /etc/ssh/sshd_config
#Port 22
Port ほにゃらら
参考
USBRHのドライバインストール
USBRHのドライバインストールが素人的に最もコケやすそうだったので、早めにやります(試行錯誤で駄目になったら最初から)
rpi-sourceをインストール
cd /tmp #どこでもいい
apt install raspberrypi-kernel-headers git python2 bc flex bison libssl-dev libncurses5-dev
#不要なものがあるかもしれないが、少なくともflexまでは必要だった
wget https://raw.githubusercontent.com/RPi-Distro/rpi-source/master/rpi-source -O /usr/local/bin/rpi-source && sudo chmod +x /usr/local/bin/rpi-source && /usr/local/bin/rpi-source -q --tag-update
#昔と場所(URL)が変わってて多少困った、新URLのreadmeの頭の方にコマンド書いてある
rpi-source
#エラーっぽいものが無いことを祈る
/lib/modules/(uname -r)/build が存在するのを確認する。
USBRHのドライバ
git clone https://github.com/kimata/usbrh.git
cd usbrh
nano src/usbrh.c #それっぽいところに追記する
#include
make
make install
USBRHを接続する。
dmesg #usbrhありそうか確認・・/proc/usbrhあれば別に
cat /proc/usbrh/0/status #表示できればOK
参考
- GitHub - RPi-Distro/rpi-source: Raspberry Pi kernel source installer
- Raspberry pi zeroでカーネルモジュールコンパイル - Qiita
- Raspberry Pi 3でUSBRH - Qiita
不要機能、サービス停止
/boot/config.txtで機能設定
nano /boot/config.txt
hdmi_force_hotplug=1 #HDMIがNTSC(コンポジット)に切り替わるのを防ぐ。不要かも
# Bluetooth and Wifi disable
#dtoverlay=pi3-disable-wifi #wifiは無効化しない(コマンドは書いておく)
dtoverlay=pi3-disable-bt #Bluetooth無効化。使わないので
dtparam=act_led_trigger=timer #本体ハング確認用に遅め点滅させる
reboot
lsmod #再起動後にbluetoothが存在しないのを確認
サービス停止
systemctl list-units -t service #サービス確認、bluetooth系ないのも確認
systemctl mask alsa-restore.service #音声らしい。disableだと停止されない。mask:手動起動も不可になる
systemctl disable avahi-daemon.service #DHCPでいい
systemctl disable triggerhappy.service #ホットキーらしい
systemctl disable fake-hwclock.service #問題おきたらntpdateで
mv /etc/cron.hourly/fake-hwclock /etc/cron.hourly/.fake-hwclock
#隠しファイルにすれば動作しない
reboot
#systemctlの一覧にplymouth等は無かった。
参考
- Raspberry Pi4の不要なサービス・ハードの停止 | WordPressをRaspberryPi4で始める方法
- Raspberry Pi Zeroを高速化 - 信頼できる発行元
- raspberry pi 時刻が合わない | なんでもDIY
SDカード延命
folder2ramは入れてないです。
swap無効化
free -h #スワップ確認 99Miだった
swapoff --all #これは永続しない
systemctl stop dphys-swapfile
systemctl disable dphys-swapfile
systemctl status dphys-swapfile
#終了しなかったらCtrl+Cで終了
free -h #スワップ再確認 0B
tmp系をRAMdisk上へ
nano /etc/fstab #追記
tmpfs /tmp tmpfs defaults,size=64m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
tmpfs /var/www/html/cacti_static tmpfs defaults,size=16m,noatime,mode=1777 0 0
#cactiのgraph export用。
rm -rf /tmp
rm -rf /var/tmp
reboot
df -T #/tmp等のマウントがtmpfsを確認
一部ログ無効化
nano /etc/rsyslog.conf
#RULES以降でauth.log,syslog,messages以外はコメントアウト(syslogで読めばいい)。
#cactiの毎分CRONにsyslogを汚されるので、CRONをsyslogに流さないようにする(:programnameの行)
#rngd(乱数生成器らしい)の毎時ログも流さない
###############
#### RULES ####
###############
:programname, isequal, "CRON" stop
:programname, isequal, "rngd" stop
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
#kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
#user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info -/var/log/mail.info
#mail.warn -/var/log/mail.warn
#mail.err /var/log/mail.err
#
# Some "catch-all" log files.
#
#*.=debug;\
# auth,authpriv.none;\
# mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
journaldのログ無効化 (ログのデーモン、ファイルシステムのジャーナリングとは違う。はず)
nano /etc/systemd/journald.conf
Storage=none
systemctl restart systemd-journald
rm -rf /var/log/journal
#syslogは動いてるはず
ext4のジャーナリング機能無効化
tune2fs -l /dev/mmcblk0p2 #featuresにhas_journalを確認
nano /lib/systemd/system-shutdown/rootfs_journal_off.sh
#!/bin/sh
tune2fs -O ^has_journal /dev/mmcblk0p2
chmod +x /lib/systemd/system-shutdown/rootfs_journal_off.sh
reboot
tune2fs -l /dev/mmcblk0p2 #再起動後、featuresにhas_journalが無いのを確認
chmod -x /lib/systemd/system-shutdown/rootfs_journal_off.sh
#確認後、一応実行不可にしておく
過去60分に更新されたファイルの調査(随時)
find /etc/ /home/ /mnt/ /opt/ /root/ /srv/ /usr/ /var/ -not -path "/var/tmp/*" -not -path "/var/www/html/cacti_static*" -cmin -60 > /tmp/list.txt
参考
- DebianにおけるSDカードへの書込み回数の低減方法
- Ubuntuでディスク書き込みをなるべくRAMDISK上にする | パソコン鳥のブログ
- cronのログをauth.logやsyslogに出したくない - がとらぼ
- journal ログをきちんと記録・保存する - Qiita
- ext4のジャーナリング機能のOFF/ONについて - Raspberry Pi Forums
- Buster on Pi 4 rngd logging - Raspberry Pi Forums
syslog保存期間を増やす
久々に見返すとsyslogが4週間で消えてた。圧縮されると大した容量じゃないので、保存期間を増やす。
cd /etc/logrotate.d
nano apache2
nano cacti
nano rsyslog
いずれも
ローテーション期間 weekly等 → monthly
ローテーション回数 rotate * → rotate 1000
圧縮 compress
圧縮遅延 delaycompress
空なら無視 notifempty
を指定。
参考
更新履歴: 2022/9/9 「"rngd" stop」とsyslog保存期間を増やすの項目追加、rootでもプロンプトカラー付くようbashrcの設定
その後のcactiの設定: ラズパイ02Wを買えたのでcactiを設定した