Linux kernel INSTALL-0.11
RELNOTES-0.01 の和訳を投稿してから、RELNOTES-0.01 ~ 0.12 の間の資料がないか調べてみました。すると、Google Source に v0.10、v0.11 の資料を見つけました。
今回は INSTALL-0.11 を和訳してみました。INSTALL-0.10 と同様にセクション分けされていませんので、一定の区切り毎に引用元の英文と和訳を載せて、私のコメントを付加します。
linux-0.10 になってシステム構成が少しずつ出来上がってきた事、手順についても複数の環境でインストールした結果が反映されていた事が推測されます。その結果 INSTALL-0.10 より整理された内容になっています。
前回 の INSTALL-0.10 の和訳へのリンクです。
使用したサービス
INSTALL-0.10 の時と同様に、以下のサービスを使用して和訳しました。
Shaper : 英文の改行・空白を除去する
DeepL 翻訳 : 高精度な翻訳ツール
Google 翻訳 : Google の翻訳サイト
手順も変更ありません。
- 段落毎に Shaper で空白を除去
- 主に DeepL 翻訳、副に Google 翻訳を使用
- 元の英文と比較して内容を確認
- 最終的に括弧等の記号の全角 -> 半角、用語の統一、レイアウトなどを調整
という手順です。
Linux kernel INSTALL-0.11 和訳
原文は下記のリンク先にあります。
NetNews に投稿したと思われる内容も含まれますが、INSTALL-0.11 の部分のみの和訳です。この文章は、次の RELNOTES-0.12 から引用されています。
<INSTALL-0.11>
Using Linux v0.11
Linus Torvalds 08.12.91
NOTE: Users of 0.10, please check the "changed" list before using 0.11.
<INSTALL-0.11>
Linux v0.11 の使用方法
Linus Torvalds 08.12.91
注記 : 0.10 のユーザーは、0.11 を使用する前に "変更された" リストをチェックしてください。
これまでの RELNOTES, INSTALL の文章で、初めて日付が記載されました 😉 Install-0.11 は 1991年12月8日に公開されました。v0.01、v0.10、v0.11 の比較です。
Ver. | 0.01 | 0.10 | 0.11 |
compressed kernel size (gz) | 73 kB | 95 kB | 96 kB |
kernel sources size | 285 kB | 376 kB | 381 kB |
number of files | 88 | 102 | 100 |
v0.10 と比較して v0.11 では若干の増加に留まっています。diff でみると、もちろん source 自体の修正もあるのですが、圧倒的にコメントの追加・修正が多いです。linux kernel の改良よりも周辺の環境構築に力を入れた影響でしょうか。
$ ls -l *gz
-rw-r--r-- 1 hiro hiro 95627 Oct 30 1993 linux-0.11.tar.gz
$ du -sb linux-0.11
381121 linux-0.11
$ find linux-0.11 -type f | wc -l
100
$ tree -d linux-0.11
linux-0.11
├── boot
├── fs
├── include
│ ├── asm
│ ├── linux
│ └── sys
├── init
├── kernel
│ ├── blk_drv
│ ├── chr_drv
│ └── math
├── lib
├── mm
└── tools
15 directories
$ head -n 3 linux-0.11/kernel/Makefile
#
# Makefile for the FREAX-kernel.
#
v0.11 でも、kernel/Makefile には "FREAX" の文字が残っています 🙂
v0.10 のユーザーは最後の部分を参照と書かれていました。この時点で、それなりのユーザーが存在していたのでしょうね。
Booting linux
Linux-0.11 can easily be booted by getting the 2 files bootimage-0.11.Z
and rootimage-0.11.Z from the linux archive, uncompressing them and
writing them out to disks of the same size (ie 2 1.44M floppies or 2
1.2M floppies). Writing the disks is done with the "rawrite.exe" program
from dos, or with "dd" from unix. Linux is then booted simply by
inserting the bootdiskette in drive A, and rebooting the machine. If
everything goes well, linux will ask you to insert the root-disk after
loading the system. Hopefully linux will then correctly load the shell
executable, and leave you as root on the new system (prompt '# ').
linux の起動方法
Linux-0.11 は、linux アーカイブから bootimage-0.11.Z と rootimage-0.11.Z の2つのファイルを取得、展開して、同じサイズのディスク (例えば 1.44M フロッピー2枚か 1.2M フロッピー2枚) に書き出せば、簡単に起動できます。ディスクへの書き込みは、dos からは "rawrite.exe"、unix からは "dd" で行います。Linuxは、ブートディスクを A ドライブに挿入し、マシンを再起動するだけで起動します。すべてがうまくいけば、linux はシステムをロードした後、ルートディスクを挿入するように尋ねます。うまくいけば、linux はシェルの実行ファイルを正しくロードし、あなたを新しいシステムの root にします ('#' プロンプト)。
DOS から Disk image を書き込むコマンドの "rawrite.exe" が、ここで初めて出てきました。
rawrite.exe とは、フロッピーディスクにイメージファイルを書き込むためのツールです。イメージファイルとは、ディスクの内容を一つのファイルにまとめたものです。rawrite.exe を使うと、イメージファイルをフロッピーディスクに書き込むことができます。これにより、フロッピーディスクの内容を簡単にコピーしたり、バックアップしたりすることができます。
現在なら USB メモリに書き込む "Rufus" のようなソフトウェアです。Linux を使い始めた当初は、mtools と共に頻繁に使用していた記憶があります。
この時点でも、linux kernel の起動直後は bash だったようです。SysV init が出てくるのはもう少し先の話ですね。
Using it.
You can get a complete list of available commands by pressing <tab>
twice: the root-disk contains mostly setup-programs needed to install
the system on a harddisk. You can test them a bit, reading directories
etc.
In order to install linux on the harddisk, first check out your harddisk
by executing the command "fdisk" - it should show you all the partitions
available. If you have only 1 AT-harddisk, you should get a
errormessage, just ignore it. At my system fdisk reports the following:
/dev/hd1: 20476 blocks minix
/dev/hd2: 19975 blocks minix
/dev/hd3: 1020 blocks minix
/dev/hd4: 170 blocks active 16-bit DOS (>=32M)
/dev/hd6: 41641 blocks active minix
The partition type given (12-bit DOS, minix etc) doesn{t really mean
anything, unless it's a "extended partition", in which case you
shouldn't use that partition for anything: linux doesn't yet understand
them. When later using "mkfs" to make a linux file system, it won't
change the output of fdisk, so fdisk may well report "DOS", while in
fact you have made it a linux partition.
If fdisk doesn't print out anything but errors, linux is unable to read
your harddisk, and you are f**ked. Play around with the floppy version,
but you won't be able to do anything real.
使用方法
<tab> を2回押すと、利用可能なコマンドの完全なリストを得ることができます : ルートディスクには、システムをハードディスクにインストールするために必要なセットアッププログラムがほとんど含まれています。ディレクトリの読み込みなど、少しテストすることができます。
ハードディスクに linux をインストールするには、まず "fdisk" コマンドを実行してハードディスクをチェックしてください。利用可能なすべてのパーティションが表示されるはずです。 ATハードディスクが1つしかない場合は、エラーメッセージが表示されますが、無視してください。私のシステムでは、fdiskは次のように表示します :
/dev/hd1: 20476 blocks minix
/dev/hd2: 19975 blocks minix
/dev/hd3: 1020 blocks minix
/dev/hd4: 170 blocks active 16-bit DOS (>=32M)
/dev/hd6: 41641 blocks active minix
与えられたパーティションタイプ (12ビット DOS、minixなど) は、それが「拡張パーティション」でない限り、実際には何の意味も持ちません。後で "mkfs" を使って linux のファイルシステムを作っても、fdisk の出力は変わらないので、fdiskは "DOS "と報告するかもしれません。
fdisk がエラー以外何も出力しない場合、linux はハードディスクを読み込むことができません、お手上げです。フロッピー版で遊んでみてください。ただし、これ以上何もできないでしょう。
bash の <tab> 補完はこの頃から使えたのですね。bash も息の長いシェルです。
linux の "fdisk" コマンドも初めて出てきました。ただ、パーティションタイプの取得は上手く出来ていなかったようです。プライマリパーティションと拡張パーティションの区別がつく位の情報だったのでしょう。DOS の fat12 でも minix でも区別が出来なかったので、hdX と実際の HDD のパーティション構造を事前に調べておく必要があったのだと思います。
Making a filesystem
In order to really use linux, you will have to make a filesystem on your
harddisk. This starts by deciding which partition you can use. Look
again at what fdisk reports, and try to figure out which of the
partitions you are using for DOS, OS/2 etc. /dev/hdX where X={1,2,3,4}
always refers to the first harddisk, X={6,7,8,9} always refers to the
second disk. /dev/hd0 and /dev/hd5 are special: they are all of the
drive, and mkfs will refuse to use them for a filesystem.
When you are certain you know which device points to which partition,
you make a filesystem on the partition of your choice by writing:
mkfs -c /dev/hdX blocks
where "-c" means that you want mkfs to check for errors, "dev/hdX" is
the free partition you intend to use for linux, and "blocks" is the
number of blocks fdisk reports for that particular partition. NOTE! mkfs
will overwrite the partition you selected, so be doubly (or triply) sure
that you don't mind that.
Note that when using the "-c" flag, mkfs will read through the entire
partition: this can take some time. If there are read errors, mkfs will
mark the particular block as bad, and continue: linux will also print a
little message "harddisk I/O error". After running mkfs these messages
should never occur again: if they do, your data may be corrupted.
ファイルシステムの作成
linux を実際に使うには、ハードディスク上にファイルシステムを作る必要があります。そのためには、どのパーティションを使うかを決めることから始めます。fdisk が表示するパーティションをもう一度見て、DOS や OS/2 などに使っているパーティションを特定してください。/dev/hdX では、X={1,2,3,4} は常に1番目のハードディスクを指し、X={6,7,8,9} は常に2番目のディスクを指します。/dev/hd0 と /dev/hd5 は特別で、これらはドライブのすべてであり、mkfs はこれらをファイルシステムに使うことを拒否します。
どのデバイスがどのパーティションを指しているかが確認できたら、選択したパーティションにファイルシステムを作成します :
mkfs -c /dev/hdX blocks
ここで、"-c " は mkfs にエラーをチェックさせることを意味し、"dev/hdX" は linux 用に使う予定の空きパーティション、"blocks" は fdisk が報告する特定のパーティションのブロック数です。注意! mkfs はあなたが選択したパーティションを上書きしますので、二重 (または三重) に確認してください。
"-c" フラグを使うと、mkfs はパーティション全体を読み込むことに注意してください : これには時間がかかることがあります。読み込みエラーがあると、mkfs は特定のブロックを不良ブロックとしてマークし、続行します : linuxは "ハードディスクI/Oエラー" という小さなメッセージも表示します。mkfs の実行後、これらのメッセージは二度と表示されないはずです : 表示された場合、データが破損している可能性があります。
"mkfs" も出てきていますが、これが Linux 用のものなのか Minix 用のものなのか、区別がつきません。ただ、Linux の最初のファイルシステムの ext (ext1) は 1992年4月に開発されたと Wikipedia に記載されていますので、おそらく Minix の mkfs、又は Minix のファイルシステムを作成する mkfs だったと思います。
でも、/dev/hd0 と /dev/hd5 が HDD 全体を指定し、/dev/hd[1234] が1番目の HDD、 /dev/hd[5678] が2番目の HDD の各パーティションを指定するという方法は、今になって考えると間違えやすい指定方法だったと思います。当時は慣れていた (それしかなかった) のと、ちゃんとしたマルチユーザーの Unix like な Linux を作る事の優先順位が高かった為に、このようなことは枝葉の事だったのかもしれませんね。
Mounting the filesystem
After mkfs has exited, it's time to mount the file-system, and do the
necessary things to make it a root file system. Mount the new filesystem
on /user by writing:
cd /
mount /dev/hdX /user
If you get errors for this, mkfs failed, and there is probably something
seriously wrong.
After mounting the device, you want to move all the files on the current
floppy-root to the new fs. This can most easily be done by writing:
cd /user
for i in bin dev etc usr tmp floppy
do
cp +recursive +verbose /$i $i
done
sync
which will also tell you what it is doing (/bin/sh -> bin/sh etc).
After that, you should have a new filesystem that contains the bare
necessities to start hacking linux. Play around some more, and exit
linux by writing "logout or exit". This should result in
child 4 died with error code 0000
#
Do a couple of syncs (3 is a magic number), and reboot the machine.
ALWAYS remember to sync before rebooting: terrible things happen if you
don't.
ファイルシステムのマウント
mkfs が終了したら、いよいよファイルシステムをマウントし、ルート・ファイルシステムにするために必要なことを行います。新しいファイルシステムを /user にマウントします :
cd /
mount /dev/hdX /user
もしエラーが表示されたら、mkfs は失敗していて、おそらく何か深刻な問題があるはずです。
デバイスをマウントした後、現在のフロッピー・ルートにあるすべてのファイルを新しい fs に移動させたいでしょう。これを最も簡単に行うには、次のように入力します :
cd /user
for i in bin dev etc usr tmp floppy
do
cp +recursive +verbose /$i $i
done
sync
これで何をやっているかもわかります (/bin/sh -> bin/sh など)。
その後、linux をハックし始めるのに必要なものを含む新しいファイルシステムができるはずです。もう少し遊んでから、"logout or exit" と入力して linux を終了します。その結果
child 4 died with error code 0000
#
数回 sync を行い (3回がマジックナンバー)、マシンを再起動します。再起動する前に必ず sync することを忘れないことです : そうしないと大変なことが起こります。
linux-0.10 ではあっさりと説明されていたファイルシステムの mount が少し丁寧に説明されています。
現在はあまり気にしなくなりましたが、Linux を使い始めた直後は sync 3回実行してから shutdown するのはルーチン作業でした。本来、shutdown 時には自動で sync されるので不要なのですが、それこそ "おまじない" のようなものです。
Linux の sync コマンドは、メモリ上のデータをディスクに書き込むために使われます。通常、カーネルはデータを効率的に書き込むためにバッファやキャッシュを利用しますが、これらのデータは電源が切れたりシステムがクラッシュしたりすると失われる可能性があります。sync コマンドを実行すると、カーネルはバッファやキャッシュにある全てのデータをディスクに強制的に書き込みます。これにより、データの安全性や整合性を高めることができます。
未だ "shutdown" コマンドの記載がありませんので、当時は sync 3回で電源 OFF or リセットだったのでしょう。
Using the harddisk as root
Once you have happily made a new root, you will want to boot up with it.
This is done by changing a word at offset 508 in the boot-image. The
word (in 386-order, ie low byte first) tells the system which device to
use as root: it is initially 0, which means that we want to use a floppy
of the same type as the boot-disk (and this is the reason that you may
not use a 360kB boot-disk even though the system fits on one: it has to
be the same type as the root-diskette).
In order to use the harddisk as root, this value has to be changed to
point to the correct device. Harddisks have a major number of 3 under
linux, and the minor nr is the same as the number X in /dev/hdX. The
complete device number is then calculated with
DEV_NO = (major<<8)+minor
or alternatively major*256+minor. Thus /dev/hd1 is (3<<8)+1 = 0x301,
/dev/hd6 = 0x0306 etc. Assuming the partition you made into the new root
was /dev/hd2, you will have to write 0x0302 into the boot-image. That
is, you should change the 508th byte in the image to 0x02, and the 509th
byte to 0x03. There is a sample program for this in some of the older
INSTALL-notes, if you don't understand what it's all about.
ハードディスクをルートとして使用する
新しいルートができたら、それを使って起動したいでしょう。これは、ブートイメージの508オフセットにあるワードを変更することで行います。このワード (386 の順番、つまり下位バイトが最初) は、どのデバイスをルートとして使うかをシステムに指示します: 最初は 0 で、これはブートディスクと同じタイプのフロッピーを使いたいことを意味します (システムが 360kB のブートディスクに収まっていても、それを使ってはいけないのはこのためです : ルートディスクと同じタイプでなければなりません)。
ルートとしてハードディスクを使用するには、この値を正しいデバイスを指すように変更する必要があります。linux ではハードディスクのメジャー番号は3で、マイナー番号は /dev/hdX の X と同じです。完全なデバイス番号は
DEV_NO = (major<<8)+minor
または、major*256+minor。よって /dev/hd1 は (3<<8)+1 = 0x301、/dev/hd6 = 0x0306 などとなります。新しいルートにしたパーティションが /dev/hd2 だとすると、ブートイメージに 0x0302 を書き込む必要があります。つまり、イメージの 508 バイトめを 0x02 に、509 バイトめを 0x03 に変更する必要があります。古いINSTALL-notes にこのためのサンプルプログラムがあります。
INSTALL-0.10 に記載されていた、フロッピーディスクからブートして HDD をルートデバイスとして使用する方法が、INSTALL-0.11 では少し詳しく説明されています。私はあまり使用した事はありませんが、バイナリエディタで書き換えるようなものですね。
特定の場所に掛かれている数値 (0 や 0x0301、0x0306) によって、ルートデバイスが決まっていたようです。
Ok, I got the root on hd, what now?
As you have probably noticed, you cannot get very far with the binaries
found on the original root-diskette. So the first thing you want to do
is to import some new binaries. To do this you need to tell linux what
kind of floppies you have, as that's the easiest way to import things.
As with harddisk, floppies have device numbers, but this time major = 2
instead of 3. The minor number is not as easy: it's a composite that
tells which drive (A, B, C or D) and what type of drive (360kB, 1.2M,
1.44M etc). The formula is 'minor = type*4+nr', where nr is 0-3 for A-D,
and type is 2 for 1.2M disks, and 7 for 1.44M disks. There are other
types, but these should suffice for now.
Thus if you have a 1.2M A-drive, and want to call it "floppy0", you have
to tell linux so. This is done with the "mknod" command. mknod takes 4
paramters: the unix name of the device, a "b" or a "c" depending on
whether it's a Block of Character device, and the major and minor
numbers. Thus to make "floppy0" a 1.2M A-drive, you write:
mknod /dev/floppy0 b 2 8
b is for Block-device, the 2 is for floppy, and the 8 is 4*2+0, where
the 2 is 1.2M-drive and the 0 is drive A. Likewise to make a "floppy1"
device that is a 1.44M drive in B, you write:
mknod /dev/floppy1 b 2 29
where 29 = 4*7 + 1. There are a couple of standard names, for users
that are used to minix (major, minor in parentheses): /dev/PS0 is a
1.44M in A (2,28), /dev/PS1 a 1.44M in B (2,29), /dev/at0 is a 1.2M in A
(2,8), /dev/at1 is a 1.2M in B (2,9). Use mknod to make those that fit
your computer.
After you have made these special block devices, you can now read a
floppy under linux. The easiest way to import things into linux is by
writing a tar-file to a floppy with rawrite.exe, and then using:
tar xvf /dev/floppy0
to untar it under linux. This way you can get the gcc binaries etc
available from the linux-carrying sites.
よし、hd のルートを確保した、次はどうする?
すでに気づいていると思いますが、オリジナルのルートディスクにあるバイナリを使っても、なかなかうまくいきません。そこで、最初にすることは、新しいバイナリを読み込むことです。そのためには、linuxにフロッピーの種類を教える必要があります。それが最も簡単な読み込み方法だからです。
ハードディスクと同様、フロッピーにもデバイス番号がありますが、今回のメジャー番号は 3 ではなく 2 です。 マイナー番号は簡単ではなく、どのドライブ (A、B、C、D) とどのタイプのドライブ (360kB、1.2M、1.44Mなど) を示す複合番号です。式は 'minor = type*4+nr' で、nr は A~D の場合は 0~3、type は 1.2M ディスクの場合は 2、1.44M ディスクの場合は 7 です。他にもタイプはありますが、今はこれで十分でしょう。
したがって、1.2Mの A ドライブがあり、それを "floppy0" と呼びたい場合は、linux にそれを伝える必要があります。これは "mknod" コマンドで実行します。
mknod は4つのパラメーターを取ります : デバイスの unix 名、ブロックデバイスかキャラクタデバイスかに応じて "b" か "c"、メジャー番号とマイナー番号です。したがって、"floppy0" を 1.2M の A ドライブにするには、次のように実行します :
mknod /dev/floppy0 b 2 8
b はブロック・デバイス、2 はフロッピー、8 は 4*2+0 で、2が 1.2M ドライブ、0 が A ドライブです。同様に、B の 1.44M ドライブである "floppy1" デバイスを作るには、次のように書きます :
mknod /dev/floppy1 b 2 29
ただし、29 = 4*7 + 1 です。 minix に慣れているユーザーのために、標準的な名前がいくつかあります (括弧内はメジャー、マイナー) : /dev/PS0 は A の1.44M (2,28)、/dev/PS1 は B の1.44M (2,29)、/dev/at0 は A の1.2M (2,8)、/dev/at1 はBの1.2M (2,9)。mknod を使って、あなたのコンピューターに合ったものを作ってください。
これらの特別なブロックデバイスを作ったら、linux でフロッピーを読むことができます。linux にデータを読み込む最も簡単な方法は、rawrite.exe を使ってフロッピーに tar ファイルを書き込むことです :
tar xvf /dev/floppy0
ファイルを linux で untar します。こうすることで、gcc のバイナリなどを linux 対応のサイトから入手することができます。
未だネットワーク接続が出来ない状態ですので、外部から linux にデータやプログラムを読み込む唯一の方法はフロッピーディスクでした。前回の INSTALL-0.10 の和訳 でフロッピーディスクについて説明しました。
mknod に指定する数値の説明が詳しく書かれています。現在では必要ない知識ですが、当時はこのようにしてブロックデバイスを作成していました。ディストリビューションが使われるようになった時代には、インストーラが対応してくれていました。
"tar" も初めて出てきたコマンドです。tar コマンドとは、ファイルやディレクトリを一つのアーカイブにまとめたり、展開したりするコマンドです。tar はテープアーカイバーの略で、もともとはテープにデータを保存するために使われていました。現在では、ハードディスクやネットワーク上のファイルを圧縮・解凍するために広く利用されています。tar コマンドには様々なオプションがあり、アーカイブの作成方法や展開方法を指定できます。
フロッピーディスクが一般的になる前は、磁気テープ (MSX では音楽用のカセットテープが使われていました) やパンチカード、穿孔テープが記録媒体でした。データ記録用の磁気テープはまだ現役ですね。パンチカードは FORTRAN のプログラム実習で使いました (フロッピーディスクがありましたので主流ではありませんでした)。穿孔テープは NC 旋盤のプログラムで使いました。何方も穴の開いた部分を読み取って16進数に変換し、マシン語や ASCII 文字に変換してプログラムとして使用する方法です。
オルゴールの逆バージョンです。現在では見かける事は無くなりました。
Changes from 0.10:
- /bin/update is no longer automatically executed upon bootup: instead
the file /etc/rc is evaluated by the shell. This file can then start the
update process, mount andy needed filesystems, possibly fsck'ing them
first. A minimal /etc/rc looks like this:
/bin/update &
> /etc/mtab
echo " Ok."
- init() restarts the shell every time it is exited: logout from the
login shell results in a "child xxx died with error code yyy", a sync
and then a new shell as root.
- floppies work a lot better than in 0.10. Even using two floppies at
the same time seems to work out ok. Reading big chunks at a time is also
faster then in 0.10 (I think).
- harddisk errors are handled better. Use the "-c" option in mkfs to map
out all errors.
- linux accepts most video-cards: harcules, MDA, CGA etc seem to work.
- ^G beeps on the console, so command completion under bash etc will
notify of errors.
- sticky directories, corrected handling of uid/gid bits, and better
handling of protections when not root. Most of these won't be noticeable
until we get a init/login.
0.10からの変更点 :
- /bin/update は起動時に自動的に実行されなくなりました : 代わりに /etc/rc ファイルがシェルによって実行されます。このファイルは、アップデートプロセスを開始し、必要なファイルシステムをマウントし、場合によっては最初に fsck します。最小の /etc/rc は以下のようなものです :
/bin/update &
> /etc/mtab
echo " Ok."
- init() は、終了するたびにシェルを再起動します : ログイン・シェルからログアウトすると、"child xxx died with error code yyy" と表示され、同期が行われ、root として新しいシェルが起動します。
- フロッピーは 0.10 より格段に良くなりました。同時に2枚のフロッピーを使っても大丈夫そうです。一度に大きなチャンクを読むのも 0.10 よりも速くなりました (と思います)。
- ハードディスク・エラーはよりよく処理されます。mkfs の "-c" オプションを使って、すべてのエラーを洗い出すことができます。
- linux はほとんどのビデオカードに対応しています : harcules、MDA、CGA などは動作するようです。
- コンソールで^Gがビープ音が鳴るので、bash などでのコマンド補完でエラーが通知されます。
- sticky (bit) ディレクトリ、uid/gid ビットの処理の修正、root 以外でのプロテクトの処理が改善されました。これらのほとんどは、init/login を実行するまでは気づかないでしょう。
/etc/rc でバックグラウンドで daemon を動かすようになりました。init() で shell が再起動します。これが進んで SystemV init に繋がります。SysV init が残っているのも Plamo Linux 位でしょうか、殆どのディストリビューションが systemd に移行しています。
当時のビデオカードについて調べてみました。
harcules とは Hercules Graphics Card (HGC) のことでしょう。HGC は1982年に Hercules Computer Technology 社が発売した、IBM PC 用のビデオカードです。HGC はテキストモードとグラフィックモードを持ち、グラフィックモードでは720 x 348 ピクセルのモノクロ表示が可能でした。HGC は当時の標準的なビデオカードであった MDA (Monochrome Display Adapter) の上位互換であり、MDA 用のソフトウェアをそのまま使用できました。HGC は高解像度のグラフィック表示が可能であり、CAD やグラフ作成などに広く利用されました 。
MDA とは IBM PC 用に開発されたテキスト表示用のビデオカードです。MDA は Monochrome Display Adapter の略で、グラフィック表示用の CGA とともに、IBM PC およびその互換機用の最初の標準的ビデオカードとなりました。MDA には 4K バイトの VRAM が搭載され、80桁 x 25行のテキスト(9x14フォント)を表示することができました。MDA のテキストモードは、後継の EGA, VGA, XGA 等でもサポートされており上位互換性がありました。
CGA とは Color Graphics Adapter の略で、IBM PC 用に販売された最初のカラーグラフィックスカードです。CGA は 1981 年に登場し、16K バイトのビデオメモリを備えていました。CGA は 4 つのテキストモード (40桁 x 25行、80桁 x 25行) と 2 つのグラフィックモード (320 x 200、640 x 200) をサポートし、最大 16 色の表示が可能でした。
1982年に発売された PC-9801 初代の解像度が 640 x 400 ピクセル、テキストでは 80桁 x 25行で、それぞれ別のグラフィックコントローラを使用していました。
同時期に HGC はモノクロですが 720 x 348 ピクセル、MDA はテキスト専用で 80桁 x 25行、CGA は 640 x 200 ピクセルの表示と 80桁 x 25行のテキスト表示、という状況でしたので、如何に PC-9801 初代のグラフィック・テキスト周りが高機能だった事が分かります。
これが逆転するのは IBM PC/AT 互換機でビデオカードを増設できるようになった頃です。この辺りは、ITmedia に寄稿されている大原雄介氏の PC の歴史が詳しいです。
ビープ音や sticky bit への対応も linux-0.11 で行われました。現在にも繋がっている機能です。
結び
linux-0.01 から 0.10、0.11 と、Linux を導入した報告が集まり、対応しているシステムの確認も進んで、徐々にインストール手順が整理されているのが分かります。
未だ HDD からの起動には対応しておらず、mkfs や mount コマンドも文面からは Linux オリジナル (というか GNU のツール) なのか Minix 由来なのかが分かりませんし、init() についても簡易的なものです。それでも着実に進歩している様子が伺えます。
当時の NetNews のやり取りは、今の AI ブーム同様に盛り上がっていたのでしょう。BSD 系は訴訟問題でゴタゴタしていた時期ですので、個人ユースで自由に使える高機能な Unix like な OS への渇望が高かったのだと思います。
次回は RELNOTES-0.12 を和訳しようと考えています。
私の使用している keyboard は Keychron K8 です。TKL (テンキーレス) でそれ以外は通常のキー配置、US 配列で茶軸なのが気に入っています。普段は数字と記号もタッチタイプできますのでテンキーは不要ですが、どうしてもテンキーを要求するソフトウェア (Blender) や、ショートカットキーの代用として使いたい時があります。
Keychron K8 に合う物があれば購入したいと考えていましたが (Keychron Q0 は高い)、こちらの EPOMAKER の物が良さそうです。TH21 はボディが白色で色が合いませんが、EK21-V3 は黒色ベースのキーキャップが白、USB Type-C 有線、RGB ライティング、メカニカルスイッチホットスワップ可能、Gateron Pro Yellow スイッチです。Amazon ブラックフライデーの期間限定ポイントがありましたので注文しました。
Gateron 茶軸仕様があればもっと良かったのですが。どうしても合わなければメカニカルスイッチ20個ですのでホットスワップで取り替えます。
コメント