komeの備忘録

大学院生の技術ブログ。たまに趣味。

windows上のVMwareで、Ubuntuが立ち上がらなくなって色々した話

問題の概要

Desktop版のUbuntu16.04LTSをWindows10のVMware使っていた。

ある日突然画面にエラーが出てGUIが立ち上がらなくなった。 CLIモードでポチポチしてたら直った話。

環境

VMware VMware Workstation 12 Player ホストOS: Windows10 Pro ゲストOS: Ubuntu 16.04 Desktop LTS

突然の死

ある日何気なくUbuntuをrebootしてみたら、次のエラーメッセージが現れてUbuntuが突然死んだ。

failed to initialize policy for cpu

まぁ所詮VMなので、とりあえずプロセスを殺し、ホストOSから強制的にrebootさせてみた。そしたら無事にログイン画面が返ってきたが、ログインした先では紫色の画面で止まってしまってメニューバーとかは現れなかった。。


幸いUbuntuはCLIモード切り替えができるので、ここでCtrl + Alt + f6とか押してコンソールモードにしたら、ログインはできたため、ログを見ることにした。

ログがよくわからない

管理者権限になり、/var/logのそれらしきファイルをgrepしまくってみたが、よくわからない。もう少しログの勉強をしたいものである。

そこで別の方法で原因を特定してみることにした。

最近加えた変更

rebootする前に加えた変更を思い出してみた。 直近では、次のようなことをやっていた。

komee.hatenablog.com

この記事を眺めながら、参考にしたサイトがUbuntu14.04だったからinitctlが出てきてなんか色々したなぁとか思い出す。もしかしてこいつじゃね?となり、initctlを加えたあたりの操作を逆に辿り、復旧を試みることにした。


initctl の復旧

先程の記事を参考にすると以前加えた操作はこうだ。

$ sudo dpkg-divert --local --rename --add /sbin/initctl
$ sudo ln -s /bin/true /sbin/initctl

従って今回は

  1. シンボリックリンクを外す
  2. dpkg-divert でaddしてるっぽいので、逆に/sbin/initctlを削除する

という2本立てで対処することとした。


シンボリックリンクを外す

特別に章立てする必要はないと思うが、やり方をど忘れしたので、今回は調べてからやった(照)

$ sudo unlink /sbin/initctl

これでシンボリックリンクは解除される


add したやつの削除

シンボリックリンクを解除したからそもそも/sbin/initctlが存在しないのでそもそもやる必要があるかよくわからないが、一応削除してみた

dpkg-divert のヘルプを見てたら、add の下に remove があったので、add 下コマンドを倣って削除してみた

$ sudo dpkg-divert --local --rename --remove /sbin/initctl


エラーも出ずに何かが実行完了した。

そして再起動

前回は、ディレクトリアクセス時に自動でNFSをマウントしてくれるautofsを入れていたため、systemctl を用いてサービスの再起動をした。その後、rebootした。

$ sudo systemctl restart autofs
$ sudo reboot

治った!!

まとめ

Ubuntu16.04 にinitctlを入れるとエラーする