今回は1994年の1月にリリースされたばかりの「Debian 0.91」をインストールしてみましょう。とはいえ実機にインストールとなると、いろいろと過去の遺物を発掘しなければなりませんので、本記事では仮想マシン(QEMU)を使用します。
なぜ今、Debian 0.91なのか?
先日発売された『Software Design 2016年8月号』(紙版、電子版)の第2特集では、「YumとAPTのしくみと活用」と題してパッケージングシステムの歴史や、基本的な使い方について紹介しています。
Linuxディストリビューションの歴史は、パッケージングシステムの歴史でもあります。そこで今インストールできる中でもっとも古い部類に入るであろうDebian 0.91を使うことで、パッケージングシステムの黎明期を体験してもらおうというのが今回のRecipeの趣旨です。さらにあわよくば、Recipeの読者に今月発売の『Software Design』を購入してもらおうという隠された目論見もあります。いわゆるダイレクトマーケティングです。
さてDebianの公式サイトからたどれる、もっとも古いリリースは「Debian 0.93R6」です。「Debian小史」によると1995年の10月にリリースされた0.93R6は、Debianとしては最初の公式リリースであり、TeXやX Window Systemをはじめとして数百個のパッケージが提供されていました。ちなみに、このころの実行ファイル形式は「a.outフォーマット」です。パッケージ管理システムとしてのaptはまだ存在せず、dpkgとdselectコマンドを使ってパッケージをインストールしていました。
Debian小史にもあるように、0.93R6より前にいくつかのベータリリースが行われています。インターネット上で簡単に手に入るアーカイブのうち、おそらくもっとも古いであろうリリースが今回紹介する「0.91」です。1994年の1月にリリースされたインストールイメージは、フロッピーディスク3枚からなる構成で、一通りのベースシステムとシェルスクリプト版の「dpkg」コマンドが含まれていました。つまり0.91でも、パッケージのインストールや削除ができるというわけです。
Debian 0.91のインストール方法
Debian 0.91はもう公式サイトでは配布していませんが、OldLinuxやHistoric Linux Distributionsなどにはイメージがアーカイブされています。今回はOldLinuxのDebian 0.91を使うことにしましょう。
次の手順でインストールします。
- QEMUをインストールする
- HDD用のQEMUイメージを作成する
- Debian 0.91をダウンロードする
- フロッピーディスクイメージを作成する
- フロッピーディスクイメージから起動する
ちなみにQEMUでエミュレーションしますので、フロッピーディスクドライブを用意する必要はありません[1]。最低限必要なものは、i386をエミュレートできるCPUと数十MB程度のディスク容量です。
QEMUのインストールからインストーラーの準備まで
まずはQEMUをインストールし、起動用ディスクイメージとインストール先のHDDイメージを作成します。
ディスクは最低でも10MiB程度あれば十分です。ここでは200MiBにしています。ちなみに、504MiBを超える「大容量の」ディスクイメージを作ってしまうと「CHSの504MiBの壁」によりカーネルが認識してくれなくなりますので、ご注意ください。
次にOldLinuxからインストールイメージをダウンロードします。
bootdiskがインストーラーです。basedsk1やbasedsk2はベースシステムそのものがパッケージとなっています。いずれもフロッピーディスク用のイメージなのでサイズは1.22MBです。
インストーラーの実行
インストールに必要なものはすべて用意できたので、さっそくエミュレーターを起動し、インストーラーを動かします。
「-enable-kvm」でKVMオプションを有効化しています。CPUの仮想化支援機構が使えない環境ではこのオプションを省いてください。メモリは32MiBにしていますが、実際のところ4MiB程度あれば動くようです。「-drive」オプションではフロッピーディスクイメージを指定し、「-hda」オプションでインストール先のHDDイメージを指定しています。「-boot」オプションはブートデバイスで、この場合は最初のフロッピーデバイスです。
ブートローダーであるLILOが起動し、ブートオプションを入力する画面になります。今回は特にオプションは不要なので、そのままエンターキーを押してください。
それほど時間がかからずにDebian 0.91 BETAが起動するはずです。ここでは基本的なコマンドを使用できます。インストーラーを起動したい場合は、dinstallコマンドを実行してください。
当時のDebianインストーラーは、CUIベースで一つ一つ質問に答えてインストールしていく仕組みです。ただ、そこまで難しいことはしていません。
- 1. Run fdisk to partition your hard disk(s)
- パーティションの設定を行います。といってもfdiskが起動するだけなので、どう設定するかはユーザー任せです。
- 2. Initialize and activate your swap partition(s)
- スワップパーティションのデバイス名を指定します。
- 3. Format your Linux native partition(s) with mke2fs
- ルートファイルシステムをインストールするパーティションのデバイス名を指定します。
- 4. View partition table
- 設定したパーティション情報を表示します。
- 5. Install the Debian Linux base syste
- Debianをインストールします。
- 6. Reboot your system
- 再起動します。
- 7. Return to the shell
- インストーラーを起動する前のシェルに戻ります。
ディスクが空の状態なので、まずは1を入力してfdiskで設定しましょう。デバイス名をたずねられるので「/dev/hda」と回答してください。
fdiskが起動します。それだけです。説明も何もないので、あとはユーザーが適切に設定する必要があります。今回は以下のように、ルートパーティションとスワップパーティションをひとつずつ作成することにしましょう。
最後に再起動するかどうか問われるのでyと答えてください。再びブートローダーからシステムを起動し、dinstallを実行します。
次は2のスワップパーティションを選択します。パーティション名を問われるので、今度は上記で設定したように「/dev/hda2」と入力してください。
さらに3のシステムパーティションのフォーマットを行います。今度は「/dev/hda1」と回答します。
4でパーティションテーブルを確認できます。といっても上記のfdiskで表示したそれと同じです。ここまできてようやくDebianシステムのインストールに入れます。5を選択するとまず、「パーティションの作成は終わっているか」と問われますので「y」と答えます。さらに、インストール先のファイルシステムを/rootとしてマウントします。
「m」を入力し、さらにシステムパーティションである「/dev/hda1」を入力します。
正しくマウントできたら「c」と入力して処理を続けます。
次に行うのがベースシステムパッケージが保存されているフロッピーディスクの指定です。そこで「ドライブAに挿入されているインストールディスクを取り出し、代わりににベースシステムディスクを挿入します」。といっても今回はQEMU上でフロッピーディスクドライブをエミュレーションしているため、物理的なディスクの出し入れはできません。その代わり、QEMUモニターを使います。
まずQEMU上で「Ctrl-Alt-2」と入力してください。するとモニター画面に変わります[2]。
このQEMUモニター上でコマンドを実行することで、ハードウェア的な操作をエミュレーションできます。
上記操作により、Aドライブにbasedsk1のディスクイメージが接続されました。「Ctrl-Alt-1」でコンソールに戻り、basedsk1が存在するデバイスとして「/dev/fd0」を指定してください。
インストールが完了したら同じ手順で今度はbasedsk2へと切り替えた上で、Enterキーを押します。インストール後は、念のためシステムパーティションとスワップパーティションのパティション名を問われるので、それぞれ「/dev/hda1」と「/dev/hda2」と答えてください。
ホスト名とドメイン名を適当に入力します。次のネットワークの設定は今回はスキップします。「n」と回答してください。システムクロックがGMTかどうかに回答したあとの、タイムゾーンの設定では「Japan」と入力してください。キーマップの設定は日本語レイアウトがないので、英語のままにしておきます。
モデムも設定しないので「5」を選択します。マウスは使うのであれば、3のPS/2を選択しておきましょう。
最後にカスタムブートディスクを作成するか問い合わせてきます。今回はフロッピーブートとするためにyと答えておいてください。QEMUモニターで今度はfd0.rawを指定した上で、Enterキーを押すと起動ディスクを作成してくれます。
すべてが終わったら7でシェルに戻った上で、haltコマンドで仮想マシンを終了します。これでインストールは完了です。
Debian 0.91を起動する
次に、先ほど作成したブートディスクを使って起動しましょう。
最初はrootアカウントのみ存在します。また、パスワードは未設定です。
Debian 0.91の中身
Debian 0.91のベースシステムには、最低限使うであろうコマンドはそろっています。bashもvi、sedやawkもありますし、crondやinetdも動いています。Linuxカーネルのバージョンは0.99です。
ちなみにdmesgもすごくシンプルです。
パッケージデータは/var/lib/dpkgではなく、/var/adm/dpkgに入っています。
このようにベースシステムは2つの大きなパッケージとしてインストールされているようです。ちなみにbase1が設定ファイルやデバイスファイルなど、base2がbashなどのコマンド群になっています。
当時のdpkgコマンドはただのシェルスクリプトです[3]。
パッケージのインストール
aptと異なりdpkgコマンドはリポジトリという概念を持っていません。もし何かをインストールしたい場合は、debファイルを渡します。
ダウンロードしたdebian-0.91.tarには、インストールイメージだけでなくいくつかのパッケージファイルも含まれています。そこでこのパッケージファイルをすべて含んだディスクイメージを用意し、それを仮想マシン上でマウントさせてみましょう。最初に、ディスクイメージを作成します[4]。
この空のイメージを使って、仮想マシンを起動しましょう。
仮想マシン上では「/dev/hdb」と見えるはずなので、fdiskでパーティションを作成し、mke2fsでファイルシステムを作成します。
一度シャットダウンしてください。ホスト上で、作成したパーティションをマウントします。まずは最初のパーティションまでのオフセットを取得します。
ここで最初のパーティションの開始位置は「516096バイト」であることがわかりますので、そのオフセット分ずらしてマウントします。さらにパッケージファイル一式をコピーします。
再度仮想マシンを起動してください。
dpkgコマンドの書式は、以下のとおりです[5]。
「デバイス名」は今回の場合「/dev/hdb」になります。デバイス名を指定するとそのデバイスを「ファイルシステムタイプ」で指定したファイルシステムで自動的にマウントします。省略した場合は、特にマウントしません。「ディレクトリ」はパッケージが存在するディレクトリです。たとえばutilディレクトリに存在するbcコマンドをインストールするなら、次のように実行します。
何もオプションを指定せずに起動すると、パッケージセレクションモードになります。このモードでは、カテゴリごとにわけられたパッケージのうち、インストールしたいパッケージをひとつずつ選択していきます。一通り選択し終えたら「q」でセレクションモードを終了してください。実際のインストールは「-p」オプションで行います。たとえばEmacsカテゴリのパッケージを選択したら、次のように実行します。
最後の引数は、選択したパッケージファイルがあるディレクトリです。今回のようにカテゴリごとに別ディレクトリにしている場合は、カテゴリごとに「-p」オプションを実行する必要がありますので注意してください[6]。あとは画面の指示に従えば、インストールが行われます。
まとめ
今回はいつもと趣向を変えて、古いディストリビューションを使う方法を紹介しました。自由ソフトウェアが標榜する自由の一つに「再配布の自由」があります。たとえ公式サイトが配布しなくなったリリースイメージやソースアーカイブであっても、自由ソフトウェアであれば有志が気兼ねなく再配布できるのです。
今回のイメージはパッケージリポジトリとのセットなので、他にもいろいろなパッケージをインストールできます。たとえばgccなどの開発ツールはもちろんのこと、linuxsrcというパッケージもあるので0.99カーネルのソースコードも確認できるでしょう。X Window System関連のパッケージもあるので、GUIを立ち上げることも可能かもしれません。
ちょっとした息抜きの一例として、昔のソフトウェアを触ってみるのもいいのではないでしょうか。