もっと詳しく

<p>【Ubuntu日和】 【第18回】Ubuntuが起動しなくなった時にストレージ全体を退避する方法</p><p>Ubuntu日和【第18回】Ubuntuが起動しなくなった時にストレージ全体を退避する方法</p><p>新年あけましておめでとうございます。</p><p>黒い画面に白い文字の「<コード>grub></コード>」で止まる 黒い画面に白い文字の「<コード>(initramfs)</コード>」で止まる 黒い画面に白い文字でよくわからない文字列がたくさん表示された状態で止まる PCとディスプレイの電源は入ったっぽいが黒い画面のまま いずれも、システムデータが入ったストレージが壊れたか、壊れかかっている場合に起こりやすい。ほかにも「起動系の設定ファイルを間違えて変更した」「システム更新中に意図しない問題が起こり中途半端な状態で中断してしまった」なども考えられる。先に、ストレージが壊れていないとした場合の、チェックポイントを紹介しておこう。 「<コード>grub></コード>」で止まるのは、ブートローダーである「GRUB」の設定に何がしかの問題が発生した場合だ。最近のシステムだとおおよそ、「GRUBの設定ファイル(<コード>/boot/grub/grub.cfg</コード>)に問題がある」か「<コード>/boot</コード>以下にあるGRUBが参照するファイルが存在しないか」のどちらかに分類される。UEFI未対応のシステムだと、ストレージにあるMBR(Master Boot Record)に問題が発生しているケースもあるが、その場合はプロンプト表示には至らない可能性が高い。 grubのプロンプトで止まってしまった例。grub.cfgに書かれているコマンドをインタラクティブに実行できる 典型的な修正方法は、「update-grubを実行して正しいgrub.cfgを再生成する」なのだが、そもそもupdate-grubコマンドを実行するためのシステムが起動できないので現実的ではない。そうすると「<コード>grub></コード>」で適切なコマンドを入力して無理やり起動するか、Liveシステム等のストレージが不要な環境で原因を追求し、update-grubを実行することになる。いずれの手法も、問題が発生したのがクリティカルなシステムではなく、それなりに時間的余裕があるときは楽しい作業だが、そうでない場合はただただしんどいだけだ。よって、後述するLiveシステムからとりあえずシステムを複製してしまう方法をおすすめする。 「<コード>(initramfs)</コード>」で止まるケースは、GRUBが参照するストレージは問題ないものの、システムがインストールされているストレージないしパーティションが壊れているケースだ。その結果、ルートファイルシステムをマウントできずにエラーとなる。ここで出てくる「initramfs」とは、起動時に使われる小さなアーカイブで、多種多様なストレージをマウントするために使われる。GRUBはまずカーネルとinitramfsをメモリ上に展開した上でカーネルを起動する、カーネルは各種ハードウェアの認識や初期化処理を行った上で、initramfsをマウントし、さまざまなドライバをロード、システムストレージのマウントに入る。何らかの理由でストレージをマウントできなかったときにここで止まる、というわけだ。 initramfsのプロンプトで止まってしまった例。限定的なLinuxコマンドなら使える マウントできない理由は、ストレージが存在しない、GRUBの設定を間違えた、ストレージが壊れてしまった、などが考えられる。正直ストレージが壊れてしまった場合、対応できる内容は限られてしまうし、それ以外についても解決に時間がかかることも多い。こちらについても一旦Liveシステムに逃げる方法を、後ほど説明する。 黒い画面に白い文字がたくさん出るケースは、いわゆる「カーネルがパニックした」というケースが多い。これはカーネルかカーネルのデバイスドライバがうまく動かなかったことを意味する。カーネルに関して知識のある人がログをよく読めば原因が分かることもあるが、簡単に判明するとは限らない。この場合は古典的ではあるものの、とりあえず 周辺機器やビデオカードなどをいろいろ取り外した上でもう一度起動を試してみる と起動できる場合も多いので、まずはそれから試してみると良いだろう。 最後が、黒い画面のまま何も文字が表示されないケースだ。これはハードウェア側の問題の可能性が高い。マシンが複数のディスプレイ端子を持っている場合は別の端子を試してみるとか、キーボードのEnterキーを何度か打って画面に何か表示されないか試してみるぐらいしか手はないかもしれない。「Ctrl-Alt-F2」を押すとログイン画面が表示されるようなら、GUIライブラリやGPUドライバの問題の可能性もある。その場合は、次の手順で回避できるかもしれない。 まずPCの電源を投入後にESCキーを連打し、grubのプロンプトを表示させる。プロンプトが表示されたら「normal」コマンドとエンターキーを入力し、直後に一度だけESCキーを押す。そうするとGRUBメニューが表示される。ただし環境によってはメニューの表示ができないかもしれない。この時は諦めよう。運良くメニューが表示されたら、カーソルキーで「Ubuntu」で始まる行を選択し、「e」キーで編集モードに入る。カーソルキーで「linux」ではじまる行に移動し、その末尾に半角空白と「nomodeset」を追記する。 nomodesetの追加場所 その後、Ctrl-xで起動処理を開始しよう。この方法で画面が表示されるようになるようなら、おそらくGPUドライバ関連の問題だ。ここから先は使っているGPUに依存するが、「GPUの名前や世代名・型番」などと「Ubuntu」や「Linux」を組み合わせて検索すると、同じような問題に遭遇していたり、運が良ければ回避策が見つかったりするのでチャレンジしてみてほしい。 Liveシステムを使ってストレージ全体を退避する</p>