LoginSignup
13
11

More than 5 years have passed since last update.

UNIX V7を仮想マシン上で動かす手法のまとめ

Last updated at Posted at 2016-01-11

概要

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)

作業手順

作業は、以下の手順でおこなう。

  1. x86版仮想マシンイメージの準備
  2. 仮想マシンの作成
  3. UNIX V7の起動
  4. 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

UNIX V7が起動したら、以下の画面が表示される。
01_start.png

ここで何も文字を入力せず、Enterキーのみを入力すれば、自動的にrootユーザとしてログインする。
02_login.png

この仮想マシンでは、一般ユーザとしてguestアカウントが用意されている。
guestとしてログインするには、一旦ログアウトする必要がある。
ログアウトするには、単純に端末上にてCTRL-Dを入力すれば良い。
CTRL-Dを入力後、ログインプロンプトへ移行する。
03_logout.png

なお、この仮想マシンにおける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文字削除したい場合は、'#'を入力する。 04_backspace.png
    • 1文字削除をBackspaceに設定したい場合は、以下のコマンドを入力すれば良い。
    $ stty erase '^H'
    
    • なお、guestアカウントでは、Robert氏の作業により、上記の設定が初めから完了している。
  • head, lessコマンドは存在しない。

  • emacsは存在しない。

    • エディタは、edかviを使う。

参考にしたもの

  1. UNIX is free! 〈http://www.lemis.com/grog/UNIX/
  2. V7/x86 on VirtualBox | Robert Nordier 〈http://www.nordier.com/articles/v7x86_vbox.html
  3. 『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
    • でも、動作はすっごく遅かった...
    • (もしかしたら、僕が設定をミスっているのかもしれないけれど。)
13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11