FreeBSD インストール後 - 第2回

2004/04/17

近頃身辺がやけに忙しいもので,だいぶ間が空いてしまいました。恥ずかしながら,第2回目です。

前回はインストール後にまずやることとして,カーネルを再構築したんですけど,今回は「ネットワーク周り」や「基本的なデーモン」を設定しようと思います。FreeBSD の標準配布セットの範囲内で,できる限りの設定をするのが目的です。Ports/Packages はこれが済んだら導入します。

1. はじめに

まず,前置きとして,システムのどこをどうやっていぢるのかを,大まかに説明しておきます。

1.1. どこをいぢるのか

PC-UNIX のシステムは,多くの場合 /etc 配下のファイルを編集することで設定します。Etc. といっても「その他」みたいな軽い意味ではありません。設定ファイルが詰まっているとても重要なディレクトリです。

中でも /etc は標準配布セットの設定ファイルが詰まっているので,特に重要です。Linux のシステムでは /etc/apache なんてもんもあるけれど,FreeBSD はもちょっと地味な設定項目をいぢることになっています。ちなみに,外部からアプリケーションを導入した場合は,大抵 /usr/local/etc 以下に設定ファイルが作られます。

/etc 配下のファイルはたくさんあるけれど,いぢるファイルは大体決まっています。主要なものをちょっと紹介してみます。

表1 設定ファイルの例
rc.confシステムの起動スクリプトの挙動を設定する
resolv.conf名前解決に使う DNS の場所を指定する
XFree86X の環境を設定する〔ディレクトリ〕
pppPPP(ダイアルアップ)接続の挙動を設定する〔ディレクトリ〕
hostsホスト名と IP アドレスの対応関係を設定する
syslog.confログを取るのに使う syslog の挙動を設定する
groupグループの情報を設定する
crontab定期的な処理(cron)を予約する。

以上の中でも,/etc/rc.conf というシステム起動時の設定ファイルは,比較的頻繁に設定しているような気がします。

1.2. どうやっていぢるのか

UN*X の文化をご存知の方にはおなじみの話ですけど,UN*X の設定ファイルは原則としてテキスト形式を使うことになっています。ですから,基本環境を設定するということは,適当なエディタで設定ファイルを編集することと同じことだと思って構いません。

もっとも,全てのファイルをエディタで編集するとなると,文法を間違えたり,値を書き間違えたりすることがあります。そんなわけで,「基本」はエディタで設定することなんですけど,それを補助する設定用のツール(/stand/sysinstall 等)が用意されています。

2. 具体的な設定 - 我が家の場合

2.1. 設定の計画

まず,設定を始める前に,どんな環境を作るかを決めておくことにします。今決まってるのは,ハードウェアの構成だけなので,これを軸にして設定する内容を考えてみます。我が家の環境で,設定が必要そうなハードウェアを挙げてみました(わざわざ表にすることもないんですけど……)。

表2 構築する環境の例
つけるものデバイスインターフェイスドライバ
キーボードPFU Happy Hacking Keybord Lite 2PS/2 
マウスLogitech First Mouse+ IIPS/2 
NICBUFFALLO WLI-PCM-L11PCIwi
プリンタBrother HL-1440パラレルポートhl1250 (ghostscript)
スキャナEPSON GT-7600UUSBuscan

昨今のシステムと比べると,なんともショボいシステムです。PC-UNIX を使うときは,いわゆる「枯れた」ハードウェアの方がうまく動くから,これでいいんです(←いいわけ)。

巷では USB のマウスやキーボードが流行っているけれど,あえて PS/2 のものを選んでいます。せっかくマザーボードに付いているポートは使いたいもんで(貧乏性なんです)。少し前は USB 接続のマウス・キーボードを使うのは冒険でしたけど,近頃はかなりの確率で動くようです。キーボードは [Control] キーが [A] の左側にある HHK がお勧めです。

インターネットに接続するための NIC には,無線 LAN を使っています。PCMCIA(PC-Card)の WLI-PCM-L11 ですけど,普通のデスクトップパソコンには PCMCIA 用のスロットがないので,WLI-PCI-OP に挿して使っています。なにげに FTTH な環境なんですけど,NIC が NIC だけに宝の持ち腐れになっています(WLI-PCM-L11 は 11b なのです)。

ついでに,周辺機器としてプリンタとスキャナも接続しておきます。プリンタは Brother の HL-1440 というモノクロレーザープリンタを使っています。レーザープリンタなのに中古で20000円弱だったのと,ランニングコストが安い(ドラムとトナーを別々に交換できる)ことが気に入って使っています。ghostscript のドライバ(hl1250)があるのも特筆すべき点です。スキャナは絵を描く時くらいしか使わないけど,手元にあったのをつなげたら使えました。

他にも Palm Vx (!)や USB のメモリスティックをつないだりしているけれど,頻繁に使うものではないので,ここでは無いことにします。以下では,表の順番に設定していきます。

2.2. マウスとキーボード

マウスとキーボードはインストールするときに設定したはずなので,特にいぢる必要はありません。X では別に設定が必要になるけれど,これはまた後日紹介します。

我が家では,PC-101 のキーボードを使っているから必要ないけれど,一般的な JP-106 のキーボード(JP-109 も同じ)を使っている方には,[Control] キーの位置を [CpasLock] と交換してあるキーレイアウトを使うこともできます。/etc/rc.conf に,

keymap="jp.106x"

と書いておくと,tcsh を使うときに C-e や C-a を使えて,少し幸せになれます。

2.3. ネットワークの設定

次に,NIC の設定をします。ネットワーク管理のセオリーからすると,ネットワーク,特にインターネットへの接続は,最後にやるのがいいらしいです。というのも,端末のセキュリティが甘い状態でインターネットに接続すると,知らないうちに攻撃を受けてしまうことがあるからだそうです。

たしかに DMZ のような敏感な場所にサーバを立てる場合はそうなんでしょうけど,ここでは一応ルータ(ファイアウォール)の後ろ側にあるシステムですし,何より Ports からアプリケーションをインストールするのにインターネットにつなげないとどうしようもないので,ここで設定してしまいます。FreeBSD はデフォルトでかなり安全に設定されているので,余計な心配はしなくていいかもしれません。

ここでは我が家の LAN 環境で説明します。細かい名前や数字は違うけれど,大体次のようになっています。なんのひねりもない構成ですね。ここで設定しているのは,main.sophy ということにします。

    INTERNET
       |
  +----+-----+ 
  |  rooter  |
  +----+-----+
       |192.168.1.1
       |------------------+------------+....
       |192.168.1.2       | 192.168.1.3
  +----+-----+       +----+----+
  |main.sophy|       |foo.sophy|
  +----------+       +---------+

DNS が見あたりませんけど,これはプロバイダが提供してくれるものを参照するので,LAN 内からは 192.168.1.1 を見ることにしています。プロバイダの DNS を参照して LAN 内のホストに提供するようにルータを設定しておきます。

さて,早速中身に入りましょう。ネットワークの設定は,さっき説明した /etc/rc.conf をいぢるわけですけど,他にも /etc/resolve.conf や /etc/hosts なんかにも設定を書く必要があります。さすがに,これを全部いぢるのは大変なので,普通は /stand/sysinstall を使います。

とりあえず,以下のように叩きましょう。

# /stand/sysinstall

インストールしたときの見覚えのある画面が出てくると思います(下図参照)。

ここで,

  1. Configure > Networking > Interfaces と進む

  2. wi0 を選択する(各自の NIC によって異なる)

  3. 「IPv6 を試してみるか」とかいろいろ聞かれるけれど,必要がないか意味が分からない場合は全て「NO」を選ぶ

とすると,ネットワークの設定画面が現れます(下図参照)。少し前の FreeBSD では,PCMCIA がデフォルトで有効になってなかったので,NIC の設定前に PCMCIA を有効にしないと wi0 が見えないことがあるかもしれません。

上記のネットワーク構成の場合は,次のように設定することになります。

表3 ネットワーク構成例
Hostmain.sophy
Domainsophy
IPv4 Gateway192.168.1.1
Name server192.168.1.1
IPv4 Address192.168.1.2
Netmask255.255.255.0

普通の NIC なら,大抵これだけで動くようになります。ただ,今回は無線 LAN を使っているので,通信速度や ESS-ID を設定する必要があります。ESS-ID と WEP Key を,

表4 無線LAN用の追加設定
ESS-IDMYSSID
WEP Keymywep

のようにするなら,ifconfig のオプション(Extra options to ifconfig)に,以下のようなオプションを与えます(実際は1行です)。

media DS/11Mbps ssid MYSSID channel 11 \
wepmode on wepkey 1:mywep weptxkey 1

終わったら再起動して,ifconfig でIP や通信速度が設定通りになっているかを確認します。うちでは,以下のようになりました(ESS-ID 等は実際に使っているものではありません)。

% ifconfig
(略)
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::202:2dff:fe07:8b72%wi0 prefixlen 64 scopeid 0x4 
        ether 00:02:2d:07:8b:72
        media: IEEE 802.11 Wireless Ethernet DS/11Mbps
        status: associated
        ssid MYSSID 1:MYSSID
        stationname "FreeBSD WaveLAN/IEEE node"
        channel 11 authmode OPEN powersavemode OFF powersavesleep 100
        wepmode MIXED weptxkey 1
        wepkey 1:40-bit

外部に接続できるかどうかも試してみましょう。外部のサーバに ping してみて,応答が来るようならバッチリです。Ping をルータ等でフィルタリングしている環境では,適当なブラウザや ftp コマンドを使って試します。

2.4. その他のデーモン

以上の他に,プリンタ等々の設定もしておきます。/etc/rc.conf に書いておきます。

表5 その他の設定
いぢるもの記述内容備考
プリンタlpd_enable="YES"この他 /etc/printcap も設定する(別述)
Sendmailsendmail_enable="NONE"メールサーバ(無効にする)
USBusbd_enable="YES"USB デバイス(スキャナ等々)
APMapmd_enable="YES"電源管理(Advanced Power Management)

プリンタやスキャナは,Ports/Packages からアプリケーションをインストールする必要があるので,ここで設定できるのはデーモンを起動させることだけです。

メールサーバを無効にしているのは,root 宛てのログメッセージを配送しないようにするためです。syslogd というログを取るデーモンが,定期的にログをメールサーバに渡しているんですが,「うざったい」ので使わないようにしています。もっとも,これはセキュリティ上好ましいことではないので,良い子は真似しない方がいいと思います。

apmd を有効にしておくと,

# shutdown -p now

として,電源切断までやってくれるようになります。これがないと,手動で電源を切ることになるので,是非有効にしておきましょう。

3. まとめ

以上で,基本環境は設定できました。慣れると10分くらいでできるんですけど,初めての場合は,予想以上に難儀するかもしれません。参考のために,うちの /etc/rc.conf を紹介しておきます(私的な設定は適宜値を変えています)。

kern_securelevel_enable="NO"
keyrate="normal"
linux_enable="YES"
moused_port="/dev/psm0"
moused_enable="YES"
moused_flags="-z 4"
moused_type="auto"

saver="logo"
scrnmap="NO"
sendmail_enable="NONE"
sshd_enable="NO"
usbd_enable="YES"
ifconfig_wi0="inet 192.168.1.2 \
  media DS/11Mbps ssid MYSSID channel 11 \
  wepmode on wepkey 1:mywep weptxkey 1 \
  netmask 255.255.255.0"
lpd_enable="NO"
defaultrouter="192.168.1.1"
apm_enable="YES"
hostname="main.sophy"
inetd_enable="YES"

4. おまけ

ついでですから,細かい設定も3つばかり紹介しておきます。

4.1. グループ情報を編集する

まず,普段使う一般ユーザのグループを設定しておきます。個人で使っている方は,wheel グループ(su で root になれるグループ)には所属していると思います。この他に,

  • operator (shutdown が使えたりする)

  • dialer (シリアルポート(/dev/cuaa?)にアクセスできる)

なんかにも所属させておくと便利です。/etc/group を編集して,

wheel:*:0:root,aian
operator:*:5:root,aian
dialer:*:68:aian

みたいに,所属させたいグループをカンマで区切って書いておけば,再起動後に有効になります。

4.2. ATAPI CD-ROM ドライブをちょっと速くする

次に,標準では PIO で転送している ATAPI 接続の DVD ドライブを DMA で転送するように設定します。DVD で映画を見るときに,コマ落ちしにくくなります。

/boot/loader.conf に以下の1行を加えると,ATAPI の DMA 転送が有効になります。

hw.ata.atapi_dma="1"

起動時のロードオプションは,大抵このファイルに書き込みます。もっと詳しく設定したい方は,loader.conf(5) や ata(8) を man してみるといいかもしれません。

4.3. CD-ROM のデバイスを作る

FreeBSD は 5.x 系から devfs を標準で採用しているので,デバイス扱い方が少し変わっています。例えば,/dev/cdrom を作るときに,今までなら,

# ln -s /acd0 /cdrom

みたいにすれば,そのまま設定が有効になったけれど,devfs では次回起動時にシンボリックリンクが無くなってしまいます。devfs で CD-ROM(/dev/acd0) に /dev/cdrom のリンクを張るときは,/etc/devfs.conf 中,

#link   acd0    cdrom

の部分をコメントアウトすればいいようです。あやふやな言い回しですけど,まだ devfs よく分かってないんです……。Ports から導入するアプリケーションには,/dev/cdrom を参照するものが相当数あるので,この際設定しておきましょう。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.