7.12. rc.site ファイル

オプションファイル /etc/sysconfig/rc.site は、各ブートスクリプトにて自動的に設定される内容を含んでいます。 /etc/sysconfig/ ディレクトリにおける hostname, console, clock の各ファイルにて値の設定を行うこともできます。 関係する変数が、これらのファイルと rc.site の双方に存在する場合、スクリプトにて指定されたファイル内の値が優先されます。

rc.site では、起動時におけるその他の機能をカスタマイズするためのパラメーターも含まれています。 変数 IPROMPT を設定すると、起動するブートスクリプトを選択することができます。 この他のオプションについては、このファイル内にてコメントとして記述されています。 このファイルのデフォルト版は以下のとおりです。

# rc.site
# Optional parameters for boot scripts.

# Distro Information
# These values, if specified here, override the defaults
#DISTRO="Linux From Scratch" # The distro name
#DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
#DISTRO_MINI="LFS" # Short name used in filenames for distro config

# Define custom colors used in messages printed to the screen

# Please consult `man console_codes` for more information
# under the "ECMA-48 Set Graphics Rendition" section
#
# Warning: when switching from a 8bit to a 9bit font,
# the linux console will reinterpret the bold (1;) to
# the top 256 glyphs of the 9bit font.  This does
# not affect framebuffer consoles

# These values, if specified here, override the defaults
#BRACKET="\\033[1;34m" # Blue
#FAILURE="\\033[1;31m" # Red
#INFO="\\033[1;36m"    # Cyan
#NORMAL="\\033[0;39m"  # Grey
#SUCCESS="\\033[1;32m" # Green
#WARNING="\\033[1;33m" # Yellow

# Use a colored prefix
# These values, if specified here, override the defaults
#BMPREFIX="     "
#SUCCESS_PREFIX="${SUCCESS}  *  ${NORMAL}"
#FAILURE_PREFIX="${FAILURE}*****${NORMAL}"
#WARNING_PREFIX="${WARNING} *** ${NORMAL}"

# Interactive startup
#IPROMPT="yes" # Whether to display the interactive boot prompt
#itime="3"    # The amount of time (in seconds) to display the prompt

# The total length of the distro welcome string, without escape codes
#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"

# The total length of the interactive string, without escape codes
#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"

# Set scripts to skip the file system check on reboot
#FASTBOOT=yes

# Skip reading from the console
#HEADLESS=yes

# Speed up boot without waiting for settle in udev_retry
#OMIT_UDEV_RETRY_SETTLE=yes

# Write out fsck progress if yes
#VERBOSE_FSCK=no

# Speed up boot without waiting for settle in udev
#OMIT_UDEV_SETTLE=y

# Speed up boot without waiting for settle in udev_retry
#OMIT_UDEV_RETRY_SETTLE=yes

# Skip cleaning /tmp if yes
#SKIPTMPCLEAN=no

# For setclock
#UTC=1
#CLOCKPARAMS=

# For consolelog
#LOGLEVEL=5

# For network
#HOSTNAME=mylfs

# Delay between TERM and KILL signals at shutdown
#KILLDELAY=3

# Optional sysklogd parameters
#SYSKLOGD_PARMS="-m 0"

# Console parameters
#UNICODE=1
#KEYMAP="de-latin1"
#KEYMAP_CORRECTIONS="euro2"
#FONT="lat0-16 -m 8859-15"
#LEGACY_CHARSET=

7.12.1. ブート時/シャットダウン時のスクリプトのカスタマイズ

LFS のブートスクリプト類により、システムの起動および終了が適正に行われます。 ただし rc.site ファイルにおいては改善の余地があって、処理性能を向上させたり出力メッセージを調整したりすることができます。 種々の設定は、上に示した /etc/sysconfig/rc.site ファイルへの変更により実現します。

  • ブートスクリプト udev の起動中には udev settle の呼び出しが行われます。 ただこの呼び出しは特定の場合において必要となるものであり、それはシステム上に存在するデバイスに依存します。 単純なパーティション設定を行っていて、またイーサネットカードを1つのみ利用している場合には、ブート時に上のコマンドを実行する必要はないかもしれません。 このコマンドの実行をスキップする場合は、変数の設定として OMIT_UDEV_SETTLE=y を記述します。

  • ブートスクリプト udev_retry も同様に、デフォルトで udev settle を実行します。 このコマンドはデフォルトでは、/var ディレクトリが個別にマウントされている時にのみ必要となります。 それはクロックが /var/lib/hwclock/adjtime ファイルを必要とするためです。 これ以外にも udev の処理を待つことが必要になるケースがありますが、本当に必要になることはまれです。 変数の設定として OMIT_UDEV_RETRY_SETTLE=y を行えば、コマンドをスキップすることができます。

  • デフォルトにおいてファイルシステムのチェックは、何も表示されることなく処理が行われるので、処理が遅延して行われているかのように見えます。 fsck による出力を有効とするには、変数の設定を VERBOSE_FSCK=y とします。

  • 再起動時にはファイルシステムのチェック、つまり fsck の実行を完全に行う必要はないと考えられる場合もあります。 そうであるなら、ファイル /fastboot を生成するか、/sbin/shutdown -f -r now というコマンドを実行します。 一方、ファイルシステムのチェックを必ず行うのであれば、ファイル /forcefsck を生成するか、shutdown コマンドの実行において -f ではなく -F というパラメーターをつける方法があります。

    変数の設定として FASTBOOT=y を行えば、ブート時において fsck を実行しないようにすることができます。 この設定を恒常的に行うことは推奨されません。

  • 通常 /tmp ディレクトリ内にあるファイルは、ブート時にすべて削除されます。 ファイル数やディレクトリ数が膨大になっていた場合は、ブート処理が極端に時間を要することにもなります。 変数の設定 SKIPTMPCLEAN=y を行うと、ファイルの削除が行われなくなります。

  • シャットダウン時には init プログラムが稼働中のプログラム (agetty など) に対して TERM シグナルを送信し、一定時間 (デフォルトでは3秒) 待ちます。 そして各プロセスに対して KILL シグナルを送信して再度待ちます。 各プロセスが自身のスクリプト内にてシャットダウンしないようであれば sendsignals スクリプトにて上の処理が繰り返されます。 init が起動するまでの時間は、パラメーターにより制御することができます。 例えば init の遅延を無くす場合は、シャットダウンまたはリブート時のコマンドに -t0 パラメーターを与えます。 (つまり /sbin/shutdown -t0 -r now といったコマンド実行とします。) sendsignals スクリプトの遅延を無くすには、パラメーターの設定を KILLDELAY=0 とします。