Ubuntu 24.04へのアップデートのポップアップが出たので、なんとなくアップデートしようとして起きた問題をメモします。
OSのアップデートを行うときは(私は忘れましたが)バックアップを忘れずにやっておきましょう。かなり致命的な問題が発生しました。
ノートPCに入っているOSをUbuntu 22.04からUbuntu 24.04のアップデート時に起きた問題の要点は
- systemdの処理で落ちて、GUIの画面が表示されない
- /lib/x86_64-linux-gnu下に「libgio-2.0.so.0」、「libgobject-2.0.so.0」、「libglib-2.0.so.0」、「libgmodule-2.0.so.0」が入っていない
- 名前解決ができない
になります。
目次
systemdの処理で落ちて、GUIの画面が起動しない
最初に、GUIの画面が起動しませんでした。アップデート後に再起動したらGUIの画面が起動せず、systemdの処理で失敗して、画面にいくつかのエラーメッセージを表示して止まってしまいました。
Ctrl+Alt+F3(F1~F6で画面の切り替え)でCLIの画面は表示できたので、そちらでトラブルシュートを行うことになりました。
1 |
sudo systemctl list-dependencies |
で、とりあえず何のサービスが失敗しているかを確認できました。
1 |
sudo systemctl status <service> |
でエラーログを確認できました。
エラーログを読む限り、libgio-2.0.soが開けないみたいなエラーやPythonのモジュールがないみたいなエラーが確認できました。
libgio-2.0.so等の本体のライブラリがなぜか存在しない
いつもネットワークはWifiで繋いでいるノートPCだったので、ネットワークを繋げるためにNetworkManagerを優先的に修正していきました。
systemctlコマンドでエラーのあるサービスのステータスを確認するとExecStartで起動プログラムが書いてあったので、
1 |
ldd <program> |
で共有ライブラリの状況を確認すると「libgio-2.0.so.0」、「libgobject-2.0.so.0」、「libglib-2.0.so.0」、「libgmodule-2.0.so.0」の4つのファイルがない感じで/lib/x86_64-linux-gnu下を確認するとシンボリックリンク先が存在しない状態でした。
この問題に関しては、別のPCで仮想マシンとして動かしているUbuntu 24.04からライブラリをUSB経由でコピーして、ldconfigコマンドを実行した後にlddコマンドで確認し、共有ライブラリの存在が確認出来たら
1 |
sudo systemctl restart <service> |
でサービスを起動しました。NetworkManagerが起動したら、
1 |
ip a |
でとりあえず、インターフェースの状況を確認して、ネットワークに接続できていることを確認できました。
名前解決ができない(その1)
ネットワークに接続できているかどうかを確認するためにとりあえず、どこかにpingを飛ばしてみました。
1 |
ping www.google.com |
これでは、pingが飛ばなかったので、ルーターの方にIPアドレスでpingを飛ばしてみて、疎通が確認できたので、名前解決がうまくいっていない状態かなと判断しました。
とりあえず、/etc/resolve.confに
1 |
nameserver 8.8.8.8 |
みたいに設定を行って、とりあえず、名前解決を行える状態にしました。
パッケージを修正
パッケージの更新を行うようにしたら、
1 |
sudo apt install --fix-broken |
を実行するようにメッセージが出たので、実行しました。20~30分ぐらいかかってパッケージをインストールした後にさらに
1 2 |
sudo apt update sudo apt upgrade |
でパッケージを更新しました。ここまででPythonのモジュールがない問題も解決したようで、ほとんどの問題が解決したように見えました。
1 |
sudo systemctl restart gdm.service |
でGNOMEのサービスを再起動したら、少し画面がおかしいですがGNOMEが起動できて、デスクトップ画面が確認できたので、ここで一回再起動しました。
名前解決ができない(その2)
再起動を行なったら、画面は元に戻りました。しかし、Wifiでネットワークに接続できているはずが、名前解決できていない状態に戻ってしまいました(普通はDHCPで設定されるはずなのですが)。
もう一度、名前解決ができない(その1)の方法で、名前解決を行えるようにした後に、
再起動後に名前解決ができない状態に戻る解決方法として、systemd-resolvedをインストールすると解決するみたいだったので、試しに
1 |
sudo apt install systemd-resolved |
でインストールすることで再起動後も名前解決が行えるようになりました。
最後に
最後に、OSのアップデートを行うとサードパーティのパッケージは更新できなくなるようにリストからコメントアウトされるので、
1 |
sudo vi /etc/apt/sources.list.d/google-chrome.list |
のように編集をして、コメントアウトを外す作業して、アップデートは完了しました。
アップデート後に起動できなくなってしまったのは正直かなり焦り、やってしまったと思いました。夜遅くだったのでとりあえず明日考えようと、一度睡眠をとった後に起きて作業を再開したら、割とすんなり解決できて良かったと思いました。今回はなんとか解決出来ましたが、OSのアップデートを行う場合、バックアップをしておけば良かったなあと身にしみて感じました。