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. 概論

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. 謝辞


1. 重要!免責事項と著作権

この文書で示そうとしている手順は、あなたのコンピュータに蓄積されたプ ログラムとデータにとって危険なものです。ここに示すどんな作業も、各自の 責任のもとで行ってください。著者の場合にはこの方法でうまく行ったのです が、あなたの環境でもきちんと適用できるか、あるいはあなたのコンピュータ のプログラムやデータ(のどちらか、あるいはその両方に)に深刻な損害を与え ずに、この方法を適用できるかどうかについては全く保証しません。この文書 に書かれた情報を行う場合には、すべてあなたの責任で行ってください。そし て、あなたが自分でしたことで被るかもしれないどんな損害や不都合に対して も著者はいかなる責任も負いません。

この文書は Dynamicro Consulting Limited に著作権1996年 があり、the GNU General Public の条項のもとで公開されています。大雑把に言うと、誰 でも随意に複製や改変をしても良いですが、他の人が同様のことをするのを妨 げることは誰にも許されないのです。

コメントや質問は著者に送って頂いてかまいません。改訂版に使用するため に、複雑なシステムでうまくいったグレードアップについての解説をとりわけ 歓迎します。

2. 第 1.1 版からの変更点

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. 保存しておきたいファイルをグループにごとに分けてバックアップする。

これは人によって最も変わりやすい作業です。現実に私が援助できることは、 あなたも似たようなことをするであろうと期待して、私のシステムで行った作 業を紹介することだけです。

基本的には、

を調べておき、持ち越したいと思うファイルだけを別にしておきたいでしょう。

(別の方法として、mtime や ctime が古い linux をインストールした時よ りも新しくなっているファイルを前述の通りにバックアップし、それを戻すと いう手順もあります。この方法で注意して欲しいのは、新しい版の linux パッ ケージにあるファイルはあなたが修正したものよりも新しい日付けになってい るかもしれないということです。)

私の場合、次のそれぞれについてバックアップ媒体に .tgz ファイルを作り ました。

私のマシンは気を使わないといけない スプール(一時保存)ファイルがない ので比較的簡単でした。ニュースのスプールを行っていませんでしたし、ユー ザも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)