ラズパイ:シャットダウンフリー fuse+overlay編

調整の手間が若干少ないoverlay編(fuse無し)も参照の上、どちらを使うか検討下さい。本編では、overlayとfuseFilesystem in Userspace)を使います。ご利用は自己責任で。

前提:準備①〜⑤が終わっていること。

ここで作成・編集するフォルダ/ファイル:

フォルダ/ファイル名 内容
/etc/fstab デフォルトマウントの定義
/usr/local/bin/mount_ov.sh /etc/fstabから呼び出すシェル
/overlay/
/.overlay
overlayの実体
overlayマウントする時のフラグ


⑥ /etc/fstabの調整

LABELで認識させるのは私の趣味だが、raspbianのkernel起動パラメータ(/boot/cmdline.txt)では対応できない様子で中途半端な対応となる。必要に応じてアレンジすること。

準備:

# バックアップ
mv /etc/fstab /etc/fstab_org
cp -a /etc/fstab_org /etc/fstab
# BLocK device IDを確認(任意)
blkid
# ラベル付与
dosfslabel /dev/mmcblk0p1 boot
e2label /dev/mmcblk0p2 rootfs


/etc/fstabを編集(rw→ro):

# overlayfs/fuse用の/etc/fstab
# proc
proc          /proc    proc  defaults             0 0

# 軟弱なFAT領域はroマウント
LABEL=boot    /boot    vfat  ro,defaults          0 2

# rootfsはコメントアウト
#LABEL=rootfs  /        ext4  ro,defaults,noatime  0 1

# fuse+overlay
mount_ov.sh   /overlay fuse nofail,defaults       0 0

# /tmpもroになるのでtmpfsにする
tmpfs         /tmp     tmpfs defaults             0 0


⑦ /usr/local/bin/mount_ov.shを作成

ここではoverlayでrwとするフォルダは/usr /etc /home /root /varとするが、必要に応じてFHSを確認すること。

#!/bin/bash
## /.overlayが存在すればoverlayにする。
if [ -e /.overlay ]; then
    ## /var/logのツリー構成だけを退避
    find /var/log/ -type d | cpio -pdm /dev/shm/
    find /var/log/ -type l | cpio -pdm /dev/shm/
    ## overlayのrw実体となるtmpfsを作成
    mount -t tmpfs tmpfs /overlay
    ## 主要フォルダをoverlay化
    for d in usr etc home root var; do
        mkdir -p /overlay/${d} /overlay/${d}_rw
        OPTS="-o lowerdir=/${d},upperdir=/overlay/${d},workdir=/overlay/${d}_rw"
        mount -t overlay ${OPTS} overlay /${d}
    done
    #### Option-A:退避した/var/logをtmpfsに移動
    mount -t tmpfs tmpfs /var/log
    mv /dev/shm/var/log/* /var/log/
    rm -rf /dev/shm/log
    #### Option-B:退避した/var/logをoverlayfsに移動
    ## rm -rf /var/log
    ## mv /dev/shm/var/log /var/
else
    ## rootfsをrw,noatimeに設定
    mount -o remount,rw,noatime /
fi
exit 0

念の為:

chmod +x  /usr/local/bin/mount_ov.sh


⑧ シャットダウンフリー起動の設定
mkdir /overlay
touch /.overlay
# ↓ディスクチェック無効設定。rwマウント時には消去される。忘れても問題無い。
touch /fastboot 


⑨ その他

元の環境に戻す時:

mount -oremount,rw /
rm /.overlay
reboot

/boot/config.txt, cmdline.txt 編集 or raspi-config実行時:

mount -oremount,rw /boot

$HOME/.bashrcへの追記(任意):

## 非対話モードでは標準出力しない方がいいので
if [[ $- != *i* ]]; then return; fi

findmnt /etc | grep overlay > /dev/null
[ $? == 0 ] && printf "\n<<<< The Overlay Environment! >>>>\n\n"


Reference:
Setting up overlayFS on Raspberry Pi - Domoticz
FilesystemHierarchyStandard - Debian Wiki


ラズパイ:シャットダウンフリー 準備

電源ブチ切りしてもファイルシステムが壊れない、シャットダウンフリーなラズパイを構築する。tmpfs,overlayの実体はSDRAMなので、その領域で更新したファイルは電源断で消えることに留意。保存したいデータがあるケースでは、MicroSDの別パーティションUSBメモリをrwマウントして運用する。ここでは下準備まで。

シャットダウンフリー実装 準備
ラズパイ:シャットダウンフリー fuse+overlay編 ①〜⑤
ラズパイ:シャットダウンフリー overlay編(fuse無し) ①〜③、⑤
ラズパイ:シャットダウンフリー tmpfs-chroot編 (未完成) ①〜③
ラズパイ:シャットダウンフリー tmpfs-bind編 ①〜③
前提:
  • Raspbian のバージョンは stretch (debian9.x)
  • root権限でオペレーション:「sudo su -」 または 「su -」でrootになる。
  • /dev/mmcblk0p2にユーザランド(rootfs)構成物がほぼ全てあるものとする。
① ベースのアップデート
apt update
apt upgrade
rpi-update  # FWアップデートは推奨されてはいないが私はやる主義。
② FAT領域をチェック/リペア

デフォルトでは、軟弱なFAT領域がrwでマウントされている。既に電源ブチ切りで壊れかけていることも多い。

dosfsck -w -r -l -a -v -t /dev/mmcblk0p1

参考:
https://askubuntu.com/questions/147228/how-to-repair-a-corrupted-fat32-file-system
https://explainshell.com/

スワップの無効化
systemctl stop dphys-swapfile.service
systemctl disable dphys-swapfile.service
rm /var/swap  ## ←swapファイルの実体。
④ パッケージ追加 fuse
 apt install fuse
⑤ /etc/modulesに"overlay"を追記

↓ 単に末尾にoverlayを追記しているだけなので、エディタ開けるなら手編集でどうぞ。

grep overlay /etc/modules > /dev/null; [ $? == 0 ]  || echo overlay >> /etc/modules


本件とは無関係だが、/etc/sysctl.confに下記を追記し、IPv6を無効化する。ただし、副作用にご注意。

/etc/sysctl.conf:

・・・
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1



年末の必殺キーワード

嫁さんからもらった年末の必殺キーワード:
年賀状 一言添え

これで、今年は例年に無くスムーズに一区切りできました ^^; 。 当然、アレンジはしましたが、希薄になってしまった感じも否めず、この必殺技は今回限りにしようと思います・・・。平成最後の区切りで「年賀状仕舞い」をされる方もいらっしゃるようですが、年賀状を書く余力/気力が持てなかった超多忙な過去のつらい時期を思うと、何か想いを寄せて書く機会が持てるだけでも、ありがたみを感じます。

今年、プライベートでやり残したことと言えば、エアロでの上位クラス定着です。スケジュール的には厳しいので、2〜3年かけて、ゆっくりセンスを磨いていきたいと思います。

VirtualBox上のCentOS7の更新で拾ったバグ

クリスマスの記念にと思い、VirtualBox上のCentOS7をアップデートしたら、タイムリーな不具合を拾ってしまいました。
0015570: CentOS 7.6.1810 running on a VirtualBox guest with a GUI has a mouse problem - CentOS Bug Tracker
X-Window内の窓をマウスでピックアップできません。最初はキーボードが悪いのかと思いましたが、マウス制御関連の不具合のようです。VirtualBoxでCentOS7をデスクトップ的に使う人も少ないとは思いますが、対処例を以下に示しておきます。

対処例1:
下記のような先行bugfixがあるので、それを適用する。
https://people.centos.org/toracat/kernel/7/plus/bug15570new/

対処例2:
やがて、上記パッチが反映されたKernelが配布されるだろうから、当面、古いKernelで起動する。/boot/grub2/grub.cfgを上書き編集し、デフォルトで古いKernelが起動する設定にする。yum updateでKernelが更新されたら自動的にgrub.cfgも更新されるため、いじった所は元の記述に戻るという目論見である。

/boot/grub2/grub.cfg:

・・・
if [ "${next_entry}" ] ; then
    set default="${next_entry}"
    set next_entry=
    save_env next_entry
    set boot_once=true
else
# set default="${saved_entry}" を
# コメント化or削除し、下記を追記。
# 数値は0オリジン。1なら2番目の
# エントリで起動する。
    set default=1
fi



2019-02-07追記:
この問題が発覚してもうすぐ2ヶ月です。Kernelの更新はありましたが、そこにはまだ反映されていません。下記に新しい暫定カーネルが追加された模様です。まぁ、いろいろ苦労されているようですが、この件以外にも、そろそろこの古いカーネルへのバックポートが厳しくなってきたのではないでしょうか?
https://people.centos.org/toracat/kernel/7/plus/bug15570new/

慣れてきたデバイスツリー

DTCコンパイラ
・双方向。dts→dtb, dtb→dts どちらも可。
・実は、dtc自体は、たいしたことはしていない。生成後のバイナリ(.dtb)をhexdump -C等で確認すれば分かる。
・主要ディストリでは、パッケージで配布されている。Debian系ではdevice-tree-compiler、CentOSではdtc。
・Ver 1.4以降で、バージョンの差異が少しあるが、問題にならないケースが多い。

トラブルシュート時のコツ
・デバイス調整がらみではまったら、まずはデバイスツリーを見る。但し、SDRAMパラメータは別格で、デバイスツリーでは扱わない。
・デバイスツリーで定義されたパラメータが、本当にKernelやU-Bootで使われているか、grep検索で確認する。
・互換性重視のあまり、無駄な記述が多い。
・ダウンコンパチ的な記述配慮は簡単。単に列挙すれば良い。
・パラメータ名の中途にあるカンマ「,」はフェイクであり、通常のテキスト扱い。
・使うKernelに含まれているdtsサンプルを参照する方が良い。但し、H/Wやデバイスに依存する数値はベンダ・H/W設計者から提供を受けた数値を適用すること。

その他:
ラズパイではデバイスツリーの一部を/boot/config.txtで定義できる。何故テキストのまま引き込まれるのか、いつか調べたい。

エアロビ・ダンス中の「気」の意識事項

かかりつけ医からの助言でスポーツジムへ通いはじめたのは2年半前でした。初心者向けクラブHで1年半、そして、昨年11月にクラブKへ移って1年経ちました。Kに入った当初はターンもおぼつかない状態でしたが、今は自信を持って回れます。HでもKでも、インストラクターの先生は、声がかれている時でもエネルギッシュかつ丁寧に指導します。我々サラリーマンは風邪をひけば休暇をとりがちな中、本当にありがたいことです。

以下、エアロビ・ダンス中の意識事項の備忘録です。ダンスは、MegadanzとBodyJamです。個人指導は受けておらず、素人感覚丸出しの内容です。

1.腹筋
体の軸であり、最も意識します。「丹田」「重心上」で意識することもあります。ラテン系の動きでは、特に意識しています。

2.脱力
私の場合、ターンがうまくいかない時は、たいてい、力が入りすぎています。新しい振りを覚える時に、脱力を意識してうまくいくこともあります。

3.あごを引く
テニスやスキーでは最優先事項でした。集中力が鈍ってきた時に、意識するようにしています。但し、意識しない方が良いシーンもあり、「脱力」とのバランスになります。

4.手のひらの付け根
ここに「気」を持つことで、アームを中心とする体全体の動きがスムーズになりました。最近、意識するシーンが多いです。

5.心の軸
心が浮ついている時は怪我をしやすくなります。心の軸は、感謝の心。いつも丁寧に指導してくださる先生に感謝、語ることは無いけど共に健康維持に取り組む仲間に感謝、五体満足に動く自分の体に感謝し、謙虚な精神状態で臨みます。

rootkit hunter

ちょっと気になったので、Ubuntuホビーマシンで久々に実行してみた。以下、root権限のsudoは省略。

apt install rkhunter
vi /etc/rkhunter.conf

UPDATE_MIRRORS=1
MIRRORS_MODE=0
WEB_CMD=""
PKGMGR=DPKG
SCRIPTWHITELIST=/usr/bin/lwp-request

rkhunter --update
rkhunter --propupd ## <= /etc/rkhunter.confを変えたら実施
rkhunter --versioncheck
rkhunter --checkall --skip-keypress
または
rkhunter -c --rwo --sk

Warningが少し出たので、/var/log/rkhunterを確認し、必要に応じて処置する。

例えば、、、
Warning: The SSH configuration option 'PermitRootLogin' has not been set.
とあるが、rootログイン自体を認めていないので、これは無視しても良さそう。
・・・とは思ったものの、念のため/etc/sshd_configを処置した。