一体何が起きたのかわかりませんが、会社、自宅で使っているそれぞれ別のマシンのLinux Mintが同時期に起動しなくなりました。
恐らく何かのアップデートが悪さをしたのだと思います。
現象
電源は普通に入ります。
ディスクを暗号化している会社のデスクトップマシンでは、ディスクを復号化するパスワードを入力する部分までは進んで、そこから先はMintのロード画面が出続ける、もしくは真っ黒い画面のまま進まない。という状態になりました。
ディスクを暗号化していない自宅のノートPCでは、Mintのロード画面が表示されて、1から2分後、真っ黒な画面になってそこから進みませんでした。
原因
これはあくまで私の環境の話です。
今回の原因は、/var/run
ディレクトリが/run
ディレクトリのシンボリックリンクではなくなってしまっていることでした。
恐らく何かのアップデートとかのタイミングでこんなことになったのでは、と思っています。
そもそも自宅のノートPCを再起動しようと思ったのが、アップデートマネージャがアップデートをインストールできなくなっていた事が原因だったので、再起動前から既に何かがおかしくなっていたのは間違いないです。
Mintのロード画面が表示されるということは、Linux自体は起動しているのでなんとかできそうです。
とうことで、以下の手順を踏んで復旧することが出来ました。
復旧手順
runレベル3で起動させる
リカバリモードの方が良い気がしますが、私はGRUBメニューからLinuxのrunレベルを3に変更してコンソールからいじれるようにしました。
GRUBメニューは、PCを起動してBIOSの起動画面が出た瞬間からShiftキーを連打するだけです。
するとLinux Mintを起動するか、Optionを選ぶかという画面が表示されるので、普通にLinuxMintを起動する物を選んだ状態でキーボードの「e
」を押下します。
これでGRUBのブートメニューをいじれます。
普通のテキストエディタのような感覚で修正できます。linux /boot/vmlinuz...
で始まっている行を見つけて、その行末に「3
」(3の前にスペース)を追記します。
あと、同じ行のquiet splash
となっているところをnomodeset
に変更します。quiet splash
が無くなったことで画面に起動ログが流れるようになるので、あとで再起動したときに一応どんな問題が起こっているのが雰囲気をつかめるようになります。nomodeset
は無くても良いような気もしますが、私は今回念の為付与しました。
修正したら「F10
」を押下して編集したGRUBメニューでMintを起動させます。
なお、今回の修正は次回再起動時に元に戻ります。
状況確認
GRUBメニューをいじって起動してくると、GUIではなくて普通のコンソールとしてログイン画面が表示されます。
いつもどおりのアカウントでログインします。
念の為適用できるアップデートをすべて適用しようと思いましたが、どうもネットワークに繋がっていないようです。
この状態で、pingを実行するとホストが見つからない旨のエラーが表示されました。
おかしい、ネットワークはどうなってるの?ということで以下のコマンドを実行して確認しました。
systemd-resolve --status
本来であればネットワークの情報が表示されますが、無情にも
sd_bus_open_system: No such file or directory
と表示されるだけでした。
修正
上記のエラーでググると以下のベストアンサーにたどり着きました。
どうやら/var/run
が/run
のエイリアスになっていない、というのが原因のようです。
ベストアンサーの手順通り、/var/run
を復旧させます。
# 当然rootで作業してもOK
[koji:~]$ sudo mv -f /var/run/sudo/ts/* /run/sudo/ts/; rm -rf /var/run/sudo/ts;
[koji:~]$ sudo mv -f /var/run/sudo/* /run/sudo/; rm -rf /var/run/sudo;
[koji:~]$ sudo mv -f /var/run/* /run/; rm -rf /var/run;
[koji:~]$ sudo ln -s /run /var/run;
[koji:~]$ sudo reboot
なお、私の自宅マシンには/var/run/sudo
というディレクトリはそもそも存在していませんでしたので最初の2行は実行していません。
そしてコレまた自宅マシンでは最後のreboot
がPIDが1でログインしていないから実行できない、という旨のエラーが表示され、再起動が出来ませんでした。shutdown
も同様に実行できませんでしたので、普通に電源長押しで強制的に終了させてから電源を入れ直しました。
これで、私の環境では再度Linux Mintが起動してくるようになりました。
最後に
当然コレは私の環境で上手くいった手順です。全て自己責任で行ってください。
今回は手元のマシンだったのでなんとでも出来ましたが、これがデータセンターに有る物理サーバとかであればと思うと肝が冷えます。