[ カーネル再構築 | FreeBSDトップ | ソフトウェア ]


環境構築

daemon


Introduction

起動時に自動実行されるプログラムや環境の設定を行う。
FreeBSDでは起動時にいくつかの設定ファイルが読み込まれ、 そこに定義された値が有効となる様になっている。 ここではそれらの定義ファイルの設定値を変更する。
s30

まずは s30 固有の設定を行う。
標準の状態では起動時に AC/Battery の状態を取得できないので、 ACPI 用の aml ファイルにパッチを適用し、起動時に load するよう設定する。
既にコンパイルされた aml ファイルが公開されていたので、 amlファイルを取得し使用する。 acpi_dsdt.amlファイルを /bootに格納し、 /boot/loader.conf に以下の記述を追加する。

acpi_load "YES"
acpi_dsdt_load "YES"

この aml ファイルも加藤さんが作成・公開して下さいました。 本当にありがとうございます。

次に suspend 時に vga の電源を off にするカーネルモジュールを組み込むために、 /usr/src/sysディレクトリで vga_pci-20020228.tar.gzファイルを展開して makeする。 作成された vga_pci.koファイルを /boot/modulesにコピーし、 /boot/loader.confに以下の記述を追加する。

vga_pci_load "YES"
acpi_dsdt_load "YES"

このカーネルモジュールは岩崎さんが作成・公開されています。 本当にありがとうございます。

本来は /boot/kernel にコピーする必要があるが、 /boot/kernelにコピーするとカーネル再構築の度に vga_pci.ko をコピーする必要があるので、 暫定的に/boot/modulesにコピーする。 カーネルの構成ファイルを変更したら良いとは思うのだが、 そこまで調査しきれていない。
boot

Welcome to FreeBSD!

1. Boot FreeBSD [default]
2. Boot FreeBSD with ACPI disabled
3. Boot FreeBSD in Safe Mode
4. Boot FreeBSD in single user mode
5. Boot FreeBSD with verbose logging
6. Escape to loader prompt
7. Reboot

Select option, [Enter] for default
or [Space] to pause timer 5

起動時に表示される daemon 君の ascii art は可愛いのだが、 同時に表示されるメニューと相まって慣れると煩く感じるので 従来通りの boot 画面が表示される様にし、 また、起動時に表示されるメッセージの待ち時間を短くするために /boot/loader.confに以下の設定を追加する。

autoboot_delay "5"
beastie_disable "YES"
keyboard

CtrlとCapsLockの位置を入れ替えるだけであれば、 jp.106xというキーボードマップを使用すれば良い。 しかしCapsLockはそもそも不要なので、 キーボードマップを多少変更してCtrlキーもCapsLockキーも Ctrlキーとして動作する様変更する。
/usr/share/sysconf/keymap/jp.106x.kbdjp.106y.kbdにコピーし、 029の行を変更。

029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl

作成したキーマップを有効にするために、/etc/rc.confに以下の設定を追加する。

keymap jp.106y
sysctl.conf

ACPI による電源管理が可能となったので、 suspend swtich(Fn + F4)押下時の動作や、 電源スイッチ押下時の動作設定を行うため /etc/sysctl.confに以下の設定を追加する。

hw.acpi.lid_switch_state=NONE ディスプレイを閉じた時は何もしない
hw.acpi.standby_state=S3 スタンバイ(apm -Z実行時)は s3 状態に設定
hw.acpi.suspend_state=S3 サスペンド(apm -z実行時)は s3 状態に設定
hw.acpi.power_button_state=S3 電源スイッチ押下時は s3 状態に移行
hw.acpi.sleep_button_state=S3 スリープボタン(Fn + F4)押下時は s3 状態に移行
hw.acpi.thermal.min_runtime=300
hw.acpi.battery.info_expire=30 電源状態の取得は CPU へ負荷がかかるので 30秒毎とする
devfs.conf

5.1-RELEASE からはdevfs(8) が必須となったので、 新しいデバイスを追加する時に、 従来の様にMAKEDEV(8) を実行する必要は無くなった。 これは非常に便利であるが、一部の古いプログラムが動作しない事がある。 例えばkon(1)は/dev/vga を参照するので /etc/devfs.conf/dev/vga への シンボリックリンク作成を指示する。

link ttyv0 vga ttyv? へのシンボリックリンクを作成する
moused

mousedを使用するとコンソール画面でもマウスを利用した カット&ペーストが利用可能であり、 X Window上ではホイールマウスと内蔵のトラックポイントを同時使用可能となる。
mousedを使用してホイールマウスを活用するために /etc/rc.confに以下の設定を追加する。

moused_enable YES
moused_flags -z 4
moused_type auto
moused_port /dev/psm0
Memory Disk

アクセスが頻繁に発生するディレクトリをメモリディスクにすると、 アクセスが高速になり体感速度が飛躍的に向上するので、 /tmpをメモリディスクにする様に設定する。
メモリディスクを使用するためには カーネルの設定MDが有効になっている必要がある。
起動時に/tmpをメモリディスクとして利用するために、 /etc/fstabに以下の設定を追加する。

md /tmp mfs rw,-s256m 0 0
-sオプションはswapデバイスの容量を指定する。
Auto Mount Daemon

auto mount daemon(amd)を使用するとCD-ROMやUSB Memory-key、 Windows/DOSで使用しているディスクを参照する際に mount(8)/umount(8)を自動で実行してくれる。

amdを使用する前に、それぞれのデバイスのマウントポイントを作成し、 mountしてアクセス可能な様設定する必要がある。
各デバイスをmountするために /etc/fstabに以下の設定を追加する

/dev/ad0s1 /usr/mnt/win ntfs ro,noauto 0 0
Windows領域
/dev/ad6s1 /usr/mnt/flash msdos rw,noauto 0 0
Compact Flash
/dev/cd0a /usr/mnt/cdrom cd9660 ro,noauto 0 0
CD-ROM
/dev/da0s1 /usr/mnt/usb msdos rw,noauto 0 0
Memory-key
デバイスは環境に合わせて変更する必要がある。

/mnt以下の各ディレクトリに参照が発生した場合に自動的に /usr/mnt以下のマウントポイントにデバイスをmount(8)し、 /mntにシンボリックリンクを作成する。
amdの動作を定義するために/etc/amd.mapに以下の設定を追加する。

win type:=program;fs:=/usr/mnt/win;\
mount:="/sbin/mount mount /usr/mnt/win";\
unmount:="/sbin/umount umount /usr/mnt/win";
Windows領域
flash type:=program;fs:=/usr/mnt/flash;\
mount:="/sbin/mount mount /usr/mnt/flash";\
unmount:="/sbin/umount umount /usr/mnt/flash";
Compact Flash
cdrom type:=program;fs:=/usr/mnt/cdrom;\
mount:="/sbin/mount mount /usr/mnt/cdrom";\
unmount:="/sbin/umount umount /usr/mnt/cdrom";
CD-ROM
usb type:=program;fs:=/usr/mnt/usb;\
mount:="/sbin/mount mount /usr/mnt/usb";\
unmount:="/sbin/umount umount /usr/mnt/usb";
Memory-key

起動時からamdを使用するために/etc/rc.confに以下の設定を追加する。

amd_enable "YES"
amd_flags "-l syslog -c 30 /mnt /etc/amd.map"
MS Windows のファイルシステムの日本語表示

FreeBSD-users-jp MLntfsmsdosfscd9660ファイルシステムの日本語を表示させるパッチを見掛けたので 早速(でもないか?)インストール。
まずは 5.1-RELEASE 用のパッチをダウンロードして、 /usr/srcディレクトリでパッチ適用。 find(1) を使用してリジェクトの有無を確認した後は make world して終了。 mergemaster(8) は基本的に不要
mount_ntfs (8)、mount_msdosfs (8)コマンドを実行して 日本語の表示を確認した後は、/etc/fstabに以下の設定を追加して完了。

ntfs ro,noauto,-C=eucJP
msdosfs rw,noauto,-L=ja_jp.eucJP,-D=CP932
cd9660 ro,noauto,-C=eucJP
USB Memory-key

USB接続の大容量(って程の容量ではないが…)メモリーキーを使用するために、 カーネルに以下のパッチを適用してカーネルの再構築を行う。 これは FreeBSD 4.8-RELEASE のkern.cam.da.no_6_byteと同等な設定である。
ホストデータベースの検索順序

FreeBSD 5.0 からnddispatch(3) が NetBSD より移植されたので、 /etc/host.conf/etc/nsswitch.conに変更となる。
/etc/nsswitch.confは以下に示すデータベースの検索に影響する。

group getgrent()
hosts gethostbyname()
networks getnetbyname()
passwd getpwent()
shells getusershell()

ホスト名の検索順序を /etc/hostsDNSの順に設定する場合は、 /etc/nsswitch.conに以下の記述を追加すると、 起動時に /etc/host.confが自動的に生成される。

hosts:
files dns


Last Update: Jan. 3 2005 Copyright © Mitzyuki IMAIZUMI 2002,2004,2005 All Rights Reserved,