<!doctype linuxdoctr system>
<article>
<title>Configuring Remote-Boot Workstations with Linux, DOS 6.20, Windows 3.1 
and Windows 95
<author>Marc Vuilleumier Stuckelberg and Sandro Viale
<date>v1.0, August 1996
<trans>中谷千絵 jeanne@mbox.kyoto-inet.or.jp
<tdate>v1.0j, 23 April 1997

<![IGNORE[
  Configuring Remote-Boot Workstations with Linux, DOS 6.20, Win鹿
  dows 3.1 and Windows 95
  Marc Vuilleumier Stuckelberg and Sandro Viale
  v1.0, August 1996

日本語訳 中谷千絵 jeanne@mbox.kyoto-inet.or.jp
23 Apr.1997
校正：Hiro Sugawaraさん hiro@arkusa.com
      中野 武雄さん nakano@apm.seikei.ac.jp
]]>


<![IGNORE[
「訳注」以外に「用語説明」をつけました。
# 印は用語説明。
(用語集)と表示した解説文は、「インターネット構築入門」の「用語集」
(５３３頁から)を参照引用したものです。

(用語集)と記したものは「用語集」からの引用、(インターネット構築入門) 
S.カールミッチェル,J.S.クォーターマン著(斉藤靖,小山裕司訳),
『インターネット構築入門』,トッパン,1995年) と記したものは本文を参考に
したもので、参考にした頁をつけました。その他関連する HOWTO または 
mini-HOWTO などを記したものもあります。(中谷)
]]>

<abstract>
  この文書は、始動時に、それぞれのクライアントが使用するオペレーティン
グシステムを選択できるように、複数の PC 群に対してサーバーを利用したコ
ンフィグレーションを行う方法について述べています。このコンフィグレーショ
ンの重要な点は TCP/IP bootprom で、それは各自のブートディスクイメージ
のひとつを起動時にユーザに選択させるようにしています。説明の大部分はさ
まざまなオペレーティングシステムに関してサーバを利用したインストール法
の核心部分のコンフィグレーションです。
この文書の最新版は <url 
url="http://cuiwww.unige.ch/info/pc/remote-boot/howto.html"> にあります。
ハイパーリンクでソフトウェアとその他関連のものもロードできるようになっ
ています。Linuxdoc-SGML、 DVI、また postscript 版も上述の場所にあります。
</abstract>

<!--###################### section 1 #################################-->

<sect>はじめに
<p>
  ここで述べたコンフィグレーションは1996年の夏にジュネーブ大学 
University of Geneva の CUI で研究開発されました。コンピュータ科学科 
The Computer Science Department は Novell Netware サーバ、 NFS (<ref 
id="nfs" name="#">) サーバと多数の PC を使っており、これらは以下の用途に
分類されます。

<itemize>
<item>学生専用コンピュータ
<item>学術研究と授業用コンピュータ
</itemize>

  われわれは次の目的で現行のコンフィグレーションを開発しました。

<itemize>
<item>すべてのコンピュータは Linux、DOS、Windows 3.1 あるいは Windows 95 
を動作させることができます。それぞれその都度の作業ごとに希望するオペレー
ティングシステムを選択できるようにしました。

<item>オペレーティングシステムを含むすべてのソフトウェアは、最初のインス
トールとアップグレードを簡単にするためにサーバ上に置くべきです。

<item>クライアントコンピュータは、サーバ上で書き込み可能でアクセスしなくても
動作できるはずです。

<item>クライアント側のコンフィグレーションは最小限に減らした方がよい。ク
ライアントは Novell サーバから自動的に IP 設定パラメーターを受け取り、
この情報は単一のファイルに置かれ、すべてのオペレーティングシステムで使
用されます。

<item>すべてのコンピュータはウイルス攻撃から保護されていなければなりません。

<item>いずれかのコンピュータを使うためにユーザは Novell あるいは UNIX サー
バにログインしなければなりません。

<item>学生用コンピュータはそれぞれの始動時にきちんときれいな状態にされて
いなければなりません。すなわち、PC はいつもインストール直後のようになっ
ているべきです。
</itemize>

   以上のような制約があったので Koeppen EDV-Beratungs-GmbH の優れた製
品である TCP/IP Bootprom をわれわれのコンフィグレーションのベースに用
いることにしました。bootprom は オペレーティングシステムの種類を問わな
いので、とりわけ興味あるものです。ちょうどフロッピーディスクに匹敵し、
DOS や Windows 95 と同様に Linux の起動のためにより簡単に使用できます。

<footnote><label id="nfs">
# NFS(Network File System)(用語集)： Sun Microsystem により開発された透
過ファイルアクセスシステムの実装。広く普及している。
NFS-Root、NFS-Root-Client mini-HOWTO があります。
</footnote>


<sect1>ネットワーク
<p>
  われわれの PC は２つのネットワークプロトコル、IPX (<ref id="ipx" name="#">) 
と IP (<ref id="ip" name="#">) を 配慮して
いるだけです。 IPX 側では、DOS や Windows のソフトウェアとユーザファイ
ルを共有するために単体の Novel Netware を３つ使用しています。IP 側では、
NFS を使って Linux用 のソフトウェアとユーザ区画を共有するために SUN サー
バを使用しています。ジュネーブ大学はいくつかのサブネットに小分けされたク
ラス B ドメインを持っています。CUI は４つのサブネットを使用しており、
そのうちの１つが学生専用になっています。

<footnote><label id="ip">
# IP (Internet Protocol)(用語集)：インターネットプロトコル。TCP/IP プロト
コルモデルの名かのインターネット層のプロトコルの１つ。
</footnote>

<footnote><label id="ipx">
# IPX (Internet Packet eXchange)： Novell 社の Neware 製品でサポートして
いるインターネットプロトコルのひとつ。IPX は IP プロトコルと類似したも
の。Linux IPX-HOWTO と Linux NET-3-HOWTO を参考してください。
</footnote>


<sect1>運用方法
<p>

<enum>

<item>クライアントの PC が起動すると、TCP/IP bootprom に制御が渡る前に、
最初に通常のシステムチェックが行われます。

<item>bootprom はその IP 設定のパラメーターを得るために BOOTP (<ref 
id="bootp" name="#">) 要求を出します。

<item>クライアントが Novell サーバと同じサブネット上にない限り、その要求
はサーバ自身への BOOTP gateway を通して Novell サーバに送られることに
なります。

<item>Novell サーバが その要求を出している PC を認識するなら、BOOTP reply 
を返します。BOOTP reply には、クライアントの IP アドレス、デフォルト 
gateway 、どのブートディスクイメージを使うかのような情報が含まれます。
一方、認識されないなら、サーバは要求を破棄します。

<item>それから bootprom は TFTP プロトコルを使って、Novell サーバからブー
トディスクイメージをロードします。そしてこのイメージでフロッピーディス
クを BIOS レベルでエミュレートします。

<item>PC はこのディスクイメージで起動します。このディスクイメージはブート
プログラム(まだオペレーティングシステムは入っていません)が入っているだ
けのものを作ります。

<item>その PC が学生のコンピュータなら、プログラムはローカルなハードディス
クのパーティションテーブルをリセットし、そして DOS 領域を高速フォーマッ
トして始動します。ここまではコンピュータが起動してから３秒以内に終了します。

<item>それからプログラムはその作業に対してオペレーティングシステムの選択
をユーザに提供します。

<item>ユーザの選択によって、新しいブートディスクが TFTP を使って Novell 
サーバからロードされます。

<item>ユーザが Linux を使うと決めた場合、ブートイメージは少し変更された
圧縮カーネルになります。このカーネルは、 NFS ルート機能とキャッシュファ
イルシステムをサポートします。

 <enum>
 <item>最初に Novell サーバから受けた BOOTP reply によって IP 設定が行われ
 ます。

 <item>そうすればカーネルは NFS を使って、小さい、リードオンリーの root 
 ファイルシステムをマウントできるようになります。

 <item>小さな ramdisk が作られ、write access が望まれるディレクトリを
 ラムディスクにシンボリックリンクします。

 <item>システムは、すべてのシステム依存でないソフトウェアを含む
 パーティションを NFS でマウントします。

 <item>スワップパーティションがローカルハードディスク上にあればアクティブに
 されます。

 <item>Linux パーティションがローカルディスクにあればマウントされ、NFS の
 キャッシュパーティションになります。

 <item>IP 設定が完了すると、サービスが始まり、xdm が起動します。

 <item>ユーザは Linux login を求められます(SUN サーバで NIS で維持されてい
 る)。ワークステーションは準備完了します。
 </enum>

<item>ユーザが DOS と Windows 3.1 を使おうとするなら、ブートイメージは
従来の DOS のブートディスクになり、 ブートマネジャー、 Novell クライア
ントと FTP Inc.TCP/IP スタック (<ref id="tcp-ip-stack" name="#">) が
入っています。



 <enum>
 <item>bootprom は RAM のどこかにそれ自身をコピーするので、使用する 32Kb の
 アドレススペースは EMM386 で復帰させることができます。

 <item>キーボードドライバやネットワークドライバのようなデバイスドライバが
 ロードされます。

 <item>ユーザは Netware に login を促されます。

 <item>サーバログインスクリプトが ウイルス検出をする Vshield をロードします。

 <item>bootprom フロッピーディスクエミュレーションはもう必要がないので、
 それが占めている RAM は解放されます。

 <item>クライアントローカルファイルがハードディスク上に存在しなければ、
 Netware サーバからコピーされます(Windows 3.1 と Netscape に対して約 
 350Kb 必要：１秒ほどかかります)。

 <item>ローカルディスクキャッシュが有効にされます。

 <item>FTP Software の TCP/IP スタックがデフォルトの設定でロード
 されます。

 <item>IP 環境が Netware サーバ上で BOOTP 設定ファイルから読み込まれ、IP 
 カーネルを直接更新します。

 <item>ユーザはフリーコンベンショナルメモリ 543'000 バイトで DOS プロンプト
 を与えられます。TCP/IP カーネルをロードすれば、コンベンショナルメモリ 
 617'000 バイトになります。

 <item>ユーザは従来の win コマンドを入力して Windows を起動できます。 
 </enum>

<item>ユーザが Windows 95 を使うなら、ブートイメージは Windows 95 の サーバ
を利用するセットアップで作られるブートディスクを少し変更したものになります。
このブートイメージは Microsoft 版 Novell Netwareクライアント と Microsoft 
TCP/IP スタックが用いられます。

 <enum>
 <item>まず始めに、Windows 95 のロゴがスクリーンに表示されます(それを取っ
 てはいけません。さもないと、 DOS に似たような画面になってしまいますから)。

 <item>それから Netware クライアントと同様に OS がロードされます。

 <item>ユーザは Netware に login を求められます。

 <item>クライアントローカルファイルがハードディスクに存在しないなら、
 Netware サーバからコピーされます( Windows 95 と Netscape に対して約 
 2.5Mb 必要：数秒かかります)。ロングファイルネームは修復されます。

 <item>先の BOOTP reply に基づいて適切な IP 環境でコンフィグレーションパッチ
 が作られます。

 <item>パッチは Microsoft の REGEDIT を使って windows 95 のシークレット
 レジストリに適用されます。

 <item>Windows マシンのディレクトリがローカルのハードディスクに設定されます。

 <item>Windows 95 が起動します。ワークステーションは用意が整います。
 </enum>

</enum>

  学生のコンピュータはハードディスクが各自の起動時にその都度初期化され
るので、リスクなしにいつでも電源を切ってしまうことができます。

突然電源を切られてローカルディスクにゴミが残っているコンピュータの場合、
その設定が混乱しているなら、次回の始動で新しいインストールをするために、
関連のあるオペレーティングシステムを含むすべてのディレクトリツリーを消
してしまえばよいのです。

<footnote><label id="bootp">
# BOOTP： 
ブートストラップを転送するためのプロトコル (The Unix Super Text 下563頁)
RFC (<ref id="rfc" name="#">)(Request for Comments) :1048 も参考にして
ください。
</footnote>
<footnote><label id="rfc">
# RFC Request for Comments コメント要求(用語集)： 主に TCP/IP プロトコル
族の標準仕様を規定するドキュメント群。
</footnote>
<footnote><label id="tcp-ip-stack">
# TCP/IP stack：
スタック(参考)プロトコルスタック １つのプロトコル体系から選び抜かれた
プロトコル群(インターネット構築入門：２５頁)
</footnote>

<!--######################### section 2 #################################-->


<sect>設定方法
<p>
  BOOTP サーバは設定がとても簡単です。マニュアルの手引に従うだけです。
われわれは RFC1048 風の BOOTP （プロトコル）の応答 と 長い TFTP パケット 
(<ref id="long-tftp-packet" name="*">)を使用しています。

  クライアント側の設定も簡単です。ネットワークカードに bootprom を差し
込み、使用可能にする適切なプログラムを使います。われわれが出会ったたっ
たひとつのトラブルは使用した SMC EtherEZ という名前のネットワークカー
ドによるものでした。それは不幸にも PnP (こんな場合は Plug-and-Punch とも
言う )サポートをしているんですよ！ 適当なプログラムを使って bootprom 
アドレスを有効にしようとすると、たとえ PnP を無効にしても、このカード
はその設定を保存しませんから、旧型の SMC Ultra 設定のソフトウェアを使っ
てください。そのほうがよりうまく動くはずです。もしうまくいかないなら....、
そうですね、PnP を相手にやめましょう。PnP を相手にするのは、ちょっと大
変です。

  BOOTP 要求はサブネットと関連しているのを忘れないでください。クライア
ントと BOOTP サーバが同じサブネットに属していないなら、クライアントと
して同じサブネットにあるサーバで bootpgw を動作させるべきです。bootpgw 
は ftp://firewall.mc.com/pub/ から入手できる bootp-2.4.2 パッケージに
入っています。様々なプラットホームに対応したものがあります。
  本当に大変な仕事は、さまざまのオペレーティングシステムのサーバを利用
するコンフィグレーションから始まります。

<footnote><label id="long-tftp-packet">
訳注：long TFTP packets：
RFC1350 の 512 バイトではなく、RFC1783 の「ブロックサイズオプション」
による長いパケットサイズを許している。
RFC 参考 RFC1048,RFC1350,RFC1783
</footnote>


<sect1>Linux を立ち上げる
<p>
  まず始めに、インストールに利用できる様々な Linux 配布物からひとつを
選びます。われわれは Linux-FT を使用しました。Linux-FT だけが キャッシュ
化したファイルシステムをサポートしているからです。たとえば NFS のよう
なやや遅いファイルシステムから得られたデータをローカルハードディスクに
保存します。
  ローカルのハードディスクがないか、あるいはネットワークでロードできる環
境がないなら、他のものを選んだ方がいいでしょう。 Lasermoon はカーネル 
2.0.で Linux-FT の新版を出す計画はまだないので、RedHat 社の配布物で 
Lasermoon のファイルキャッシュ(一般に利用できる)を利用することについて
関心を持つのも面白いでしょう。とにかく、どこにでもある配布物をインストー
ルすることで、Linux を動作させることができます。

<sect2>カーネルを構築する
<p>
  次に Linux オペレーティングシステムに対してカーネルの再構築をします。
これは、クライアントコンピュータが Linux を始動するために渡される唯一
のソフトウェアなので、完全なオペレーティングシステムを起動するのに必要
なものをすべて含んでいなければいけないことを覚えておいてください。さら
に正確に言うなら、少なくとも次に述べるようなことを満たしていなければい
けません。

<itemize>
<item>クライアントコンピュータハードウェアに対するサポート
<item>ネットワークをサポートしていること
<item>NFS-Root サポート
<item>TCP/IP Bootprom の仕様を満足して始動する
<item>オプションで、ファイルキャッシュのサポート
</itemize>

  最初の２つはこれまでのすべての標準的な配布物にあるものです。NFS-Root 
は 1.3 からの標準のオプションとして入ってきていますが、 Linux-FT は安
定している 1.2.13 のカーネルを使うので、われわれは NFS-Root に関してパッ
チを使いました。NFS-Root(最近のカーネルでの)についての詳細情報は、
NFS-Root-Mini-Howto を見てください。

  もし Linux だけをブートすればいいなら、標準の NFS-Root パッケージが
うまく動作します。しかしもし起動時に複数のオペレーティングシステムを選
択できるようにしたい場合は、標準の BOOTP クライアントを使うことはでき
ません。かわりに、あらかじめ受けた BOOTP reply に対して IP 環境を見る
ために、Linux のカーネル始動コードにわれわれのパッチを使うほうがいいで
しょう。さらに、 TCP/IP Bootprom は標準の Linux ブートコードと衝突する
ので、少し変更をしてあります。

  Linux 1.2.13 を使うつもりなら、最も簡単な方法はわれわれのパッチをし
たカーネルソースを得て、あなたの必要(不用なもののサポートを含まない、
つまりカーネルがあまりに大きくなるでしょうから)に対してそれらを設定し、
そして make bpImage でカーネルイメージを make します。 コンパイルした
カーネルを使うこともできます。

  最新のカーネルを使うなら、われわれが TCP/IP Bootprom の仕様を満足し
て始動するカーネル 2.0 対応版(これは近い将来に出来るでしょう)を出すま
で待った方がいいか、あるいは 1.2.13 のコードを見て自分でやってみる方が
いいでしょう。われわれが何をしたかをここで手短に説明します。

  まず最初に、従来の起動プロセスで、ブートセクター(bootsetc.S ファイル)
が BIOS によって 0x7c00 番地にロードされます。ブートセクタは自分自身を 
0x9000 番地に移動し、起動コード(setup.S ファイル)の残りをロードします。
ここで問題になることは、TCP/IP Bootprom がそれ自身の目的に対してコンベ
ンショナルメモリの上層部分を使うこと、そしてこの領域は Linux によって
現状のままで使うことが出来ないということです。解決方法は始動に関するも
のすべてをブートセクターを移動し、始動コードを 0x9000 ではなく、 
0x8000 に移動するようにします。その後起動の手続きをすべて行い、ブー
トイメージがラムディスクから十分にロードされたら、TCP/IP Bootprom デー
タ領域を破棄し、0x9000 に始動コードを戻します。そうすると、カーネルは
そのコマンドラインパラメータを見つけることができます。始動コードは 
TCP/IP Bootrom API (<ref id="api" name="#">) を使って、 BOOTP reply で IP 
設定と NFS root パラメータを得るように拡張されるべきです。われわれの
始動コードの修正版は bpbootsect.S と bbsetup.S で見つけることができます。

<footnote><label id="api">
# API Apprication Program Interface： 
トランスポート層を使ってプログラムを書くために、いくつかのUNIX プログ
ラミングインターフェイスが開発されている。(インターネット構築入門：２９頁)
</footnote>

<sect2>ルートファイルシステムを構築する
<p>
  ルートツリーはカーネルによって自動的にマウントされる唯一のものです。
システムを起動して全部のファイルシステムをマウントするまでの作業に必要
なデバイスやバイナリ、ライブラリが含まれています。マウントポイントもこ
こにあります。われわれはルートファイルシステムをできるだけ小さくするこ
とを提案していますが、それを減らそうとするのに多くの時間をかけたくあり
ません。NFS-Root-Mini-Howto であなたのルートファイルシステムの内容につ
いて役立つヒントが見つかるでしょう。

  われわれは次のようなことを目的にしてルートファイルシステムを構築しました。

<itemize>
<item>リードオンリーで NFS マウントを使う
<item>ローカルなハードディスクなしに Linux を動作できるようにする
<item>NFS キャッシングにローカルなハードディスクを有効に利用できるようにする。
</itemize>

以上の条件を考慮して次に示すような構造(心配無用、これから説明します)を
採用することにしました。


<itemize>
<item>bin = /cache/bin
<item>dev = /ramdisk/dev
<item>etc (the usual contents of etc, except some files such as...)
<item>mtab = /ramdisk/etc/mtab
<item>fstab = /ramdisk/etc/fstab
<item>ftp
<item>lib = /cache/lib
<item>local = /cache/local
<item>root
<item>sbin = /cache/sbin
<item>tmp = /ramdisk/tmp
<item>usr = /cache/usr
<item>var = /ramdisk/var
<item>direct
<item>bin
<item>lib
<item>sbin
<item>cache (mount point for local hard disk, if any)
<item>bin = /direct/bin
<item>lib = /direct/lib
<item>sbin = /direct/sbin
<item>local = /mnt/local
<item>usr
<item>X11R6 = /dist/usr/X11R6
<item>lpd
<item>dist (mount point for runtime CD, via NFS)
<item>mnt (other mount points)
<item>local (mount point for local stuff, via NFS)
<item>ramdisk (mount point for /dev/ramdisk)
<item>floppy (mount point for /dev/fd0)
<item>proc (proc filesystem mount point)
</itemize>

  ご覧のように、これは通常のルートファイルシステムと似ています。ラムディ
スクに再配置されたものもありますが、同時にキャッシュディレクトリに置き
かえられているものもあります。簡単に言うとファイルキャッシュの原則とは、
キャッシュサブディレクトリからシンボリックリンクが作られる時はいつでも、
そのリンク先になったもので置きかえらるということです。もしリンク先がサ
ブディレクトリなら、そのサブディレクトリのおのおののエントリは、さらに
下につくられるファイルシステムのそれぞれのオリジナルのエントへのシンボ
リックリンクになります。

  さてここではシステムはどのような方法で作られるかということです。カー
ネルがすべての初期化を完了すると、init は inittab に従い、 bcheckrc と 
brc という二つのスクリプトを順番に実行します。
 bcheckrc はシステムの状態(clock,hostname,rootfilesystems)
をチェックし、 brc はシステムを使用できるように準備します。
われわれの場合で言うなら、ルートファイルシステムは NFS を通じてマウン
トされ、ホスト名はカーネルによって設定されるので、bcheckrc は clock を
設定するだけです。 それから、brc が動作します。

<enum>
<item>キーボードのレイアウトが設定されます。

<item>proc ファイルシステムがマウントされますが、まだ書きこみができないの
で、mtab の更新はされません。

<item>ファイルシステムバッファの内容をディスクに書き出す daemon が始動し
ます(update)。

<item>ramdisk が書き込み可能パーティションを得るために設定されます。効率
の問題から /ramdisk/ramdisk.gz が存在すれば、ramdisk の圧縮されたイメー
ジとみなされます。もしなければ作成されます。

<tscreen><verb>
#
# Setup a ramdisk in order to have a writable area
#
if &lsqb; -r /ramdisk/ramdisk.gz &rsqb;; then
  #
  # Do a quick ramdisk setup
  #
  gzip -c -d /ramdisk/ramdisk.gz | dd of=/dev/ramdisk bs=1024 &gt; /dev/null 2&gt;&amp;1
else
  #
  # Enable nfs root (anon=0) write for this procedure to work !
  #
  mke2fs -C -q -i 1024 /dev/ramdisk 720
  mount -n -t ext2 /dev/ramdisk /mnt
  (cd /mnt; mkdir tmp etc dev var; \
   cd var; mkdir log adm run spool lock tmp yp yp/binding)
  mknod /mnt/dev/zero c 1 5
  chmod 777 /mnt/tmp /mnt/var/tmp
  umount /mnt
  mount -n -t ext2 /dev/ramdisk /ramdisk
  MAKEDEV-C generic
  MAKEDEV-C update
  umount /ramdisk
  dd if=/dev/ramdisk bs=1024 | gzip -c &gt; /ramdisk/ramdisk.gz
  echo "Now disable root rw access on NFS server"
  /bin/sh
fi
</verb></tscreen>

<item>それから ramdisk がマウントされます。mtab はまだ更新されません。

<item>書き込み可能なファイルシステムがいくつか作られます。

<tscreen><verb>
#
# Create necessary system files
#
cp /etc/mtab.ref /etc/mtab
cp /etc/fstab.ref /etc/fstab
: 2&gt;/dev/null &gt;/etc/utmp
ln -s ../lock /var/run/locks 2&gt;/dev/null
</verb></tscreen>

<item>ローカルなハードディスクに ext2 あるいはスワップパーティションがあ
るか調べます。見つかれば正しい場所にマウントされます。このコードは少々
長いので、 brc 自身を直接見ることをお勧めします。

<item>利用できるスワップ領域があるなら有効にされ、システムが完成します。
</enum>


<sect1>DOS 6 と Windows 3.1 を設定する
<p>
  DOS と Windows 3.1 のサーバを利用するインストールのコンフィグレーショ
ンは２つの段階で行われます。サーバ上にすべてのソフトウェアをインストー
ルし、そしてクライアントブートディスクイメージを用意します。

<sect2>サーバのインストール
<p>
  DOS のサーバインストールは Netware SYS: volume の DOS ディレクトリ以
下にすでに終っているでしょう。

  Windows 3.1 のサーバインストールを行うために、ファイルをインストール
するサブディレクトリ(われわれは SOFTWARE:\SOFTWARE\WIN3.1 を使用します) 
を作り、INSTALL /A を実行します。この手続きは Windows のマニュアルにあ
ります。ユーザに読みだしアクセス権があるのを確認し、このディレクトリに
システムログインスクリプトのサーチドライブ(われわれは U: を使用してい
る)をマップします。

  Windows 3.1 について、このサーバを利用するインストール方法を使うには、
それぞれのクライアントコンピュータで INSTALL /N を実行します。われわれ
はインストール直後にシステムを使える状態にしたいので、少し違った方法を
取っています。
  
  まだ Windows がインストールされていないコンピュータでサーバを利用し
てインストール(INSTALL /N ) を実行しなさい。windows のディレクトリであ
なたが望むすべてのカスタマイズをし、特別なドライバやその他をインストー
ルします。WINDOWS\SYSTEM ディレクトリはネットワークディレクトリであり、
そこに何か別のものをインストールするなら書き込み可能にする必要があるこ
とを覚えておきましょう。多くのソフトウェアはサーバの利用するインストー
ル方法を認識しないこと、そして使えるパッケージを使えるようするには少
し取り組まなくてはいけないことを注意しておいてください。

Windows の設定ができたら、 Windows ディレクトリのすべての
内容をサーバ(１メガバイトより小さくなるはずです)にコピーします。違った
設定が必要なら、別々のディレクトリを使いなさい。たとえばわれわれは、

<tscreen><verb>
SOFTWARE:BOOT\WINDOWS\ASSIST31
SOFTWARE:BOOT\WINDOWS\HPVECT31、 
SOFTWARE:BOOT\WINDOWS\BRAVO31
</verb></tscreen>

このように３つの違った設定を使っています。


<sect2>ブートディスクを作る
<p>
  あなたのサーバにあるのと同じ DOS のバージョンで、新しいブート可能な
フロッピーを作りましょう。メモリマネジャ、デバイスドライバ、そしてその
上にあるネットワークドライバをコピーします。以下はわれわれのフロッピー
の内容です。

<tscreen><verb>
CONFIG   SYS    (contents listed below)
HIMEM    SYS
ANSI     SYS
COUNTRY  SYS
BPUTIL   SYS    (TCP/IP Bootprom utility)
KEYBOARD SYS
MTMCDAI  SYS    (CD-ROM driver)
AUTOEXEC BAT    (contents listed below)
PTASSIST BAT    (contents listed below)
DOSKEY   COM
IPX      COM
KEYB     COM
PKT8000  COM    (SMC EtherEZ packet driver)
COMMAND  COM
BPUTIL   COM    (TCP/IP Bootprom utility)
EMM386   EXE
NETX     EXE    (Netware client)
SETVER   EXE
SHARE    EXE
       19 fichier(s)        507'247 octets
</verb></tscreen>

  われわれの config.sys は次のようになっています。

<tscreen><verb>
rem Fix memory allocation for use with EMM386
DEVICE=A:\bputil.sys -f

rem Note: SMC PROM at CA00-D1FF, RAM at C800-C9FF.
rem       The PROM space can be recovered since the ramdisk is already loaded.
DEVICE=A:\HIMEM.SYS
DEVICE=A:\EMM386.EXE NOEMS /Y=v:\EMM386.EXE I=B000-B7FF X=C800-C9FF I=CA00-EFFF

BUFFERS=30,0
FILES=60
DOS=UMB
LASTDRIVE=E
FCBS=16,0
DOS=HIGH
switches /f /n
BREAK=OFF
SHELL=COMMAND.COM /P /E:1024
COUNTRY=041,,COUNTRY.SYS

DEVICEHIGH=SETVER.EXE
DEVICEHIGH=ANSI.SYS
DEVICEHIGH=MTMCDAI.SYS /D:CDROMIDE
</verb></tscreen>

 autoexec.bat は DOS を設定します。

<tscreen><verb>
@ECHO OFF
CLS
PROMPT $P$G
SET TEMP=c:\
SET TMP=C:\
SET PTASSIST=YES
SET FTPVER=3.1
SET DDUR=NON
LH KEYB SF,,KEYBOARD.SYS
LH DOSKEY /INSERTcompliant
LH DOSKEY H=DOSKcompliantEY /HISTORY
LH SHAREcompliant
ptassist.bat
</verb></tscreen>

  ptassist.bat はネットワークを始動します。

<tscreen><verb>
@ECHO OFF
CLS
LH PKT8000 0x65 0x280 0x0b 0xC800
LH IPX
LH NETX
CLS
:loginplease
F:
LOGIN SC1NOV1/
if "%pctcp%"=="" goto loginplease

LH MSCDEX /E /D:CDROMIDE
LH H:\software\win3.1\smartdrv a-
rem Remove boot RAMDISK
cd \login
copy a:\ptassist.bat C:\
subst a: C:\
F:\login\remboot.bat
</verb></tscreen>

  PCTCP 変数がシステムログインスクリプトによって設定されます。ユーザが
間違ったログインネームを与えると、変数は設定されず、もう一度プロンプト
がでます。

  ドライブ A: がブートの完了時点で突然消失するので、エラーを避けるため
にわれわれが注意していることがあります。 バッチファイル rmboo.bat が 
boot ramdisk を無効にします。

<tscreen><verb>
@ECHO OFF
rem restore TCP-IP bootprom memory and floppy drive a:
F:\login\bputil.com -r
rem effectuer les copies des fichiers sur la machine en local
F:\login\startwin.bat
</verb></tscreen>

  以下に示すのは、必要な場合( startwin.bat を使って)クラ
イアントマシンに自動的に Windows 3.1 をインストールする方法です。

<tscreen><verb>
@echo off
cls
echo Please wait, preparing your computer for Windows 3.1

  c:
  cd \
  if exist c:\windows\win.com goto WindowsAlreadyHere
  md netscape &gt; nul
  md windows &gt; nul
  if "%PTASSIST%"=="YES" ncopy software:software/netscape/16bit/local.v20/netscape\*.* c:\netscape /s &gt; nul
  if "%HPVECTRA%"=="YES" ncopy software:software/netscape/16bit/local.v20/netscape\*.* c:\netscape /s &gt; nul
  if "%ASTBRAVO%"=="YES" ncopy software:software/netscape/16bit/v1.22/copy\*.* c:\netscape /s &gt; nul
  if "%PTASSIST%"=="YES" ncopy software:boot/windows/assist31\*.* c:\windows &gt; nul
  if "%HPVECTRA%"=="YES" ncopy software:boot/windows/hpvect31\*.* c:\windows &gt; nul
  if "%ASTBRAVO%"=="YES" ncopy software:boot/windows/bravo31\*.* c:\windows &gt; nul
:WindowsAlreadyHere
  map s6:=c:\
  map s12:=c:\windows
  ethdrv
  bootpact

subst a: /D
cls
echo Some usefull commands:
echo - to start Windows 3.1 ................................ WIN
echo - to unload TCP/IP (and get more free memory) ......... INET UNLOAD
</verb></tscreen>

  ethdrv コマンドは FTP ソフトウェアの TCP/IP ドライバをロードします。
その後われわれは BOOTPTAB ファイルを使い、BOOTPTAB ファイルの内容に従っ
てマシンの IP アドレスを設定します。

  Windows のディスクトップをカスタマイズもできるのを知っておいてくださ
い。われわれはユーザのそれぞれの授業でデスクトップをカスタマイ
ズできるように、 PROGMAN.INI ファイルにグループを追加する小さなプログ
ラムを書きました。たとえば、ユーザが SMALLTALK 環境変数を設定すれば、
startwin.bat はその環境に Smalltalk プログラムを追加します。

   bootdisk が一旦用意できれば、TCP/IP Bootprom の BPSHELL を使ってそ
のイメージを作成します。そうすれば完了です。


<sect1>Windows 95 を設定する
<p>
  基本的に、 Windows 95 に対する設定は前述のものととてもよく似ています。
しかし、Windows 95 は想定しているようには動かないので詳細を記した構築
方法を書きます。ほんの少し変更するだけでも、驚くほど結果が違ってしまい
ます。うまくいかなくても、われわれが設定の作業をするために１月半かけた
ことを忘れないでください。１週間ほどの余裕を見ることは悪いことではない
でしょう。

その他の役立つ情報には次のものがあります。

<itemize>
<item>Windows 95 のリソースキットはお手持ちの CD-ROM のなかの
   \Admin\Reskit\Reskit.HLP 
<item>Joe R. Doupnik の経験
<item>Microsoft の web site
</itemize>

  この文書は常に更新されているのを忘れないでください。Windows 95 を取
り扱う時、最悪なものは Plug-and-Play と言われるものです。これはたぶん将
来的にはよりいいものでしょうが、実際のところ現在はいいものではありませ
ん。個人的なヒントとしては、できるなら無効にすることです。無効にしたく
ないものはいつもたくさんあるでしょうが。


<sect2>サーバのインストール
<p>
  ここでは Windows 3.1 で従来から使われている INSTALL /A に相当す
る作業を実行する方法について述べます。

  Windows 95 を動作させるマシンで次のように開始します。

<tscreen><verb>
admin\nettools\netsetup\netsetup.exe
</verb></tscreen>

<enum>
<item>パス設定をクリックし、\\server\volume\directory というような表記を
使って、Windows 95 をインストールしたい場所を入力します。われわれは
\\sc1nov1\software\software\win95 としています。

<item>Install をクリックし、サーバのラジオボタンを選択すれば OK です。

<item>われわれはやはり手動でやるのでスクリプトを作らないボタンをクリック
します。

<item>製品の ID を求められたら、シリアル番号を答えず、かわりに 950R6 を使
います。Doupnik の文書でこのしかけを見つけました。こうすることでサーバ
の基礎作りの設定中に起こる多くのトラブルを防ぎます。

<item>netsetup はネットワークドライブに Windows 95 をインストールします。

<item>Exit ボタンをクリックします。
</enum>

  ここで MS-DOS 窓を開き、Windows 95 がインストールされたネットワーク
ディレクトリに移動します。属性をプロテクトにしていない msbatch.inf を
使い、それを編集します(ついでに、 msbatch.inf は Netsetup を作らないよ
うにしたセットアップスクリプトです)。

<tscreen><verb>
H:
cd \SOFTWARE\WIN95
attrib msbatch.inf -R
edit msbatch.inf
</verb></tscreen>

  あなたは次の例と正確に一致するようにしなければなりません。
NameAndOrg の部分だけは変更しないといけません。

<tscreen><verb>
&lsqb;Setup&rsqb;
Express=0
InstallType=3
Verify=0
CCP=0
ProductID=950R6
ProductType=1
Uninstall=0

&lsqb;Network&rsqb;
WorkstationSetup=1
DisplayWorkstationSetup=1
HDBoot=0
RPLSetup=0
SaveSUBoot=1
display=1

&lsqb;NameAndOrg&rsqb;
Name="CUI"
Org="University of Geneva"
</verb></tscreen>

  さて、これでサーバのインストールは終了です。
これからクライアントを設定しなければなりません。

<sect2>マシンの設定
<p>
  ここでは Windows 3.1 から、従来から使われている INSTALL /N を行う方
法について述べます。

  クライアントマシンになる１台について、いつも使っている DOS ネットワー
ククライアントで MS-DOS をブートします。ハードディスクからでも、
bootprom からでもなく、適切なフロッピーディスクからブートします。少な
くとも Windows 95 のディレクトリに読み出しアクセスでサーバにログインし
なさい。このディレクトリに移動し、パラメータなしでセットアップを始めま
す。

<tscreen><verb>
H:
cd \SOFTWARE\WIN95
setup
</verb></tscreen>

  しばらく待って Microsoft ライセンスに同意し、セットアップを始めるた
めに Next をクリックします。

<enum>
<item>Network サーバから Windows をセットアップを起動する選択し、次に進み
ます。

<item>フロッピーディスクから Windows を始動する、を選択し、次に進みます。

<item>マシンのディレクトリとして C:\WIN95 を使い、Next をクリックします。

<item>すると、Setup はハードディスク上の temporary ファイルをコピーします。

<item>カスタムインストールを選択し、 Next をクリックします。

<item>あなたの名前と属する組織の名前を入力します。すでに適当なものが入力
されているなら、Next をクリックします。

<item>次に Windows はデバイスを走らせるために許可属性を尋ねます。われわれ
の経験ではネットワークカード(これはたぶん SMC カードでの問題です)を走
らせるのを Windows の設定にまかせるとコンピュータをハングさせます。そ
こで、No と答え、変更したいと答えるのがよいのです。そして Next をクリッ
クします。ネットワークセクションを選択せず、ネットワークアダプタの名前
を正確に再度選択します。そして次に進みます。

<item>われわれは Microsoft に接続したくないので、ここは答えません。次に行
きます。

<item>あなたの望むように選んで次に進みます。

<item>ネットワークの設定をします。リストボックスの目次は Setup で検出
された現在の設定になっているでしょう。われわれは Netware に対して 
Microsoft クライアントを使います。もしかわりに Monolithic NETX がリス
トされているなら、バックしてそれを除き、次にいきます。そうすれば 
Microsoft クライアントが自動的に現われます。もしそうならないならリスト
ボックスに入るまで、数分かけましょう。

 <itemize>
 <item>お使いのネットワークアダプタ
 <item>IPX
 <item>Netware に対する Microsoft クライアント
 </itemize>

<item>Netware Networks に対するクライアントの上でダブルクリックし、あな
たが望むように(われわれは SC1NOV1 を使用) 選んだサーバを設定します。

<item>IPX/SPX (<ref id="ipx-spx" name="#">) 互換プロトコルをダブルクリックし、
適当なフレーム (<ref id="frame" name="#">) のタイプ
(データリンク層のプロトコル) (Advanced という項目の下にある)を選択しま
す。われわれは Ethernet II を使用しています。



<item>SMC EtherEZ を使っているなら、SMC EtherEZ をクリックし、検出するた
めに設定( Resources という項目の下にある)を変更します。

<item>さらに Protocol、 Microsoft、 TCP/IP をクリックします。それを設定
するのに時間をかけてはいけません。どのように設定するのも自由です。

<item>次をクリックします。

<item>お使いのコンピュータを確認をします(重要ではない)、次をクリックします。

<item>モニターのタイプを設定し、次をクリックします。お使いのモニターがリ
ストのなかで見つからないなら、もっとよいものを望まなくても、Standard
SVGA 1024x768 を選ぶか、あまり標準的でない解像度を使いたいなら他のものを試
します。われわれはモニターは Prostar 17" ですが、 Sony 17" を選択して
います。
</enum>

 次に Setup はハードディスクに Windows 95 のローカル部分をインストール
します。しばらくすると、新しいフロッピーを要求されます。それが Windows
95 のブートディスクになります。促されたら終了をクリックをし、しばらく
待って、コンピュータを消します。

<footnote><label id="frame">
# frame： データリンク層の転送単位。
</footnote>
<footnote><label id="ipx-spx">
# IPX(Internet Packet eXchange) Novell 社の Neware 製品でサポートして
いるインターネットプロトコルのひとつ。IPX は IP プロトコルと類似したも
の。Linux IPX-HOWTO と Linux NET-2-HOWTO を参考してください。
</footnote>
<footnote>
# SPX (Sequenced Packet Exchange) コネクションオリエンテッドの
トランスポート層のプロトコルで、IPX (Internet Packet Exchange) の
クライアント（の一つ）。
</footnote>


<sect2>整備します
<p>
  MS-DOS (別のコンピュータであってもいい)で、Windows 95 のブートディス
クから autoexec.bat を編集します。セットアップはあまりスマートではない
ので、致命的なエラーがあります。次に示す３行で setmdir を置き換えなさ
い。

<tscreen><verb>
setmdir /R:C:\WIN95
set temp=C:\TEMP
set tmp=C:\TEMP
</verb></tscreen>

  最初の行が主要な変更点です。Registery of Secrets が見つける場所を 
Windows に教えます。 /R なしだと、クライアントはハングするでしょう。他
の２行はインストールが、お使いのマシンのディレクトリをいっぱいにしてし
まうのを避けるためです。

  Windows 95 のブートディスクでクライアントマシンをブートします。
Netware サーバにログインし、しばらくすると自動的にセットアップが始まり
ます。Windows 95 は DHCP (<ref id="dhcp" name="#">) request に答えを受けない
ことについて説明する
かもしれません。それは心配いりません。もう一度 Netware サーバにログイ
ンしなさい。Windows のパスワードを入力するのを求められたら、upper 領域
をクリアし、 OK をクリックしなさい。そうすれば Windows は再度聞いてこ
ないでしょう。それから Setup はいくつかの作業をして、タイムゾーンの設
定に進みます。それからお使いのネットワークプリンタを設定し、もう一度マ
シンをリブートします。

  Windows 95 のブートディスクでクライアントマシンをブートします。
Netware サーバにログインし、 Windows 95 が起動し、ウェルカムウィンドウ
が閉じるまで待ちます。最良の可能な解像度を得るために、適切なビデオカー
ドアダプターを設定しなくてはいけません。われわれは S3 アダプターとよい
モニターを持っていますが、Windows 自身は 1024x768 しか得られません。

  お使いのアダプターの制作会社から ftp で直接ドライバを取得してください。
ソフトウェアはネットワークの基礎を作る設定をほとんどされていないので、
あなたはたぶん MS-DOS 窓を使って手動でシステムファイルをサーバの 
Windows 95 のシステムディレクトリ(われわれの場合では 
H:\software\win95\system になります)にコピーしないといけないでしょう。
次にスタートメニューからコントロールパネルを開き、Display 、設定、変更
を選択します。 Adapter type を設定する画面で、変更を選択し、ディスクを
いれて、 OK にします。適当なアダプターのインストールを終了し、窓を閉じ、
リブートします。

  Windows 95 のブートディスクでクライアントマシンをブートします。
Netware サーバにログインし、Windows 95 が起動するのを待ちます。ここで 
Microsoft TCP/IP を設定します。 Onnet TCP/IP を使用しますが、われわれ
は Windows 95 のネットワークを基礎づけるインストールでそれを動かすこと
ができないことに注意してください。スタートメニューからコントロールパネ
ルを開き、 TCP/IP を選択します。 IP アドレス Specity を選択し、あなた
の IP アドレスと subnet mask を入力します。Gateway には、デフォルトの 
gateway を設定します。DNS には、DNS を有効にし、あなたのホスト名とドメ
イン名、そして DNS サーバがあればそのサーバとドメイン search リストを
入力します。 全部できたら、OK をクリックし、ネットワーク設定のコントロー
ルパネルを閉じます。DNS が動かないことを除いて、TCP/IP が設定されてい
るはずです。

  さてここで、われわれはサーバを利用するセットアップの別のバグをさら
にちゃんとしなければなりません。スタートメニューから、RUN を選び、そし
て、REDEDIT と入力します。こうすれば Windows 95 のレジストリ
を編集できます。 HKEY_LOCAL_MACHINE, System, CurrentControlSet,
Services, VxD, MSTCP を開きます。このブランチのすべてのサブフィールド
で、あなたのサーバ Windows 95 のシステムディレクトリで一連の %WINDIR% 
に置き換えます。
われわれの場合では、 HelperDIIName を変更し、
H:\software\win95\system\wsock32.dll に ProviderPath を変更しました。
regedit を閉じます。DNS レゾルバは次に Windows 95 を起動する時動くように
なっています。

  好みにあわせてデスクトップをカスタマイズします。追加のソフトウェアを
インストールすることができますが、悪魔のしっぽを引っ張っるようなことを
してはいけません。たとえば、最初に Microsoft Office をインストールする
ようなことはしてはいけません。この件に関しては後で述べる詳細情報を見て
ください。

<footnote><label id="dhcp">
# DHCP (Dynamic Host Configuration Protocol)： DHCP は BOOTP をベース
にしたもので BOOTP を置き換える（RFC1541）。
DHCP,DHCPd mini-HOWTO があります。
</footnote>

<sect2>サーバコンフィグレーションを保存する
<p>
  セットアップがうまくいったなら、Windows 95 のブートディスクでコンピュー
タをリブートし、始動時に F8 キーを押します。ブートメニューが表示されま
すので、Command prompt only を選択します。書き込み可能アクセスでサーバ
にログインし、そしてDOS プロンプトが出るまで待ちます。

  それをあとで復帰できるようにするため、サーバ上のディレクトリにすべて
の利用できるものを保存したいわけです。次に示す２つの問題があります。

<enum>
<item>隠しファイルばかりでなく、属性がプロテクトにできない隠しディレクト
リもあります。

<item>ロングファイルネームの問題があります。そしてわれわれは Novell サー
バ上ではそれを望みません。
</enum>

  隠しにするべき必要は何もないので、最初の問題を取り除くもっとも簡単な
方法はカレントディレクトリからすべてのファイルを隠しにしないようにする
小さなプログラムを動作させます。

  一度すべてのファイルを見ることができれば、cleanup しましょう。
C:\WIN95 に移動し、以下のものを取り除きます。

<itemize>
<item>SUBOOT ディレクトリはあなたのブートフロッピーと同じものを含んでいます。

<item>SYSBACKUP ディレクトリは以前のさまざまな設定を含んでいます。

<item>スワップファイルが自動的に作成されます。

<item>すべての BAK、TXT、 DOI ファイルは不用です。

<item>PWL ファイルは Netware のパスワード(少し記号化されたもの)
   を含んでいます。
</itemize>

  設定を保存するためにサーバのどこかに新しいディレクトリを作ります。わ
れわれは H:\SOFTWARE\WIN95\PTASSIST に置いています。内部に WIN95 サブ
ディレクトリを作り、たとえば xcopy を使って、このディレクトリに 
C:\WIN95 のすべてのものをコピーします。

  ロングファイルネームを保存するためにわれわれが発見した最もよい方法は、
DOSLFNBK プログラムを使うことでした。それは DOS の下で動く以外 
Microsoft LFNBK と本質的に同じものです。すなわち、たとえ Windows 95 を
動作させていなくても、ロングファイルネームを保存できます。われわれはそ
れを

<tscreen><verb>
H:\SOFTWARE\WIN95\DOSLFNBK
</verb></tscreen>

このサブディレクトリから使っていて、ここにはロングファイルネームが保存
されています。

<tscreen><verb>
doslfnbk c:\ /f original /v /d original
</verb></tscreen>

これは ORIGINAL.LFN というファイルにすべてのロングファイルネームを保存
し、ORIGINAL.LOGというファイルにログを書き出します。あなたがちょっと
違った設定を使いたいなら、これらのファイルをよりふさわしい名前にリネー
ムしてください。

<sect2>ブートディスクを完了する
<p>
最終のブートディスクイメージを準備するために用意しましょう。
autoexec.bat をこのように変更します。

<tscreen><verb>
@echo off
mode con codepage prepare=((850) ega.cpi)
mode con codepage select=850
keyb sf,,keyboard.sys
snapshot /S /M:100
net start NWRedir
net use * /d
cls
net use F: \\SC1NOV1\SYS
net use H: \\SC1NOV1\SOFTWARE
PATH=H:\SOFTWARE\WIN95\;H:\SOFTWARE\WIN95\COMMAND
set comspec=h:\software\win95\command.com
set PTASSIST=YES
f:\login\start95 
</verb></tscreen>

   DOSLFNBK は 大きなツリーを回復するのにたくさんのメモリを必要とする
ので、われわれはスナップに付加的なパラメータを加えることで network ド
ライバに対してより少ないメモリを予約します。さらに設定を使うために連続
スクリプト start95.bat に伝える環境変数 PTASSIST を加えました。このス
クリプトはここに示します。

<tscreen><verb>
@echo off
cls
echo Please wait, preparing your computer for Windows 95

c:
if exist c:\win95\win.com goto norestore
cd h:\software\win95

if "%PTASSIST%"=="" goto noptassist
xcopy h:ptassist\*.* c:\ /s /e &gt; nul
rem --- Next line should be run on a writable dir. C: will do fine
echo y | lock c: &gt; nul
rem --- Have enough memory for this (350 Kb !). May use SNAPSHOT /S /M:100
h:doslfnbk\doslfnbk c:\ /r /f h:doslfnbk\ptassist &gt; nul
unlock c:
h:reg\bootpreg h:reg\ptassist.reg c:\win95\patch.reg
:noptassist

cd \win95
regedit /L:system.dat /R:user.dat patch.reg
rem --- Don't forget this, or Win95 will shut down the computer !
cd h:\

:norestore
cd \
rem --- Disable BootProm
f:\login\bputil -r
setmdir /R:C:\WIN95
set temp=c:\temp
set tmp=c:\temp
</verb></tscreen>

  このスクリプトは基本的に Windows 3.1 に対する startwin.bat と同様で
す。ファイルはサーバから戻され、ロングファイルネームを復旧させます。次
の段階は IP 設定のカスタマイズです。すべての IP パラメータはレジストリ
に保存されているので、それらをカスタマイズする最も簡単な方法は適当な値
で小さなテキストファイルを作り、MS-DOS モードで Microsoft REGEDIT を使っ
てレジストリにそれを取り込むことです。理論的には、このテキストファイル
は TCP/IP Bootprom から BPUTIL ユーティリティ を使って簡単に作ることが
できます。

  不運にも、PnP は存在し、そして IP パラメータを
設定するには十分ではあ
りません。Windows 95 が始動する時、最初に現在のハードウェアに正確に適
合しないレジストリに関するすべての情報を捨てます。とりわけ、もしそのレ
ジストリが同じイーサネット(MAC)アドレスに関係しない記述であれば、ネッ
トワークカードについてのすべての情報を捨ててしまいます。それから別のも
のを見つけるためにネットワークカードのすべての可能なタイプを調べ、そし
てこのことがあなたのコンピュータをハングさせます。なんて素敵なことでしょ
うか！つまり、われわれはネットワークカード記述へのパッチもまた持ってい
るのです。
  われわれは同時にすべてを変更する BOOTPREG という小さなプログラムを書
きました。このプログラムをコンパイルするために開発キットに関する Dirk
Kpen EDV が必要になるだろうことを覚えておいてください。このプログラ
ムは BOOTP reply あるいはハードウェア記述のいずれかからも関連情報を 
BOOTPREG:tagname の形にすべてのタグを変換します。

(訳注) PnP (Plug-and-Play)：
 Linux Plug-and-Play FAQ は次のところにあります。
 http://www.redhat.com/pnp/ 


以下はわれわれの registery パッチファイルです。

<tscreen><verb>
  REGEDIT4

  &lsqb;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0001&rsqb;
  "DriverDesc"="TCP/IP"
  "IPAddress"="BOOTPREG:IP:"
  "IPMask"="BOOTPREG:NETMASK:"
  "InfPath"="NETTRANS.INF"
  "DevLoader"="*ndis"
  "DeviceVxDs"="vtdi.386,vip.386,vtcp.386,vdhcp.386,vnbt.386"
  "DefaultGateway"="BOOTPREG:T129:"

  &lsqb;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP&rsqb;
  "ComputerName"="BOOTPREG:MACHINE:"
  "Workgroup"="University"
  "Comment"="CUI"

  &lsqb;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP&rsqb;
  "LMHostFile"="C:\\WIN95\\lmhosts"
  "NodeType"="1"
  "EnableDNS"="1"
  "HostName"="BOOTPREG:MACHINE:"
  "Domain"="unige.ch"
  "SearchList"="unige.ch"
  "NameServer"="129.194.4.6,129.194.4.32,129.194.8.7"
  "Lanabase"="0"

  &lsqb;HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName&rsqb;
  "ComputerName"="BOOTPREG:MACHINE:"

  &lsqb;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Arbitrators\AddrArb&rsqb;
  "0000"="00000000-000D1FFF,000E0000-000FFFFF,80000000-81FFFFFF"

  &lsqb;HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\BOOTPREG:MACID:C0&rsqb;
  "HardwareID"="*SMC8416,ISAPNP\\SMC8416"
  "HWRevision"="1.0.10"
  "DeviceDesc"="SMC EtherEZ (8416)"
  "Class"="Net"
  "Driver"="Net\\0000"
  "CompatibleIDs"="*SMC8416"
  "Mfg"="SMC"
  "ConfigFlags"=hex:10,00,00,00

  &lsqb;HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\BOOTPREG:MACID:C0\LogConfig&rsqb;
  "0000"=hex:00,04,00,00,00,20,00,00,10,00,00,00,04,00,00,00,00,00,00,00,a8,0e,\
    00,00,20,00,00,00,02,00,00,00,01,00,0c,00,00,00,00,00,00,00,00,00,e0,ff,20,\
    00,40,02,ff,03,00,00,04,03,2c,00,00,00,01,00,00,00,01,00,14,00,00,00,00,00,\
    00,00,00,00,00,00,00,00,00,e0,ff,ff,00,20,00,00,00,00,0c,00,ff,ff,0f,00,00,\
    00,00,00,2c,00,00,00,01,80,00,00,01,00,14,00,00,00,00,00,00,00,00,00,00,00,\
    00,00,00,e0,ff,ff,00,80,00,00,00,00,0c,00,ff,5f,10,00,00,00,00,00,00,00,00,\
    00

  &lsqb;HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\BOOTPREG:MACID:C0\Bindings&rsqb;
  "NWLINK\\0000"=""
  "MSTCP\\0000"=""

  &lsqb;HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\BOOTPREG:MACID:C1&rsqb;
  "HardwareID"="*SMC8416,ISAPNP\\SMC8416"
  "HWRevision"="1.0.10"
  "DeviceDesc"="SMC EtherEZ (8416)"
  "Class"="Net"
  "Driver"="Net\\0000"
  "CompatibleIDs"="*SMC8416"
  "Mfg"="SMC"
  "ConfigFlags"=hex:10,00,00,00

  &lsqb;HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\BOOTPREG:MACID:C1\LogConfig&rsqb;
  "0000"=hex:00,04,00,00,00,20,00,00,10,00,00,00,04,00,00,00,00,00,00,00,a8,0e,\
    00,00,20,00,00,00,02,00,00,00,01,00,0c,00,00,00,00,00,00,00,00,00,e0,ff,20,\
    00,40,02,ff,03,00,00,04,03,2c,00,00,00,01,00,00,00,01,00,14,00,00,00,00,00,\
    00,00,00,00,00,00,00,00,00,e0,ff,ff,00,20,00,00,00,00,0c,00,ff,ff,0f,00,00,\
    00,00,00,2c,00,00,00,01,80,00,00,01,00,14,00,00,00,00,00,00,00,00,00,00,00,\
    00,00,00,e0,ff,ff,00,80,00,00,00,00,0c,00,ff,5f,10,00,00,00,00,00,00,00,00,\
    00

  &lsqb;HKEY_LOCAL_MACHINE\Enum\ISAPNP\SMC8416\BOOTPREG:MACID:C1\Bindings&rsqb;
  "NWLINK\\0000"=""
  "MSTCP\\0000"=""

  &lsqb;HKEY_LOCAL_MACHINE\TempKey\System\CurrentControlSet\Services\VxD\VNETSUP&rsqb;
  "ComputerName"="BOOTPREG:MACHINE:"
  "Workgroup"="University"
  "Comment"="CUI"

  &lsqb;HKEY_LOCAL_MACHINE\TempKey\System\CurrentControlSet\Control\ComputerName\ComputerName&rsqb;
  "ComputerName"="BOOTPREG:MACHINE:"
</verb></tscreen>


  ご覧頂いたように、ネットワークカードは２度記述されています。これは設
定された方法によるからであり、C0 で１度、C1 で１度、PnP スキャンに少し
違った反応します。

  あなたはたぶんこのファイルを直接的に使いたくないでしょうが、ご自身の
ネットワークカードにそれをあてはめなければならないでしょう。もっともさ
さいなことがハードウェア設定を変更するなら、Windows 95 は変更を検出し、
デバイスを捨てます。たとえば、 Bootprom を有効にすれば、
LogConfig 部分が変更になるので、Bootprom を有効(そしてスペースバーを押
すことで BOOTP を中止する)にする設定が必要になるかもしれません。

  お使いのコンピュータが PnP をサポートしているならものごとはかなり悪
くなります。すべてのアダプタ( SVGA、 network、 Soundblaster、 Mouse な
ど)はすべてのクライアントに対して同じスロットにさされなければいけませ
ん。そうでないと、PnP が動作するでしょうし、関連するデバイスに対してす
べて設定したことが失われるでしょう。ついでながら、PnP マウス検出は わ
れわれの Logitech マウスでは動きませんでした。これが最後(が、とりわけ
最後)の段階ですることです。ここで、あなたの Windows 95 のブートディス
クは準備が整っています。BPSHELL を使ってそのイメージを作り、そして祈り
ましょう。


<sect2>追加のソフトウェアをインストールする
<p>
  追加でソフトウェアをインストールする予定なら、前述の設定を使ってマシ
ンを新規に始動し、ソフトウェアを追加します。そしてはじめての時(XCOPY 、
それから DOSLFNBK)と同様設定を保存します。

  Windows 95 に MS-Office をインストールする予定なら、サーバを利用する
インストールを使いたいでしょう。問題なく動くでしょうが、２つの問題に注
意した方がいいです。

<enum>
<item><p>
クライアントインストールを動作させる前に、小さなバグをちゃんとすべ
きです。MS-DOS 窓を開き、attrib を使って vredir.vxd ファイルからプロテ
クトをはずします。そうでないとセットアップは失敗します。

<tscreen><verb>
 attrib H:\software\win95\system\vredir.vxd -R
</verb></tscreen>
</p></item>

<item><p>
インストール終了後、クライアントはフロッピーディスクからブート可能
になりますが、MS-Office のセットアップがレジストリをぐちゃぐちゃにする
ので Bootprom からはもう何もおこりません。われわれが見つけた唯一の解決
方法は隠しファイル(ハードディスクにある SYSTEM.DAT や USER.DAT) を コ
マンドラインモード(ブートにF8 キーを使って)でこのコンピュータを始動し、
レジストリのテキスト出力をする REGEDIT を使うために、Windows 95 が動作
している別のコンピュータにコピーすることです。MS-Office をインストール
する前後にやりなさい、そして、２つの間ですべての違いを含むファイルを作
ります。
</p></item>
</enum>

  理屈でいえば、 MS-Office で動くレジストリを得るために、 MS-Office な
しにこの差分ファイルをレジストリに取り入れることができるはずです。不運
にも、この取り込みはレジストリが REGEDIT に対してはあまりにも大きくなっ
ているので、たぶんうまくいかないでしょう。差分ファイルを２つの部分に分
割し、そしておのおのの別々に取り込みなさい。もしひとつの部分が失敗する
なら、再度２つに分け、そしてすべてが取り込まれるまで(われわれが取り込
んだ最後の部分はたった１行だった)繰り返します。

  完了したら、MS-Office に対する必要な情報をすべて含んでいるレジストリ
を持つことになりますが、セットアップで作られたひとつのものよりも小さい
ものになるでしょう。そうすれば、それで bootprom と一緒に動作するでしょう。

  netscape をインストールするつもりなら、ネットワークインストールは利
用できないことを注意しましょう(次の版ではそれができるでしょう)。ローカ
ルにインストールすることでネットワークディレクトリにすべてのバイナリを
コピーし、そして、ネットワークドライブを指すように、レジストリ(Windows
95 モードで REGDIT を使って)ですべてのパスを変更し、手動でやればできま
す。


<!--#################### section 3 #####################################-->


<sect>検討
<p>
  われわれの設定に関係する問題を議論します。

<sect1>bootprom 対 ハードディスク
<p>
  bootprom は以前からありましたが、通常はディスクレスコンピュータに対
してだけ使われています。われわれの意見では、 bootprom は双方にとって利
点があるので、ローカルハードディスクを持つコンピュータにとってもより関
心の高いものです。

<itemize>
<item>bootprom はコンピュータはいつも同じ方法でブートし、ウイルス攻撃やパー
ティションテーブルを壊すようなことはしないので、より頑強な設定を作りま
す。われわれがやっているようにオペレーティングシステムをロードする前に
ハードディスクをきれいにしさえすれば利用することができます。

<item>ローカルのハードディスクは、キャッシュを通じて、効果的にスワップさ
せ、ネットワーク障害を減らすので、より効果的な設定になります。
</itemize>

<sect1>どのような bootprom を選ぶか
<p>
  数種類の bootprom が PC で利用できます。Koeppen EDV-Beratungs-GmbH 
から TCP/IP bootprom を選択したのはいくつかの理由がありました。

<itemize>
<item>BOOTP プロトコルは、RFC で公的に定義されている BOOTP プロトコルに根
拠をおいています。その定義は BOOTP サーバが知らないクライアントから 
request を受ける時、サーバは答えないと述べています。残念ながらあなたが 
MSD ブートサーバで経験したように、これが多くの部分からなるサーバの間で
妨害を避けます。さらに、IP ブロードキャストはローカルサブネットに限ら
れているので、それらの IPX 版よりも少ししかノイズを生じません。

<item>特別なオペレーティングシステムにつながっていない。

<item>請求すれば技術的な情報と API 情報が利用できる。

(ブートプロセスは多くの方法で制限をつけることができます。特に BIOS 
がこの型には含まれていない古いタイプの AST (<ref id="ast" name="#">) 
コンピュータで、フロッピー起動が先になるのを可能にしました。)

<item>(たとえば、DOS のメモリ管理に関して)最適な設定を可能にします。 

<item>ブートメニューを構築し維持するためにツール類が提供されています。
</itemize>

<footnote><label id="ast">
# AST は Dell や Compaq のような PC メーカの一つ
</footnote>

<sect>日本語訳について
<p>

<verb>
日本語訳：中谷千絵 jeanne@mbox.kyoto-inet.or.jp
23 Apr. 1997
</verb>

「訳注」以外に「用語説明」をつけました。# 印は用語説明。(用語集) と表示した
解説文は、「インターネット構築入門」(S. カールミッチェル, 
J.S.クォーターマン著：斉藤靖, 小山裕司訳, トッパン, 1995年) の「用語集」
(５３３頁から) を参照引用したものです。(インターネット構築入門) と記した
ものは本文を参考にしたもので、参考にした頁をつけました。
その他関連する HOWTO または mini-HOWTO などを記したものもあります。

日本語訳についての問い合わせは jeanne@mbox.kyoto-inet.or.jp

日本語訳は Linux-JF プロジェクトの次の方々から
多くのご助言を頂きました。ありがとうございます。

<verb>
Hiro Sugawaraさん hiro@arkusa.com
中野 武雄さん nakano@apm.seikei.ac.jp
伊藤　希さん  nozomi@biol.tsukuba.ac.jp
吉田英樹さん  hideki@isl.rdc.toshiba.co.jp
</verb>
</article>
