SYSINSTALL(8)

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

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

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

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

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

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

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

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

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

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

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

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

    たとえば、

        /stand/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
    システムにユーザやグループを追加します。

    変数: なし

configXEnvironment
    X ウィンドウシステムの設定を行います。

    変数: なし

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

    変数:

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

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

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

    注意: この関数では実際のディスクへの書き込みは行われません。実際に 書き込みを行うためには、 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 番目のフィールドは省略不可です)。

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

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

    変数: なし

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

    変数: なし

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

    変数:

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

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

        doc 様々な文書

        games
            ゲーム

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

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

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

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

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

        crypto
            暗号化のためのバイナリとライブラリ

        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 4.x リリースでのみ利用可能)

        ports
            ports コレクション

        krb4
            KerberosIV バイナリ

        krb5
            Kerberos5 バイナリ

        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

        slib
            /usr/src/lib

        slibexec
            /usr/src/libexec

        srelease
            /usr/src/release

        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

        XF86-xc
            XFree86 の公式なソース

        XF86-co
            XFree86 に寄贈されたソース

        Xbin
            XFree86 バイナリ

        Xcfg
            XFree86 設定ファイル

        Xdoc
            XFree86 に関する文書

        Xhtml
            XFree86 に関する HTML 文書

        Xlib
            XFree86 ライブラリ

        Xlk98
            XFree86 PC98 向けサーバリンクキット

        Xlkit
            XFree86 一般向けサーバリンクキット

        Xman
            XFree86 マニュアルページ

        Xprog
            XFree86 開発者向け配布物

        Xps XFree86 に関する postscript 文書

        Xset
            XFree86 グラフィカルセットアップツール

        PC98-Servers/X9480
            XFree86 PC98 8-bit (256 色) PEGC-480 サーバ

        PC98-Servers/X9EGC
            XFree86 PC98 4-bit (16 色) EGC サーバ

        PC98-Servers/X9GA9
            XFree86 PC98 GA-968V4/PCI (S3 968) サーバ

        PC98-Servers/X9GAN
            XFree86 PC98 GANB-WAP (cirrus) サーバ

        PC98-Servers/X9LPW
            XFree86 PC98 PowerWindowLB (S3) サーバ

        PC98-Servers/X9MGA
            [記述無し]

        PC98-Servers/X9NKV
            XFree86 PC98 NKV-NEC (cirrus) サーバ

        PC98-Servers/X9NS3
            XFree86 PC98 NEC (S3) サーバ

        PC98-Servers/X9SPW
            XFree86 PC98 SKB-PowerWindow (S3) サーバ

        PC98-Servers/X9SVG
            [記述無し]

        PC98-Servers/X9SVG
            XFree86 PC98 Cyber9320, TGUI9680 サーバ

        PC98-Servers/X9WEP
            XFree86 PC98 WAB-EP (cirrus) サーバ

        PC98-Servers/X9WS
            XFree86 PC98 WABS (cirrus) サーバ

        PC98-Servers/X9WSN
            XFree86 PC98 WSN-A2F (cirrus) サーバ

        Servers/X3DL
            XFree86 3D Labs サーバ

        Servers/X8514
            XFree86 8514 サーバ

        Servers/XAGX
            XFree86 8 ビット AGX サーバ

        Servers/XI128
            XFree86 #9 Imagine I128 サーバ

        Servers/XMa8
            XFree86 ATI Mach8 サーバ

        Servers/XMa32
            XFree86 ATI Mach32 サーバ

        Servers/XMa64
            XFree86 ATI Mach64 サーバ

        Servers/XMono
            XFree86 monochrome サーバ

        Servers/XP9K
            XFree86 P9000 サーバ

        Servers/XS3
            XFree86 S3 サーバ

        Servers/XS3V
            XFree86 S3 Virge サーバ

        Servers/XSVGA
            XFree86 SVGA サーバ

        Servers/XVG16
            XFree86 VGA16 サーバ

        Servers/XW32
            XFree86 ET4000/W32, /W32i, /W32p サーバ

        Servers/XTGA
            TGA カード用サーバ (alpha アーキテクチャのみ)

        Servers/Xnest
            XFree86 ネスト X サーバ。

        Servers/Xvfb
            XFree86 仮想フレームバッファ X サーバ。

        Xfnts
            XFree86 基本フォントセット。

        Xf100
            XFree86 100DPI フォントセット。

        Xfcyr
            XFree86 キリル語フォントセット。

        Xfscl
            XFree86 スケーラブルフォントセット。

        Xfnon
            XFree86 非英語フォントセット。

        Xfsrv
            XFree86 フォントサーバ。

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

distSetCRYPTO
    暗号化のパーツ群を、対話的に選択します。

    変数: 無し

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

    変数: 無し

distSetXF86
    XFree86 のパーツ群を、対話的に選択します。

    変数: 無し

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

    変数: 無し

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

    変数:

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

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

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数: 無し

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

    変数:

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

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

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

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

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

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

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