FreeBSD

以下は、FreeBSDで遊んでいて知ったことのメモです。より良い方法があったり、間違っていたりするかも知れません。 ※参考にされる場合は、自己責任でお願いいたします。

導入・初期設定

  1. OSのインストール
    最低限のネットワーク接続設定も合わせて行う。
  2. cvsupのインストール
    インストールしたOSにあったcvsup-without-gui-XXX.tgzを使用すること。
  3. ソースの同期
    最新版を追っかけたい場合は、make world!(普通は、しなくてよい。)
  4. kernel再構築
    不要なデバイス等には消えてもらいスリム化しましょう。
  5. portsを更新
  6. 各種ソフトのインストール
    使いたいソフトをportsでインストール。依存関係を考慮して不足しているものは順次インストールされるので楽ちん。ただし、自分好みのパラメータを指定したい場合は、依存関係を考慮して先にインストールする。また、portupgradeを使用する場合は早めにインストールした方が精神衛生上よいでしょう。私の場合は以下の順でインストール、特にlibiconvは他でも参照するのでは、特に先にインストールしている。
    1. libiconv(EXTRA_PATCHES=YES)
    2. samba
    3. qemu

PAM (Pluggable Authenication Modules)

昨今のアプリケーションの多くにおいて認証機能はなくてはならないものになっています。しかし、開発者は毎度同じ機能を作らされるのは時間的・精度的・コスト的にも大変、管理者もアプリ毎に違った管理手順を覚えるのは大変、利用者もアプリ毎に違ったユーザ名はパスワードでは覚えるのもの大変です。基本的に認証機能はOKかNGがわかれば良いわけですから、認証機能を各アプリから切離し、共通の枠組みを作ってしまおうというものです。これをうまく活用すれば、UNIXやWINDOWS、imapなどのユーザ名とパスワードを1つにまとめることが可能です。

/etc/pam.d下に、各アプリ毎のファイルを置く。

設定ファイルの1行は4つのフィールドからできている。(argumentsは無い場合もある。)また、各フィールドは、1つ以上のTABで区切る。

 module-type control-flag module-path arguments
  • module-typeは、auth,account,password,sessionの4つ。
  • control-flagでよく使うのは、required,sufficientの2つ。
  • module-pathは、/usr/lib下にあるもの以外はフルパスで記述する。
  • argumentsでよく使うのは、no_warnとauthモジュールのtry_first_passの2つ。

設定例(/etc/pam.d/dovecot)

 auth    sufficient /usr/local/lib/pam_ldap.so   no_warn try_first_pass
 auth    required   pam_unix.so                  no_warn try_first_pass
 account sufficient /usr/local/lib/pam_ldap.so
 account required   pam_unix.so

同じモジュールタイプが複数行ある場合は、上から評価されていく。

required その条件が必要であり、失敗した場合は、他が成功でも失敗となる。
sufficient その条件が成功した場合は、それ以降を評価せずに成功を返す。それ以降にrequiredがあっても無視される。失敗した場合は、この失敗は無視され、続きを実施しその評価に従う。

基本的には、sufficientを並べて、最後にrequiredを置けばよい。 上の例では、ldapでの認証に成功すればその時点でOK、失敗の場合は、UNIX(/etc/passwd)で評価する。(多分)

日常の管理

periodicによる定時処理

毎日(daily),毎週(weekly),毎月(mantyly)実行の3種類を設定可能。デフォルト状態でも夜間にディスクチェック等がこの機能を使って行われている。

/etc/periodic/daily/ 毎日実行用スクリプトの置き場
/etc/periodic/weekly/ 毎週実行用スクリプトの置き場
/etc/periodic/monthly/ 毎月実行用スクリプトの置き場
/etc/defaults/periodic.conf /etc/periodic/以下の各処理のON・OFFや起動時のデフォルト値を指定。
/etc/periodic.conf ローカル設定 /etc/defaults/periodic.confの内容を上書き。

Portsの管理

7系の場合、従来からのcvsupを用いる方法と6から入ったportsnapを使う2種類がある。 portsnapは性能面だけでなく、セキュリティ面が考慮されている。今後はこっちが主流になるのかな。

最新版の取得

cvsupの場合

  • 準備
    • cvsup-without-gui-XXのインストール(packageを利用) とsupfileの作成。
      cd /var/db
      mkdir sup
      cd sup
      cp /usr/share/examples/cvsup/ports-supfile .
      vi ports-supfile
      
    • supfileの変更は取得先のURLへの変更で充分。
      *default host=cvsup1.jp.FreeBSD.org
      ※csvup1〜6の中から自分にあったのを選択。
      
  • 日々の運用
    cvsup -g -L2 /var/db/sup/ports-supfile
    

portsnapの場合

  • 準備
    設定ファイルは、/etc/portsnap.confだけど、特に何もしなくて使える。
    • 初回時のデータ取得
      portsnap fetch
      portsnap extract
      
    • 日々の運用
      portsnap fetch update
      

portの更新

portupgradeのインストールとデータベースの初期化

 cd /usr/ports/ports-mgmt/portupgrade
 make install
 rehash
 portdb -uU

※portdbには、結構時間がかかるので、しばらくほっとく。

変更のチェック

  • 最新版を取得したら、更新されているものをチェック。
    portversion  | grep "<"
    

バージョンアップ

portupgrade -R firefox

※firefoxを更新する場合。バージョンの指定は不要。

オプション 備 考
R 指定したパッケージが使用しているライブラリ等を含め更新
r 指定したパッケージを参照しているアプリケーション等を含め更新

うまくアップグレードできない時(経験則)

  1. コンパイル中のメッセージ等からエラー原因となっているライブラリ等を見つける。
  2. 原因となっているものが、アップグレード対象になってた場合は、portupgradeする。
  3. 対象外の場合、対象のportsを再makeし、成功したら入れ替え、失敗の場合は1へ戻る。
     (実行例:glib2)
     cd /usr/ports/devel/glib20
     make clean
     make deinstall
     make install
    
  4. 再度、portupgradeを実行する。

Portsいろいろ

apcupsd

設定 (APC社 RS400の場合)

設定ファイルはsmart-ups用になっているので、同梱されているusbケーブルを使った場合にあわせて変更する。

  • /usr/local/etc/apcupsd/apcupsd.conf
    UPSCABLE usb
    UPSTYPE usb
    DEVICE
    MINUTES 7
    TIMEOUT 300
    
  • ポイント
    • USPTYPEにusbを指定した場合、DEVICEは空白
    • MINUTESは、バッテリ駆動時に残り何分になったら、shutdownを開始するかを指定。
    • TIMEOUTは、バッテリ駆動が開始されてから何秒で、shutdownを開始するかを指定。

確認

 /usr/local/sbin/apcaccess

上手く設定できていれば、機種名やバッテリの状態等が表示される。

Oracle Client

場所 備考
ports/databases/oracle8-clientt i386限定
重要:Oracle社非サポート。

Oracle8i以降に接続できる模様。(Linux上の10gに接続できた。)

apacheをサーバにしたwebアプリの場合は、起動用シェルスクリプトに以下を追加。 (ORACLE_HOMEとNLS_LANG:サーバ側の文字コードはそれぞの環境に読み替える。)

export ORALCE_HOME=/usr/local/oracle8-client
export NLS_LANG=Japanese_Japan.JA16SJIS

QEMU

設定

KQEMUを使用する場合は、/boot/loader.confに以下を追加

 aio_load="YES"
 kqemu_load="YES"

FreeBSD側とファイル共有

  • lmhosts(%SYSTEM%system32\drivers\ets\lmhosts)に以下を追加
    10.0.2.4 smbserver
    
  • qemuの以下のオプションを付けて起動(例:/home/publicを共有)
    -smb /home/public
    

Wine

日本語入力

  • /.wine/uesr.reg

    [Software\\Wine\\X11 Driver]
    "InputStyle"="root" または overthespot
    

トラブル対応

X上でアンダースコアが入力できない

方針:xmodmapでキーをユーザ設定する。

  1. xevコマンドを実行し、アンダースコア入力時のキーコードを調査(keycode 151)
  2. ~/.Xmodmapを編集

     keycode 151 = backslash underscore
    
  3. xmodmapコマンドで設定を反映
     xmodmap ~/.Xmodmap
    
最終更新:2010年01月23日 18:08