SYSINSTALL(8)

名称
sysinstall - システムのインストール及び設定のためのツール

書式
sysinstall [var=value] [function] [...]

解説
sysinstall ユーティリティは、 FreeBSD システムのインストールと設定のためのユーティリティです。 これは FreeBSD インストーラのブートフロッピが最初に起動するプログラムであり、 新規に FreeBSD システムがインストールされた時には /usr/sbin/sysinstall に、後のシステム設定で使用するためにコピーされます。

この sysinstall ユーティリティは、引数なしで起動された場合には既定のモードで動作します。 このモードでは、インストール及び設定のためのメニューが存在します。

しかし sysinstall のサブシステムを直接起動する必要がある場合には、 コマンドラインからそれを指定することもできます。インストールスクリプトを 実行することとコマンドラインからの指定はまったく同じことなので、 スクリプトの作成に関するセクションに目を通しておくと良いでしょう。

注
sysinstall ユーティリティは、 libdisk(3) の機能を用いて MBR やディスクラベルを書くことと、新規および既存の FreeBSD システムに、配布ファイルや package (訳注: FreeBSD の package system におけるパッケージを指す場合にこう表記します) をインストールすることができるモノリシックな C プログラムに過ぎません。 また、このプログラムは FreeBSD インストールのための起動処理の中で実行されたときのために、 init(8) の代用として動作するための機能も併せ持っています。 これは自分以外のユーティリティのサポートがほとんどないと仮定し、 ファイルシステム操作のほとんどを、(たとえば mount(2) のような) ユーティリティに相当するシステムコールを 直接呼び出すことによって行ないます。

sysinstall ユーティリティは現在のところ、 システムコンソールや、カラー表示をサポートした端末 エミュレータで起動した場合に単純な ANSI ライングラフィックスや色を 使った操作を実現するために dialog(3) を使用しています (xterm の新しいバージョンでは、termcap の “xterm-color” エントリを使用することでカラー表示をサポートします)。

このプログラムはそろそろライフサイクルの終わりに来ており、新しい ものによって置き換えられるかもしれません。

スクリプトの実行
sysinstall ユーティリティは、 そのさまざまなメニューを通じ対話的に操作することもできますし、外部の スクリプトによってバッチモードで動作させることもできます。 このような スクリプトを読み込んで実行する方法には以下の 3 通りがあります:

LOAD_CONFIG_FILE
    もし sysinstall が、環境変数 (または Makefile 中に) LOAD_CONFIG_FILE に何らかの値が セットされた状態でコンパイルされていれば、 sysinstall が非対話的なモードで起動された際に自動的に探して読み込むファイル名として その値が用いられます。このオプションは、大きなサイトにおいて、 ほぼ同じ設定とインストールオプションで、ひとつの雛型に基づき 多数のマシンにインストールしたい場合のためのものです。

メインメニュー
    sysinstall が対話的に起動された場合、すなわち既定の方法で起動された場合、オプション "load config file" を含むメインメニューを表示します。 このオプションを 選択すると、スクリプトファイル名を尋ねるプロンプトが出され、続いてその ファイルを DOS または UFS 形式のフロッピディスクから読み込みます。

コマンド行
    sysinstall がマルチユーザモードで動作している場合はコマンドライン引数のそれぞれが スクリプトの指示であるとして扱われます。 実行終了のリクエスト (たとえば shutdown 指示など)、引数列の終わり、エラー発生のいずれかにより実行は終了します。

    たとえば、

        /usr/sbin/sysinstall _ftpPath=ftp://ziggy/pub/ mediaSetFTP configPackages

    は、 sysinstall を、インストールメディア FTP (サーバは `ziggy') で初期化し、続いて package インストールエディタを起動し、それが終わると終了します。

スクリプトの文法
スクリプトはひとつ以上の指示のリストです。それぞれの指示は以下の形をとります。

var=value

function

#somecomment

var=value は、たとえば "ftpPass=FuNkYChiKn" のような、 sysinstall の内部変数の設定です。また、 function は、"mediaSetFTP" のような sysinstall の内部関数の名称であり、 #comment はドキュメンテーションのために挿入する一行のコメントです (sysinstall はこれを無視します)。 それぞれの指示は一行にひとつずつ書かれなければなりません。 関数は、既知の変数名を調べることで、その引数を得ます。 したがって、ある変数を必要とする関数を呼び出す前には、 関連する変数を予め設定しておく必要があります。

各ディレクティブの前に noError 変数を設定しておくことが可能です。 これにより、ディレクティブ自身は無視されるような場合においても、 エラーを検知可能とします。 noError の値は、ディレクティブが処理されるたび自動的に、 デフォルトの "未設定" に戻ります。

いつどの関数が、どの変数に依存するかを、 下の表に示します。

関数一覧:

configAnonFTP
    匿名 FTP の設定メニューを起動します。

    変数: 無し

configRouter
    使用したいルーティングデーモンを選択します。必要ならサードパーティの ものを使用することもできます。

    変数:

    router
        これには、たとえば “routed” や “gated” のように、希望するルーティングデーモンの名前を設定します。 設定されていなければ入力を求められます。

configNFSServer
    ホストを NFS サーバとして設定します。

    変数: なし

configNTP
    ホストをネットワークタイムプロトコルのユーザとして設定します。

    変数:

    ntpdate_flags
        これには、 ntpdate(8) のオプションを設定します。同期をとるために使用するサーバの名前は ここに設定してください。

configPCNFSD
    ホストを PC NFS をサポートするように設定します。

    変数:

    pcnfsd_pkg
        必要ならば PCNFSD の package 名を設定します (既定値としてハードコード されたものが使用されます)。

configPackages
    対話的な package 管理画面を起動します。

    変数: なし

configUsers
    システムにユーザやグループを追加します。

    変数: なし

diskPartitionEditor
    ディスクパーティション (MBR) エディタを起動します。

    変数:

    geometry
        シリンダ数/ヘッド数/セクタ数の形式で書かれたディスクジオメトリを 設定します。 既定値: ジオメトリを変更しません。

    partition
        ディスクパーティションのタイプやサイズを設定します。この値が free であれば、 FreeBSD のために使用可能な空き領域のみを使用します。 all であれば、ディスク全体を FreeBSD に割り当てますが、正しいパーティションテーブルを作成します。 existing であれば、既存の FreeBSD パーティションのうち、最初に見つかったものを使用します。 exclusive であれば、ディスクを、 “危険な方法で専用化された” モードで使用します。 最後に、 somenumber であれば、空き領域のうちの somenumber ブロックを新規の FreeBSD パーティションのために使用します。 既定値: 対話モードで起動します。

    bootManager
        は、次のどれかから選択する必要があります。 boot は、ブートマネージャのインストールを指示します。 standard は、ブートマネージャでない「標準の」DOS MBRのインストールを指示します。 none は、ブートマネージャに対して何の操作も行わないことを指示します。 既定値: none です。

    diskInteractive
        設定すると、対話的なディスクパーティションエディタを起動します。

    注意: この関数では実際のディスクへの書き込みは行われません。実際に 書き込みを行うためには、 diskPartitionWrite 操作を行う必要があります。

diskPartitionWrite
    は、MBR に対する、待ち状態にあるすべての変更を行います (一般には diskPartitionEditor によって呼び出されます)。

    変数: 無し

diskLabelEditor
    ディスクラベルエディタを起動します。 スクリプトから動かすのはちょっと手品のようになります。 というのも、 diskPartitionEditor 関数で作成された各 FreeBSD (タイプ 0xA5) パーティション中のすべてに対してラベルする必要が 本質的にあるためであり、 これはどのようにレイアウトされるかについての少数のルールを知る 必要があるためです。 スクリプトを作成して、 自動的にディスク空間の割り当てとパーティションを行う場合、 少なくとも一度はまず対話的にインストールを実行し、 スライス名がどうなるかを見てから、 これをスクリプトに埋め込むことをお勧めします。

    例えば、SCSI ディスクがあり、そのスライス 2 に FreeBSD を作成したとします (DOS パーティションはスライス 1 にあるとします)。 FreeBSD 全体のスライス名は da0s2 になります (DOS プライマリパーティションは da0s1 となります)。 更に、このパーティションに 500MB あり、 この空間をルートとスワップと var と usr のファイルシステムに 更に分割すると仮定します。 diskLabelEditor 関数呼び出しには、次の変数設定が伴うでしょう:

    da0s2-1=ufs 40960 /
        20MB ルートファイルシステム (すべての大きさは 512 バイトブロック数)。

    da0s2-2=swap 131072 /
        64MB スワップパーティション。

    da0s2-3=ufs 204800 /var
        100MB /var ファイルシステム。

    da0s2-4=ufs 0 /usr 1
        空き空間の残り (約 316MB) が /usr ファイルシステムで ソフトアップデートを有効にします (マウントポイント後の非 0 引数は、ソフトアップデートフラグ設定を意味します)。

    新規パーティションを作成するのと同様に、 既存のパーティションのマウントや消去に、 diskLabelEditor を使用可能です。 前の例の、DOS パーティションをマウントし、これに対応する /etc/fstab エントリを、新規インストールにおいて作成したいとします。 diskLabelEditor 関数の呼び出し前に、次の追加行を単に足せば良いです:

        da0s1=/dos_c N

    これは、最初のスライスを /dos_c にマウントしてこれを newfs しないよう、ラベルエディタに指示します ( sysinstall は DOS パーティションに対しては如何なる場合でも newfs を実行しません。 既存の UFS パーティションに対しても、ここに名前を書くことで実行できます。 2 番目のフィールドは省略不可です)。

    diskInteractive 変数を設定することにより、 前述のように変数を使用した明示的なレイアウトを行う代りに、 ディスクラベルエディタが対話的なダイアログを使用してディスクを分割するよう、 要求できます。

    注: diskLabelCommit が呼び出される前は、 ファイルシステムデータは実際にディスクに書き込まれません。

diskLabelCommit
    設定した、待ち状態であるディスクラベル情報をすべて書き込み、 diskLabelEditor でマウントを設定したすべてのファイルシステムをマウントします。

    変数: なし

distReset
    選択した配布ファイルのセットをリセットして、何も選択していない状態にします。

    変数: なし

distSetCustom
    配布ファイルセットの選択を、予め用意されたセットからの選択でなく、 非対話モードでも「カスタム」で行うようにします。

    変数:

    dists
        読み込む配布ファイルのセットのリストを設定します。 値として使用できるのは以下の通りです。

        base
            基本バイナリファイルのセット

        doc 様々な文書

        games
            ゲーム

        manpages
            フォーマット前のマニュアルページ

        catpages
            フォーマット済のマニュアルページ

        proflibs
            開発者のためのプロファイルされたライブラリ

        dict
            スペルチェックなどのツールのための辞書情報

        info
            GNU info ファイルとその他の追加文書

        compat1x
            FreeBSD 1.x との互換性

        compat20
            FreeBSD 2.0 との互換性

        compat21
            FreeBSD 2.1 との互換性

        compat22
            FreeBSD 2.2 及び FreeBSD 3.0 の a.out バイナリ互換性

        compat3x
            FreeBSD 3.x との互換性 (FreeBSD 4.0 でのみ利用可能)

        compat4x
            FreeBSD 4.x との互換性 (FreeBSD 5.0 システムでのみ利用可能)

        ports
            ports コレクション

        ssecure
            /usr/src/secure

        sbase
            /usr/src/(トップレベルファイル)

        scontrib
            /usr/src/contrib

        sgnu
            /usr/src/gnu

        setc
            /usr/src/etc

        sgames
            /usr/src/games

        sinclude
            /usr/src/include

        skrb5
            /usr/src/kerberos5

        slib
            /usr/src/lib

        slibexec
            /usr/src/libexec

        srelease
            /usr/src/release

        srescue
            /usr/src/rescue

        sbin
            /usr/src/bin

        ssbin
            /usr/src/sbin

        sshare
            /usr/src/share

        ssys
            /usr/src/sys

        subin
            /usr/src/usr.bin

        susbin
            /usr/src/usr.sbin

        ssmailcf
            /usr/src/usr.sbin/sendmail/cf

        Xbin
            X.Org クライアントアプリケーション

        Xlib
            X.Org ライブラリ

        Xman
            X.Org マニュアルページ

        Xdoc
            X.Org プロトコルとライブラリの文書

        Xprog
            X.Org imake 配布物

        Xsrv
            X.Org X サーバ

        Xnest
            X.Org ネスト X サーバ

        Xprt
            X.Org プリントサーバ

        Xvfb
            X.Org 仮想フレームバッファ X サーバ

        Xfmsc
            X.Org 種々の フォントセット

        Xf75
            X.Org 75DPI フォントセット

        Xf100
            X.Org 100DPI フォントセット

        Xfcyr
            X.Org キリル語フォントセット

        Xft1
            X.Org Type 1 フォントセット

        Xftt
            X.Org TrueType フォントセット

        Xfs X.Org フォントサーバ

distSetDeveloper
    標準開発者配布セットを選択します。

    変数: 無し

distSetXDeveloper
    標準 X 開発者配布セットを選択します。

    変数: 無し

distSetKernDeveloper
    標準カーネル開発者配布セットを選択します。

    変数: 無し

distSetUser
    標準ユーザ配布セットを選択します。

    変数: 無し

distSetXUser
    標準 X ユーザ配布セットを選択します。

    変数: 無し

distSetMinimum
    最小配布セットを選択します。

    変数: 無し

distSetEverything
    全部、つまり利用可能な配布すべてを選択します。

    変数: 無し

distSetSrc
    ソースのパーツ群を、対話的に選択します。

    変数: 無し

distSetXOrg
    X.Org のパーツ群を、対話的に選択します。

    変数: 無し

distExtractAll
    現在選択されている配布すべてをインストールします (メディアデバイスが既に選択されていることが必要です)。

    変数: 無し

docBrowser
    (必要であれば) HTML 文書ブラウザをインストールし、 HTML 文書サブメニューに行きます。

    変数:

    browserPackage
        必要に応じてインストールを試みる、ブラウザの package 名です。 デフォルトは最新の links package です。

    browserBinary
        ブラウザバイナリ自身の名前です ( browserPackage 変数に優先させる場合)。 デフォルトは links です。

installCommit
    ディスクに対する待ち状態の変更を、すべて実施します。 この関数は、本質的に、細粒度の "実施" 関数をまとめたものです。

    変数: 無し

installExpress
    「高速」インストールを開始します。 ユーザへの質問は少数です。

    変数: 無し

installStandard
    「標準」インストールを開始します。 利用可能なインストールタイプ中で、最もユーザフレンドリです。

    変数: 無し

installUpgrade
    アップグレードインストールを開始します。

    変数: 無し

installFixitHoloShell
    init として起動している場合、 「緊急ホログラフィックシェル」を VTY4 で起動します。 noHoloShell を設定しない限りにおいては、 これはインストール処理の一部として自動的に実施されます。

    変数: 無し

installFixitCDROM
    "fixit" モードに入ります。 ライブファイルシステム CDROM がドライブにあるものと仮定します。

    変数: 無し

installFixitFloppy
    "fixit" モードに入ります。 fixit フロッピディスクが利用可能と仮定します (ユーザは問い合わせを受けます)。

    変数: 無し

installFilesystems
    インストールのファイルシステム初期化部分のみを実行します。

    変数: 無し

installVarDefaults
    全変数をデフォルトに初期化し、以前の設定を上書きします。

    変数: 無し

loadConfig
    #include 文のようなものであり、他の設定ファイルをロードできます。

    変数:

    configFile
        ロードするファイルの完全な形でのパス名です。

mediaClose
    メディアデバイスが開いている場合、閉じます。

    変数: 無し

mediaSetCDROM
    インストールメディアとして FreeBSD CDROM を選択します。

    変数: 無し

mediaSetFloppy
    インストールメディアとして 作成済フロッピインストールセットを選択します。

    変数: 無し

mediaSetDOS
    インストールメディアとして 既存の DOS プライマリパーティションを選択します。 最初に見付かるプライマリパーティション (例 C:) を使用します。

    変数: 無し

mediaSetTape
    インストールメディアとしてテープデバイスを使用します。

    変数: 無し

mediaSetFTP
    インストールメディアとして FTP サイトを使用します。

    変数:

    hostname
        インストールされるホストの名前 (省略不可)。

    domainname
        インストールされるホストのドメイン名 (省略不可)。

    defaultrouter
        このホストのデフォルトルータ (省略不可)。

    netDev
        どのホストインタフェースを使用するか (例えば ed0 や ep0 です。 省略不可)。

    netInteractive
        設定すると、関連するすべての設定変数を陶に設定していても、 対話的なネットワーク設定フォームを起動します (省略可)。

    ipaddr
        選択したホストインタフェースの IP アドレス (省略不可)。

    netmask
        選択したホストインタフェースのネットマスク (省略不可)。

    _ftpPath
        対象となる FreeBSD 配布を保持する FTP サイトの完全な形での URL。例えば ftp://ftp.FreeBSD.org/pub/FreeBSD/ 。

mediaSetFTPActive
    mediaSetFTP と同様ですが、「能動的」な FTP 転送モードを使用します。

    変数: mediaSetFTP と同様です。

mediaSetFTPPassive
    mediaSetFTP と同様ですが、「受動的」な FTP 転送モードを使用します。

    変数: mediaSetFTP と同様です。

mediaSetHTTP
    mediaSetFTP と同様ですが、HTTP プロキシを使用します。

    変数: mediaSetFTP を参照してください。更に以下も使用します。

    _httpPath
        使用するプロキシ (host:port) (省略不可)。

mediaSetUFS
    インストールメディアとして、 (ラベルエディタでマウントされている) 既存の UFS パーティション を選択します。

    変数:

    ufs 対象となる FreeBSD 配布を保持する、完全な /path 指定。

mediaSetNFS

    変数:

    hostname
        インストールされるホストの名前 (省略不可)。

    domainname
        インストールされるホストのドメイン名 (省略不可)。

    defaultrouter
        このホストのデフォルト経路 (省略不可)。

    netDev
        どのホストインタフェースを使用するか (例えば ed0 や ep0 です。 省略不可)。

    netInteractive
        設定すると、関連するすべての設定変数を陶に設定していても、 対話的なネットワーク設定フォームを起動します (省略可)。

    ipaddr
        選択したホストインタフェースの IP アドレス (省略不可)。

    netmask
        選択したホストインタフェースのネットマスク (省略不可)。

    nfs 対象となる FreeBSD 配布を保持する、完全な hostname:/path 指定。

mediaSetFTPUserPass

    変数:

    ftpUser
        FTP サーバに接続する場合のユーザ名を設定します。 既定値: ftp

    ftpPass
        FTP サーバに接続する場合のパスワードを設定します。 既定値: user@host

mediaSetCPIOVerbosity

    変数:

    cpioVerbose
        cpio で展開を行う際のメッセージの冗長度を low, medium, high から選択します。

mediaGetType
    対話的にユーザにメディアタイプの指定を求めます。

    変数: 無し

optionsEditor
    オプション編集画面を起動します。

    変数: なし

packageAdd
    package を取得してインストールしようと試みます (メディアが設定されている 必要があります)。

    変数:

    package
        bash-1.14.7 や ncftp-2.4.2 のようにインストールする package の名前を 指定します。

addGroup
    対話的なグループエディタを起動します。

    変数: なし

addUser
    対話的なユーザエディタを起動します。

    変数: なし

shutdown
    スクリプトの実行を停止して sysinstall を終了します。

    変数: なし

system
    system(3) を用いて外部コマンドを実行します。

    変数:

    command
        実行するコマンドの名前。 ブートフロッピから起動されている場合は、 システム全体がインストールされている場合と比較して使用できるものが 大幅に限定されていることに注意してください。

tcpMenuSelect
    ネットワークデバイスを設定します。

    変数: mediaSetFTP と同様ですが、 _ftpPath が使用されないことが違います。

配布メディア
次のファイルを使用して、初期システムインストール時の sysinstall の動作を変更可能です。

cdrom.inf
    プロパティを 1 行に 1 個ずつ記述するテキストファイルであり、 使用するメディアの内容を記述します。 各行の文法は、単に “property = value” というものです。 現在のところ、次のプロパティだけが認識されます。

    CD_VERSION
        このプロパティは、このメディアボリュームの FreeBSD バージョンに設定すべきです。 例えば “CD_VERSION = 4.6” です。

    CD_MACHINE_ARCH
        このプロパティは、このボリューム上の内容のアーキテクチャに設定すべきです。 このプロパティは、通常、複数のアーキテクチャを含む FreeBSD 製品でのみ使用され、 ユーザが Alpha package を i386 マシンにインストールしようとしたときに より良いエラーメッセージを提供するようになります。 例えば “CD_MACHINE_ARCH = alpha” です。

    VOLUME
        マルチボリュームコレクション (例えば FreeBSD 4-CD セット) では、各ディスクの ports/INDEX ファイルは、セットの完全な package インデックスを含むべきです。 INDEX ファイルの最後のフィールドは、 どのボリュームにその package が含まれるのかを示し、この VOLUME プロパティは現在のディスクのボリューム ID を定義します。

packages/INDEX
    package インデックスファイルです。 各 package が、必要な依存関係等の追加メタデータと共に各行に列挙されます。 このインデックスは ports(7) コレクションで “make index” を実行することにより生成されます。 複数ボリュームサポートが有効な場合、 どの package がどのメディアボリュームに含まれるのかを示す 追加フィールドが各行に追加されます。

FreeBSD の完全なリリースの構築方法については、 release(7) を参照してください。

関連ファイル
このユーティリティは /etc/rc.conf, /etc/hosts, /etc/resolv.conf の内容を、ネットワーク等の設定変更に応じて変更します。

関連項目
十分に完全なソースツリーがオンライン上にあれば、 サンプルのインストールスクリプトについて /usr/src/usr.sbin/sysinstall/install.cfg を参照してください。

バグ
本ユーティリティは雛型であり、 期限切後も数年を生き延びており、大いに死すべきです。

作者
Jordan K. Hubbard <jkh@FreeBSD.org>

歴史
このバージョンの sysinstall は、 FreeBSD 2.0 から登場しました。