2020年10月7日水曜日

顛末

 猛暑になるといろいろ壊れます。

自分自身も壊れつつある中、ノートPCが動作不良陥りました。現在、ようやく復旧に至りましたがその過程を備忘録として記します。

復旧に際し、先行事例を検索しましたが見つけられませんでした。同様の例も検索した処、

該ノートPCはThinkPad Edge 14でOSとしDebianを使用しています。購入後、真っ先にインストール済みのWin7を削除、Debianをインストールして使ってきました。このPCではDebian 6.0 (Squeeze)から、Debian 7 (Wheezy)→Debian 8 (Jessie)へとアップグレードしていますから、それなりに酷使してきたことになります。

全ての作業はDebian上のGUI(KDEデスクトップ)で行っています。以前、ラズパイを弄った際もKDE上で起動したターミナルエミュレータから接続していました。

このPCの動作不良の状況はフリーズでした。電源投入で Linuxに続いてX Windowが起動、GUI環境へのログイン画面が現れます。ここからKDEデスクトップ環境にログインするわけです。KDEデスクトップ環境へのログインまではできるのですが、そこから何か操作するとカーソルがフリーズします。そうなるとPCのタッチパッド操作もキーボードからの入力も不可能となります。

フリーズする操作は特定できませんでした。個人のプロファイルを読み込むウォレットへのパスワード入力、WiFiルータとの接続、Chromeの起動といった、GUI環境へのログイン後の様々な操作でフリーズが発生しました。

一旦フリーズが起きるとにっちもさっちも行かなくなります。Xの再起動([Ctrl]+[Alt]+[Bs])、OSの再起動([Ctrl]+[Alt]+[Del])も実行不可能でした。[Ctrl]+[Alt]+[F1/F2/F3...]でもCUIによる仮想端末にも切り替えられず...結局、マジックSysRqキー([Ctrl]+[Alt]+[PrtSc]+[B])で強制再起動する以外に手段を見い出せませんでした。この操作は、リセットボタンによる強制的な再起動をソフトウェアスイッチで行うに等しく、できれば避けたい対処です。

実際、該操作で再起動を行うと起動時にファイルシステムのチェックfsckが行われます。このノートPCを使う以前、ファイルシステムはext2でした。当時、こういった強制再起動でfsckがかかるとファイルが破損していることが時折ありました。その後、ext3、ext4と開発が進むに従い修復不可能な破損に遭遇することはなくなりました。が、そうは言っても稼働中のPCのコンセントを引っこ抜くようなものですからファイル破損の恐れを考えれば躊躇する操作であるのは間違いありません。

で、ここからの復旧を試みたわけです。

まず、最初に排熱ファンの異常を疑いました。というか決めつけてしまいました。これは、”Linuxではフリーズは殆ど起こらないはず”、”GUI環境へのログインでフリーズする”から原因はハードウェアにある、と判断したことによります。(結果としてこの推察は誤りで復旧まで遠回りすることになりました。今振り返れば、LinuxがフリーズしないというのはCUI環境での話であり、排熱ファンの異常であればフリーズではなく、CPUの熱暴走で電源が落ちるか強制再起動がかかったと思われます。

勿論、”ThinkPad”、”フリーズ”、”Linux”、”KDE”辺りの語で検索しましたが、有用な事例は見つからず、そのまま排熱ファンの交換へと進みました。

検索してみるとThinkPadの排熱ファン交換は、全く同じ機種ではないもののいくつかの先行事例がありました。下写真はそれらを参考にPCの裏蓋、続いてファンユニットを取り外した状態です。

ファン・アセンブリーの取り外しと取り付け - ThinkPad Edge 14 および 15


下写真は取り外したファンユニットです。




引っくり返すとファンだけ取り外すことができました。このファンだけ手配できれば入手、交換してできあがり、という目論見でした。ファンには”Panasonic UDQF2ZH82FQU DC5V 0.21A 1201M2"と記してありました。この品番や、ThinkPad edge 14 CPUファンで調べてみた処、Panasonic製は入手不可能のようですが、互換品としてDelta KSB06105HA-AG35が入手できるようです。


うーん、これは純正部品としてLenovoに採用されている部品なんでしょうか。そのまま交換して問題ないのか否か...検索してみるとデルタ電子という台湾の電子部品メーカ製のようです。自分が知らないだけで、真っ当なメーカのようです。純正部品かは不明ですが、まぁ、大丈夫だろうと判断して購入、交換しました。

互換品ですから何ら支障なくファンの交換は完了し、下写真のようにファンユニットをPCに組戻しできました。
ただ、取り外したPanasonic製ファンの埃を取り除いて見た処、ファンが全くスムーズに回転するのが少し気掛かりではありました。無駄な作業だったか?

ともあれ、PCを元の状態に戻し、電源投入、OS起動、ログイン画面からデスクトップ環境にログイン...

フリーズ

...ファン交換は徒労でした

その後、無線LAN部分のハードウェア的な異常を疑い、有線LANで接続するもデスクトップ環境にログインでフリーズ...

残るはHDDの物理的な破損かと、データのバックアップ、HDD交換、システムの再インストールを考え始めた際です。もう少し不具合についての情報が何か得られないかと少し弄ってみました。

その結果、どうやらCUI (キャラクター・ユーザー・インターフェース)なら使える、電源投入時に古いバージョンのkernelを選択すれば(フリーズしないわけではないが)多少はマシ、ということが判りました。

で、まぁ、新しいHDDを手配しても届くまで少し時間がかかるだろうし、Debianのアップグレードを試してみるのも全くの無駄骨ではないだろうと。

ここから涙目の作業に入っていきます。

流れとしては、これまで使用してきたDebian 8 (Jessie)をまず最新の状態にして次バージョンのStretch、更にはBusterにバージョンアップしていくわけですが、現在のバージョンからは不可能です。フリーズするわけですから。

それならばと、古いバージョンのkernelで起動してデスクトップ環境にログイン、X window上の端末から

#apt-get update

#apt-get upgrade

#apt-get dist-upgrade

#apt-get autoclean

#apt-get autoremove
を行った後、

#vi /etc/apt/sources.list

で編集へと進みました。sources.list内でjessieと記されている部分を全てstretchに置換。再度、

#apt-get update

#apt-get upgrade

を行うと。順当に進めばこの操作だけでDebian Stretchへのバージョンアップが完了するはずなんですが...そうは簡単にバージョンアップさせてもらえないわけです。

パッケージの依存関係を保持する範囲内でのアップグレードである、#apt-get upgradeまでは問題ありませんでした。

#exit

に続けてOSの再起動後もデスクトップ環境へのログインが可能でした。

その後パッケージ構成の変更、つまり、新規にDebian Stretchに採用された、或いは外れたパッケージ追随した依存関係の変更を伴うアップグレードである、#apt-get dist-upgradeを行った処...

様々なエラーメッセージが表示されました。最初は、

”システムにサンドボックスユーザー「_apt」はありません。権限を削除できません”

が...全く心当たりがありません。検索して、

#adduser _apt --force-badname

で解決できました。どうやらStretchへのアップグレードに伴う変更のようです。

#apt-get update

して次は、

公開鍵を利用できないため、以下の署名は検証できませんでした

と表示されアップデート失敗。で、

#apt-key adv --keyserver keyring.debian.org --recv-keys PUBKEY_ID

とか、

#gpg  -keyserver keyring.debian.org -recv-keys PUBKEY_ID

とかやって、

#apt-get update

の後

#reboot

で再起動した結果、GUI環境にログインできなくなりました...どこかで下手を打ったようです。

抽象的には二歩進んで三歩目を踏み出そうとしたら、八歩後退といった状況です。ログイン画面は現れていますがログインすべきデスクトップ環境が消失しています...今振り返れば、#apt-get dist-upgradeでアップグレードに失敗してJessieで採用されてたデスクトップ環境関連のパッケージが消失したということなんでしょう。

にっちもさっちも行かなくなって立ち往生です。取り敢えず、[Ctrl]+[Alt]+[F1]でログイン画面を切り替えrootでCUI環境にログインしました。ログインはできるようですがネットワークには接続できないようです。

CUI環境で復旧、アップグレードするのか...久しぶりすぎて忘れています。GUI環境からホットプラグで接続するのが当たり前のようになっていましたから。

#ping google.com

も応答なしです。

#ifconfig -a

でネットワークインターフェイスの状態を確認しようとすると文字化け...えーと。

#printenv

で環境変数を確認して

#LANG=C

で言語を英語に設定と。再度、

#ifconfig -a

してみるとどうやらネットワークインターフェイスeth0が起動していないようです。

#ifup eth0

に続けて

#ping google.com

で応答がありました。どうやら接続できたようです。

#cat /etc/apt/source.list

でリポジトリがStretchになっているいることを確認して、

再び、

#apt-get update

で、今度はChrome関連でエラー....

W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPGエラー: http://dl.google.com/linux/chrome/deb stable Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY.....

W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg の取得に失敗しました 公開鍵を利用できないため、以下の署名 は検証できませんでした: NO_PUBKEY ...

身に覚えがないエラーです。そもそも/etc/apt/source.listにdl.google.comを追記した記憶がありません。

#cat /etc/apt/source.list|less

でsource.listの内容を調べましたが、dl.google.comの記述はありませんでした。と、思ったら与り知らぬ内に/etc/apt/sources.list.dディレクトリが作成されていてそこにgoogle-chrome.listのファイルが自動で作成されていました。このファイル内に記述されていたhttp://dl.google.com/linux/chrome/debがエラーの原因のようです。検索して、

#wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - 

で解決、再度、

#apt-get update

続けて

#apt-get update

#apt-get upgrade

#apt-get dist-upgrade

を実行。その結果は、

E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

というエラーが...指示通り

#apt --fix-broken install

を実行後

#apt-get update

#apt-get upgrade

#apt-get dist-upgrade

を繰り返しました。今度は

処理中にエラーが発生しました:
/var/cache/apt/archives/mariadb-server-core-10.1_10.1.45-0+deb9u1_amd64.deb

心が折れそうです。再度、上記エラーについて検索して、

#dpkg -i --force-overwrite /var/cache/apt/archives/mariadb-server-core-10.1_10.1.45-0+deb9u1_amd64.deb

を実行。そう言えば、DebianのバージョンがJessieからStretchへと移行する際リレーショナルデータベース管理システムがMySQLからMariaDBにパッケージが変更されたことを見たか、聞いたかしたような...定かではありませんけど。

もう一度、

#apt --fix-broken install

を指示され、

#apt-get upgrade

#apt-get dist-upgrade

を実行。あれっ。エラーが出ない...上手くいったようです。

これで

#reboot

した処、無事ログイン画面が表示され、KDEのデスクトップ画面にログインすることができました。ようやくJessieからStretchへのアップグレードが完了しました。めでたし、めでたし。

この後、StretchからBusterへとアップグレードしたわけですが、

#vi /etc/apt/source.list

でstretchをbusterに置換、

#apt-get update

#apt-get upgrade

#apt-get dist-upgrade

で全く滞りなく完了しました。

問題は元々の動作不良、フリーズですが、作業が完了した八月中旬以降十月初旬の今日まで前述したようなフリーズは起こっていません。不具合の原因はソフトウェアにあったのかもしれません。まぁ、取り敢えず落着ということで。

0 件のコメント:

コメントを投稿