「FreeBSD」の編集履歴(バックアップ)一覧はこちら
FreeBSD - (2010/01/23 (土) 18:08:41) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
以下は、FreeBSDで遊んでいて知ったことのメモです。より良い方法があったり、間違っていたりするかも知れません。
&color(RED){※参考にされる場合は、自己責任でお願いいたします。}
#contents
*導入・初期設定
+OSのインストール&br;最低限のネットワーク接続設定も合わせて行う。
+cvsupのインストール&br;インストールしたOSにあったcvsup-without-gui-XXX.tgzを使用すること。
+ソースの同期&br;最新版を追っかけたい場合は、make world!(普通は、しなくてよい。)
+kernel再構築&br;不要なデバイス等には消えてもらいスリム化しましょう。
+portsを更新
+各種ソフトのインストール&br;使いたいソフトをportsでインストール。依存関係を考慮して不足しているものは順次インストールされるので楽ちん。ただし、自分好みのパラメータを指定したい場合は、依存関係を考慮して先にインストールする。また、portupgradeを使用する場合は早めにインストールした方が精神衛生上よいでしょう。私の場合は以下の順でインストール、特にlibiconvは他でも参照するのでは、特に先にインストールしている。
++libiconv(EXTRA_PATCHES=YES)
++samba
++qemu
*PAM &size(12){(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の場合
- 準備&br;設定ファイルは、/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を更新する場合。バージョンの指定は不要。
|オプション|CENTER:備 考|
|CENTER:R|指定したパッケージが使用しているライブラリ等を含め更新|
|CENTER:r|指定したパッケージを参照しているアプリケーション等を含め更新|
*** うまくアップグレードできない時(経験則)
+ コンパイル中のメッセージ等からエラー原因となっているライブラリ等を見つける。
+ 原因となっているものが、アップグレード対象になってた場合は、portupgradeする。
+ 対象外の場合、対象のportsを再makeし、成功したら入れ替え、失敗の場合は1へ戻る。
(実行例:glib2)
cd /usr/ports/devel/glib20
make clean
make deinstall
make install
+ 再度、portupgradeを実行する。
* Portsいろいろ
** Oracle Client
|CENTER:場所|CENTER:備考|
|ports/databases/oracle8-clientt|i386限定&br;重要: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でキーをユーザ設定する。
++ xevコマンドを実行し、アンダースコア入力時のキーコードを調査(keycode 151)
++ ~~/.Xmodmapを編集
keycode 151 = backslash underscore
++ xmodmapコマンドで設定を反映
xmodmap ~/.Xmodmap
以下は、FreeBSDで遊んでいて知ったことのメモです。より良い方法があったり、間違っていたりするかも知れません。
&color(RED){※参考にされる場合は、自己責任でお願いいたします。}
#contents
*導入・初期設定
+OSのインストール&br;最低限のネットワーク接続設定も合わせて行う。
+cvsupのインストール&br;インストールしたOSにあったcvsup-without-gui-XXX.tgzを使用すること。
+ソースの同期&br;最新版を追っかけたい場合は、make world!(普通は、しなくてよい。)
+kernel再構築&br;不要なデバイス等には消えてもらいスリム化しましょう。
+portsを更新
+各種ソフトのインストール&br;使いたいソフトをportsでインストール。依存関係を考慮して不足しているものは順次インストールされるので楽ちん。ただし、自分好みのパラメータを指定したい場合は、依存関係を考慮して先にインストールする。また、portupgradeを使用する場合は早めにインストールした方が精神衛生上よいでしょう。私の場合は以下の順でインストール、特にlibiconvは他でも参照するのでは、特に先にインストールしている。
++libiconv(EXTRA_PATCHES=YES)
++samba
++qemu
*PAM &size(12){(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の場合
- 準備&br;設定ファイルは、/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を更新する場合。バージョンの指定は不要。
|オプション|CENTER:備 考|
|CENTER:R|指定したパッケージが使用しているライブラリ等を含め更新|
|CENTER:r|指定したパッケージを参照しているアプリケーション等を含め更新|
*** うまくアップグレードできない時(経験則)
+ コンパイル中のメッセージ等からエラー原因となっているライブラリ等を見つける。
+ 原因となっているものが、アップグレード対象になってた場合は、portupgradeする。
+ 対象外の場合、対象のportsを再makeし、成功したら入れ替え、失敗の場合は1へ戻る。
(実行例:glib2)
cd /usr/ports/devel/glib20
make clean
make deinstall
make install
+ 再度、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
|CENTER:場所|CENTER:備考|
|ports/databases/oracle8-clientt|i386限定&br;重要: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でキーをユーザ設定する。
++ xevコマンドを実行し、アンダースコア入力時のキーコードを調査(keycode 151)
++ ~~/.Xmodmapを編集
keycode 151 = backslash underscore
++ xmodmapコマンドで設定を反映
xmodmap ~/.Xmodmap