LILO, Linux Crash Rescue HOW-TO Al Dev (Alavoor Vasudevan) alavoor@yahoo.com v6.0, 25 Dec 2000 岡本 一幸 (kokamoto@itg.hitachi.co.jp), 浅田 倫裕 (mic@p1.coralnet.or.jp) v6.1j, 2001年 3月 6日 この文書は Linux システム障害からの回復について説明する。 Linux システ ム障害は次のような様々な現象を起こす。 LILO が破壊される。Linux がブー トに失敗する。Master Boot Record (MBR) が壊れる。Windows NT のような他 の OS をインストールした場合、 LILO または MBR を消去してしまうため Linux がブートしなくなる。 ______________________________________________________________________ 目次 1. はじめに 1.1 回復へのすばやい手順 1.2 予防手段 1.3 LILO の削除 1.4 起こしがちな間違い 2. 関連 URL 3. この文書の他のファイル形式 4. 著作権 5. 翻訳履歴 ______________________________________________________________________ 1. はじめに 事故は避けられぬもので、 Linux のシステム設定を行なっている時に事故が 起これば、マスタブートレコード - master boot record (MBR) 若しくは LILO (Linux boot Loader) の破壊が起こるであろう。ハードディスクの障害 のために linux がブートしなくなる場合もある。操作ミスによりハードディ スクのパーティションの再設定や、または Linux をインストールしたコン ピュータに Windows 98/NT のような他の OS を追加インストールした場合に は LILO が失敗するときもある。 この文書は LILO または Linux について文書を沢山苦労して読まなくても良 い様にすばやい回復のための考え方、秘訣と簡単な手引きを提供する。 1.1. 回復へのすばやい手順 LILO またはシステム障害からの回復は次の手順に従うこと。 1. 場面 1: システムがブートしない - tomsrtbt フロッピー を入手しなさい。 tomsrtbt フロッピーからブート。 fdisk を使用してパーティションを探 しなさい。ルートパーティションを次の手順で認識しなさい。 【訳注: ここでパーティションテーブルが飛んでいることがわかったら、 Partition Rescue mini HOW-TO の手順のほうを先に試したほうが良い。 】調べたパーティション構成をもとに、エディターを使って /etc/fstab に問題のパーティションを書き足しなさい (たとえば、次のように書き足 すことになる)。 ___________________________________________________________________ bash# fdisk /dev/hda bash# mkdir /test bash# mount /dev/hda1 /test bash# ls /test ルートパーティションならば、次のようになっているはずである。 - bin fd lib mnt proc sbin usr boot dev etc home lost+found opt root tmp var ___________________________________________________________________ これがルートパーティションでない場合は、次のパーティション /dev/hda2 を試しさい。次は hda3, hda4, hda5 等のようにルートパーティションが見 つかるまで試しなさい。hda に見つからないなら hdb, hdc, hdd 等のように 繰り返しなさい。 lilo の構成を新たに行なう毎に、同様に /usr, /var, や /boot パーティションについて行なう必要がある。 今回の例題のルートパーティションは /dev/hda4 となっている。- ______________________________________________________________________ bash# mkdir /hda4 bash# mount /dev/hda4 /hda4 bash# cat /hda4/etc/fstab fstab の出力を見て、次のようにパーティションをマウントしなさい。- bash# mount /dev/hda5 /hda4/boot bash# mount /dev/hda6 /hda4/usr bash# mount /dev/hda7 /hda4/var bash# mount /dev/hda8 /hda4/opt bash# mount /dev/hda9 /hda4/root bash# mount /dev/hda10 /hda4/home ______________________________________________________________________ この場合は、fstab ファイルに hda5 はブート用、hda6 は usr、 hda7 は var、hda8 は opt、 hda9 は root、hda10 は home そして hda11 は win- dows95 のディレクトリとなっている。 /hda4/etc/fstab でなく /etc/fstab を編集し 次のようにしなさい。- ______________________________________________________________________ /dev/hda4 /hda4 ext2 defaults 1 1 /dev/hda5 /hda4/boot ext2 defaults 1 1 /dev/hda6 /hda4/usr ext2 defaults 1 1 /dev/hda7 /hda4/var ext2 defaults 1 1 /dev/hda8 /hda4/opt ext2 defaults 1 1 /dev/hda9 /hda4/root ext2 defaults 1 1 /dev/hda10 /hda4/home ext2 defaults 1 1 /dev/hda11 /hda4/win95part vfat defaults 1 1 ここでは hda4 が linux ルート パーティション、hda5 がブートパーティションで、 hda11 は Windows 95 Vfat システムである。 Bash# Mkdir /Hda4/Win95part Bash# Mount /Hda4/Win95part そして、fsck か e2fsck コマンドでシステムを修復する。 Bash# Man Fsck Bash# Man E2fsck ______________________________________________________________________ 【訳注: たとえば、次のファイルに異常が無いかを調べ、Linuxが起動しない 原因を探ってみると良い。 /hda4/sbin/init /hda4/etc/inittab /hda4/etc/rc.d/* 原因が見つかれば、復旧させるための措置をとれるはず。 】 2. 場面 2: LILO が動作しない場合 .. 上記の 場面 1 を試してみても失敗する場合、次の手順を試行する。既に /hda4 がマウントされていて /etc/fstab ファイルもあるとする。 【訳注: もちろん tomsrtbt フロッピーで起動してから】 ___________________________________________________________________ bash# mount -a bash# chroot /hda4 /sbin/lilo -q bash# man chroot bash# chroot /hda4 /sbin/lilo ___________________________________________________________________ あるいは chroot の代わりに /sbin/lilo を直接実行しなさい。 "/sbin/lilo -r"は"chroot /sbin/lilo"と同じ働きをする。より便利であることと、エラー を見つけやすいため、lilo -r の代わりに chroot を使用することを強く勧め る。 ______________________________________________________________________ bash# man lilo bash# /sbin/lilo -r /hda4 ______________________________________________________________________ 3. 場面 3: LILO が動作しない場合 .. 場面 1 と 2 がうまく行かない場合、'mkbootdisk' で (インストール途中 やそのディスクでブートして該当するパーティションを修復しなさい。 mkbootdisk は mkbootdisk*.rpm パッケージに含まれているのでインス トールする必要がある。【訳注: ここでチェックすべきファイルは、 /etc/lilo.conf /boot/vmlinuz /vmlinuz /boot/initrd* 等である。も し、問題があったならば修復しなさい。これらのファイルをいじった後 は、/sbin/lilo を実行しておく必要があるだろう。】 4. 場面 4:上記 場面 1, 2 と 3 を失敗してブートディスクも無い場合 linux が動作しているほかのコンピュータがあれば、root でログインして 次のように操作しなさい。- ___________________________________________________________________ bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf ___________________________________________________________________ /etc/lilo.conf を編集してルートパーティションの名前を '場面 1' で書い たようにして、空のフロッピーを挿入して次のようにしなさい。 ______________________________________________________________________ bash# mkbootdisk /dev/fd0 ______________________________________________________________________ mkbootdisk は mkbootdisk*.rpm パッケージに含まれているのでこのパッケー ジをインストールする必要がある。 /etc/lilo-original.conf を /etc/lilo.conf に戻したか確認して、 ______________________________________________________________________ bash# mv /etc/lilo-original.conf /etc/lilo.conf ______________________________________________________________________ 【訳注: このファイルの書き戻しを追加した。】このフロッピーを使用して ' 場面 3' へ移動しなさい。 5. 場面 5: 恐らくここには来ない方が良い最悪の事態である。 1 から 4 ま での場面の殆どで起こりうる。上記、場面 1, 2, 3 と 4 に失敗したら ステップ 1: tomsrtbt でブートしパーティションをマウントしたらルート パーティションを他の空きのあるパーティションに次のコマンドでバック アップしなさい。 ___________________________________________________________________ /etc/fstab を編集して(次の例を自分のディスクレイアウトに置き換えて )から実行しなさい。 /dev/hda4 /hda4 ext2 defaults 1 1 /dev/hda11 /b1 vfat defaults 1 1 bash$ mkdir /hda4; mount /hda4 bash$ mkdir /b1; mount /b1 bash$ cd / bash$ df /b1 にルートパーティションを tar できるだけの充分な空き容量があることを確認しなさい。 bash$ tar cvf /b1/root-hda4.tar /hda4 ___________________________________________________________________ ステップ 2: Linux の cdrom を挿入し、cdrom からリブートし redhat linux を /dev/hda4 にインストールしなさい(しかし ここでは余分なパッケージは 一切インストールしないで、 root と boot パッケージと LILO マネージャだ けをインストールし、必要最小限のシステムとしなさい)。ハードディスクに は LILO もインストールされる。linux を再起動して root でログインし、次 のコマンドを実行せよ。- ______________________________________________________________________ bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf ______________________________________________________________________ 注意: lilo-original.conf から lilo.conf へ戻しておくことを忘れずに!! /etc/lilo.conf を編集しルートパーティションの名前を上記 '場面 1' で使 用したものにして、空のフロッピーを挿入して次のコマンドを実行しなさ い。- ______________________________________________________________________ bash# mv /etc/lilo-original.conf /etc/lilo.conf ______________________________________________________________________ 【訳注: ファイルの書き戻しを追加した。】 ______________________________________________________________________ bash# mkbootdisk /dev/fd0 bash# cp /etc/lilo-original.conf /etc/lilo.conf ______________________________________________________________________ 【訳注: この lilo.conf の変更作業は必要ないような気がする。】問題のマ シンにこのフロッピーを用いてこのブートフロッピーをテストすると、この作 業で上記のステップ 1 で行なった /b1/root-hda4.tar 上のすべてのファイル を回復できることが分かる。 【訳注: ここでの原著者の意図は、hda4 に再インストールしたLinuxを消さず に元の環境を上書きでリストアすることだと思われる。この場合、/boot/* や/etc/lilo.conf は上書きしてはならない。訳者の考えだと、hda4 に再イン ストールしたLinuxを消してからリストアし、リストア後、/sbin/lilo の実行 などliloの設定を行なったほうが良いような気がする。】 1.2. 予防手段 将来、起こりうる障害に対して次の予防手段を講じるべきである。 o 時折そしてパーティション情報を変更した場合はいつでも、緊急ブート ディスクを作成しなければならない。空のフロッピーを挿入し次のコマン ドを実行しなさい。- ___________________________________________________________________ bash$ man mkbootdisk mkbootdisk は mkbootdisk*.rpm パッケージに含まれているので、 これをインストールする必要がある。 bash$ mkbootdisk --help bash$ mkbootdisk --device /dev/fd0 2.2.12-20 ___________________________________________________________________ o tomsrtbt ブートフロッピーは手元においておかなければならない。次のサ イトを見なさい。 o Yard 緊急フロッピーとブートフロッピーを手元においておかなければなら ない。次のサイトを見なさい。 o / (ルート) と /boot ディレクトリをバックアップしなさい。Tomsrtbt フ ロッピーでブートして次の作業を行ないなさい。【訳注: 原文では /root となっていたが / (ルート) のことと思われる。】 ___________________________________________________________________ bash# vi /etc/fstab これらの行を挿入しなさい。 /dev/hda1 /a1 vfat defaults 1 1 /dev/hdb1 /b1 vfat defaults 1 1 この場合、hda1 は linux の root パーティションの '/' である。 bash# cd / bash# tar cvf /b1/linux-root-partition-hda1.tar a1 bash# tar cvf /b1/linux-boot-partition-hda1.tar a1/boot ___________________________________________________________________ 1.3. LILO の削除 MS DOS のコマンドプロンプトで DOS のコマンド (FDISK) により DOS のブー トローダでブートセクターを置きかえる事ができる。 ______________________________________________________________________ FDISK /MBR ______________________________________________________________________ ここで MBR とは "Master Boot Record" の略である。 また linux の /usr/doc/lilo* にある LILO の文書を読めば LILO を削除す る他の方法がわかる。 1.4. 起こしがちな間違い /etc/lilo.conf を変更した後では必ず lilo コマンドを実行しないと変更が 実際に反映されない。初心者がおかす間違いで良く見られる。次のコマンドを 実行しなさい。- ______________________________________________________________________ bash# lilo -v -v -v ______________________________________________________________________ 2. 関連 URL 次の URL は LILO, Linux の救助,障害復旧 に関連するものである。 o Mini Lilo HOWTO は o Mini Lilo HOWTO(日本語) は o Bootdisk-HOWTO は o Bootdisk-HOWTO(日本語) は o Pre-made boot disks は o Pre-made boot disks(日本語) は o Tomsrtbt boot floppy disk は o Yard rescue and boot floppy disk は o BootPrompt-HOWTO は o BootPrompt-HOWTO(日本語) は o Multiboot with LILO mini HOWTO は o Linux+WinNT mini HOWTO は o Linux+WinNT mini HOWTO(日本語) は o Linux+WinNT++ mini HOWTO(日本語) は o Linux goodies main site は o Linux goodies mirror site は o Vim color text editor for C++, C は 3. この文書の他のファイル形式 この文書は 11 の異なる文書形式名称で公開してる。- DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, Unix man pages, 単一 の HTML ファイル と SGML である。 【訳注: この文書の和訳は、3種類のフォーマットで公開されている。それ は、HTML, Plain-text, SGMLである。なお、この章の記述には日本語環境に当 てはまらないものも多く含まれるので、今後、URL 等については原文の記述の 後に訳注として日本語の情報源を記し、文書のコンパイル方法、アプリケー ションの操作方法等については、日本語環境での情報だけを記す。】 o この HOWTO 文書を HTML, DVI, Postscript という形式を tar でまとめた ひとつのファイルか sgml 形式を入手できるところは次の場所である。- 【訳注: JF の文書のプレインテキスト, HTML, SGML ファイルは tar.gz または tar.bz2 されたファイルとして、以下の場所で入手できる。 】 o ただのテキスト(平文)はここ: 【訳注: JF の文書のプレインテキスト及び HTML フォーマットのものは、 以下の場所にある。 】 o フランス語、ドイツ語、スペイン語、中国語、日本語への翻訳はここ 他の言語への翻訳のため のいかなる支援も歓迎する。 文書は "SGML-Tools" と呼ばれるツールを使用して書かれており、次のと ころから入手可能である。- 文書のソースか らコンパイルするには次のコマンドで行なう。 o sgml2html LILO-crash-rescue-HOWTO.sgml (html ファイルを生成する には) o sgml2rtf LILO-crash-rescue-HOWTO.sgml (RTF ファイルを生成する には) o sgml2latex LILO-crash-rescue-HOWTO.sgml (latex ファイルを生成す るには) 【訳注: 日本語版 SGML-TOOL は未だ十分に日本語化されていない。日本語版 SGML-TOOL 1.0.9 で変換生成できる形式は html と text (latex) のみであ る。日本語版 SGML-TOOL 1.0.9 については JF Workshop Guidance: SGML 文 書作成 を参照のこ と。 なお、配布形式によっては日本語化された SGML ツールがパッケージとして収 録されている場合もある。Vine Linux 2.0 には最新版ではないが sgml- tools-1.0.9_jp が含まれていて構築の必要は無かった。以下の動作確認は Vine Linux 2.0 で行ったものである。 この文書のソースをコンパイルするには、以下のようにコマンドを実行すれば よい。 o sgml2txt -f -l ja -c nippon LILO-crash-rescue-HOWTO.sgml (プレイ ンテキストファイルを生成する場合) o sgml2html -l ja -c nippon LILO-crash-rescue-HOWTO.sgml (HTML ファイルを生成する場合) o sgml2latex -l ja -c nippon LILO-crash-rescue-HOWTO.sgml (latex ファイルを生成する場合) 】 LaTeX 文書を単に PDF ファイルに変換するには sgml2latex (と dvips) の Postscript 出力と Acrobat distill ( ) コマンド経 由で変換する。手順は次の通り。 ______________________________________________________________________ bash$ man sgml2latex bash$ sgml2latex -l ja -c nippon filename.sgml bash$ platex filename.tex Enter file name: /usr/share/texmf/tex/latex/misc/linuxdoc-sgml.sty Enter file name: /usr/share/texmf/tex/latex/misc/qwertz.sty Enter file name: /usr/share/texmf/tex/latex/misc/null.sty bash$ platex filename.tex # 目次を生成するため再度latexコンパイル Enter file name: /usr/share/texmf/tex/latex/misc/linuxdoc-sgml.sty Enter file name: /usr/share/texmf/tex/latex/misc/qwertz.sty Enter file name: /usr/share/texmf/tex/latex/misc/null.sty bash$ man dvips bash$ dvips -o filename.ps filename.dvi bash$ distill filename.ps # 未確認 distillは無料ではない。 bash$ man ghostscript bash$ man ps2pdf bash$ ps2jpdf input.ps output.pdf bash$ acroread output.pdf & ______________________________________________________________________ 若しくは、Ghostscript のコマンド ps2jpdf を使用する。 ps2jpdf は ps2pdf の日本語対応版である。 ps2jpdf は PostScript ファイルを Portable Document Format (PDF) に変換している Adobe の Acrobat Dis- tiller コマンドの殆どの機能を実現している。 ps2jpdf は 特別に "出力デ バイス" に pdfwrite を指定して Ghostscript を起動する小さなコマンドス クリプト (バッチファイル) である。ps2jpdf が使用する pdfwrite デバイス は Ghostscript をコンパイルするときの makefile に入れておく必要があ る。 ps2jpdf を使うためには日本語化対応パッチを当ててコンパイルされている必 要がある (Vine 2.0 の場合 gs510j55.tar.bz2 が当てられていた)。詳細は Ghostscript の構築についての文書を参照のこと。 (ghostscript-5.10vflib- jpdf を入手すること)。 【訳注: Vine Linux 2.0では、Vine Plus の /cm_setup ディレクトリにAdobe Acrobat Reader セットアップ用パッケージがあり、これを用いればインス トールが容易になる。】 【訳注: latexコンパイル途中のスタイルファイルのフルパス入力が面倒。ど なたかやり方を知らないでしょうか ?】 この howto 文書は次のところにある - o 【訳注: JF による翻訳は以下の場所にある。】 また、この文書は次のミラーサイトにもある - o o o o 【訳注: 和訳のミラーサイトは以下の通りである。】 o o o o o o o ネットワーク的に最寄のミラーサイトは次の所にあるので 近いサイトを選択して /LDP/HOWTO/LILO-crash-rescue-HOWTO.html というファイルのあるディレ クトリを選択のこと。 dvi 形式でこの文書を見るには、xdvi プログラムを使用する。xdvi プログラ ムは Redhat Linux では tetex-xdvi*.rpm パッケージにあるためコントロー ルパネル | アプリケーション | 印刷 | TeX メニュー ボタンを押して探すこ とができる。 dvi 文書は次のコマンドで読める。【訳注: Vine Linux 2.0 な ら xdvik*.rpm パッケージの中にある。】 xdvi -geometry 80x90 howto.dvi man xdvi マウスでウィンドウの大きさを変更することができる。操作するには、矢印 キー, Page Up, Page Down キーを使う。上級者向けメニューとのトグルに は'x'を押す。 【訳注: 訳者の環境では操作方法が原文と異なっていたので、訳者が確認した 内容を記載した。】 postscript ファイルは 'gv' (ghostview) または 'ghostscript' で読むことができる。 Vine Linux 2.0 では、 ghostscript プログラムは ghostscript*.rpm パッケージに、 gv プログラムは gv*.rpm パッケージに含まれている。このパッケージは gnorpm を起動すれば、 Applications | Publishing の中にある。 gvプログラムは ghostscript より も遙かにユーザーフレンドリーである。 ghostscript と gv は、OS/2、Windows 98 や NT のような別のプラットフォームでも利用可能で ある。この文書をこれらのプラットフォームで見ることすらできる。 【訳注: Vine Linux 2.0 以外の ghostscript で日本語が扱えるかどうかは未 確認。】 o から Windows 95, OS/2 などすべての OS 対応の ghostscript を入手する。 次のコマンドで postscript 文書を読める - gv howto.ps ghostscript howto.ps Netscape Navigator, Microsoft Internet explorer, Redhat Baron Web browser 等 10 種類以上の web ブラウザを使用して HTML 形式の文書を読め る。 latex 文書は、latex の X Window System 用フロントエンドである LyX を 使って読むことができる。 【訳注: Vine Linux 2.0 では、lyxはVine Plusに含まれている。】 【訳注 lyxについては、訳者のやり方が悪いのか、表示できないタグがいろい ろあった。】 4. 著作権 著作権ポリシーは LDP (Linux Documentation project) に従って GNU/GPL と する。 LDP は GNU/GPL プロジェクトである。追加要求事項は著作者の名前、 電子メールアドレスとこの著作権表示をすべての文書に保持することとする。 この文書を変更/追加する場合には、この文書のすべての著者に通知を願う。 この文書に現れる商標名はそれぞれの所有者のものである。 5. 翻訳履歴 4.0j, 翻訳, 2000/12/06, 4.0 に追従, 翻訳者 岡本 一幸 (kokamoto@itg.hitachi.co.jp), 翻訳/検証者 浅田 倫裕 (mic@p1.coralnet.or.jp) 5.0j, 翻訳, 2000/12/12, 5.0 に追従, 翻訳者 岡本 一幸 (kokamoto@itg.hitachi.co.jp), 翻訳/検証者 浅田 倫裕 (mic@p1.coralnet.or.jp) 5.1j, 更新, 2000/12/15, 5.0j を校正, 校正協力者 千旦裕司 / ysenda@pop01.odn.ne.jp 6.0j, 翻訳, 2001/2/22, 6.0 に追従, 翻訳者 岡本 一幸 (kokamoto@itg.hitachi.co.jp), 翻訳/検証者 浅田 倫裕 (mic@p1.coralnet.or.jp)