2023年4月19日水曜日

Lubuntuが起動しなくなる

特にシステムの更新等もしていない中、某音楽アプリが固まってそのまま動かなくなったので強制再起動したら起動しなくなる。こういうところね・・・経験上デスクトップ環境としてLinuxを使っていると少なからずこういう唐突に起動しない事態に陥ることが他のWindows/Macと比較するとかなり高い確率である。(不思議とサーバ運用だとあまり経験が無い)いくらGUIがまともになってきてもこういう時にすっと修復できないものはPCとかに詳しくない人にはいくら動作が軽くてもオススメしたくない。そもそも、こういう状況が起きるべきではないけど。そのためにファイルシステムを工夫しているはずなのに・・・。Chromebookとかはもっとまともだと良いけど。

 

愚痴はさておき、起動時のログを見る限りNetworkManagerが起動できずにそのままシステムも起動できない状態になっている模様。別にネットワーク関連動かなくても起動自体はしてほしいところだけど・・・。

 

で、とりあえずシフトを押しながら起動してRecoveryモードで起動してみるけどネットワークを有効に出来ないので上書きで何かパッケージを入れ直すとか何も出来ない。正直何故NetworkManagerが起動しないのかさっぱり分からず取っ掛かりが何か欲しい所。なのでちょっと詳しく情報を追ってみる。NetworkManagerが駄目なのだけが分かっているのでそこに絞ってまずは調査。


$ journalctl -xe -u NetworkManager

 

この中で明らかに怪しい情報が見つかる。libgssapi_krb5.so.2に何かした記憶がないが恐らくは壊れているんでしょう

 

Apr 19 12:10:30 xxxxxxxx systemd[1]: Starting Network Manager...
Apr 19 12:10:30 xxxxxxxx NetworkManager[703]: /usr/sbin/NetworkManager: error while loading shared libraries: /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: ELF file data encoding not little-endian
Apr 19 12:10:30 xxxxxxxx systemd[1]: NetworkManager.service: Main process exited, code=exited, status=127/n/a
Apr 19 12:10:30 xxxxxxxx systemd[1]: NetworkManager.service: Failed with result 'exit-code'.
Apr 19 12:10:30 xxxxxxxx systemd[1]: Failed to start Network Manager.
Apr 19 12:10:30 xxxxxxxx systemd[1]: NetworkManager.service: Scheduled restart job, restart counter is at 4.
Apr 19 12:10:30 xxxxxxxx systemd[1]: Stopped Network Manager.


という訳で破損確認と差替えを行いたい。が、前述の通りネットワークにつながらないので何か新しいファイルを拾ってきて比較等々の作業が難しい状況。どうしたものかと思ったけど今使っているlubuntuをインストールする際のUSBメモリをまだ消していなかった事を思い出してそちらから起動して確認してみることにする。このライブラリの所在を確認しバイナリ比較。

 

$ cmp /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2

/media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 differ: byte 6, line 1


案の定差分が出てくる。一応念の為詳細確認をする為に"-bl"オプションをつけてみる


$ cmp -bl /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2

<snip>
338550   0 ^@    10 ^H
338553 340 M-`   64 4
338554   1 ^A     0 ^@
338569  40        4 ^D
338581   0 ^@    10 ^H
338585  22 ^R     1 ^A
338586   1 ^A     0 ^@
338587   0 ^@    20 ^P
338589   1 ^A     3 ^C
338606   0 ^@   100 @
338609   0 ^@    64 4
338617  64 4     37 ^_
338618   0 ^@     1 ^A
338625   0 ^@    10 ^H
<snip>


見た所で何がどう違うのかはこれだけだと分からないけど結構差があることは分かった。次のステップとして起動するメディアのこのライブラリを起動しないファイルシステム側にコピーしてみます。


$ sudo mv /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2.bak
$ sudo cp /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2

で起動しないメディアから再起動。結果としてはこれだけで普通に起動しました。壊れたのがこの1ファイルだけかは分からないけど少なくとも起動に関わるところはこれだけだったという事なのでしょう。なんとか復活しました。


本当は何故、どう壊れたのか、他に壊れたものは無いのかは把握しておきたいところではあるけど・・・どう調査すべきなんだろうなこういうのって。普段使いがUNIXな人たちってどうしているんだろうか。