PC関連のチラ裏

自分用(素人)

ラズパイ02Wを買えたのでcacti鯖として初期設定(cacti前まで)

奇跡的に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

参考

不要機能、サービス停止

/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等は無かった。

参考

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

参考

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を設定した