せっかくならWindowsのインストールCDから入れるのと同じようにインストールメディアから入れてみよう、ということで、今回はインストールテープイメージからのUNIX V7インストールに挑戦します。
PDF形式のUNIX V7のマニュアルが、開発元であるベル研究所のページからダウンロードできます。
http://plan9.bell-labs.com/7thEdMan/bswv7.html
マニュアルは3つに分かれていますが、セットアップの手順はこのうちのv7vol2b.pdfに書かれています。「Setting Up Unix」という章です。とりあえずここに書かれている手順で作業していきます。
テープイメージのダウンロード
UNIX V7のテープイメージはThe Unix Heritage SocietyのUnix Archiveからダウンロードできます。日本のミラーサイトのURLは以下の通りです。
ftp://ftp.ics.es.osaka-u.ac.jp/pub/mirrors/UnixArchive/PDP-11/Distributions/research/Keith_Bostic_v7/
ここにあるf0.gz~f6.gzの7つのファイルとfilelist、すべてをどこか適当な場所にダウンロードします。
テープイメージをsimhの形式に変換する。
ダウンロードしたテープイメージのファイルですが、そのままでは使えません。simhで読み込める形に変換する必要があります。
ただ、この変換に必要なツールはsimhには含まれておらず、いろいろな方がばらばらに作っているみたいです。
今回は こちらのブログで公開されていたものをお借りしたいと思います。こちらのツールは、テープイメージに含めるファイルのブロックサイズを個別に指定でき、しかもgzファイルをそのまま読み込めるのでとても便利です。
公開されている2つのソース、tapewrite.cとmaketapeを自分のマシンにおいて、tapewrite.cはコンパイルします。maketapeには実行権を付けます。
linux$ cc -o tapewrite tapewrite.c linux$ chmod a+x maketape
つづけて、maketape用の設定ファイルを作ります。設定ファイル の内容は以下の通りです。
linux$ vi tape-unixv7.conf f0.gz 512 f1.gz 512 f2.gz 512 f3.gz 512 f4.gz 512 f5.gz 10240 f6.gz 10240 linux$
各行の左はテープイメージに書き込むファイル名、右側はブロックサイズです。このブロックサイズの情報は一緒にダウンロードしたfilelistに書かれています。
ファイルができたら以下のようにしてテープイメージファイルを作ります。
linux$ ./maketape tape-unixv7.conf unixv7.tap f0.gz bsize=512 f1.gz bsize=512 f2.gz bsize=512 f3.gz bsize=512 f4.gz bsize=512 f5.gz bsize=10240 f6.gz bsize=10240 linux$
これでunixv7.tapという名前のファイルができていればOKです。このテープイメージを使ってインストールを行います。
インストール
準備が整ったので、pdp11エミュレータを起動します。Setting Up Unixを見ると最初の起動時にマシン語のプログラムを打ち込む必要があるようなので、設定と一緒にあらかじめファイルに書いておきます。
linux$ vi install.ini set cpu 11/45 set rp0 RP04 ← 磁気ディスクの種類の設定 att rp0 rp04-0.dsk ← 仮想磁気ディスクファイルの名前 att tm0 unixv7.tap ← インストールテープの割り当て d cpu 100000 012700 d cpu 100002 172526 d cpu 100004 010040 d cpu 100006 012740 d cpu 100010 060003 d cpu 100012 000777 e cpu 100000-100013
前回Software Kitでインストールしたときは磁気ディスクの種類としてRL02を指定しましたが、今回インストールするテープにはRL02用のカーネルやブートストラップが含まれていませんので、このテープで利用可能なRP04を指定します。
ディスクの内容はこれからのインストールで作成していきますので、仮想磁気ディスクファイルには存在しない適当な名前を指定すればOKです。
準備が整ったら起動します。
linux$ pdp11 install.ini PDP-11 simulator V3.9-0 Disabling XQ RP: creating new file Overwrite last track? [N] ← そのままEnter 100000: 012700 100002: 172526 100004: 010040 100006: 012740 100010: 060003 100012: 000777 sim>
simhのプロンプトが出たら、プログラムを100000番地から実行します。必要な処理をしてCPUループになるので、数秒待ってCtrl-Eで止め、今度は0番地から実行します。
sim> run 100000 (数秒待ってからCtrl-E) Simulation stopped, PC: 100012 (BR 100012) sim> run 0 Boot :: が出力されたらテープからブートします。この工程で磁気ディスクに空のファイルシステムを作ります。2つほど聞かれるので、マニュアルの通りに入力していきます。
: tm(0,3) file sys size: 5000 file system: hp(0,0) ← ここはrpではなくhp isize = 1600 m/n = 3 500 Exit called Boot :磁気ディスクのRP04はsimhのプロンプトではrpですが、ここでの指定はhpとなるようです。
また:が出るので、再びテープから起動します。今度は今作った空のファイルシステム上にUNIXのルートファイルシステムをリストアします。
: tm(0,4) Tape? tm(0,5) ← ルートファイルイメージが格納されているテープ上のファイル(f5.gz) Disk? hp(0,0) ←リストア先の磁気ディスク Last chance before scribbling on disk. ← ここは単にEnterを入力 End of tape Boot :
マニュアルには数分かかるとありますが、数秒で終わってしまいます。この辺は最新のハードディスクと大昔のテープの差でしょうか。
これで磁気ディスク上にルートファイルシステムができました。このルートファイルシステム上のカーネルを使って起動を行います。
: hp(0,0)hptmunix mem = 177344 #
無事、シングルユーザモードで起動しました。引き続き、マニュアルの記述に従って、カーネルのリネームおよびスペシャルファイルの作成を行います。前回つかったSoftware Kitのものと異なり、こちらのUNIX V7はシングルユーザモードでの入力が全部大文字になります。
# PWD / # MV HPTMUNIX UNIX # CD /DEV # MAKE RP04 /ETC/MKNOD RP0 B 6 0 /ETC/MKNOD SWAP B 6 1 /ETC/MKNOD RP3 B 6 6 /ETC/MKNOD RRP0 C 14 0 /ETC/MKNOD RRP3 C 14 6 CHMOD GO-W RP0 SWAP RP3 RRP0 RRP3 # MAKE TM /ETC/MKNOD MT0 B 3 0 /ETC/MKNOD RMT0 C 12 0 /ETC/MKNOD NRMT0 C 12 128 CHMOD GO+W MT0 RMT0 NRMT0 #
Software Kitの時と異なり、ここで/dev/swapも自動で作られます。続けて、/usr用のファイルシステムを作り、データをリストアします。
# /ETC/MKFS /DEV/RP3 153406 ISIZE = 49088 M/N = 3 500 # DD IF=/DEV/NRMT0 OF=/DEV/NULL BS=20B FILES=6 202+80 RECORDS IN 202+75 RECORDS OUT # RESTOR RF /DEV/RMT0 /DEV/RP3 LAST CHANCE BEFORE SCRIBBLING ON /DEV/RP3. ← Enterを入力 END OF TAPE #
作成したファイルシステムを/usrにマウントして中身を確認します。
# /ETC/MOUNT /DEV/RP3 /USR # LS /USR DICT DMR DOC GAMES INCLUDE LIB MAN MDEC PUB SPOOL SRC SYS TMP #
最後の仕上げとして、ブートストラップブロックを磁気ディスクの先頭に書き込みます。
# DD IF=/USR/MDEC/HPUBOOT OF=/DEV/RP0 COUNT=1 0+1 RECORDS IN 0+1 RECORDS OUT #
これで一通り作業は終わりました。Ctrl-dを押してシングルユーザモードを抜けます。
# (Ctrl-d) RESTRICTED RIGHTS: USE, DUPLICATION, OR DISCLOSURE IS SUBJECT TO RESTRICTIONS STATED IN YOUR CONTRACT WITH WESTERN ELECTRIC COMPANY, INC. WED DEC 31 19:26:01 EST 1969 login: root Password: ← ここもroot You have mail. #
マルチユーザモードでログインできたことを確認したらいったん終わらせます。
# sync # sync # sync # (Ctrl-E) Simulation stopped, PC: 002306 (MOV (SP)+,177776) sim> q Goodbye linux$これで一通りインストール作業は終わりました。
では、ちゃんとインストールできたかどうか確認します。今インストールした磁気ディスクから起動してみます。起動用の設定ファイルは以下のようになります。
linux$ cat UV7.ini set cpu 11/45 set cpu 256k set rp0 RP04 att rp0 rp04-0.dsk boot rp0 linux$ pdp11 UV7.ini ← 起動 PDP-11 simulator V3.9-0 Disabling XQ boot ← プロンプトは何も出ませんが、ここでbootと入力 Boot : hp(0,0)unix mem = 177344 # (Ctrl-d) RESTRICTED RIGHTS: USE, DUPLICATION, OR DISCLOSURE IS SUBJECT TO RESTRICTIONS STATED IN YOUR CONTRACT WITH WESTERN ELECTRIC COMPANY, INC. WED DEC 31 19:26:34 EST 1969 login: root Password: You have mail. #
Software Kitでインストールしたときは、最初の"boot"と打ち込むところでプロンプトとして"@"が出るのですが、こちらでは何も出ません。ちょっとびっくりしますが気にせずbootと打ち込めば、あとはSoftware Kitの時と同じように起動できました。
今回はここまで。
[関連記事]
- [simh-pdp11]UNIX V7からLinuxにメールを送ってみる
- [simh-pdp11]UNIX V7とLinuxでUUCP(2)
- [simh-pdp11]UNIX V7とLinuxでUUCP(1)
- [simh-pdp11]UNIX V7の日付まわりを修正する
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする part2
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする
- [simh-pdp11] Version 7 Unixをインストールする
- simhをインストールしてみる
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |
UNIX V7は現在ではフリーソフトになっているようで、だれでも自由に入手できます。
今回はSimhのサイトで公開されているSoftware Kitを使ってみます。これはインストール済みの仮想ディスクイメージなので、ダウンロードすればすぐ使えます。
ダウンロードURLは
http://simh.trailing-edge.com/kits/uv7swre.zip
です。ダウンロードしたら適当な場所に展開します。
linux$ unzip uv7swre.zip linux$ ls AncientUnix.pdf README.txt unix_v7_rl.dsk
このunix_v7_rl.dskがインストール済みの仮想磁気ディスクイメージですので、これを使って起動します。simhのpdp11エミュレータを起動して以下のように入力していきます。
linux$ pdp11 PDP-11 simulator V3.9-0 sim> set cpu 11/45 ← CPUの種類の指定 Disabling XQ sim> set cpu 256k ← CPUメモリサイズの指定 sim> set rl0 RL02 ← 装置名rl0の種類をRL02にする(RLはカートリッジ磁気ディスク) sim> att rl0 unix_v7_rl.dsk ← 装置名rl0に仮想ディスクファイルunix_v7_rl.dskを割り当てる sim> boot rl0 ← 装置名rl0からブートする @
ここで打ち込むset, attなどのコマンドおよびrl0などのパラメータの説明は、
http://simh.trailing-edge.com/pdf/pdp11_doc.pdf
に書いてあります。
@が表示されたら、bootと入力します。
@boot New Boot, known devices are hp ht rk rl rp tm vt :
: が表示されたら、ブートするカーネルの指定を行います。以下のように指定します。
: rl(0,0)rl2unix mem = 177856 #
#のプロンプトはシングルユーザモードでUNIXが起動したことを表します。 ここで、磁気ディスクと磁気テープのデバイスファイルを作っておきます。
# cd /dev # make rl /etc/mknod rl0 b 8 0 /etc/mknod rl1 b 8 1 /etc/mknod rrl0 c 18 0 /etc/mknod rrl1 c 18 1 chmod go-rw rl0 rl1 rrl0 rrl1 # make tm /etc/mknod mt0 b 3 0 /etc/mknod rmt0 c 12 0 /etc/mknod nrmt0 c 12 128 chmod go+w mt0 rmt0 nrmt0
/tmpがないので作っておきます。ないとmanコマンドがエラーになるようです。
# mkdir /tmp
さらにswapデバイスを作成し、カーネルを"unix"という名前でコピーします。これはpsコマンドを動かすのに必要なんだそうです。この作業は最初は抜けていました。ほかにも抜けていることがあるかもしれません。
# /etc/mknod swap b 8 0 # cp /rl2unix /unix # (Ctrl-dを入力)
Ctrl-dを押すとシングルユーザモードが終わってマルチユーザモードに移行します。 ここでおなじみのloginプロンプトが出ますので、ユーザ名、パスワードともにrootでログインします。
Restricted rights: Use, duplication, or disclosure is subject to restrictions stated in your contract with Western Electric Company, Inc. Thu Sep 22 05:49:30 EDT 1988 login: root Password: You have mail. #
これでめでたくUNIX V7が起動できました。
終了ですが、UNIX V7にはshutdownコマンドがありませんので以下のようにします。
# sync # sync # sync # (Ctrl-E)← エミュレータを停止する Simulation stopped, PC: 002306 (MOV (SP)+,177776) sim> q ← エミュレータを終了する Goodbye linux$
今回は起動時のエミュレータの設定を手動で打ち込みましたが、あらかじめ以下のようなファイルを作っておくと、次回以降、設定内容をpdp11エミュレータに自動で読み込ませることができます。
linux$ vi boot.ini set cpu 11/45 set cpu 256k set rl0 RL02 att rl0 unix_v7_rl.dsk boot rl0 linux$ pdp11 boot.ini PDP-11 simulator V3.9-0 Disabling XQ @ ← ここでbootと打ち込むところから New Boot, known devices are hp ht rk rl rp tm vt : rl(0,0)unix
カーネルをunixという名前でコピーしたので、2回目以降は上のようにrl(0,0)unixで起動できるようになります。 2回目以降はシングルユーザモードでは特にやることはありませんので、#が表示されたらすぐにCtrl-dを押してマルチユーザモードに移行すればOKです。
今回はここまで。
[関連記事]
- [simh-pdp11]UNIX V7からLinuxにメールを送ってみる
- [simh-pdp11]UNIX V7とLinuxでUUCP(2)
- [simh-pdp11]UNIX V7とLinuxでUUCP(1)
- [simh-pdp11]UNIX V7の日付まわりを修正する
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする part2
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする
- [simh-pdp11] UNIX V7をテープイメージからインストールする
- simhをインストールしてみる
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |
simhはLinuxやWindows上で動作する、PDP-11などの大昔のコンピュータのエミュレータで、”The Computer History Simulation Project"で作成されています。 これを使うことで黎明期のUNIXやミニコン用OSを動かすことができます。
今から2年ぐらい前にちょっと触ったことがあり作った環境がすでにあるのですが、かなり忘れているので、またインストールからやり直してみようと思います。
今回はCentOS6.4上に環境を作ります。
準備作業
Simhでネットワークを使えるようにするためにはlibpcapが必要です。まだインストールされていないならインストールします。
$ sudo yum -y install libpcap-devel
Simhのダウンロード
どうもDebian系だとパッケージがあるようなのですが、CentOSにはないようなのでソースコードを入手してビルドします。ソースコードをダウンロードして適当なディレクトリに展開します。
$ mkdir simh $ cd simh $ wget http://simh.trailing-edge.com/sources/simhv39-0.zip $ unzip simhv39-0.zip
Simhのビルド
展開が終わったらmakeします。このとき、ネットワークサポートを有効にするには"USE_NETWORK=1"オプションをつけてmakeを実行します。
$ make USE_NETWORK=1これで特にエラーもなくビルドできました。
バイナリはBINディレクトリにできています。ためしにPDP-11のエミュレータを起動してみます。
$ ./BIN/pdp11 PDP-11 simulator V3.9-0 sim>
Simhのプロンプトが出ました。とりあえず動くようです。quitで終了させます。
次からはこのPDP-11エミュレータを使ってVersion7 Unixを動かしてみます。
[関連記事]
- [simh-pdp11]UNIX V7からLinuxにメールを送ってみる
- [simh-pdp11]UNIX V7とLinuxでUUCP(2)
- [simh-pdp11]UNIX V7とLinuxでUUCP(1)
- [simh-pdp11]UNIX V7の日付まわりを修正する
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする part2
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする
- [simh-pdp11] UNIX V7をテープイメージからインストールする
- [simh-pdp11] Version 7 Unixをインストールする
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |
このブログは忍者ブログを使っているのですが、そのうちPHP関連のソースコードを載せることがあるかもしれないので、今のうちにSyntaxHighlighterを導入しようと思います。
SyntaxHighlighterはブログ、ホームページなどできれいにソースコードを表示するためのツールでJavaScriptとCSSで実装されています。
SyntaxHighlighterは以下のURLからダウンロードできます。
http://alexgorbatchev.com/SyntaxHighlighter/download/
このページの冒頭の"Click here to download"をクリックするとzipファイルのダウンロードが始まるので適当なところに保存して展開します。今回ダウンロードしたのはsyntaxhighlighter_3.0.83.zipです。
インストールの方法は英語ですが以下のURLに書いてあります。
http://alexgorbatchev.com/SyntaxHighlighter/manual/installation.html
とりあえずここに書いてある通りに作業してみます。
まず展開してできるフォルダの下にある以下の各ファイルを忍者ブログのファイルアップロード機能でアップロードします。
- script/shCore.js
- scripts/shBrushPhp.js (※)
- scripts/shBrushXml.js (※)
- styles/shCore.css
- styles/shThemeDefault.css
※で示したscripts/shBrush???.jsは使う言語によって変えるみたいです。今回はPHP用のファイルであるshBrushPhp.jsと、XMLやHTMLで使えるshBrushXml.jsを使います。
アップロードしたらブログ設定のデザイン-PC用テンプレートを開き、使用中テンプレートの「修正」リンクをクリックします。
HTML編集欄の<head>~</head>の間に以下の行を追加します。
<script type="text/javascript" src="http://file.ブログのホストアドレス/shCore.js"></script> <script type="text/javascript" src="http://file.ブログのホストアドレス/shBrushXml.js"></script> <script type="text/javascript" src="http://file.ブログのホストアドレス/shBrushPhp.js"></script> <link rel="stylesheet" type="text/css" href="http://file.ブログのホストアドレス/shThemeDefault.css" /> <link rel="stylesheet" type="text/css" href="http://file.ブログのホストアドレス/shCore.css" />
http://file.ブログのホストアドレス/の部分は、このブログの場合はhttp://file.pcmemo.take-uma.net/になります。 これで準備は完了です。あとは、ソースコードを埋め込みたい箇所を以下のように <pre>で囲みます。
<pre class="brush: php; html-script: true"> <?php phpinfo(); ?> </pre>
このとき、<pre>~</pre>で囲む部分に"<"や">"があるときはHTMLエスケープ(<および>に書き換え)しないといけないようです。
また、<pre>のclass属性には"brush: "に続けてphpやxml、htmlなどの名前を書きます。使える名前は上で書いたアップロードファイルの一覧で※を付けたファイルの種類によって変わります。使える名前の一覧とshBrush???.jsの対応は以下のURLに書いてあります。
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/
その後ろのhtml-script:trueは、phpなどのようにHTMLと混在して記述するスクリプト言語を清書する場合に指定します。html-script:trueを使うためには使う言語用のshBrush??.jsのほかにshBrushXml.jsが必須のようです。
このほかにもいくつかclass属性に指定できるオプションがあるようで、以下のURLに説明があります。
http://alexgorbatchev.com/SyntaxHighlighter/manual/configuration/
そして、ブログの最後に以下の<script>タグを書きます。このscriptタグがレンダリングの指示になります。
<script type="text/javascript"> SyntaxHighlighter.all() </script>
実はすでにこのページに載せているコードはすでにSyntaxHighlighterを使って成形したものになっています。結構いい感じですね。
このページのHTMLソースとこの記事を比較してみるのも参考になると思います。
でも公開前に詳細プレビューで確認するとうまく表示されないんですよね。なんかスタイルシートが読み込まれていない感じ。<head>に追加したスタイルシート読み込みの<link>要素が出力されていませんでした。原因はよくわかりません。公開した後ならちゃんと表示されています。
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |
PHPの開発環境(IDE)にはいくつかあるようですが、今回使うマシンにはすでにEclipse 4.2(Pleiades All In One Java Full Edition 64bit)がインストールされているので、ここにプラグインを追加する形で行こうと思います。
Eclipseプラグイン形式のPHP開発環境として、今回はEclipse PDTをインストールします。
Eclipseを起動して、[ヘルプ]-[新規ソフトウェアのインストール]をクリック。
ダイアログが開くので、[作業対象]欄の右端のボタンをクリックして、一覧から
Juno - http://download.eclipse.org/releases/juno
を選択します。パッケージの一覧が表示されるので、[プログラミング言語]のツリーを開き、[PHP開発ツール(PDT)]をチェックして[次へ]をクリックします。
インストール詳細画面が表示されるので[次へ]をクリックします。
ライセンスが表示されるので[使用条件の条項に同意します]を選んで[完了]をクリックします。
これでインストールが始まります。しばらくするとEclipseを再起動するように言われるので再起動すればインストール完了です。
これでEclipseでPHP開発用のプロジェクトが作成できるようになりますが、その話はまた今度。
[関連記事]
。
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |