Upgrading your Linux Distribution mini-HOWTO Greg Louis, glouis@dynamicro.on.ca v1.11, 6 June 1996 中谷千絵, jeanne@mbox.kyoto-inet.or.jp v1.11j, 3 Aug 1996 使用中の Linux パッケージ全体を別のパッケージにアップグレードする際の ヒントとコツ。 (読者への注意: この文書は、現在の Linux システムには当 てはまらなくなっているので、LDP ではこれを資料の一種として保管していま す。執筆当時から更新されていないので、ご注意ください。) 注意: この文書はかなり以前に書かれたものなので、いまどきの Linux 環境 にはあてはまらない箇所があります。 (JF Project) ______________________________________________________________________ 目次 1. 重要!免責事項と著作権 2. 第 1.1 版からの変更点 3. 概論 3.1 今使っている linux PC を臨終させ新しい魂を吹き込む! 3.2 なぜアップグレードをしたいの? 3.3 破壊と再インストールしかないですか? 3.4 どれくらいの時間がかかりますか。 4. 行ったことをすべて書き留めておく。 5. 既存のシステムをすべてバックアップする。 6. /etc を、サブディレクトリを含めてフロッピにバックアップする。 7. 保存しておきたいファイルをグループにごとに分けてバックアップする。 8. 新規インストールのためにルートとブートフロッピーを用意する。 9. 一時カーネルと最終的なカーネルのためのフロッピをフォーマットする。 10. ログインを抑制し、/root と /home のすべてをバックアップする。 11. 新しくインストールするためにブートフロッピとルートフロッピを使っ てブートする。 12. fdisk で linux パーティションを削除し、再びパーティションを作成する。 13. 新しい linux をインストールする。 14. ハードディスクから新しい linux システムをブートし、/etc/fstab を編 集し、スワップパーティションを追加する。 15. /etc とサブディレクトリに設定ファイルの内容を戻します。 16. linux カーネルのコンフィグレーションをし 再構築する。 17. 前に作ったバックアップを戻します。 18. セキュリティを調べる。 19. ログインを可能にする。 20. 申し訳ないですが、もう一度 21. 謝辞 21.1 日本語訳について ______________________________________________________________________ 1. 重要!免責事項と著作権 この文書で示そうとしている手順は、あなたのコンピュータに蓄積されたプロ グラムとデータにとって危険なものです。ここに示すどんな作業も、各自の責 任のもとで行ってください。著者の場合にはこの方法でうまく行ったのです が、あなたの環境でもきちんと適用できるか、あるいはあなたのコンピュータ のプログラムやデータ(のどちらか、あるいはその両方に)に深刻な損害を与え ずに、この方法を適用できるかどうかについては全く保証しません。この文書 に書かれた情報を行う場合には、すべてあなたの責任で行ってください。そし て、あなたが自分でしたことで被るかもしれないどんな損害や不都合に対して も著者はいかなる責任も負いません。 この文書は Dynamicro Consulting Limited に著作権1996年 があり、the GNU General Public の条項のもとで公開されています。大雑把に言うと、誰でも 随意に複製や改変をしても良いですが、他の人が同様のことをするのを妨げる ことは誰にも許されないのです。 コメントや質問は著者に送って頂いてかまいません。改訂版に使用するため に、複雑なシステムでうまくいったグレードアップについての解説をとりわけ 歓迎します。 2. 第 1.1 版からの変更点 o この履歴の節を追加 o mtime と ctime に関する Zoltan Hidvegi からのアドバイスを追加。 Zoltan さん、ありがとう o 謝辞の節を追加 3. 概論 3.1. 今使っている linux PC を臨終させ新しい魂を吹き込む! この文書の目的は linux システムを破壊し、再生させるまでのコツを提供す ることです。この文書は決して、だれにでもおいしく作れる料理のレシピでは ありません。けれど考慮しておくべきことや、作業の順番などに関する多少の アドバイスにはなると思います。私が最初のアップグレードをする前に誰かが このようなことについて書いていたら、私にとって役だっていただろうと思い ます。そこで、この文書が Linux マシンを再構築する人に役に立てればうれ しく思います。 恐らくあなたの進む道は私とは異なっているでしょうから、この文書を福音の ように受け取らないでください。この文書中で使っているディレクトリの名前 さえ、あなたに必要なものとは違っているかもしれません。たとえば、人に よっては /home のかわりに /usr/home を使っています。さらに /u としてい る人もいれば、(その潔癖さには感心しますが) すべてのユーザーズディレク トリを /usr に直接おいている人さえいます。私はあなたがご使用のシステム について特別にはからうことはできませんから、自分のマシンで使用している 名称を使うことにします。 まず言っておきますが、私は slackware パッケージを使っています。そして この文書の前提として、 linux kernel をインストールして kernel を構築す るために十分な RAM やハードディスクに十分な空きスペースを持っていると 仮定していま。システム構成が違っているなら、私のアドバイスがそのままあ てはまらないことがあるはずです。それでも以下に示す作業のあらましが再構 築作業の役に立つであろうと思っています。 3.2. なぜアップグレードをしたいの? いい点に気がつきましたね。しないですむなら、アップグレードなどやめま しょう。(それが、この文書の中の一番重要なアドバイスです。) しかし、 アップグレードを避けられない時もあるものです。 たとえば、私は 4Gb のハードディスクを付けました。ところがあとでわかっ たのですが、いにしえの Slackware 2.0 vintage linux は 2Gb 以上のハード ディスクを認識できずに錯乱してしまったのです。そこで私は 当時の最新版 Slackware 2.3 にアップグレードしました。そのアップグレードで泥沼には まってしまいました。この経験がこのような文書を書いている理由の一つでも あるわけです。私はすることなすこと全部間違えてしまい、唯一幸運だったこ とは、もう一台別の Linux マシンを持っていて、それが私を災いから救って くれたことです。 もうひとつの例をあげましょう。Slackware 2.3 パッケージをインストールし たままマシン(前に私が失敗したのとは違う他のマシン)では、 私には、1.3 シリーズ の a.out Linux kernel を動くように構築することが出来ませんで した。それで私は Slackware 3.0 の CDROM を購入し、ELF システムに移行し ました。この時は、先の苦い経験のおかげもあり、前回よりはうまく再インス トールできました。この再インストールの経験がこの文書で紹介するほとんど のアドバイスの土台になっています。 3.3. 破壊と再インストールしかないですか? 妙な話ですが、そのほうが安全なのです。既存の linux システムに上書きイ ンストールしてしまうと、新旧のバイナリや新旧の設定ファイルが混在してし まい、管理するには混沌とし過ぎたものができあがってしまいます。 システムを一掃し必要とわかっているものだけをもとに戻す方法は、大胆な方 法ですが、すっきりした結果を得るには効果的な方法です。(もちろんここで は新しい Linux パッケージをインストールすることについて話しているので あって、1つや2つの部分パッケージだけをアップグレードするということで はありません)。すべてのものの再インストールを避けるもっともよい方法を 的確に言うなら、個々の部品を新しいものにしておくことです。とりわけ gcc とその関連ライブラリや binutil の道具達に注意します。自分の使用してい るものがそれなりに新しく、常に新しいものを追加して行け、さらに、必要に 応じてコンパイルしたりできるのなら、全体をアップグレードする必要はない でしょう。)。 Patrick Volkerding (彼もまた一掃してきれいにするアップグレード法を勧め ています)は、うまく動いている a.out システムに上書きで ELF システムを をインストールするのは災難を招く方法だと指摘しています。少なくとも、上 書きインストールを試せるほどに詳しい人は、このガイドを読む必要はないで しょう。 ELF への移行ほど大がかりな変更がない場合でも、ゼロからやり直すのがよい ですよ。 3.4. どれくらいの時間がかかりますか。 もちろんあなたのシステムがどれくらい複雑な構成かということによります。 しかしうまくできたアップグレードの場合は(失敗した方ですか?それは聞か ないで!)、バックアップのために10時間、システムの再構築のためにログ イン出来るようになるまでに6時間、必要なものをもとに戻すのにさらに半日 ほどを費しました。時間がたつにつれ、私が思ったほどきっちり出来てなかっ た細かな点に気づきましたが、それらは遭遇した時に直しています。しかし、 普通の複雑なシステムを再構築するには、主要な作業をするのに20時間は必 要になるでしょう。 私は CDROM からインストールしたので、ハードディスクから再インストール するなら、もう少し短い時間で出来るかもませんし、逆にフロッピーを使用す るならもっと時間がかかるでしょう。高速の Pentium を使っているならもっ と早いでしょうし、386 なら私の場合よりも時間がかかるかもしれません。雰 囲気はわかりましたね? 前置きはここまでです。以下は、やろうと決心した場合にすべきことを紹介し ます。不屈の精神とリポビタンD でもなんでも用意してしっかり準備してくだ さい。 4. 行ったことをすべて書き留めておく。 更新にあたって準備や実行の過程でしたことをすべて記録しておくことは、と ても大切なことです。とりわけ重要なことは既存のシステムを破壊する際に準 備するバックアップのリストです。 5. 既存のシステムをすべてバックアップする。 普通バックアップには、テープなどの、先頭から順番にしかアクセスできない 媒体を使いがちです。しかしそうする場合には、内容をもとに戻す際に全体の バックアップを使いたくはないでしょう。全体のバックアップには、不要な ファイルが山のように含まれているからです。ですから、そのまま戻したいと わかっている個々の部分だけの小さなバックアップを取っておくほうがよいで しょう。具体的にはのちほど示すことにします。 では、なぜ全体のバックアップしてから始めるのでしょうか。2つの大きな理 由があります。第1は、新しいシステムのインストールに壊滅的に失敗した 時、最小限の被害で出発点に戻ることができる余地を残しておくこと。第2に は、どんなに注意して再インストールの準備をしても、ひとつやふたつの大切 なファイルを見過ごす可能性はとても大きいということです。そのような場 合、すべてのバックアップからひとつやふたつのファイルを復旧する方が、 ファイルがない状態の面倒よりはましでしょう。 時間とスペースの節約のため、昔のシステムのパッケージがそのまま保存して ある場合には、mtime か ctime がもとのパッケージより新しくなっているも のだけをバックアップするのも良いでしょう。 6. /etc を、サブディレクトリを含めてフロッピにバックアップする。 これは正反対の話しです。/etc にあるファイル(か、その大部分)をそのまま 復旧させることはまずないでしょうが、再インストール時に作られた新しいも のと前のものを比較することになるでしょう。理由は、新しいものには古い データにはないデータが含まれていたり、新しいファイルでは同じ内容を新し い方法で表現したりしているかもしれないからです。プロトコルの変更や、新 しいツールの追加、あるいは既存のツールへの新機能の追加などで、/etc に 置かれる設定ファイルや開始スクリプトの書式が変わるものです。新しい形式 を保持しつつ改善の恩恵にあずかるために、新形式のファイルを修正して古い データの情報を加えることになるでしょう。 7. 保存しておきたいファイルをグループにごとに分けてバックアップする。 これは人によって最も変わりやすい作業です。現実に私が援助できることは、 あなたも似たようなことをするであろうと期待して、私のシステムで行った作 業を紹介することだけです。 基本的には、 o 標準の linux パッケージの一部だけではないファイル o 新しい linux をインストールする時にインストールされるであろうファイ ルよりも新しいファイル を調べておき、持ち越したいと思うファイルだけを別にしておきたいでしょ う。 (別の方法として、mtime や ctime が古い linux をインストールした時より も新しくなっているファイルを前述の通りにバックアップし、それを戻すとい う手順もあります。この方法で注意して欲しいのは、新しい版の linux パッ ケージにあるファイルはあなたが修正したものよりも新しい日付けになってい るかもしれないということです。) 私の場合、次のそれぞれについてバックアップ媒体に .tgz ファイルを作りま した。 o /usr/lib/rn o /usr/lib/smail o /usr/lib/trn ( /usr/lib の残りの部分は自動インストールされるはず ) o /usr/local/src o /usr/local/bin o /usr/local/lib o /usr/local/lpfont o /usr/local/man o /usr/local/sbin o /usr/local/thot ( 他にも不要な /usr/local のファイルがあった ) o /usr/openwin o /usr/src/lilo-17 ( 新しいSlackware のは version 16 だったから ) o /usr/src/linux-1.2.13 ( 独自のカスタマイズをしていたから ) o /usr/X11R6/lib/X11/app-defaults o /usr/X11R6/lib/X11/initrc ( Xfree86 の残りは自動インストールされる はず ) o /var/named o /var/openwin o /var/texfonts 私のマシンは気を使わないといけない スプール(一時保存)ファイルがないの で比較的簡単でした。ニュースのスプールを行っていませんでしたし、ユーザ も2人だけでした。そのため、shutdown する前にすべてのメールを読んでし まうのが一番簡単でした。そうでなければ、/var/spool ディレクトリは最後 にバックアップしたことでしょう。(もちろんニュースライブラリとサイトの ディレクトリもです)。 8. 新規インストールのためにルートとブートフロッピーを用意する。 インストール手順の詳細は新しいパッケージのインストールガイドに書いてあ るでしょう。 9. 一時カーネルと最終的なカーネルのためのフロッピをフォーマットする。 それぞれ1枚づつ、合計2枚のフロッピーが必要です。 以上すべてができれば重大な作業をする準備ができたことになります。次の段 階で、あなたの築きあげたものからシステムを取り除きます。 10. ログインを抑制し、/root と /home のすべてをバックアップする。 これは、各ユーザーとルートの最新情報を繰り越すために、旧システムを破壊 する直前にしなければならないことです。 11. 新しくインストールするためにブートフロッピとルートフロッピを使っ てブートする。 12. fdisk で linux パーティションを削除し、再びパーティションを作成す る。 インストールガイドにどのようにすればよいかが説明されているでしょう。こ の作業は古いシステムを壊すことを意味します。このあとあなたは、これまで の過程で作ったバックアップの品質を頼りにすることになります。だからバッ クアップは大事だと何度も言ってきているのですよ。 13. 新しい linux をインストールする。 インストール方法についてはすでによい解説がたくさんありますから詳細につ いては触れません。新しいシステムがハードディスクからブート出来る状態に なったら、次のステップに進んでください。 この過程の途中で忘れずにブートできるフロッピを作ってください。linux の セットアッププログラムがインストールするカーネルは後の段階で置き換えら れることになるのですが、その過程で事故が起こるものです。開発パッケージ とカーネルソースを忘れずにインストールしてください。 14. ハードディスクから新しい linux システムをブートし、/etc/fstab を 編 集し、スワップパーティションを追加する。 それから "swapon -a" のコマンドを実行します。理由は知りませんが、 Slackware のセットアップはスワップ区画がすでに存在していてもこれを認識 してくれません。このため、新しいシステムをブートされて rc.S スクリプト がスワップを使おうとした時に、fstab ファイルにあるべきスワップパーティ ションを認識することができないのです。このステップでこの問題を修正しま す。 15. /etc とサブディレクトリに設定ファイルの内容を戻します。 上述したように、/etc に古いファイルのすべてをコピーしても、うまく動く ことは期待できません。もちろん、たとえば /etc/XF86Config のように一部 のファイルはコピー出来ます(ただし、以前と同じバージョンの Xfree86 を同 じビデオカードで使う場合だけです)。このような場合でも、コピーする前 に、diffコマンドを使って、古いファイルと新しいファイルの差分をとってお くことがベストです。とりわけ /etc/rc.d にあるファイルの重要な変化に注 意しましょう。この変化のために、バックアップから古い rc スクリプトをコ ピーするのではなく、手で編集して古い設定内容を再構築することになるかも しれません。全部できたらリブートしましょう。 16. linux カーネルのコンフィグレーションをし 再構築する。 自動的にインストールされたカーネルがあなたのハードウエアをきちんとサ ポートしていても、あなたが持っていない機器のための大量の無駄なドライバ が含まれていないカーネルを再構築することは価値があります。最初はフロッ ピ上に再構築したカーネルをインストールします。新しいカーネルがうまく動 いたなら、ハードディスクにインストールし、 lilo を使っているならlilo を使い、再起動します。 17. 前に作ったバックアップを戻します。 バイナリによってはソースディレクトリから再インストールが必要になるで しょう。たとえば私の使用しているバージョンではインストールした Slackware のあるものよりも新しく、また、 /sbin でバイナリをセーブする のに困らなかったので、lilo を使って行いました。復旧させたプログラムや 設定ファイルやライブラリなどの存在と整合性をチェックする必要があるで しょう。ある場合には特別な命令で修復をしないといけないかもしれません。 バックアップの間に記録しましたね。 18. セキュリティを調べる。 ファイルやディレクトリの許可属性を確認し、あまりに限定されてアクセスで きないものや、制限が緩すぎるものがないかを確認しましょう。Slackware は 私が好む設定よりもよりオープンな環境の傾向があります。私は /bin やその 類のディレクトリで許可属性を 755 から 711 に変更してまわっています。さ らに、 /sbin では 700 にしています。ftp サーバーを後回しにするならとり わけ注意が必要です。しかし、ftp サーバーを運用するような人は、すでに走 らせていたなら、すでにセキュリティのことを考えているでしょう。 19. ログインを可能にする。 完成し動きはじめています。今後しばらくの間、たぶん手入れのために細かい 作業があるでしょうが、作業の大部分はすみました。あとはたのしんでくださ い。 20. 申し訳ないですが、もう一度 この文書はあなたの責任で使用してください。 (この文書の初めにある免責事項を見てください。) 21. 謝辞 この版の mini-HOWTO の内容に貢献してくれた Zoltan Hidvegi さんの親切に 深く感謝します。 21.1. 日本語訳について 謝辞 日本語訳は Linux-JF プロジェクトの多くの方々にサポート頂きました。な お、全体の校正および翻訳にあたっての多くの質問に的確にご指導くださいま した山崎康宏さん(hiro@linux.or.jp)に感謝致します。 翻訳:中谷千絵 jeanne@mbox.kyoto-inet.or.jp 校正:山崎康宏 hiro@linux.or.jp 1996/08/03 (SGML conversion: Y.senda, ysenda@pop01.odn.ne.jp, 2001/08/30)