Partition Rescue mini HOWTO Jean-Daniel Dodin July 27, 2000 翻訳:中谷千絵 (jeanne@mbox.kyoto-inet.or.jp) 日本語訳: Sep. 15,2000 パーティション救助のための mini-HOWTO うわっ!ディスクが空っぽ だ。Linux が消えてしまった。そんなことに遭遇した、あるいはまた、ある日 突然別の問題に遭遇してしまうのが恐いなら、ぜひこの文書を読みましょう。 ______________________________________________________________________ 目次 1. 何が書かれているか 2. 何をしなくてはいけないか 3. 著作権について 4. きちんと知らないといけないことは何か 5. ディスク 6. パーティション 7. なぜ問題があるのか 8. 問題を解決する 8.1 より単純な場合 8.2 それほど単純ではない場合 8.2.1 手動で行う 8.2.2 gpart 8.3 裕福な人の場合 9. 著者 10. 最新版 11. 日本語訳について ______________________________________________________________________ 1. 何が書かれているか この mini-HOWTO は``パーティションテーブルの消失''問題についてだけ書か れています。こんな場合のことです。 o ``オペレーティングシステムがありません''(``no operating system'')というメッセージが出て、もうコンピュータにアクセスできな い。 o 新しいシステム(たとえば、windows のような)をインストールしたら、 Linux がどこかに行ってしまい、windows がディスク容量の全部をのっ とってしまった。 この文書を読んで、正確な知識を持って、ちゃんと行う方法を学びましょう。 そうすれば、Linux ではそのような出来事を心配しなくてよいのです。 Windows では正しい知識がなくてもなんとかやれるかもしれませんが、それは その人がたまたま幸運だっただけのことです。 修復しなくてはいけなくなった時にゆとりを持ってできるように、問題が起き る前にやっておくこと、そして、実際に問題が起きて修復しなくてはいけなく なった時にやらなくてはいけないことを、まず確認していきましょう。ディス クのなかみを消してしまうのは防ぎようがありませんが、こういうことはいつ も、自動化された windows で起こるか、Linux のインストールがよくない状 態で行われたとか、あるいはユーザのミスで起こるのです。 注意してやる以 外ほとんど防ぐ手段はありませんが、あなたはすでに注意していますよね。 このようなことは、MSDOS や Windows の fdisk の使用で起こることもありま す。避けることもできますが、たぶん無理でしょう。 私は自分のコンピュータや友人のコンピュータで何回もやってしまいました。 Linux はたいてい修復して、windows はときどき修復しました。あなたに幸運 がありますように。 2. 何をしなくてはいけないか 好奇心や何か情報を探すためにこの文書を読んでおり、 Linux システムを 使っているなら、すぐに次のようなことをやってみましょう。 o root でログインし xterm を開きます。 訳注:/sbin/fdisk -l は、root で実行してください。 bash# /sbin/fdisk -l o /sbin/fdisk -l を実行します。最後の文字は l (エル)です。 お使いのコンピュータのすべてのディスクの現在の状態を表示します。 訳注:もしディスク情報がこの文書に示したように表示されない時は、 fdisk のバージョンを調べてください。 fdisk v2.10f 以前、たとえば v2.9y の場 合、 /sbin/fdisk -l では、fdisk のヘルプを表示しますので、 bash# /sbin/fdisk -l Usage: fdisk [-l] [-b SSZ] [-u] device E.g.: fdisk /dev/hda (for the first IDE disk) or: fdisk /dev/sdc (for the third SCSI disk) or: fdisk /dev/eda (for the first PS/2 ESDI drive) or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices) たとえば、次のようにディスクデバイスを書いてやります。 bash# /sbin/fdisk -l /dev/sda fdisk のバージョンは次のコマンドで調べてください。 bash# /sbin/fdisk -version o 紙にこれをメモして(あるいは /sbin/fdisk -l | lpr というように入力 すれば印刷します)必要なときに使うために安全な場所にしまっておいてく ださい。 あなたが管理者でない場合は、心配しなくてよいでしょうから、この文書を読 むのをやめてもよいですよ。 3. 著作権について この mini-HOWTO は Jean-Daniel Dodin の2000年の著作です。すべての権利 を有しています。この文書についてあなたが望むこと全部(あるいは大部分)を 行ってもかまいません。どうぞご自由に。しかし、私の名前はそのまま残して おいてください。Linux のコミュニティに関わるどんな人にも役に立つもので ありますように。 この HOWTO を読んで行ったことで、誰かのどのようなコンピュータ上のどん な損害にも私には責任は持ちません。何らかの損害があっても、それは ** あ なた ** の責任であって、私の責任ではありません。ディスクの分割をすると きは、致命的なことになりますからミスをしないように十分に注意してくださ い。重要なデータをすべてバックアップし、行うことすべてが正しいことを チェックしてください。ここに書かれているすべてのことは、私のコンピュー タではちゃんとできましたが、もちろんあなたのコンピュータではちゃんとで きるでしょうが、もしかしたらできないかもしれません。ほとんどの場合、動 くはずですが、私は保証はできません。これが最後の忠告です。** 重要なデ ータはバックアップしましょう。** つまり、自分自身の責任でやってくださ い、ということです。 4. きちんと知らないといけないことは何か お使いのハードディスクで何か重大な問題があるなら、少なくとも何が起こっ ているのかを理解するまでは絶対に write モードで使用してはいけません。 データはなくしやすいものです。 ある朝、突然、コンピュータが、``ロードできません。システムがインストー ルされていません''と言っても、なかみ全部を再インストールしはじめてはい けません。 windows をインストールしているなら、データを回復できるという約束はでき ませんが、ディスクの最初のほうに置かないように配置しているなら、おそら く Linux 部分をすべて修復できるかもしれません。windows ウイルスのある ものは最初のディスクシリンダーを消してしまうので、影響を受ける場所にあ れば、そういうことが起こります。しかし、私はわざわざウイルスを持ち込む ような実験をしたことはありませんし、確かだとはいえません。なんとしても 修復を試してみましょう。 私がこの文書で提供している情報は、情報でしかないということを知っておい てください。この文書を利用することで、あなたのデータに何か問題が起きて も、私にもまた他の誰かも責任はありません。世界中にはあまりに多くの違っ たシステムがありますから、誰かに何かを約束することはできません。私のよ うにデータを修復する好運に与ったように、私はあなたにも幸運があるように 願うだけです。 5. ディスク ハードディスクは 0 から最大までの数字を振られたセクターを持っていま す。 たとえば dmesg で次のように表示されます。 hdb: ST34321A, 4103MB w/128kB Cache, CHS=523/255/63 CHS は シリンダー(C)、ヘッド(H)、セクター(S) を意味します。 512 バイト の 523*255*63=8401995 セクター、したがって 4103 メガバイト です。これは論理的にマップされているだけで、必ずしもディスクの外装に書 かれている数字ではありません(トータルな容量をのぞいては)。 何かを変更したいのではなく、いままでの状態に修復をしたいので、セクター の本当のサイズはほとんど関心がありません。われわれにとっては fdisk に よって与えられたデフォルトサイズが確かなものです。 システムによって調べられたサイズは、BIOS(Basic Input/Output System - the PC's ROM)の働きに直接依存します。BIOS で示されたハードディスクのモ ードは重要なものです。新しいディスクに関しては BIOS 自動ハードディスク 認識を使い、``yes''となるものを使うほうがよいでしょう。とにかく、BIOS のレベルでのどんな変更もディスクのデータ全てを壊すかもしれませんから、 特別な理由がないなら、これで遊ばないほうがよろしい。 これがおそらくお使いのディスクが使用しているモードですから、恐がらなく ても大丈夫です。 6. パーティション いまやディスクは巨大になり、13 Gb も珍しくはありませんから、たったひと つの区画に全部を詰め込んでしまうのは実際には便利ではありません。あなた が Linux を使うのは、windows だけがそういう風にしていて、いかに効率が よくないかに気がついているからかもしれませんね。 したがって、ハードディスクは通常は``パーティション''と呼ばれるいくつか の区画に切られます(詳細は、partition mini HOWTO を参照してください。あ るいは /usr/doc/package/util/README.fdisk というファイルも見てくださ い)。 訳注:/usr/doc/pacage/util/README.fdisk は、ご使用のディストリビュー ションによっては異なるディレクトリに、保存されているかもしません。たと えば /usr/doc/packages/util-linux-*VERSION/README.fdisk, /usr/doc/util-linux/README.fdisk などです。ここで、*VERSION はお使いの fdisk のバージョン番号が入り、 /usr/doc/packages/util- linux-2.10f/README.fdisk のようになります。 fdisk -l での私のディスク状況のプリントの一部を見てみましょう。 ディスク /dev/hdb: ヘッド 255, セクタ 63, シリンダ 523 ユニット = シリ ンダ数 of 16065 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/hdb1 1 153 1228941 83 Linux /dev/hdb2 154 166 104422+ 82 Linux swap /dev/hdb3 * 167 291 1004062+ 83 Linux /dev/hdb4 295 523 1839442+ 5 Extended /dev/hdb5 295 422 1028128+ 83 Linux /dev/hdb6 423 523 811251 6 FAT16 これは私の2番目のハードディスクで、推定と実際の結果は一致しています。 (1 つ目のディスクは構造が単純すぎておもしろくないので、ここでは2つ目 のディスクを例にしました)。 /dev/hdb は2番目の ide ディスクです(プライマリインタフェース上のスレ ーブ) /dev/hdb1 は最初の基本パーティションで、ブロックは、1 から 153 までで す。 このような基本パーティションを4つ作ることができます。4つ以上欲しいな ら、基本パーティションのひとつは拡張パーティションになります(それは4 番目である必要はありませんが)。すべてのその他のパーティションは論理パ ーティションと呼ばれ、拡張領域の内側に置かれます。パーティション番号の 5に注目してください。パーティション番号4と同じシリンダ番号ではじまっ ています。5番は論理パーティションであり、4番は拡張パーティションで す。論理パーティションは、たとえ基本パーティションが4つなくてもいつも 5番からはじまります。 7. なぜ問題があるのか 問題はインストールされたオペレーティングシステムがディスクを共有すると いうことで、bios が起動するときに最初のひとつだけを調べますから、ディ スクの最初の部分に``パーティションテーブル''と呼ばれるものが存在しない といけないのです。パーティションテーブルはブートローダーと一緒にマスタ ーブートレコード(MBR)に置かれます。 どれかの OS による MBR の間違った使い方が問題を引き起こすのです。何か システムをインストールしようとするとき、あなたは ``自動的にパーティ ションを作りますか''というような問いに yes と答えると問題を起こすかも しれません。これは windows に当てはまることです。とりわけ特別仕様 の PC 用カスタム windows (本物の ``windows''CD が含まれていない時) のイン ストールに特徴的です。しかし、最近の``賢い''(とはいえ、それは賢くはな い!) Linux のインストールにも当てはまることです。 8. 問題を解決する どうぞ注意深くやってください。これから行う説明は、最近何かをインストー ルしたなら、それをあきらめて、以前のシステムに戻してしまいますから。選 択をしなくてはいけません。 8.1. より単純な場合 fdisk -l の結果が手元にある場合 o fdisk をするために Linux を起動できるディスク(フロッピーあるいは CD )を使います。ディストリビューションのレスキューディスクのほとん どはできます。 o fdisk -l というコマンドを使って紙に書き出しておきます。 訳注:ディスクが壊れてからfdisk -l してもあまり役に立たないですか ら。正常に動作しているときにやっておきましょう。 それで十分です。 1. linux を起動します。 2. fdisk /dev/hda (あるいは救助するディスク) を起動します。 3. fdisk で、損傷を受けたディスク上にあるすべてのパーティションを削 除(d オプション)します。 4. fdisk で基本パーティション(1-4)を作ります。 5. パーティションに適切なタグ(t オプション)を与えます。 Linux のスワッ プパーティションには 82 。 Linux のメインパーティションには 83 (L はリストを表示します)。 5 は拡張領域で、論理パーティションを作る前 に領域を確保しなければなりません。 6. 論理パーティションを作ります。 fdisk は小さいですが、とてもよくできたプログラムです。別の種類の fdisk もありますが、私はシンプルなものをお勧めします(もちろん、Linux の fdisk です。ほかの OS の fdisk はお勧めしません)。 訳注:fdisk プログラムには同じ機能を持ったものが複数あります。 cfdisk、sfdisk があります。 Linux を使っているなら man fdisk,cfdisk,sfdisk で確認してみてください。 fdisk は w (書き込みコマンド)を入力してリターンキーを入れるまではディ スクには何も書き込みません。間違いを恐れるなら、安全に終了するため に、q を入力するか、Ctrl C を使ってください。 新しいパーティションテーブルを書きこんで Linux を再起動します。もしか したらいつものように起動してこないかもしれません。lilo が壊れてしまっ たなら、起動ディスクを使うか、CD (``インストールしたパーティションから 起動する''を選択します)から起動する必要があります。 lilo で起動するなら、root でログインして、``lilo''を入力し、お好みのブ ートローダを再インストールするためにリターンキーを入れます。 Linux がすべてそこにあるはずです。テストしましょう。問題がないなら、 windows もちゃんと起動するか試しておきましょう。もしうまくいかないな ら、セクターの読み取りで生のセクターを読むことで、もしかすると Linux からあなたのデータを読めるかもしれません(ほとんどないかもしれません が)。ディスクのセクターにあなたのデータがあるのを確認したら、dd を使っ てファイルにそれをコピーします。こういうことはテキストデータだけにして おくほうがよいでしょうが。これを復旧するのは、この mini-HOWTO の範囲で はありませんのであしからず。 8.2. それほど単純ではない場合 8.2.1. 手動で行う 先に述べた方法が使えない時、たとえば、fdisk の結果を書いた紙がない、あ るいは古いマシンなので動かないなら、この方法でやりましょう。 まず、ディスクに書きこまない( fdisk をする以外に)限りはデータを消すこ とはできませんから、ブロックごとに試してみることができます。つまり、パ ーティションの開始番号を知っている必要があるということです。153 がうま くいかないというなら、154 を試します。以下同様。 訳注:fdisk でパーティションを作成する時、作成するパーティションについ て先頭シリンダの番号を入力します。さらに、パーティションの容量は + 記 号に続けて容量と単位を入力、またはそのパーティションの最終シリンダ番号 を直接入力することで指定できます。 やっかいなことになりますが、Linux パーティションのだいたいのサイズを覚 えているなら、うまくやれるでしょう。 8.2.2. gpart ネットにアクセスできるか、gpart を持っているならよい方法があります。 ``gpart 、 PC-type ハードディスクパーティションを推測する''について は、 gpart のオンラインマニュアルの最初の行に書いてあります。 ``gpart はハードディスク上にあるパーティションを推測してみるものです。 基本パーティションテーブルが失われていたり、上書きされてしまっている、 あるいは、壊されてしまっていると、ディスク上にまだパーティションが存在 するにもかかわらず、オペレーティングシステムはそれにアクセスできなく なってしまいます。''この gpart がまさにわれわれが必要としていたもので す。 gpart はまだβ版ですが、とてもよくできたツールです。 問題は次のようなことです。どのパーティションの最初のブロックも特徴的な データを持っており、新たに上書きされない限りそのデータを消すことができ ません。このため、たいていの``パーティションにある最初のブロック''は以 前のままでディスク上に残っており、gpart はどこがよい部分であるかをうま く推測できるよう最善を尽してくれます。実際のところ、gpart がディスクを 上書きすることはありませんから、納得いくまで試してみましょう。 これは hdb に見えた gpart の結果です。 root@charles:/home/jdd > gpart /dev/hdb Begin scan... Possible partition(Linux ext2), size(1200Mb), offset(0Mb) Possible partition(Windows NTFS), size(1200Mb), offset(1200Mb) Possible partition(Linux ext2), size(1004Mb), offset(2402Mb) Possible partition(Windows NTFS), size(1600Mb), offset(4102Mb) End scan. Checking partitions... * Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) ends beyond disk end . Partition(Linux ext2 filesystem): primary Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary Partition(Linux ext2 filesystem): primary Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary Ok. Guessed primary partition table: Primary partition(1) type: 131(0x83)(Linux ext2 filesystem) size: 1200mb #s(2457880) s(63-2457942) chs: (0/1/1)-(152/254/61)d (0/1/1)-(152/254/61)r Primary partition(2) type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX) size: 1200mb #s(2457880) s(2457944-4915823) chs: (152/254/63)-(305/253/60)d (152/254/63)-(305/253/60)r Primary partition(3) type: 131(0x83)(Linux ext2 filesystem) size: 1004mb #s(2056256) s(4919781-6976036) chs: (306/61/49)-(434/60/47)d (306/61/49)-(434/60/47)r Primary partition(4) type: 000(0x00)(unused) size: 0mb #s(0) s(0-0) chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r ご覧の通り、基本パーティションは修復できていますが、拡張パーティション の修復にはまだやるべきことが残っています。 訳注:gpart-0.1b のgpart README も参照してください。現在のとこ ろ、gpart は基本パーティションの修復には有効ですが、論理パーティション の修復には、まだ改良されるべきことが残っています。 Windows 2000(これは恐ろしい体験だった!) をインストールしようとしたと きに作られた DOS パーティションは、``Windows NTFS''とラベルされていま す。 ``invalid''(よくない)のは、実際のところ拡張パーティションです。 この結果をもとに fdisk を使うことで、パーティションテーブルを再生する ことができます。(もとのパーティションテーブルがすでに失われてしまって いるのであれば、この作業によって失われるものはもうなにも無いのだという ことを覚えておいてください)。 訳注:gpart は Gpart is a small tool which tries to guess what partitions are on a PC type harddisk in case the primary partition table was damaged. 2000年7月現在の最新版は gpart-0.1f.tar.gz http://home.pages.de/~michab/gpart/ http://sunsite.unc.edu/pub/Linux/system/filesystems などで入手できま す。 8.3. 裕福な人の場合 パーティションマジックは商用の製品で、それほどお安くはないので使ってい る人は少ないですが(フランスでは約 100 ドルほど)、あちこちで高い評価を 得ています。しかし、私は使用していませんので、よくわかりません。パー ティションの修復も含めて、パーティションに何かをすることができると言わ れています。 Ralf 氏のオリジナルの partition-rescue mini HOWTO はパーティションマ ジックを使用するのを前提にしています。あなたが Linux パーティション上 に貴重なデータを置いているが、Linux には初心者であるならこれを使うのは よい解決方法であると思います。しかし、パーティションマジックにはつい最 近出た新しいバージョンがあるので、マニュアルを読むことをお勧めしたいと 思います。 9. 著者 この HOWTO の著者は Jean-Daniel Dodin です。著者宛のメールは、 (jdanield@dodin.net) または (jdanield@linux-france.org) 私の web サイトは次のところです。 http://www.dodin.net または、 http://www.linux-france.org/article/jdanield/ Rolf Klausen (E-mail: rolfk@romsdal.vgs.no に感謝。 10. 最新版 この mini-HOWTO の最新版は、私の Linux web サイトにあります。 http://www.linux-france/article/jdanield/ または、 11. 日本語訳について 翻訳に関するご意見は JF プロジェクト 宛に連絡してくだ さい。 校正: o Tsutomu Kawashima o Hiroyuki YAMAMORI o Yoshiyuki YAMASHITA o TAKEI Nobumitsu o Taketoshi Sano o Tsutomu Kawashima o Hiroshi MIURA o Taketoshi Sano