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

電源ブチ切りしてもファイルシステムが壊れない、シャットダウンフリーなラズパイを構築する。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を処置した。

/var/log/journalは移動できない

systemd以降、OSログは/var/log/journal以下へ保存される。圧縮ファイルになるが、それでも、放置していると、かなりの量になる。4〜5年運用している私のホビーマシンでは、860MBの蓄積があった。

組込では、ログ領域を移動したいシーンが時々ある。まぁ、どこかに設定ファイルがあって、移動は簡単だろうと思いきや、調べてもなかなかパラメータ設定が出て来ない。ユーザランドgrep検索しても設定ファイルが浮き上がらない。

まさかとは思いつつ、systemdのソースコードを見たら、その、まさかのコチコチのハードコーディングだった。
例)https://github.com/systemd/systemd/blob/master/src/journal/journalctl.c

それでも無理やり移動させるなら、systemdが実行される前に、/var/log/journalのマウントポイントを変えるしか無い。それを実施できる機会は、初期RAMDISK(initrd)内でのスクリプトである。initrdが無いプラットホームでは、Kernel起動パラメータ「init=」で/sbin/init以外の自作スクリプトを指定し、そこで対処する。

備考:
Kernelが最初に走らせるプログラムは/sbin/init。初期RAMDISK(initrd)がある場合は、initrdに含まれる/sbin/initとスクリプトが実行され、最後にHDD等のユーザランドchroot(pivot_root)される。その時に、今度は、HDDの/sbin/initが実行される。そのHDDの/sbin/initは、systemdへのシンボリックリンクである。