Raspberry Pi2 V1.1 上で動かしている 32bit FreeBSD/arm 13.2。コマンドを実行しようとしたら、接続していたターミナルエミュレータが消えていることに気が付きました。
あれれ、と思いながらリモートからログインしようとすると、motd が表示された後接続が切れる。
FreeBSD 13.2-RELEASE releng/13.2-n254617-525ecfdad597 GENERIC
Welcome to FreeBSD!
Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories: https://www.FreeBSD.org/security/
FreeBSD Handbook: https://www.FreeBSD.org/handbook/
FreeBSD FAQ: https://www.FreeBSD.org/faq/
Questions List: https://www.FreeBSD.org/lists/questions/
FreeBSD Forums: https://forums.FreeBSD.org/
Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with: pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.
Show the version of FreeBSD installed: freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages: man man
FreeBSD directory layout: man hier
To change this login announcement, see motd(5).
Connection to pc57.lifewithunix.jp closed.
この症状、間違って $HOME/.login や .profile に exit を書いたときと同じような症状。ログインプロンプトで、アカウント情報を入れて、それは正しく受け入れられてログインプロセスが始まるものの、Message of Today が流れた後コネクションが切断される。
デフォルトの freebsd アカウントで試しても同じ症状。コンソールから一般ユーザーとrootで入ろうとしても、どちらも同様に途中で切断される。悪いことに、全員同じcsh使っている。シェルのバイナリーが壊れたのか、ライブラリーが壊れたのか?
RPI2単体では、ログインできないので、状況確認作業できない。やむをえず、OSを落とし、SDメモリを抜き、SDメモリアダプターを使って別のRPIのUSBポートに接続し、/mnt にマウント。/mnt/var/log の内容を確認してみました。
確かにおかしいことはおかしい。なぜか 本日、一度、昼間に勝手にリブートしたようです。その後、おかしくなったみたい。
/var/log/message のログインに失敗しているところを見てみると、Cシェルがコアを吐いて落ちている感じ。
Nov 2 19:42:53 pc57 kernel: pid 2647 (tcsh), jid 0, uid 1002: exited on signal 4 (core dumped) Nov 2 19:42:53 pc57 inetd[1001]: /usr/libexec/telnetd[2645]: exited, status 1 Nov 2 19:43:03 pc57 kernel: pid 2650 (tcsh), jid 0, uid 1002: exited on signal 4 (core dumped) Nov 2 19:43:03 pc57 inetd[1001]: /usr/libexec/telnetd[2648]: exited, status 1 Nov 2 19:43:40 pc57 kernel: pid 2653 (tcsh), jid 0, uid 1002: exited on signal 4 (core dumped) Nov 2 19:43:40 pc57 inetd[1001]: /usr/libexec/telnetd[2651]: exited, status 1 Nov 2 19:45:54 pc57 kernel: pid 2669 (tcsh), jid 0, uid 1002: exited on signal 4 (core dumped) Nov 2 19:46:52 pc57 kernel: pid 2675 (csh), jid 0, uid 1001: exited on signal 4 (core dumped)
さて、どうしたものか。
マウントしたSDメモリを、とりあえずfsck し、freebsd アカウントのログインシェルを csh → sh に変更し、元のRPI2に戻し、リブート。。。。Bシェルユーザーなら入れるかも。と、期待するものの、、、、
が~ん、再起動後、login プロンプトまでたどり着けない。完全にクラッシュじゃん。または本体の故障?
RPI2本体かSDメモリのどちらの問題かを切り分けるため、RPI2 V1.2 にSDメモリを引っ越して起動テストしてみたところ、RPI2 V1.2 も起動しませんでした。SDメモリ上ファイルシステムのクラッシュのよう。しかも、カーネルかカーネルモジュールが壊れたような気がする。
SDメモリの寿命を迎えたセクターが発生しているんじゃないか?と考え始めたところです。1か月も使っていないんですけどね。ソースビルドは行っていないものの、pkg による頻繁な書き換えと /var 下はログや MySQL DBの更新作業は発生しているはず。たまたま近くにあった32GB SDメモリを使ったのが悪かったかな?安物SDであることは間違いない。まさかQLCってことは無いと思うのですが。
仕方がないので、今までファイルシステムとして使っていたマイクロSDカードは、フォーマットして別用途に使うことにし、MLCチップの32GB マイクロSD上に、32bit FreeBSD/arm を一から入れ直して、サーバーを再構築することにします。
セットアップ後、MySQLデータベースを2週間程度動かして、クラッシュしないことを確認したい。プラス、デイリーで、MySQLデータベースをダンプするようにするとか、もう一台RPIでMySQLサーバーを立ち上げて、データベースをミラー化してもいいかと考えているところ。データが吹っ飛ぶことだけは避けたいですから。
イメージ違いでRPIが起動しなかったことは多々ありましたが、Raspberry Pi のSDメモリファイルシステムがクラッシュしたのは、初めて。安心してデータベースを使うには、16GBでいいからSLCチップのSDメモリが欲しいわ。