シャットダウンフリー 総括

呼び方はいろいろです。シャットダウンフリー、電源ブチ切り対応、ROM化、リードオンリー化、電源断保護、延命化、・・・

本ブログで整理したシャットダウンフリーの手段は、あくまでも趣味の範囲で、わかる人には十分というレベルで記載しています。業務に関わるレベル(≒Linuxに不慣れな方々のオペレーションレベルまで対応するという意味)での記載は別のクローズなSNSに記載しています。Linuxコミュニティに恩返しする意味でもオープンにしていきたいとは思っています。

なお、最近のSSDをはじめとするFlashバイスは耐久性が上がっており、そのためのOS側の実装も充実しております(TRIM、ウェアレベリング、・・・)。採用するメディアのTBW(Tera Byte Written)と実運用を見て、まずはシャットダウンフリー実装の必要性を確認すべきかと思います。

1. 目的

シャットダウンフリーの目的を下記に再整理します。

  • 電源ブチ切りが発生しても確実に再起動するLinuxサーバを構築したい。
    書込中の電源断からの復旧を100%保証できるファイルシステムは無いので。
  • SSDを延命したい。
    Flashメモリの書込回数には上限があるので。
  • Linux PCやラズパイを貸し出すことになったが、中身はいじられたくない。
  •  [特殊な例]マルウェアに感染しても、すぐに元に戻せるようにしたい。

2. 方式

シャットダウンフリーの方式を大きく分けると、下記の2つです。

① tmpfs方式

RWが必要なディレクトリやファイルをあらかじめtmpfs領域にコピーしてからOSを本核起動します。

② overlayroot方式

RWが必要なディレクトリをあらかじめ定義します。そのディレクトリにライトアクセスがあった場合は差分だけがtmpfsに保存されます。Debian系ならパッケージが用意されています。

①②どちらがいいか

手離れして1年以上電源を切らないなら①、手に届く範囲や1ヶ月以内に電源をオフするような運用なら②です。理由はこの記事の本文にありますが、要は、overlayfsの不具合リスクが顕在化する前に電源を確実に切るなら②でOK、たいていは準備の楽な②で良いとは思います。

3. よくある失敗

後日記載します。

 

4. その他

開発者から手離れするLinuxプラットホームでは、多くのカーネルパラメータをケアしなければなりません。それらは、カーネルバージョン、CPU種別、チップセットディストリビューション、それらの各世代によって、多くのバリエーションがあります。例えば細かい所を言えば、Intel CPUでは、C-Stateの制限や無効化が場合によっては必要です。LANでの高スループットが必要ならネットワークパラメータのマニュアル設定が必須です。複数LANポートを持つケースではトラップがあります。

根気よく調べれば必ず正解にたどり着きますが、調べるきっかけを得られない「知らなかった」が最も恐れるべきところとなります。これを防ぐには、コミュニティ活動に何かしら関わっていくのが良いとは思います。日本人にはなかなか難しいですが、今は、リモートでも匿名でも関わりやすくなっているとは思います。

 

グルテンフリー

3月下旬から取り組んでいる「ゆるめのグルテンフリー」について、ここに整理しておきたいと思います。

グルテンフリーとは、小麦粉を避ける食生活スタイルのことです。テニス王ジョコビッチが取り組んで注目されたようですが、今まさに大活躍中の大谷選手も取り組んでいるようです。サイボーグと呼ばれる方々はグルテンフリーがお好きなようで・・・

3月下旬、膝痛の応急治療で訪問したクリニックの待合室で、たまたま手に取ったのがグルテンフリーの本でした。その時まで私はその言葉を知りませんでしたが、ジョコビッチが取り組んで好成績を継続しているという点が心に残り、帰宅後、検索して調べはじめました。

生まれて以来の私の食生活は、こよなくパンを愛するスタイルでした。いきなり完全グルテンフリーはつらいので、まずは「朝食パン」「週末ごほうびパン」を止めるところから半信半疑で始めてみたところ、2週間で体重1.5kg減。膝への負担が減った他、肌の調子/髪のはり/お通じが良くなった気がしました。そこで、更に調べると、完全グルテンフリーは逆に危険とのことで、「ゆるめ」で取り組むことにしました。ハンバーグや大豆フレークに含まれるレベルの小麦や「麦茶」は許容しますが、トンカツの衣は基本は剥がします。サラダ油/ショートニングは5年前から極力避けてます。要は、和食中心です。

・・・

7月に入り、体重は、膝痛のリハビリ運動の効果もありますが、昨年末から3kg減りました。そして、驚いたことに、月2〜3回襲われていた頭痛が無くなりました。頭痛の原因は加齢による疲れ目のせいだと思い込んでいましたが、ここ数年好んで食べていた様々な「もっちり系のパン」が主な原因だったようです。たまにはピザ、パスタ、ギョーザも食べたい気はしますが、中毒性もあるとされるグルテンから解放されたためか、無駄な食欲は出なくなりました。なお、会社のお弁当に入っているパスタやギョーザは食べてます。

・・・

膝痛は最悪を脱したものの一進一退。膝痛で「グルテンフリー」に出会えたので、そこは怪我の功名。筋力アップがまだできる今の年齢で膝痛に取り組めるのは幸運。エアロ出たい! 復活したあの伏魔殿に戻りたい!! 少し時間かかりそうだが必ず戻る!!!

右ひざ痛

昨年11月末頃から右膝の内側がモヤモヤ痛むようになりました。体が温まっている間は痛みは無く、そのうち治ると思って筋トレを強化したところ、逆に悪化しました。更に12月下旬、風呂でスリップして右足で踏み留まったときの膝激痛でまた状態が悪化しました。年末には就寝中の寝返りで目が覚めてしまう痛さになっていました。

今年1月の緊急事態宣言に合わせて定期的な運動はペースダウン、2月は完全オフにしたものの、良くも悪くもならなず、3月はロキソニンゲルを塗らないと寝られない状態にまで悪化。4月に入り、クリニックで受けた注射と、ダメ元でやってみた水泳の思わぬ効果で、ロキソニンゲルから解放され、ようやく回復に向かいました。

膝に良さそうなことはいろいろ試しています。今後のため、以下に列挙しておきます。【】は効果度合い5段階自己評価です。 

緩めのカーフタイツ
【+4.5】
エコノミー症候群サポータの代わりです。周囲の血行促進と冷え防止のため、真夏を除きほぼ常用しています。
ストレッチローラー
【+4】
筋膜リリース/血行促進です。やりすぎないように注意しています。

足に腹筋EMS
【?】

膝専用のEMSは高評価ですが、高額です。そこで、手持ちの腹筋EMSでやってみました。気持ちいいのですが、悪化の懸念があり、怖くて今は使っていません。
ロキソニン ゲル/テープ
【無評価】
効きますが、劇薬です。私は薬嫌いなので、頭痛がひとくても薬は定量の半分、もしくは葛根湯です。自分では買わない薬ですが、嫁さんが持っていたので、使ってしまいました。一度使うと、止められなくなります。
痛みを我慢しすぎると神経が痛みを覚えるという説があり、経験的にも当てはまる節があります。適量の範囲であれば、我慢しすぎるよりは使った方が良さそうです。
サプリメント
【+2】
口から膝に届く成分はいったいどんなけなのか、甚だ疑問です。効果を期待するなら、せめてファスティングに近いことを何かしないと・・・
7/18追記:ロコモア2ヶ月→ひざサポートコラーゲン2ヶ月、実感できる効果無し。次は「北の恵み」かな。
クリニックのとある注射
【+4】
3月下旬、モヤモヤ痛に耐えられなくなって受診しました。注射は私からお願いし、すぐに効果があり、最悪の状態(主に精神的ダメージ)は解消しました。しかし、根本解決にはなりません。タラレバですが、この時期はまだカーフタイツ効果に気付いておらず、ヒザ下を温めるだけで良かったのではないかと思います。
グルテンフリー
【+5】
膝痛への直接効果はありませんが、間接的効果は絶大でした。こちらで整理しました。
水泳+強力ジェットバス
【+4.5】
リハビリとしては一番効果を実感できる方法となっています。どっちが効いているのかは不明です。
全身粗塩マッサージ
【メンタル+5】
膝が痛いと悲しくなってきます。そこで、マイナス思考にとりつかれないよう、儀式的に行っています。膝には塩多めで念入りに粗揉みしています。なお、とある塩4kgのAmazonレビューを見ると、その多くがマッサージや塩風呂としてのレビューでした( ゚Д゚)!
腹筋〜あしゆびの意識
【+4.5】
非常に効果がありますが、なかなか意識付けできません。
そこで・・・↓

ダイエットスリッパ
【+4.5】

男性サイズは売ってないので自作しました。作り方は簡単で、真っ二つに折り曲げ両面テープで固定、必要に応じてビニールテープで底面滑り止めを補強します。 作り方の解説例
その他 運動/風呂直後のアイシング20分、あしゆび体操、人目につかない所での貧乏揺すりも、効果がありました。

 

状況:
3月下旬の最悪状況は脱していますが、良くも悪くもなりません。そこで、5月下旬にMRIを撮影しました。結果、骨・軟骨・半月板に異常無く、炎症のみでした。更に、右足フロント内側の筋力が極端に弱いと診断されました。フロント筋肉が弱いと、膝に炎症が起きやすいとのこと。

ふくらはぎが発達した足では、逆に前側が弱いケースはよくあるようです。筋トレもバランスを欠いていたと思われます。私の足は左足が1cm長い(骨盤のズレもある)ので、マシンでは荷重が重いほど左足だけが頑張っていたのでしょう。当面は通院リハビリ治療/トレーニングですが、それでも良くならなければ、「体外衝撃波治療」という方法があるようです。運動量は特に制限しなくて良いとのことでしたが、ニー・インになる動きは厳禁、大好きな平泳ぎも禁止されました。

つぶやき:
理学療法士のお兄さんから課せられたメニューは、まさにリングフィットアドベンチャー! 買おうかな・・・いや、あの冒険家が推奨するFoot Fit 2を買うべきだろう。

屋根裏の小悪魔ちゃん

屋根裏で毎晩軽快なステップを踏み、私を不眠症に陥れた犯人は、ねずみちゃんではなく、、、

f:id:t0a9n9a4k:20210425091338j:plain

かわいい小悪魔ちゃんでした (゚д゚)!。5年前、私を左肩関節脱臼に追い込んだ犯人のご家族でしょう。

ねずみちゃんなら定めにより水没であの世に行っていただくところでしたが、この子は行き先が違います。丁重に、、、というよりは強烈な屁をくらわないよう慎重に、人里離れたKやまへお運びし、リリースしました。どうかお元気で。。。

bashrcでechoしてはいけない

知らなかった... _| ̄|◯ 

         ↑ 久々の左右反転orz

https://www.google.com/search?q=bashrc+echo+scp

Linuxは、触れていればいつも何かしら新しい発見があるのでワクワクしますが、この件は、ちょっと足元がおろそかだったかもしれません。

本Blog内での該当部は、「bashrc」で検索してヒットするページはメンテしておきました。

 

なお、TeraTerm D&D操作やWinSCPのscp(sftpはNG)などでは、標準出力があってもファイル転送できるケースはあるようです。とはいえ、普通は処置すべきでしょう。

 

・・・ なお、Debian系のLinuxではもともと処置が入っているようです。但し、/home/userと/rootとで異なる処置になっています。

git diffを美しく

新幹線でぼーっとしている時間を有効活用すべく、新幹線Wifiを駆使して調べました。

目的
  • 的確に差分を表示できるようにgit commitしたい。
  • 文字コード、改行コード、行末スペースの差分でリポジトリをよごしたくない。
処置案1

コミット前にスクリプトで処置します。コミットする人が私一人ならこれでいいです。

# 1. テキストファイルをリストアップし、UTF-8/LF改行に変換して上書き
find . -type f -not -path "*/.git/*" | perl -nle 'print if -f && -T' | xargs nkf -w -Lu --overwrite

# 2a. 行末に空白のあるテキストファイルをリストアップし、処置して上書き
find . -type f -not -path "*/.git/*" | perl -nle 'print if -f && -T' | xargs grep -lzP "\ \n" | xargs sed -i 's/\ *$//'

# 2b. 末尾Tabもあわせて削除(sedで、SpaceとTabは'\s'で表現できる)
find . -type f -not -path "*/.git/*" | perl -nle 'print if -f && -T' | xargs grep -lzP "\t\n|\ \n" | xargs sed -i 's/\s*$//'

# 2c. README.mdなどのMarkdownは末尾空白2個で改行なので除外する場合
find . -type f -not -path "*/.git/*" -not -name '*.md' | perl -nle 'print if -f && -T' | xargs grep -lzP "\t\n|\ \n" | xargs sed -i 's/\s*$//'

[3/25] grep -lzP "\t\n|\ \n"に修正しました。

処置案2

pre-commit hookを使うと、コミット前に処置できるようです。複数の人がコミットするなら、ここで処置すべきです。余力があれば帰りの新幹線で。。。寝てました (-_-;)

処置案3

既に行末スペース等でよごれてしまったリポジトリは、表示の際のオプション設定できれいにdiff表示できます。

git diff -w

GitHubWebブラウザでdiff表示している時も、URL末尾に「?w=1」を付ければ機能します。
備考:GitHubの秘密


次の新幹線テーマ
  • 1行スクリプト・・・つまり「ワンライナー」を目指したいのですが、意外と難しいのです。
  • Subversionの#Date, #Revisionのように、gitでもテキストファイルに日付とリビジョンを埋め込みたいです。post-checkoutとpre-commitで対応でしょうか?

Ubuntu Studio 20.10でもXFCE4+Screenlets

Ubuntu Sduioのデフォルトのデスクトップは、20.10以降、XFCE4と袂を分かち、KDE Plasmaに変更されました。しばらくそのままおつきあいしていたのですが、やっぱりXFCE4がいいので、XFCE4環境をインストールして標準デスクトップにしました。どうしても、XFCE4 + Screenletsから離れられません。

Screenlets起動には、Ubuntu 20.04で動作している状態に対して下記2つのパッケージ追加が必要でした。

wget http://security.ubuntu.com/ubuntu/pool/universe/p/pyxdg/python-xdg_0.26-1ubuntu1_all.deb
wget http://security.ubuntu.com/ubuntu/pool/universe/d/dbus-python/python-dbus_1.2.16-1build1_amd64.deb
sudo dpkg -i *.deb

 

また、起動画面(gdm)からはPlasmaを選択できないようにしておきました。
cd /usr/share/xsession
mkdir keep
mv plasma.desktop ubuntu*.desktop keep/

 

XFCE4は、なんといっても、必要最低限までのデコレーション機能と、それゆえの超軽快動作で、品質の悪いネット越しのリモートデスクトップでも快適です。メンテ切れのScreenletsは、頑張ればPython2ではなくPython3の実装に合わせられると思うので、暇になったら頑張ってみようと思います。

・・・こうなると、私の今の使い方では、Ubuntu Studioである必要も無さそうです。Ubuntu Studioが気に入ってたのは、下記の点です。
XFCE4がデフォルト
② リアルタイムカーネルがデフォルト
③ 映像・音楽系のプロ仕様アプリがデフォルトで入っている

しかし時代も変わり、①が無くなり、②はネット主体かつ複数コア(SMP)安定動作の昨今ではほぼ意味なく、③のプロ仕様アプリは過去はちょっと業務開発がらみもあったけど今は使いこなせていないので、もう、Ubuntu Studioからおさらばするかもしれません。 

[備考] Conkyではガジェットの雰囲気を出すのが難しく、それが理由で私はScreenletsを使い続けています。ConkyにせよScreenletsにせよ、セキュリティ観点から、一般的には非推奨です。