概要
UNIX V7(Version 7 Unix, Seventh Edition Unix)とは、UNIXオペレーティングシステムにおける、初期の重要なリリースである。
Bourne Shellを始めとし、make, lint, awk, chroot, mallocなど、現代でも用いられる多くの重要なコマンド・機能が、V7で実装された。
そのため、UNIXの歴史上でも、非常に大きな意味を持つOSである。
AT&T社がライセンスを保有していたため、UNIX V7は本来はフリーソフトウェアではない。
だが、2002年にCaldera International社(現:SCO Group)によって、BSD Licenseの元で公開された。(参考1)
現在では、Web上で無償にて入手可能である。
UNIX V7は、本来PDP-11上で動作するOSであり、現代のコンピュータではシミュレータ等を用いなければ動かすことはできない。
しかし、Robert Nordier氏によって、x86への移植がおこなわれた。(参考2)
本記事では、Robert氏の成果物であるx86版の仮想マシンイメージを用いて、UNIX V7を仮想マシン上で動かす手法を述べる。
実行環境
今回は、x86仮想化ソフトウェアとして、VirtualBoxを用いる。
- Arch Linux(x86_64, 4.3.3-2-ARCH)
- VirtualBox(5.0.12)
作業手順
作業は、以下の手順でおこなう。
- x86版仮想マシンイメージの準備
- 仮想マシンの作成
- UNIX V7の起動
- UNIX V7の終了
1. x86版仮想マシンイメージの準備
まず、UNIV V7のx86版仮想マシンイメージを入手する。
仮想マシンのイメージは、Robert氏のWebサイト上で公開されている。
以下のURLからダウンロードページへアクセスし、ダウンロードすれば良い。
"V7/x86 Virtual Machine | Robert Nordier" http://www.nordier.com/v7x86/vm.html
以下、シェル上での操作である。
$ wget http://www.nordier.com/v7x86/releases/v7x86-0.8a-vm.zip
次に、ダウンロードしたファイルを展開する。
展開場所は、任意のディレクトリで良い。
ただし、アーカイブに含まれている"hd0.img"と"v7x86.vmdk"の2つのファイルは、同一のディレクトリに入れるようにする。
以下、シェル上での操作である。
$ unzip v7x86-0.8a-vm.zip
$ ls v7x86-0.8a-vm
README.txt
bochsrc
hd0.img
v7x86.vmdk
v7x86.vmx
v7x86intro.pdf
以上で、x86版仮想マシンイメージの準備は完了である。
2. 仮想マシンの作成・設定
次に、VirtualBoxにて、仮想マシンの作成と設定を進める。
VirtualBoxには、"vboxmanage"というCLI向け管理コマンドが用意されているため、それを用いて作成と設定を進める。
以下のコマンドを入力して、作成・設定をおこなう。
(VMの名称として用いている"UNIX_V7"は、任意のものに変更しても良い。変更した場合は、"UNIX_V7"を変更した名称に置き換えて実行すること。)
$ vboxmanage createvm --name "UNIX_V7" --ostype "Other" --register
Virtual machine 'UNIX_V7' is created and registered.
UUID: ************************************
Settings file: '/hoge/piyo/UNIX_V7.vbox'
$ vboxmanage modifyvm UNIX_V7 --memory 16
$ vboxmanage storagectl UNIX_V7 --name IDE --add ide
$ vboxmanage storageattach UNIX_V7 --storagectl IDE --device 0 --port 0 --type hdd --medium /path/to/v7x86-0.8a-vm/v7x86.vmdk
以上で、仮想マシンの作成・設定は完了である。
3. UNIX V7の起動
そして、UNIX V7を起動する方法を述べる。
以下のコマンドを入力し、仮想マシンのUNIX V7を起動させる。
$ vboxmanage start UNIX_V7
ここで何も文字を入力せず、Enterキーのみを入力すれば、自動的にrootユーザとしてログインする。
この仮想マシンでは、一般ユーザとしてguestアカウントが用意されている。
guestとしてログインするには、一旦ログアウトする必要がある。
ログアウトするには、単純に端末上にてCTRL-Dを入力すれば良い。
CTRL-Dを入力後、ログインプロンプトへ移行する。
なお、この仮想マシンにおけるrootの初期パスワードは"password"、guestの初期パスワードは""(無し)である。
以上で、UNIX V7の起動は完了である。
以降、自由に作業を進めることができる。
4. UNIX V7の終了
最後に、UNIX V7を終了させる方法を述べる。
UNIX V7では、コマンドプロンプトからOSを終了させる方法は存在しない。
よって、killコマンドによって、kill自身とinitを除いた全プロセスを終了させた後、仮想マシン自体を終了させる。
まず、仮想マシンのV7上でrootとしてログインし、以下のコマンドを入力する。
(UNIX V7上での入力)
# kill -1 1
# sync; sync
上記のコマンドを実行した後に、ホストマシン側で仮想マシンを終了させる。
ホストマシンでは、以下のコマンドを入力する。
(ホストマシンでの入力)
$ vboxmanage controlvm UNIX_V7 poweroff
以上で、UNIX V7の終了、および作業は全て完了である。
注意点
-
rootアカウントでは、Backspaceによる1文字削除が出来ない。
- UNIX V7では、端末上で1文字削除をする制御文字は、'#'に設定されている。(参考3)
- そのため、入力を1文字削除したい場合は、'#'を入力する。
- 1文字削除をBackspaceに設定したい場合は、以下のコマンドを入力すれば良い。
$ stty erase '^H'
- なお、guestアカウントでは、Robert氏の作業により、上記の設定が初めから完了している。
-
head, lessコマンドは存在しない。
-
emacsは存在しない。
- エディタは、edかviを使う。
参考にしたもの
- UNIX is free! 〈http://www.lemis.com/grog/UNIX/〉
- UNIX V7のオリジナルのブートイメージの入手はこちらから。 >>
"Index of /Archive/PDP-11/Boot_Images" http://www.tuhs.org/Archive/PDP-11/Boot_Images/
- UNIX V7のオリジナルのブートイメージの入手はこちらから。 >>
- V7/x86 on VirtualBox | Robert Nordier 〈http://www.nordier.com/articles/v7x86_vbox.html〉
- 『UNIXプログラミング環境』、Brian W. Kernighan Rob Pike 著、石田晴久 監訳、アスキー出版局
雑記
- UNIX V7の全ソースコードも、こちらのサイトにて公開されています。 >>
"The Unix Tree" http://minnie.tuhs.org/cgi-bin/utree.pl - 公開されたV7のイメージを使った遊び方については、こちらのサイトにリンクがまとめられています。 >>
"Linuxだからできないなんて言わないよ 古代のハッカーたちの遺産で遊ぶ人たち" http://tenten909.blog.shinobi.jp/other/%E5%8F%A4%E4%BB%A3%E3%81%AE%E3%83%8F%E3%83%83%E3%82%AB%E3%83%BC%E3%81%9F%E3%81%A1%E3%81%AE%E9%81%BA%E7%94%A3%E3%81%A7%E9%81%8A%E3%81%B6%E4%BA%BA%E3%81%9F%E3%81%A1
- これで、Advent Calendar『UNIXプログラミング環境』に向けた、ちゃんとした実習環境が整いますね...
- 僕のAdvent Calendarはこれからだ(白目
-
V7のawkは、現代のawk(nawk, mawk, gawk)とは動作が違うっぽい?
- cat hoge.txt | awk 'NR <= 10'を実行しても、何も表示されない...
- 謎だ...
-
^Dによるログアウト、鬱陶しいので常に無効に設定していたけれど...
- V7では、exitもlogoutコマンドも存在しないので、^Dによるログアウトは重要だった。
-
今回はx86版を動かしてみたけれど、もちろんPDP-11エミュレータ上で動かすことも可能。
- エミュレータは、SIMHがメジャーみたい。
- 参考サイト >>
"PCメモ [simh-pdp11] Version 7 Unixをインストールする" http://pcmemo.take-uma.net/unixv7/install-v7-1 - でも、動作はすっごく遅かった...
- (もしかしたら、僕が設定をミスっているのかもしれないけれど。)