2010年9月20日

Ubuntu のシステムのブートとリカバリ

Ubuntu のシステムの起動においてトラブルが発生した場合に有効な「Live CD」と「GRUB ブートローダ」を使用するシステムのリカバリ方法についてのメモ書きです。

1: Ubuntu の Live CD で起動できなくなったシステムからファイルを救出する

リカバリをする前に PC に取り残されてしまったファイルを救出する方法は様々あると思いますが、今回は簡易的な解決方法として「Ubuntu の Live CD を使用する」方法を紹介したいと思います。なお、この方法は Linux のシステムだけでなく Windows のシステムに対しても有効な方法なので、 Windows のシステムからファイルを救出する方法で紹介します。

1: Ubuntu Desktop Editon Live CD を用意する

Download Ubuntu

自分の PC のスペックにあった Ubuntu Desktop Editon の Live CD イメージを用意して CD-R に焼いておきましょう。

2: PC を起動して Ubuntu Live CD をブート

PC 起動時にインストール CD をブートします。うまくいけば Ubuntu の Live CD が起動するはずです。

3: PC に変更を加えないで Ubuntu を使ってみる

起動したメニューから「PC に変更を加えないで Ubuntu を使ってみる」を選択します。これによって PC の HDD に変更を加える事無く Ubuntu が起動します。

4: マウントされた HDD からファイルを救出

Ubuntu のデスクトップシステムが起動したら、メニューから「コンピュータ」を選びます。Windows で使用していた HDD がマウントされ、アイコンが表示されているはずです。あとは外付け HDD なり USB メモリなりを利用してファイルを救出します。


こんな感じで Windows のシステムに介入できると思います。

これだけです。簡易的な方法ですが、手っ取り早く出来るのでお薦めです。 PC の修復にメドがたたない時、ファイルの救出にまずこの方法を試してみてはいかがでしょうか。ちなみに今回使用した Ubuntu のバージョンは 8.10 です。それ以下のバージョンの Ubuntu でも出来るかどうかは確認していません。

・HDD がマウントされない場合

解決案 1: fdisk コマンドの利用

Ubuntu のデスクトップシステムを起動しても PC の HDD がマウントされていない場合、この手段を使用してファイルを救出するには HDD を手動で強制的にマウントする必要があります。この手段には若干手間が掛かります。

まず HDD が認識されていると思われるデバイスパスを探します。これにはハードディスク・パーティション設定コマンドである「fdisk」が使えます。

まず自分の PC の HDD の接続方法からデバイスパスを推測します。デバイスパスは HDD の接続方法が USB, SATA, SCSI なら「sda」、 IDE なら「hda」です。ただし、これは推測であり完全にそうというわけではありません。他に HDD があれば「sdb」かもしれないし「hdb」かもしれません。

あとは fdisk コマンドで対応するデバイスパスを打ち込みます。

$ sudo fdisk /dev/sda (これはデバイスパスが「sda」の場合)

コマンドの入力を求められるので p を入力します。

コマンド (m でヘルプ): p

認識されているデバイスのパーティションが列挙されます。システム名(ファイルシステム)などからマウントされていないと思われるパーティションを確認します。そして実際にそのデバイスのパーティションをマウントします。

$ sudo mkdir /mnt/windows

マウントポイントを作成して・・・。(ここでは仮に windows としました)

$ sudo mount -t ntfs-3g /dev/sda2 /mnt/windows -o force

マウントします。(/dev/sda2 がマウントされていないデバイスのパーティションと仮定しています)

-t ntfs-3g はファイルシステムとして NTFS フォーマットをマウントするというオプションです。Windows XP や Vista のファイルシステムならこれでいけます。その他のファイルシステムなら対応するフォーマットを指定する必要があります。 -o force オプションで「強制的」にマウントします。これで半ば強引ですがマウントできます。

しかし Ubuntu は動作が安定しているためこのような小難しい工程を践まなくてもオートマウントで自動的にマウントしてくれるはずです。また、一見マウント出来ていないようでもアイコンをクリックするとマウントしてくれる事もあります。

解決案 2: /proc の情報を利用

Linux では実行中のプロセス及びシステムの情報は /proc 下に配置されています。この情報を利用すればデバイスの特定は簡単です。パーティションの情報は「/proc/partitions」にあります。

$ cat /proc/partitions

インストールされて稼働しているシステムなら、システムが認識しているパーティションはマウントされていなくても表示されます。ただ Live CD から起動した場合に認識されるかの確認は行っていません。ですので、この方法ではもしかしたら無理かもしれません。

あくまで簡易的なファイル救出手段の一つとして、小難しく考えずにやってみるのが一番だと思います。起動するだけなら PC の HDD にはなんら影響を与えません。

※ 当然ですが、物理的に壊れている PC にこの方法は無理です。また、ウィルスに感染していると思われる Windows に対しての使用も推奨出来ません。

2: GNU GRUB ブートローダを外部メディアから起動してシステムを修復


Linux システムが立ち上げられなくなった時には、インストールされているブートローダではなく、 CD 等のメディアデバイスから GRUB ブートローダを使用してシステムを手動でブートしシステムに介入して修復を試みます。この方法が有効なのは「ブートローダ自体に問題がありシステムがブート出来ない時」です。

GRUB の起動メニューが作成されていない状態からシステムを起動するので、コマンドモードを使用して手動で起動オプションを設定します。

1. ハードディスクのパーティションを特定する

GRUB が起動したら、まず割り当てたいハードディスクのパーティションを指定するために、ハードディスクの情報を収集します。GRUB のハードディスクのデバイスは Linux とは違い IDE, SCSI 等の接続方法に関わらず「hd」で始まります。後は BIOS で認識される順番から番号が振られます。1台目は 0 です。この番号からハードディスクを指定し、次にそのパーティションを確認します。これには「cat」コマンドを使います。

grub > cat (hd0,

この例では hd0 のパーティションを確認します。ここで Tab キーを押すと入力が補完され、パーティションの一覧が表示されます。これも 0 から番号が振られているので、ファイルタイプの情報から指定したいパーティションを推測します。

grub > cat (hd0,0)/

これだ、と思ったパーティションを入力して、そのパーティションの内容を確認してみます。候補を入力して Tab キーを押すと、パーティションの内容が表示されます。こうやってハードディスクとパーティションの情報を収集します。

2. kernel ファイルを指定

起動するカーネルファイルを指定します。これは大抵の場合 /boot ディレクトリ下に存在するはずです。cat コマンドを駆使して色々探します。次にブートするシステムのルートファイルシステムのデバイス名を特定します。これは /etc/fstab に記入されている情報から推測できます。

grub > kernel (hd0,0)/vmlinuz ro root=/dev/sda1

起動するカーネル(この例では hd0,0 の /vmlinuz )と、ルートファイルシステムを指定します。(この例では /dev/sda1 )

※ GRUB 2 ではこのコマンドは linux に変更されています。 GRUB 2 へとアップデートした Ubuntu でブートを行っている場合でも GRUB 2 の起動イメージを用いれば同様のプロセスでシステムのブートが可能です。(GRUB 2 の CD ブートイメージは検索エンジンで探せばすぐに見つかります)

grub > linux (hd0,0)/vmlinuz ro root=/dev/sda1


3. initrd ファイルを指定

システムの起動時に使用する initrd イメージを指定します。これも /boot ディレクトリ下に存在するはずです。通常カーネルと同じバージョンのものを指定します。

grub > initrd (hd0,0)/initrd.img

(この例では hd0,0 の /initrd.img )

4. ブートする

grub > boot

指定した設定でシステムをブートします。うまくいけば指定通りのシステムが起動するはずです。

・Super Grub Disk を使う

Super Grub Desk

Super Grub Disk は、 GRUB の修復をする為の強力なツールです。 GRUB が壊れて起動できなくなった場合に、上記のように GRUB を使ってコマンドでシステムを立ち上げるのが面倒(困難)ならこのツールの出番です。 Super Grub Disk (CD にイメージを焼いたもの等)を PC 起動時にブートさせます。立ち上がるとメニューが表示され、「Detect any OS」を選択するとインストールされているシステムのうちどれかをブートして立ち上げてくれます。 GRUB1 と GRUB2 にそれぞれ対応するイメージがあるので、万が一に備えインストールされている GRUB のバージョンに合わせたものを用意しておくと便利です。

・ブートローダ使用時の注意

マルチユーザの Linux システムをシングルユーザーモードで使用するのはセキュリティ上危険です。しかし、ブートローダからの起動パラメータによってはシステムのシングルユーザーモードでの起動を許してしまう事があります。これを防ぐ為に「ブートローダにパスワードを設定する」方法もありますが、この方法では CD からブートされた GRUB からのシングルユーザーモードでの起動を防ぐ事は出来ません。

システムを完全に保守するには、「BIOS にパスワードを設定する」、「フロッピーや CD から起動できないようにする」設定が必要です。

0 件のコメント:

コメントを投稿