<!-- $Id: booting.sgml,v 1.5 1997-02-25 04:54:13 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.13 -->

<!-- This is a SGML version of the text on FreeBSD boot procedures
     made by Poul-Henning Kamp <phk@FreeBSD.ORG>
     
     This conversion has been made by Ollivier Robert.


<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">

  <article>

      <title>ブートの概要</title>
      <author>Poul-Henning Kamp, <tt/&lt;phk@login.dknet.dk&gt;/</author>
      <date>v1.1, April 26th</date>
      <abstract>
	FreeBSDのブートには基本的に3つの段階があります:
	カーネルの読み込み、ルートのファイルシステムの決定、そして
	ユーザ領域にあるものの初期化です。このことは下に述べる
	いくつかの興味深い可能性につながっているのです...
      </abstract>

    <toc>
-->

    <sect><heading>FreeBSDのブート処理の流れ<label id="booting"></heading>

       <p><em>原作: &a.phk;. v1.1, April 26th.</em>
       <p><em>訳: &a.nakai; September 6 1996.</em>

	FreeBSDのブートには基本的に3つの段階があります:
	カーネルの読み込み, ルートのファイルシステムの決定, そして
	ユーザ領域にあるものの初期化です. このことは下に述べる
	いくつかの興味深い可能性につながっています。
    
    <sect1><heading>カーネルの読み込み</heading>
      <p>
	現在, カーネルの読み込みには基本的に下に挙げる3つの方法が
	あります:
	これらはカーネルが次に何をしたらいいのかという情報をカーネルに
	与えます.

	<descrip>
      <tag>Biosboot</tag>

	  Biosbootは「ブートブロック」に相当するもので, 2つのファイル
	  から構成されており, フロッピーディスクやハードディスクのブートを
	  開始する側の 8K バイトにインストールされています。

	  Biosboot は FreeBSD のファイルシステムからカーネルを
	  読み込むことができます.

      <tag>Dosboot</tag>

           Dosbootは DI. Christian Gusenbauerによって書かれましたが,
	  不幸にしてこの場合には、コードのある一部分がマイクロソフトの
	  コンパイラ向けに書かれているため、FreeBSD 単体ではコンパイル
	  することはできません. 

           Dosboot は MS-DOS のファイルから、またはディスクの
          FreeBSD ファイルシステムのパーティションからカーネルをブートします。
          これは MS-DOS システムのハイメモリ領域に潜んでいるメモリマネージャ等の
          さまざまな怪しい代物とメモリの取り合いをして、なんとかブートしています. 

      <tag>Netboot</tag>

          Netboot はサポートされているイーサネットカードを検出し、
         BOOTP や TFTP、NFS を使ってブートするカーネルを探そうとします。

</descrip>


    <sect1><heading>ルートファイルシステムの決定</heading>
      <p>
       カーネルが読み込まれ、ブートプログラムがカーネルに移行したら, 
       カーネルは自身の初期化をし, どんなハードウェアが組み込まれいるか
       を決定し、それからルートファイルシステムを探さなくてはなりません。

       現在サポートされているルートファイルシステムは次の通りです :

<descrip>
      <tag>UFS</tag>

         UFS は, もっとも一般的なタイプのルートシステムです。
         フロッピーディスクやハードディスク上に存在します。

      <tag>MSDOS</tag>

	  技術的に可能ですが、あまり有用ではありません。なぜならば、
	  ``FAT''ファイルシステムではリンクやデバイスノードなどの
	  ``UNIX 主義''を実現できないからです。

      <tag>MFS</tag>

         MFS はカーネル内部に組み込みになっている UFS 
        ファイルシステムです。つまり MFS を機能させるのに
        ディスクやフロッピーディスクなどのハードウェアは
        必要ではありません. 


      <tag>CD9660</tag>

         CD9660 は CD-ROM をルートファイルシステムに使用したものです。

      <tag>NFS</tag>

	  これはルートシステムにファイルサーバを使用していて、基本的に
	  ディスクレスのマシンのためにあります。
</descrip>


    <sect1><heading>ユーザ領域にあるものの初期化</heading>
      <p>
	
	ユーザ領域で動作させるようにするために、カーネルが初期化を終えると、
	カーネルは``<tt/pid == 1/''のプロセスを生成し、ルートファイルシステム
	上のプログラムを実行します。このプログラムは通常``<tt>/sbin/init</tt>''
	です。

    /sbin/init を別なプログラム置き換えてしまうことは可能ですが、そのプロセス
    には以下のような制約があります:

	pid が 1 のプロセスには stdin/stdout/stderr は割り当てられていませんので、
	プログラムは自分でこれらをオープンしないとなりません。
	このプロセスが終了するとカーネルはパニックメッセージを表示して
	停止します。
	また、このプロセスに対するシグナル処理は特殊です。

	この例として、インストール用のフロッピーディスクにある
	``<tt>/stand/sysinstall</tt>''があります。


    <sect1><heading>興味深い連係</heading>
      <p>
	カーネルを MFS でブートするのには次のような特別の<tt>/sbin/init</tt>
	を使います。
        <descrip>	
          <tag/A -- DOS を使う場合/
            <itemize>
              <item><tt/C:/ を <tt>/C:</tt> にマウントします。
              <item><tt>C:/freebsd.fs</tt> を <tt>/dev/vn0</tt> にアタッチします。
              <item><tt>/dev/vn0</tt> を <tt>/rootfs</tt> にマウントします。
              <item>シンボリックリンクを作ります。<newline>
                <tt>/rootfs/bin -&gt; /bin</tt><newline>
                <tt>/rootfs/etc -&gt; /etc</tt><newline>
                <tt>/rootfs/sbin -&gt; /sbin</tt><newline>
                (etc...)<newline>
            </itemize>
            
	    これでハードディスクのパーティションを切り直さずに FreeBSD を
	    使うことができます。

          <tag/B -- NFS を使う場合/

            NFS は<tt>サーバ:&tilde;you/FreeBSD</tt> を
            <tt>/nfs</tt>にマウントし、ルートディレクトリを <tt>/nfs</tt> に変更して, 
            そこで<tt>/sbin/init</tt>を実行します。

	    これで FreeBSD をディスクレスで実行できますが、NFS サーバを
	    コントロールできないままです...

          <tag/C -- X-server を起動する場合/

	    これで Xターミナルが手に入りました. これは, これでハードウェア
	    に費用を割いたりするよりはいい, と上司が主張した, Windows で
	    動作する遅くて何がおこなわれているのか見ることができるような
	    すすけた X Window エミュレータなんかよりよいものです.

          <tag/D -- テープを使う場合/
	    <tt>/dev/rwd0</tt> のコピーを取って、リモートにあるテープ
	    ステーションやファイルサーバに書き込んでください。

	    これで一年前に取っておくべきだったバックアップをやっと
	    取ることができました。

          <tag>E -- ファイアウォール/Web サーバとして動作させる場合 (私の知っている範囲で...)</tag>

	    これは特に面白いもので、書き込み禁止のフロッピーディスクから
	    ブートができて、ルートのファイルシステムに書き込むことができる
	    というものです。
        </descrip>
