--- [管理番号 85] (最終更新 2002/02/03 13:12:18) Q. `panic: cannot mount root' で FreeBSD が起動しない。 A. FreeBSD を一台目以外の HDD にインストールしていますね。これはブートブ ロックとカーネルにおいて、HDD のユニット番号の認識が食い違っているため に起こります。この症状については FreeBSD FAQ にも解説がありますので、 次の URL を参照してください。 1. FreeBSD 3.3-RELEASE 以降 マシンを起動すると Hit [Enter] to boot immediately, or any other key for command prompt. Booting [kernel] in 9 seconds... という loader(8) のメッセージが表示されるので、ここでリターンキー以外 のキーを押してコマンドモードに入り set root_disk_unit=2 boot としてください。これで IDE ならセカンダリマスタから FreeBSD が起動する はずです。このとき指定する数字はインストールした HDD によって次のよう に読み換えてください。(GENERIC カーネルのとき) +-------------------------------+----------------------+ | IDE | SCSI | +---------------+---------------+----------------------+ | Primary | Secondary | | | Master Slave | Master Slave | 見付けた順に 0,1,2… | | 0 1 | 2 3 | | +---------------+---------------+----------------------+ これで正しく FreeBSD がブートできたら # echo "root_disk_unit=2" >> /boot/loader.conf とすれば、次からブートローダでの指定はいらなくなります。設定ファイルは /boot/loader.conf.local でも良いのですが、どちらかに統一した方が後で 混乱しなくて済みます。 2. FreeBSD 3.2-RELEASE 以前 起動時に `Boot:' と表示されたところで (3.0-RELEASE 以降では loader(8) が読み込まれる前に Enter 以外のキーを叩くことで表示されます)、 IDE + IDE で 2 番目の IDE がセカンダリのマスタの場合は 1:wd(2,a)/kernel IDE + SCSI の場合は 1:sd(0,a)/kernel を入力してください。 IDE 2 台 + SCSI とか SCSI の 2 台目とかの場合は適宜 1: の数字や ?d(0,a) の 0 を 1,2 に変更してください。一般には、 :(,a)/kernel という形式で、 BIOS から見たディスクの番号。最初のドライブは `0'。 コントローラを指定します。 IDE なら `wd'、SCSI は `sd' (3.0-RELEASE 以降では `da') コントローラ上のドライブのユニット番号。上記の表を参照。 です。 なお次回のブート時にデフォルトとするには、 # echo "1:wd(2,a)/kernel" > /boot.config のようにします。 --- [管理番号 139] (最終更新 1999/02/17 23:58:45) Q. /: file system full このエラ−は何を意味するのでしょうか? A. Diskが満杯です。この場合は / (root) パーティションが溢れています。 du コマンドで確認しましょう。 --- [管理番号 145] (最終更新 2003/10/16 23:20:29) Q. 起動直後に表示されるメッセージが速すぎて読めないのですが。 A. いくつか方法があります。 A1. /sbin/dmesg | more とする。 A2. /var/log/messages を見る。 A3. デバイスのプローブが終わった後、すなわち、 Automatic reboot in progress... と表示された後で、Scroll Lock キーを押すと、 PageUp , PageDown , カーソル上下キー で上下にメッセージを移動できます。再度 Scroll Lock キーを押すと 元に戻ります。 NEC PC-9801/9821 をお使いの場合は、 Scroll Lock -> VF3 Page Up -> ROLLDOWN Page Down -> ROLLUP のキーを使ってください。 A4. 4.5-RELEASE 以降なら、/boot/loader がカウントダウンしている時に リターンキー以外のキーを押し、 boot -p として起動すると、起動メッセージを1行ずつ確認することができます。 なお、フロッピーディスクでインストールしているときは、A1、A2 の 方法は使えません。 boot -v などで起動すると、起動メッセージの最初の部分が表示されなく なります。これに関しては [管理番号 1334] をご覧下さい。 --- [管理番号 151] (最終更新 1999/03/10 02:01:12) Q. root 権限で他のユーザのパスワードを passwd で変更することは可能なのですが、 一般ユーザが自分で passwd を使ってパスワードを変更しようとすると、 passwd: error opening database: /etc/pwd.db.: Permission denied passwd: /etc/master.passwd: unchanged というエラーが発生して書き換えることができません。 A. passwd の所有者が root で、setuid bit は立っていますか? (以降の作業は、お使いのバージョンにより異なります。まず、uname -r として お使いのバージョンを確認してください)。 2.2.X の場合: 正常な状態であれば、 # cd /usr/bin # ls -l passwd -r-sr-xr-x 2 root bin 36864 Jul 22 1998 passwd となります。もしこうなっていない場合は、 # chmod u+s passwd と実行して、setuid bit を立てましょう。 3.X の場合: 正常な状態であれば、 # cd /usr/bin # ls -ol passwd -r-sr-xr-x 2 root wheel schg 24976 Jan 17 21:54 passwd となります。もしこうなっていない場合は、 # chflags noschg passwd # chmod u+s passwd # chflags schg passwd と実行して、setuid bit を立てましょう。 詳しくは、chmod(1)、chflags(1) を読んでください。 --- [管理番号 152] (最終更新 1999/02/17 23:58:45) Q. プロセスを60くらい立ち上げたあたりから、新しくプロセスを起動しよう とすると、 % less foo.gz No more processes. No more processes. "foo.gz" may be a binary file. See it anyway? と言われてしまいます。カーネルの NPROC の値は MAXUSERS=5 #define NPROC (40 + 32 * MAXUSERS) と設定しているので、十分だと思いますが、どうしてでしょうか。 A. NPROCの数は、全プロセスの上限値であって、ひとりのユーザが使用できる プロセスの上限ではありません。通常、ひとりのユーザが実行できるプロセス 数には上限値が設定されており、 sh(bash) ulimit csh(tcsh) limit の各コマンドで変更できます。 また、systat を利用すれば、その時点でのシステムの利用情報を得ることが できます。詳しくは man systat を見てください。 1ユーザ当たりのプロセスのソフトリミットを変える方法はカーネルのリコン フィグしか知りません。(3.0系では/etc/login.confというファイルでソフト リミットを変えられるそうです)自分は options CHILD_MAX=128 ついでに、、、 options OPEN_MAX=128 を指定しています。これでソフトリミットが128になります。 sysctlコマンドでも 変更出来ると思います。 --- [管理番号 155] (最終更新 2004/04/09 05:05:46) Q. vipw を実行すると、意図しない editor が起動されます。 vipw で起動する editor を好みのものに変えたいのですが。 A. vipw は、EDITOR 環境変数を見て指定された editor を起動します。 EDITOR 環境変数が定義されていない場合 (デフォルト) は /usr/bin/nvi が 起動されます。 好みの editor を使いたい場合は、.cshrc 等 shell のスタートアップ ファイルで EDITOR 環境変数を設定して下さい。 意図しない editor が起動される場合は、以下の点を確認してみて下さい。 ・ホームディレクトリの shell のスタートアップファイルで EDITOR 環境変数が設定されていたら、それを変更して下さい。 ・system の shell のスタートアップファイル (/etc/csh.cshrc, /etc/profile 等) または /etc/login.conf で EDITOR 環境変数が 定義されている。 この場合は、EDITOR 環境変数が定義されている箇所を変更するか、 または個人の shell のスタートアップファイルで EDITOR 環境変数を 設定して下さい。 (unsetenv EDITOR や unset EDITOR とすればデフォルトの editor が 使われます)。 --- [管理番号 156] (最終更新 1999/02/17 23:58:45) Q. /etc/resolve.conf に設定してあるネームサーバが応答しません。 A. "resolve.conf" ではなく "resolv.conf" です。"e" が余分です。 --- [管理番号 157] (最終更新 1999/02/17 23:58:45) Q. /etc/resolv.conf に設定してあるネームサーバが応答しません。ちゃんと、 namesarver 192.168.1.1 のようにしてあるのですが。 A. "namesarver" ではなく "nameserver" です。"a" ではなく "e" です。 --- [管理番号 158] (最終更新 2001/10/14 11:51:14) Q. 小さいファイルを連続してディスクに書き込むと、すごく遅いのですが。 A. FreeBSD のデフォルトでは、ファイルのデータ本体は遅延書き込みされますが、 i-node (メタデータ) の更新は同期的に行なわれているため、頻繁にファイルの 作成・削除・更新をするような動作は比較的低速です。 これは安全性を考慮した上でのことで、安全性や機能を少し犠牲にすれば 高速化することができます。そのため目的に応じて使い分ける必要がある でしょう。 1. mount(8) 時に -o async オプションを使用すると、i-node の更新も非 同期に行います。例えば、/etc/fstab に /dev/ccd0c /a ufs rw,async 0 2 のように書きます。ただし、速くなる代りに信頼性は犠牲にされます。 mount(8) によると async 指定したファイルシステムのすべての I/O を非同期に行います。 このオプションを指定することは非常に危険ですので、システ ムクラッシュ時にファイルシステムを作り直す用意ができてい ないかぎりは使うべきではありません。 とあります。 ちなみに Linux では、この async がデフォルトになっています。 2. 用途によっては -o noatime オプションも有効です。これはファイルへ のアクセス時に、ファイルの最終アクセス日時を更新しません。ただし、 このアクセス日時を利用するようなアプリケーションは上手く動かない ので注意が必要です。/etc/fstab には /dev/ccd0c /a ufs rw,async,noatime 0 2 のように書きます。 3. FreeBSD 3.0-RELEASE からはこれらに加えて softupdates という機能 が加わっています。これは、安全性の犠牲なしにファイル I/O の高速 化を行おうとするもので、場合によってはかなりの効果が期待できます。 softupdates の解説 FreeBSD 4.1-RELEASE 以降は、デフォルトで GENERIC カーネルに softupdates 機能が含まれています。 a) ファイルシステムに対して softupdates を有効にします。この時 tunefs(8) を使うにはファイルシステムがアンマウントされた状態 でなければなりません。シングルユーザモードで作業すれば良いで しょう。 # tunefs -n enable /a b) この機能を使うとき -o async オプションは無意味です。 /dev/ccd0c /a ufs rw,noatime 0 2 また、上手くできたか確認するには mount コマンドをオプションなし で実行します。 % mount /dev/ccd0c on /a (local, noatime, soft-updates, writes: ... ^^^^^^^^^^^^ 4. これ以外で高速化の鍵となるものは、PCI IDE コントローラのフラグ設 定や、newfs(8) 時のオプション指定の最適な組合せ、及び ccd(4) や vinum(8) を使用してディスクをストライピングすることも考慮する価 値があるでしょう。 --- [管理番号 162] (最終更新 1999/02/17 23:58:45) Q. ログインすると If the info distribution has been loaded on this machine, the FreeBSD Handbook will be in file:/usr/share/doc/handbook and the FAQ in file:/usr/share/doc/FAQ Type /stand/sysinstall to re-enter the installation and configuration utility. と言うメッセージが出るのですが、これは消す事はできないのでしょうか? A. /etc/motd を変更すれば変わります。man motdを見てください。 motdとは message of the day の略です。 --- [管理番号 164] (最終更新 1999/02/17 23:58:45) Q. X を入れて他のマシンの X端末にしたいんですけど。 A. /usr/X11R6/lib/X11/xdm のしたの file を以下のようにいじります。 diff -u xdm.dist/Xaccess xdm/Xaccess --- xdm.dist/Xaccess Mon Jun 2 23:22:09 1997 +++ xdm/Xaccess Thu Jun 26 21:02:35 1997 @@ -55,7 +55,7 @@ # so this may not work in all environments. # -* CHOOSER BROADCAST #any indirect host can get a chooser +#* CHOOSER BROADCAST #any indirect host can get a chooser # # If you'd prefer to configure the set of hosts each terminal sees, @@ -66,3 +66,4 @@ #%hostlist host-a host-b #* CHOOSER %hostlist # +* CHOOSER host1 host2 host3 ... (自分で欲しいリストを書く) diff -u xdm.dist/Xservers xdm/Xservers --- xdm.dist/Xservers Mon Jun 2 23:22:08 1997 +++ xdm/Xservers Thu Jun 26 21:03:51 1997 @@ -10,4 +10,4 @@ # look like: # XTerminalName:0 foreign # -:0 local /usr/X11R6/bin/X +#:0 local /usr/X11R6/bin/X diff -u xdm.dist/xdm-config xdm/xdm-config --- xdm.dist/xdm-config Mon Jun 2 23:22:08 1997 +++ xdm/xdm-config Thu Jun 26 21:03:31 1997 @@ -17,3 +17,4 @@ DisplayManager*resources: /usr/X11R6/lib/X11/xdm/Xresources DisplayManager*session: /usr/X11R6/lib/X11/xdm/Xsession DisplayManager*authComplain: false +DisplayManager._0.chooser: /usr/X11R6/lib/X11/xdm/chooser で、xdm を起動する時に /usr/X11R6/bin/xdm touch /usr/X11R6/lib/X11/xdm/xdm-pid /usr/X11R6/bin/X -indirect `hostname` で起動します。 ---- --- [管理番号 165] (最終更新 1999/02/17 23:58:45) Q. /usr/local/etc/rc.d/hogehoged.sh という起動スクリプトを用意したが、 特定のホストのみ実行するようにしたい。どうするのが一般的でしょう? A. 以下の方法があります。 A1. その起動スクリプト中でホスト名を見て切り分ける。 例) servername=hogeserv if [ `hostname` = $servername ]; then /usr/local/libexec/hogehoged && echo ' hogehoged' fi A2. 実行させたいホストの /etc/rc.conf にのみ、 hogehoged=YES と書いておき、起動スクリプト中では、 if [ x$hogehoged = xYES ]; then /usr/local/libexec/hogehoged && echo ' hogehoged' fi と書いておく。 --- [管理番号 167] (最終更新 2000/11/08 01:36:18) Q. ある日 突然 サーバにしているマシンで Apr 21 07:47:39 svr1 /kernel: file: table is full というメッセージが出ました。 A. kernel が扱えるファイル数が足りないようです。これは kernel 内の maxfiles という変数で決められています。これを増やすには kernel 設定ファイルの maxusers を増やして kernel を再構築しましょう。 ident GENERIC maxusers 32 このパラメータは、/sys/compile//opt_param.h 上で、 #define MAXUSERS 32 というふうに定義され、この MAXUSERS が /sys/conf/param.c で、 #define NPROC (20 + 16 * MAXUSERS) int maxproc = NPROC; /* maximum # of processes */ int maxfiles = NPROC*2; /* system wide open files limit */ というふうに利用されています。 また この変数は sysctl(8) コマンドを使って動的に変更出来ます。 [参照方法] # sysctl -A | grep maxfile kern.maxfiles: 360 kern.maxfilesperproc: 360 [変更方法] # sysctl -w kern.maxfiles=600 kern.maxfiles: 360 -> 600 起動時に自動的に設定するには、/etc/rc.local を作成して上記のコマンド を書いておくか、または、3.5R および 4.0R 以降であれば、 /etc/sysctl.conf に次のように記述します。こうしておけば /etc/rc.sysctl が設定してくれます。 kern.maxfiles=600 --- [管理番号 168] (最終更新 1999/02/17 23:58:45) Q. 8文字より長いログイン名を登録したい。 A. FreeBSD2.x 以前はOSが対応していませんでしたが、FreeBSD3.0からは 16文字までのログイン名を使えるようになりました。 しかし、packages や、ports は、ある程度考慮されているとは思いますが、 UNIX では、user 名は 8 文字である事が多かったため、 freesoft や、商用 soft で、16 文字の user 名をうまく扱えるかどうか、 確認が必要かもしれません。 --- [管理番号 174] (最終更新 1999/02/17 23:58:45) Q. FreeBSDのインストールが終ったDiskを まるごとコピーしたいのですが。 dd if=/dev/wd0a of=/dev/wd1a でいいのでしょうか? A. よくありません。dump + restore などのツールを使いましょう。 --- [管理番号 175] (最終更新 2004/04/09 05:05:14) Q. フロッピー 1枚で起動する FreeBSD の作り方を教えてください。 A. こちらのサイトではブラウザ上で設定を行ない、フロッピー イメージをダウンロードすることができます。proxy サーバ、 ゲートウェイサーバなどの用途に使えます。 自分でいろいろとカスタマイズしたい方は PicoBSD がおすすめです。 --- [管理番号 274] (最終更新 2001/10/25 21:20:53) Q. FreeBSD 終了時に自動で電源を切ることが出来ますか。 A. 多くのノートパソコンや apm BIOS と ATX 電源を持つマシンなら可能です。 1. BIOS 設定で APM を有効にします。 2. (まだインストールしていなければ) FreeBSD をインストールします。 3.a kernel に apm device が組み込まれていない場合には apm device が 有効になるように kernel を作り直します。 例えば、3.4-RELEASE の (i386 platform の) GENERIC では device apm0 at isa? disable flags 0x31 となっていますので、下記のように、disable を削除し、flags を 0x20 とします。flags の意味について詳しいことは LINT もしくは /usr/src/sys/i386/include/apm_bios.h を参照して下さい。 device apm0 at isa? flags 0x20 3.b GENERIC kernel のように apm が組み込まれているものの無効になって いる場合には apm が有効な状態で起動されるように設定します。これは、 起動時に USERCONFIG (boot -c) にて行なうか、kernel.conf に apm を 有効にする記述を加えます。 また、flags で 0x10、0x11 (またはいずれかと OR をとったもの) が指 定されている場合も、これを外す必要があります。 [4.0-RELEASE 以降で GENERIC kernel の場合] 3.a /boot/kernel.conf に enable apm を追加します。 3.b /etc/rc.conf に apm_enable="YES" を追加します。これは /stand/sysinstall を起動し、 メニューの Configure/Startup/APM のトグルをオンにすることでも 可能です。 4. shutdown -p で電源が切れます。 [3.1-RELEASE 以降の場合] 3. /etc/rc.conf に apm_enable="YES" を追加します。これは /stand/sysinstall を起動し、 メニューの Configure/Startup/APM のトグルをオンにすることでも 可能です。 4. shutdown -p で電源が切れます。 [2.2 系列の場合] 3. PAO を持って来てドキュメントに従ってインストールします。 shutdown コマンドが新しくなり、kernelも入れ替わります。 4. shutdown -x で電源が切れます。 2.2.8 で pccard は使わないという場合には * shutdown コマンドに対する patch * kernel の apm デバイスに対する patch を当ててコンパイルする、という方法もありますが、ドキュメントが 整備されていないため、**AS IS** で利用してください、ということです。 尚、3.0-RELEASE をお使いの場合は新しい RELEASE にバージョンアップする のが最も楽な方法でしょう。 --- [管理番号 292] (最終更新 2004/07/12 23:14:38) Q. DES のインストールの方法を教えてください。 A. ここではバイナリ配布ファイルからのインストール方法に話を絞ります。 まず、FreeBSD の暗号化関連の取り扱いについては、4.1.1-RELEASE で 大きな変更がありました。これについては、[管理番号 290] を参照して ください。 DES を含む配布ファイルは、4.0-RELEASE 以降ではそれまでの des/des.?? から crypto/crypto.?? に変更されていて、新たに追加された OpenSSL や OpenSSH も同じ配布ファイルに含まれます。また、インストーラの Distoributions メ ニューでも、3.5.1-RELEASE までは DES → des、4.1-RELEASE までは CRYPTO → crypto、そして現在では単に crypto を選択するだけとなっています。 項目の選び方については、以下の [X] マークを参考にしてください。なお、 4.1.1-RELEASE 以降では、Minimal 以外の配布セットを選べば自動的に マークされます。最後にインストール後の設定方法については、[管理番号 345] を見てください。 [3.5.1-RELEASE までの DES サブメニュー] [X] des Basic DES encryption services [ ] krb KerberosIV authentication services [ ] skerbero Sources for Kerberos [X] ssecure Sources for DES [X] scrypto Export controlled crypto sources [4.1-RELEASE までの CRYPTO サブメニュー] [X] crypto Basic encryption services [ ] krb4 KerberosIV authentication services [ ] krb5 Kerberos5 authentication services [ ] skrb4 Sources for KerberosIV [ ] skrb5 Sources for Kerberos5 [X] ssecure BSD encryption sources [X] scrypto Contributed encryption sources [4.1.1-RELEASE からの Distributions メニュー] (インストール時のメニューでは、配布セットを選ぶメニューで Custom を選択すると表示されます) [X] crypto Basic encryption services [ ] krb4 KerberosIV authentication services [ ] krb5 Kerberos5 authentication services [4.1.1-RELEASE からの src サブメニュー] [X] scrypto /usr/src/crypto (contrib encryption sources) [ ] skrb4 /usr/src/kerberosIV (sources for KerberosIV) [ ] skrb5 /usr/src/kerberos5 (sources for Kerberos5) [X] ssecure /usr/src/secure (BSD encryption sources) --- [管理番号 295] (最終更新 2000/11/08 01:55:32) Q. ログを別のファイルに書き出したくて /etc/syslog.conf を編集したんで すが変化がありません。 A. syslogd(8) に HUP シグナルを送りましたか? # kill -HUP `cat /var/run/syslog.pid` です。 伝統的な Unix では、syslog.conf(5) ファイルの、各行の左端に位置する 種類 (selector) を書く部分と、右側のファイル名 (action) を書く部分 の間の空白は TAB 文字だけしか使えません。スペースを入れると誤動作し ます。もちろん全角スペースは論外です。 cron.* /var/cron/log selector |---- TAB 文字 ----| action なお、最近の FreeBSD ではユーザへの便宜を図って、TAB 文字とスペース のどちらも使用できるよう改良されています。この場合も当然全角スペー スは除きます。 また、syslogd は指定された log file を自動的には作成しませんので、 手作業で作成しておく必要があります。次のように touch コマンドなどを 使用して作成してください。 # touch /var/cron/log 溜ったログファイルの処理については newsyslog(8) を参照すれば良いで しょう。 --- [管理番号 298] (最終更新 2003/05/17 21:39:22) Q. シングルユーザ・モード (boot -s) で起動してファイルを修正しようとしたの ですが、/ が read only になっていて書き込みができません。 A. 以下の手順が推奨されます。 1. ファイルシステムの整合性チェック # fsck -p これでエラーが報告されなければ次へ、もし異常終了した場合は、エラーが 報告されたパーティションについて、個別に fsck(8) を実行して復旧させます。 2. / (ルートパーティション) を書き込み可能状態へ # mount -u / /etc/fstab が消えたような場合は、mount -u -o rw /dev/ad0s1a / のように 具体的にデバイスも書きましょう。 3. 他のファイルシステムをマウント (オプション) # mount -a -t ufs または、必要なファイルシステムを個別にマウントすればよいでしょう。 4. スワップの有効化 (オプション) # swapon -a メモリが厳しい状況では必要ですが、メモリが十分あれば不要です。 5. カーネルクロックの調整 (オプション) # adjkerntz -i マシンの CMOS クロックが UTC に合わせてあれば必須ではありませんが、 ローカル時間に合わせてある場合 (/etc/wall_cmos_clock が存在する)、 これを実行しないでファイル編集を行うと、ファイルのタイムスタンプが ずれてしまいます。 ファイルの修正など作業が終わったら reboot するのが確実ですが、もし、^D でマルチユーザ・モードに移行するなら、その前に adjkerntz を kill してく ださい。そうしないと rc(8) スクリプト実行中に adjkerntz が二重に呼び出 されてしまいます。 --- [管理番号 299] (最終更新 1999/02/18 03:38:14) Q. ブート時に Automatic file system check failed... help! Enter full pathname of shell or RETURN for /bin/sh: と言って止まってしまいました。 A. シェルのパスを入れろとか言っていますので、適当なシェル (/bin/shか /bin/csh。/usr/local/bin/tcshはダメです) を入れるか、単にリターンを 打ちます。次に、fsck (/sbin/fsck) を実行します。例えば、/dev/wd0a の場合は、fsck /dev/wd0a となります。ファイルが壊れている場合などは、 どうするか聞いてきます。運を天にまかせて自動処理させたい時は、fsck に -y を付けて、fsck -y /dev/wd0a とします。 --- [管理番号 325] (最終更新 2001/08/12 05:25:06) Q. 使っている FreeBSD をバージョンアップしたいのですが、今ある環境を破壊 せずにバージョンアップ出来ますか? A. バージョンアップには次の二通りの方法があります。 1. 新しいバージョンの FreeBSD の配布ファイル一式を入手して、ブートフロッ ピーや CD-ROM から起動後、インストーラのメニューで「Upgrade: 既存のシ ステムをアップグレード (Upgrade an existing system)」を選択する。 2. 新しいバージョンの FreeBSD のソースファイルを入手して、「make world」 を実行する。 どちらの方法でも、カーネル、ライブラリ、コマンドなどを入れ替えることは 同じですが、1. の方法ではコンパイル済のバイナリを直接システムに上書き するのに対して、2. では自分のマシンでバイナリを作成して現状のシステムに インストールします。ただし、/etc 配下の設定ファイルは手動でマージする 必要があります。コマンドや /etc 以外のファイルなどにローカルな変更を 加えてある場合なども個別の対応が必要になるでしょう。また、コマンドや設定 ファイルの仕様変更、インストール済の ports/packages なども注意は必要 ですが、基本的には FreeBSD のバイナリは下位互換ですので、大部分はそのまま 使い続けられます。 2. の方法では全てコンパイルし直すことになりますので、相応のディスク容量 と時間が必要です。ディスク容量に関しては特に /usr/src と /usr/obj を 使いますので、必要なら前もってシンボリックリンクを張るなどして対応して ください。 参考) 必要なディスク容量と make world に要する時間 /usr/src 300MB /usr/obj 300MB 486DX4 100MHz 10 時間 MMX Pentium 233MHz 2.5 時間 Celeron 300MHz 2 時間 作業方法は、英語版が以下の URL にあります。 この日本語訳は、以下にあります。 また、/etc 設定ファイルの更新には mergemaster(8) が便利です。 --- [管理番号 336] (最終更新 2001/10/25 21:20:55) Q. FreeBSD ではブート時にオプション (boot -s) を与えることで、誰でもシングル ユーザ・モードで起動できてしまうのですが、その場合にもパスワードを要求する ようにはなりませんか? A. init(8) のマニュアルや /etc/ttys 内に記述がありますが、これが問題になる ような場合にはシングルユーザ・モードに入るときにパスワード入力を要求さ せることが可能です。 --- /etc/ttys より抜粋---------------------------------------------------- # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure -------------------------------------------------------------------------- つまり最後の secure を insecure にすれば OK です。 --- [管理番号 345] (最終更新 2001/03/07 02:08:46) Q. 確かに DES をインストールしましたが、/usr/bin/passwd でパスワードを 変更してもパスワードファイルは MD5 のままなのは何故でしょう? A. FreeBS 4.1.1-RELEASE 以降では、DES は配布ファイルの crypto に含まれる ようになりましたが、ただ crypto をインストールしただけでは、passwd(1) コマンドを使っても DES に変更されません。/etc/master.passwd に記録 されるパスワードを DES に変更したい場合は、/etc/login.conf の `default' クラスに、 :passwd_format=des:\ という行を挿入して cap_mkdb /etc/login.conf します。最後の `\' 記号は 継続行を意味します。このあとで passwd コマンドを使用すれば、パスワード は MD5 から DES に変更されます。以前のようにパスワードの先頭が `$1$' になっているかどうかに関わらず無条件に変更してしまいますので、もし MD5 でなければ困るユーザがいる場合は以下のようにしてください。 逆に特定のユーザだけ MD5 または DES を使うようにするには、passwd(5) の 5 番目のフィールドに任意のログインクラスを指定し、login.conf(5) には xuser:\ :passwd_format=des:\ :tc=default: staff:\ :passwd_format=md5:\ :tc=default: などのようにします。 それより古いバージョンの FreeBSD では、passwd コマンドはそれまで記録さ れていた形式を常に保存します。このためパスワードを DES に変更するには、 vipw(8) を使ってパスワードフィールドを空にしてから、改めて passwd コマ ンドを使います。 --- [管理番号 366] (最終更新 2003/05/17 21:39:23) Q. Web ブラウザからユーザの追加や削除、更新を行なえるようなツールは あるでしょうか。 A. ports/package に sysutils/webmin というアプリケーションがあります。 --- [管理番号 405] (最終更新 2002/08/24 06:22:44) Q. /etc/newsyslog.conf を編集して httpd 等のログをローテーションしようと しましたが、ローテーション後も名前が変更された古いファイルにログが 出力されつづけます。 A. 一般的な UNIX では、プロセスがファイルをオープンしているときに そのファイルのリネームを行った場合、プロセス側からは引続きリネーム 後のファイルをオープンしているように動作します。 newsyslog(8) はログローテーションを行った後に syslogd(8) に HUP シグナルを送ることで、ローテーションを行ったことを伝えるように なっています。よって、syslogd を利用しているデーモンならば ローテーション後に新しいログファイルにログが出力されるはずです。 もし syslogd を使わず独自でログファイルに記録しているデーモンが あるなら、そのデーモンのプロセス ID が書かれているファイル (pid ファイル) を /etc/newsyslog.conf に指定することで、そのデーモンに HUP シグナルが送られるようになります。 また、 - pid ファイルがない - HUP シグナルを送ってもログローテーションを認識しない というデーモンの場合でも、logger(1) によって syslogd に送るという 手もありますので、うまく工夫すれば newsyslog で処理することができます。 --- [管理番号 406] (最終更新 2000/03/22 02:28:34) Q. 次のようなスクリプトで routed のログファイルをローテーションしよ うとしましたが、ローテーション後も名前が変更された古いファイルに ログが出力されつづけます。 #!/bin/sh cd /var/log mv routedlog routedlog.0 cp /dev/null routedlog chmod 644 routedlog kill -1 routedのPID A. routed(8) は SIGHUP を受けても (kill -1 をしても)、オープン中のログ ファイルを切替えません。このような場合、次のようにいくつかの方法があり ます。 A1. 一旦 routed を殺し、ログファイルをローテーションさせてから再起動し ます。これが最も一般的です。 A2. routed 起動時に logger(1) を経由して syslogd(8) にログを送るように して、newsyslog(8) でローテーションさせます。こうすればログファイルの 管理が楽です。 A3. ローテーションを次のコマンドで行います。(これは裏技に近いので、う まくいくか様子を見た方がいいかも知れません。) cp -p routedlog routedlog.0 cat /dev/null > routedlog A4. FreeBSD ユーザたるもの routed のソースを読んで SIGHUP を受けた時に ログファイルを切替える動作を加えてしまいましょう。更にこのパッチを公開 してしまえば、みんなは幸せ、あなたは人気者になれるかも知れません。 (routedの場合に限らずこのような精神を大切にしましょう。) --- [管理番号 427] (最終更新 2002/02/03 13:12:18) Q. CVSup の使い方を説明して下さい。 A. や、handbook の を御覧下さい。 --- [管理番号 435] (最終更新 1999/02/17 23:58:45) Q. ブート時にときどき calcru: negative time: -??? usec (??? は数字) というメッセージが出るのですが、これはどういう意味でしょ うか? A. 少なくとも FreeBSD 2.2-RELEASE〜FreeBSD 2.2.7-RELEASE でこの症状が 報告されています。 FreeBSD ではブート時に CPU のクロック周波数を検出します。例えば 133MHz の Pentium なら下記の様に表示されるはずです。(周波数は、数 % の誤差を含みます。) CPU: Pentium (132.63-MHz 586-class CPU) ところが、一部のマシンでは 下記の様に誤って 大きく異なった周波数で検出される ことがある様です。 CPU: Pentium (29.17-MHz 586-class CPU) この様な場合に問題のメッセージが表示されます。この現象については 原因が正確 には特定されておらず、根本的な解決方法もわかっていません。この現象が発生して いる時には、時間計測が異常になるようで、 select(2)が、失敗して mule が、入力を受け付けなくなったり、 shutdown 時に正常に filesystem をunmount できずに、次回起動時に fsck したり します。 大部分の環境では、リブートしたときに下記の様なメッセージが出ていなければ その後の動作に支障はありません。 calcru: negative time: -??? usec なお、一部では、ブート時には問題ないが、突然表示されることがある様です。 このメッセージが表示されない様にするには /usr/src/sys/i386/isa/clock.c というソースファイルの先頭に 下記の 定義を追加してから カーネルを再構築 すると 解決する様です。 #define CLK_USE_I586_CALIBRATION #define CLK_CALIBRATION_LOOP #define CLK_USE_I8254_CALIBRATION ソースファイルを直接編集したくない場合は カーネルコンフィグレーション ファイルに 下記の行を追加します。 options CLK_CALIBRATION_LOOP options "CLK_USE_I8254_CALIBRATION" options "CLK_USE_I586_CALIBRATION" --- [管理番号 445] (最終更新 1999/02/17 23:58:45) Q. ifconfig -a や netstat -i した時に、lp0 というインターフェイ スが現れます。これはなんですか。また どうしたら消せますか。 A. まず lp0 はパラレルポートを使って SLIP のような接続を行なう ``PLIP'' 接続に用いるインターフェイスです。 lp0 は INET(Internet working) が指定されている状態で lpt0 デ バイスが組み込まれると、 lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven port lp0: TCP/IP capable interface の様に自動的に組み込まれます。組み込んだまま使用しなくても特に 問題を生じることはありませんので そのまま使っていて大丈夫です。 PLIP 接続をしないので、lp0 を組み込みたくない場合は、以下の様に boot: 時にカーネルの設定を変えるか 再構築します。 ・boot: 時に設定する方法 lpt0 が割り込みを使わないようにするには、Boot: -c として起動し、 irq lpt0 -1 とします(visual モードではこの操作はできないはずです) ・カーネルを再構築する方法 lp0 は lpt0 が割り込みを使って かつ options INETが指定されてい る場合に組み込まれます。 lp0 を外すにはこの条件を外します。 その方法としては 2通り程考えられます。 どれかひとつを実行すれば 外すことができます。 1. lpt を割り込みを使わない様に lpt0 の行を以下の様に編集 して再構築する。 device lpt0 at isa? port? tty irq ? vector lptintr 2. ソースファイルを修正します。 /sys/i386/isa/lpt.c のファイルの先頭に 次の 3行を挿入します #ifdef INET #undef INET #endif /* INET */ そして 通常通り、カーネルを再構築して入れ換えます。 他に カーネルコンフィグレーションファイルの options INET を外してカーネルを再構築することも考えられますが、この場合 他のネットワークインターフェイスもIPネットワーク機能が使えな くなるため、現実的な解ではありません。 上記の方法は FreeBSD 2.2.5 Release で確認しています。 --- [管理番号 446] (最終更新 1999/02/17 23:58:45) Q. FreeBSD だと、Ctrl + Alt + Del したら誰でも shutdown 出来ちゃうんで すが、これを止めることはできませんか? A. いくつか方法があります. A.1 (FreeBSD のバージョンに非依存) 使っている keymap を書き換えてしまいます。例えば、106 キーボードを使用 してるならば、(/usr/share/syscons/keymaps/ の下にある) jp.106.kbd の 'boot' とある部分を 'nop' などに書換えます。 (この例では 'del' としています。) (修正前) 083 del '.' del del del del boot del N ~~~~ (修正後) 083 del '.' del del del del del del N ~~~ 他の keymap でも同様に、'boot' となっている部分を 'nop' とすれば OK で す。 (注意 1)この方法はそのマシンにアカウントがあって kbdcontrol を実行でき る人には無力です。 (注意 2)書き換えに失敗すると、キーボードの刻印と、実際に入力される文字 の対応が取れなくなります。バックアップを取ってから書き換えをし ましょう。 A.2 (FreeBSD 2.2.5-RELEASE 以前) /sys/i386/isa/syscons.c にある関数 scgetc() を書き換えて対処します。 --- /sys/i386/isa/syscons.c ---------------------------------- case RBT: shutdown_nice(); break; -------------------------------------------------------------- この部分 (FreeBSD-2.2.1R だと 2986 行目付近、 FreeBSD-2.2.5R だと 3247 行目付近) を次のように書き換えます。 --- /sys/i386/isa/syscons.c ---------------------------------- case RBT: #ifndef NO_RBT shutdown_nice(); #endif break; -------------------------------------------------------------- これでカーネルの設定ファイル (/sys/i386/conf/*) に options NO_RBT をつけて再構築した kernel では、syscons から Ctrl + Alt + Del での リブートができなくなります。 A.3 (FreeBSD-2.2.6-RELEASE 以降) カーネルに, options SC_DISABLE_REBOOT を加えて, 再構築して下さい. Ctrl + Alt + Del でのリブートができなくなります. --- [管理番号 457] (最終更新 1999/02/17 23:58:45) Q. FreeBSD には、Windows でいうところの「デフラグ」はありますか? A. FreeBSD が採用している FFS というファイルシステムは、できるだけ一つ のファイルがばらばらに配置されることがないように作られていますので、基 本的にデフラグの必要はありません。もしデフラグしたとしても劇的な速度アッ プは起こらないでしょう。 どうしても、というなら dump でバックアップを取り、newfs して restore で 書き戻すのがいいでしょう。 また、fsck を使うと、 % fsck (中略) 33527 files, 581040 used, 1491171 free (17803 frags, 184171 blocks, 0.9% fragmentation) ↑これ などと表示されますが、これは「どれくらいファイルブロックが分散してしまっ たか」を表すものではなく、「ディスク領域を有効に使うために、どれくらい ファイルブロックを分割しているか」というものを意味しています。この値が 高いからと言って、パフォーマンスの低下につながるわけではありません。 --- [管理番号 461] (最終更新 1999/02/17 23:58:45) Q. システムをシャットダウンする場合は、必ず root になってから root# shutdown -h now 等とやらなければいけないのでしょうか? A. /sbin/shutdown コマンドは operator グループに所属しています。あなたを /etc/group の operator グループに追加すると、root にならなくても shutdown コマンドを実行できます。あなたのユーザ名が YourLoginName なら、 /etc/group を wheel:*:0:root,YourLoginName daemon:*:1:daemon |<省略> operator:*:5:root,YourLoginName とすれば良いでしょう。これで、 YourLoginName% shutdown -h now とやれば、シャットダウン出来ます。 --- [管理番号 464] (最終更新 2003/11/17 02:28:48) Q. コンソールから root でログインしようとしましたが、パスワードを忘れて しまいログイン出来ません。どうしたら良いでしょうか? A. root のパスワードを忘れてしまうなど言語道断です。手始めに security(7) を読むなどして、ちゃんとセキュリティに関して勉強し、ルートの心を学んで ください。最近ではインターネットに常時接続されるマシンも多くなっていま すから、もし悪意のある攻撃を受けたらひとたまりもないでしょう。これから は絶対に忘れないようにするということで、以下に対処方法を説明します。 まずマシンが動作中であれば、なんとかしてシステムを止めなければなりませ ん。shutdown(8) コマンドや CTRL+ALT+DEL キーが使えれば安全にリブートで きますが、どちらも不可能であれば、sync(8) コマンドを2,3回タイプしてか ら、リセットまたは電源を切るようにしてください。もし sync もできないよ うなら…、神様にお祈りするしかないでしょう。 次にパスワードの変更方法ですが、/etc/ttys で console が `insecure' に 設定されていると、シングルユーザ・モードのシェルが起動される前に、root のパスワード入力を求められてしまいお手あげなので、fixit floppy などを 利用することになります。デフォルトのままなら console は `secure' です ので、シングルユーザ・モードに落して passwd(1) コマンドを使うだけです。 # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure ^^^^^^ ここを確認 1. console が `secure' の場合 (FreeBSD のデフォルト) (1) シングルユーザ・モードに落します。 `shutdown now' でシングルユーザに落します。それができないならリブー トして次のような loader(8) のメッセージが表示されたら、スペースバー を叩いて autoboot を停止させ、コマンドプロンプトから `boot -s' と タイプします。 Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/boot/kernel/kernel] in 7 seconds... FreeBSD 2.2.x では "boot:" の表示が出たら "-s [RET]" と入力します。 (2) "Enter root password, or ^D to go multi-user" と表示される場合は、2. の方法を試してください。 "Enter pathname of shell or RETURN for /bin/sh:" と表示されたら、そのままリターンキーを押して次へ進みます。 (3) 念のためファイルシステムの整合性をチェックします。 # fsck -p システムを強制リセットした場合、ファイルシステムが損傷を受ける可 能性があります。重大な不整合が発見されたとき `fsck -p' はエラーで 終了しますので、エラーが報告されたパーティションに対し、個別に fsck(8) をかける必要があります。 (4) ファイルシステムをマウントします。 # mount -u / # mount -a -t ufs (5) ここで、 # passwd として root のパスワードを設定して下さい。 (6) root のパスワード設定が終わったら # exit して下さい。OS が起動されます。 2. console が `insecure' の場合 要点は別のシステムからブートすることです。その際、厳密に FreeBSD の バージョンが同じでなくともかまいませんが、できるだけ同じものを使うこ とを勧めます。もし、別の HDD, スライスからブート可能であれば、それを 使うのも良いですし、"live filesystem" CD/DVD や fixit floppy を使う のでもかまいません。ここでは fixit floppy を使うものとして説明します。 (1) kern.flp, mfsroot.flp でインストーラを起動し、メニューから Fixit モードに入ります (Main Menu -> Fixit -> Floppy または CDROM)。 マシン構成によっては、kern.flp のカーネルをカスタムカーネルに差し 替えておく必要があるかもしれません。 (2) 必要とするデバイスファイルを作成します。既に /mnt2/dev に存在する なら、それを使ってもかまいません。 # ln -s /mnt2/etc/group /etc # ln -s /mnt2/dev/MAKEDEV /dev # cd /dev && sh MAKEDEV da0s2a FreeBSD のバージョンによっては、MAKEDEV には修正が必要です。これで エラーとなるようなら次のようにしてみてください。 # sed 's%/sbin/mknod%/mnt2/stand/mknod%' /mnt2/dev/MAKEDEV > /dev/MAKEDEV (3) ファイルシステムをマウントします。 # fsck -p /dev/da0s2a || fsck /dev/da0s2a # mount /dev/da0s2a /mnt まずルートパーティションを /mnt にマウントし、/usr パーティション を /mnt/usr へというふうに階層的にマウントしてあげます。fixit.flp では /usr が必要ですが、CDROM が使える場合はルートだけで足ります。 (4) root のパスワードフィールドを空にします。 # vi /mnt/etc/master.passwd root:$1$xxxxx:0:0::0:0:Charlie &:/root:/bin/csh ^^^^^^^^ ここを削除 (5) パスワードデータベースを再構築します。 # ln -s /mnt/usr/lib* /usr # /mnt/usr/sbin/pwd_mkdb -p -d /mnt/etc /mnt/etc/master.passwd fixit.flp には pwd_mkdb(8) が入ってないので、共有ライブラリを準備 してシステムのものを利用します。もし CDROM を使えるときは、単に次 のように実行すれば良いでしょう。 # pwd_mkdb -p -d /mnt/etc /mnt/etc/master.passwd (6) 終了。あとでパスワードを再設定するのを忘れずに。 # reboot --- [管理番号 467] (最終更新 1999/02/17 23:58:45) Q. WIDE-dhcp と qpopper の syslog(3) が、同じ facility "local0" を使っ ているために syslog.conf(5) で local0.* /var/log/dhcp.log としても、dhcp.log に qpopper の syslog が含まれてしまいます。こ れらを違うファイルに分離して保存することはできませんか? A. FreeBSD では syslog.conf が拡張されており、特定のプログラムからの syslog メッセージを取り出して保存することができます。 syslog.conf に以下のような内容を追加して、syslogd(8) に HUP シグナルを 送って syslog.conf を再読み込みさせてください。 (# kill -HUP `cat /var/run/syslog.pid` のようにして行ないます。) !dhcps *.* /var/log/dhcp.log !popper *.* /var/log/popper.log ただし、あらかじめ空の dhcp.log と popper.log というようなファイルを touch(1) コマンドなどで作成しておかないといけません。 --- [管理番号 471] (最終更新 2000/12/07 02:40:10) Q. キーボード無し、CRT 無しのマシンで、シリアルポート (COM1) を使用し てコンソール操作をしたいのですが、どうしたら良いのでしょう。 A. FreeBSD ハンドブックの「14.6 シリアルコンソールの設定」を読んでください。 ほとんどの場合、「14.6.2 シリアルコンソールを設定するための 6 ステップ」 を読めばまず成功すると思います。 --- [管理番号 473] (最終更新 1999/07/24 15:02:57) Q. /bin/ls が壊れました。ls の代わりになるコマンドはありませんか? A. /stand/find があります。例えば ls -ls /bin や ls -ld /bin の代わりに /stand/find /bin -ls や /stand/find /bin -type d -ls を試してみましょう。 ほかに、echo *、echo */* のように、シェルの内部コマンドを使う 方法もあります。もし tcsh を使っているのなら、"ls -F" と ほぼ 同じ "ls-F" という組み込みコマンドもあります。 また、こういう時のために、Live CD-ROM というものがあります。 Walnut Creek 製を購入したのであれば 2枚目がそれにあたります。 壊れたコマンドをコピーしましょう。 --- [管理番号 483] (最終更新 1999/02/17 23:58:45) Q. 起動できなくなりました。/bin も壊れたので single user mode でも作業 できません。 A. CD-ROM や ftp サイトの boot.flp (== install FD) と同じところに fixit.flp があります。これを rawrite.exe などで FD に書き込んで fixit FD を作成します。boot FD を入れて起動し menu から Fixit を選ぶと指示が あるので fixit FD と入れ換えます。この状態で最小限の作業ができますので HDD を mount するなりして作業しましょう。いざというときのために boot FD と一緒に fixit FD も作る習慣にすると良いでしょう。 --- [管理番号 502] (最終更新 1999/02/17 23:58:45) Q. root に対する r コマンドを有効にしたくて /.rhosts ファイルを作成し たのですが、どうしてもうまくいきません。SunOS 等ではうまくいくのですが… A. root のホームディレクトリは、SunOS では / ですが、FreeBSD では /root ですので、root の .rhosts ファイルは /.rhosts ではなくて /root/.rhosts です。 --- [管理番号 503] (最終更新 2004/04/09 05:05:59) Q. ファイルを暗号化したいのですが、どうすればいいですか? A. FreeBSD に標準で含まれる OpenSSL を使うとよいでしょう。 plain.txt を AES 256 ビットで暗号化し、crypted に出力する には以下のようにします。 % openssl enc -e -aes256 -in plain.txt -out crypted.dat enter aes-256-cbc encryption password: (鍵を入力) Verifying - enter aes-256-cbc encryption password: (確認のためもう一度鍵を入力) 復号化する場合は以下のようにします。 % openssl enc -d -aes256 -in crypted.dat -out plain-decrypted.txt enter aes-256-cbc decryption password: (暗号化の際に使用した鍵を入力) AES 256 ビットでなく、DES で暗号化します。 % openssl enc -e -des -in plain.txt -out crypted.dat OpenSSL で使用可能な暗号は enc(1) を参照してください。よく わからなければ、AES を使っておきましょう。2004 年現在では、 安全性・速度などを考えると、AES が最もバランスのよい暗号で あると考えられています。 なお、crypt(1)・bdes(1) という古いコマンドもありますが、 特に使用する必要はないでしょう。 --- [管理番号 518] (最終更新 1999/02/17 23:58:45) Q. dump(8) を、 # /sbin/dump 0afu /dev/nrst0 /dev/wd0 のようにテープドライブに実行すると、途中のメッセージやドライブの音から は、ちゃんと dump はできているようですが、 DUMP: DUMP IS DONE のメッセージの後、テープを取り出してみるとテープの位置がまったく最初の ままです。nrst0 (no rewind) とやっているので実行後に巻き戻らないはずだ と思います。 A. テープを取り出す際に巻戻すのはドライブの仕様です。"no rewind" は 「close(2) 時に巻き戻さない」という意味です。 --- [管理番号 528] (最終更新 1999/02/17 23:58:45) Q. login shell の変更のため /etc/passwd を編集したい。 A. /etc/passwd は vi などのエディタで直接編集してはいけません。 chpass(1) や vipw(8) を使いましょう。 --- [管理番号 532] (最終更新 1999/02/17 23:58:45) Q. メモリをたくさん使ったり fork しまくる daemon などがうまく動作しま せん。 A. 標準では resource limits が低い値に抑えられているため、多量の資源を 消費するプロセスはそのままでは動作しないことがあります。 一般ユーザー権限で起動する場合には limits(1) を使って制限を緩めるのが 普通ですが、対象が daemon などのシステムプロセスで、かつ、2.2.5-RELEASE 以降の場合、/etc/login.conf を適切に記述することで対処できます。 (2.2.2-RELEASE の場合、/etc/rc 実行時は login.conf を参照しないようです。) また、一般ユーザーのデフォルトの resource limits の変更も、login.conf で行うことができます。 login.conf の記述については、 管理番号: 533 を参照してください。 login.conf が使えない場合は、/etc/rc に limits(1) を直接書き込むなり、 limits(1) してから目的のプロセスを呼び出す shell script を書くなりして 対処してください。 --- [管理番号 533] (最終更新 1999/02/17 23:58:45) Q. resource limits を緩めるには、login.conf をどう書けばいいですか。 A. まず、/etc/login.conf が使えるのは 2.2.2-RELEASE 以降のバージョンです。 2.2.5-RELEASE 以降の場合は元から /etc/login.conf が存在していますが、 2.2.2-RELEASE の場合には、初めに以下の手順で login.conf を準備する必要 があります。 | usr/src/etc(2.2.2-RELEASE/src/setc.aa)を展開してlogin.conf | を/etcにコピーします。 次に /etc/login.conf を編集して、値を変更します。メモリをたくさん使い たい場合には datasize(-cur)= の項目を、プロセス数を増やしたい場合は maxproc(-cur)= の項目を、それぞれ増やします (または infinity にします)。 詳しい解説は、login.conf(5) 及び passwd(5) を参照してください。 なお 2.2.5-RELEASE 以降では、/etc/rc 実行中は login class が daemon に なっています (rootではありません) ので注意してください。2.2.2-RELEASE の場合は、そもそも login.conf を見にいかないようです。 最後に、変更した login.conf からデータベースを作成します。 | # cap_mkdb /etc/login.conf --- [管理番号 561] (最終更新 1999/02/17 23:58:45) Q. システムがクラッシュしてしまったので、fsckをかけたら、 > ** /dev/rsd0s1e > BAD SUPER BLOCK: MAGIC NUMBER WRONG > Floating point exception (core dumped) と出て、fsckが動きません。復旧する手段はありませんか? A. まず、 # fsck -y -b 32 /dev/rsd0s1e を実行してみて下さい。大抵の場合は復旧する事ができるでしょう。 もし復旧できないようなら、 # newfs -N /dev/rsd0s1e を実行して、出てくる数字を順番に入れると復旧できる可能性が あるでしょう。 --- [管理番号 574] (最終更新 2003/10/16 23:20:26) Q. 内蔵モデムボードを使えるようにする設定方法を教えて下さい。 A. 内蔵モデムボードと言っても ハードウェア的にシリアルポートとその先に モデムが接続されている様に見えるものがほとんどです。このタイプであれば、 外付けモデムが シリアルポートに接続されている場合と同じ様に考えて設定す れば利用できる様になります。 従って内蔵モデムカードであっても シリアルインターフェイスの部分は、 通常のシリアルポートと同じように設定します。 もし、内蔵モデムボードが Windows 専用とされている、いわゆる WinModem で、 シリアルポートとしてカーネルに認識してもらえない場合でも、ものによっては 使える場合があります。[管理番号 832] を参照してください。 内蔵モデムカードを利用するときは、既にマザーボードなどにある シリアル ポートとポートアドレスや割り込みが競合しない様にしなければなりません。 MS-DOS での 一般的なポートと I/O アドレス, IRQ の割り当ては以下のように なっています。 COM デバイス I/O IRQ ---- -------- ---- --- COM1 sio0 3F8 4 COM2 sio1 2F8 3 COM3 sio2 3E8 4 COM4 sio3 2E8 3 COM1 と 3, COM2 と COM4 で IRQ が重なっていますので、これらは同時使えない 仕様になっています。 もし同時に使うのであれば IRQ を使われていない別の 番号に割り当てる必要があります。 --- [管理番号 596] (最終更新 2001/11/03 13:54:21) Q. /kernel など一部のシステムファイルに対して、削除、上書き、名前の変更を しようとすると、Operation not permitted といわれてしまいました。 A. まず、Operation not permitted というエラーメッセージが表示される状況に は二つのケースが考えられます。 1. スティッキービット: sticky(8) 具体的には /tmp ディレクトリなどの様に、ファイルモードの最後が `t' に なっているディレクトリで、ファイルのオーナとは異なる一般ユーザが rm し ようとした場合です。スーパユーザにはこの制限はありません。 % ls -ld /tmp drwxrwxrwt 13 root wheel 1024 Oct 29 22:56 /tmp/ % ls -l /tmp/list -rw-r--r-- 1 foo wheel 18561 Sep 21 14:58 /tmp/list % su bar % rm -f /tmp/list rm: /tmp/list: Operation not permitted 2. ファイルフラグ: chflags(1) これはそれらのファイルに schg フラグが設定されているからです。実際に どのファイルにフラグが設定されているかは、FreeBSD のバージョンにより異 なりますが、このフラグが付いているファイルは、スーパユーザでも変更する ことができません。フラグを確認するには ls(1) に -lo オプションを付けて 実行します。また、find(1) を使えばファイル一覧を得ることができます。 # ls -lo /kernel -r-xr-xr-x 1 root wheel schg 2383647 Sep 19 22:30 /kernel* # find / -flags schg -exec ls -lo {} \; -r-sr-xr-x 1 root wheel schg 354504 Sep 21 22:05 /bin/rcp -r-x------ 1 root wheel schg 388072 Sep 21 22:13 /sbin/init -r-sr-xr-x 1 man wheel schg 28944 Sep 21 22:08 /usr/bin/man ...省略... これらのファイルを変更するには、例えば # mv /kernel /kernel.old mv: rename /kernel to /kernel.old: Operation not permitted # chflags noschg /kernel # mv /kernel /kernel.old と chflags(1) コマンドで schg フラグを消去してから操作します。カーネル については make installkernel したとき自動的に行われます。注意点として、 カーネルのセキュリティレベルが 1 以上では、chflags でフラグを消去する ことも禁止されます。この場合、システムをシングルユーザ・モードでブート し必要な作業を行なってください。securelevel(8), security(7) を参照。 # sysctl kern.securelevel kern.securelevel: 2 # chflags noschg /kernel chflags: /kernel: Operation not permitted --- [管理番号 603] (最終更新 1999/02/17 23:58:45) Q. ログイン画面からシャットダウンできるように設定したい。 A. 誰もログインしていないとき shutdown アカウントでログインすると、自 動的にシャットダウンする例を以下に説明します。 root になります。 vipw コマンドで以下の行を追加します。 ----------- ここから --------- shutdown:*:0:1::0:0:Shutdown Account:/:/usr/local/shutdown/shutdown.sh ----------- ここまで --------- パスワードを設定します。 # passwd -l shutdown /usr/local/shutdown/shutdown.sh を次の内容で作成します。 ----------- ここから --------- #!/bin/sh num=`who |wc -l` if [ $num = "1" ] then /sbin/halt exit 0 else echo '****************************************************************' echo 'ERROR: You can not SHUTDOWN, because anyone below is working now.' echo '****************************************************************' who exit 1 fi ----------- ここまで --------- 上記シェルスクリプトに実行パーミションを設定します。 # chmod 544 /usr/local/shutdown/shutdown.sh --- [管理番号 607] (最終更新 1999/02/17 23:58:45) Q. ccd を利用して disk image の mirroring を行いたい。 A. /etc/ccd.conf に、flags が 6 (== CCDF_UNIFORM|CCDF_MIRROR) で、かつ、 その後ろに同じ大きさのパーティションが二つ書かれているエントリを追加し ます。 エントリの例 (/dev/sd0s1e と /dev/sd1s1e で mirroring を行う) : ccd0 32 6 /dev/sd0s1e /dev/sd1s1e この後、ccdconfig -C → newfs という手順をとります。 --- [管理番号 608] (最終更新 1999/11/19 15:51:44) Q. ccd を利用して disk image の mirroring を行っていたら、mirroring に 使用しているうちの片方のディスクが壊れてしまいました。 A. /etc/ccd.conf を書き換えて壊れたディスクに含まれているパーテション を除去します。 次に umount してから、ccdconfig -U で古い設定を解除します。 ccdconfig -C を行って新しい設定を有効にし、mount すると、とりあえず壊 れていない方のディスクのみでシステムを稼働させ続けることが可能です。 例: ccd0 32 6 /dev/sd0s1e /dev/sd1s1e で、sd1 が壊れた場合、このエントリの flags を 6 から none に変更し /dev/sd1s1e を除き、 ccd0 32 none /dev/sd0s1e とします。この時、ccdconfig -C に続けて newfs を行う必要は *全く* あり ません。 新しいディスクが調達できたならば、dd コマンドを利用して壊れなかった方 の disk image を新しい方にコピー (例: dd if=/dev/rsd0s1e of=/dev/rsd1s1e bs=1m) し、/etc/ccd.conf を変更 (元に戻) して同じ手続きを行ないます。 --- [管理番号 612] (最終更新 1999/02/17 23:58:45) Q. vipw を使うことを知らなかった為 /etc/passwd を エディタ で直接編集 してしまいパスワードファイルを壊してしまいました。 とりあえず 現在の /etc/passwd をなんとか復元したいのですが、どうすれ ばいいですか? A. まず rootのパスワードをブランクにして master.passwdを正常な状態に 編集します。 この状態で # pwd_mkdb -p /etc/master.passwd としてしてください。これで vipw が使える様になるはずです。 vipwできるようになったら passwd(1) でrootのpasswdをすぐ設定しましょう。 --- [管理番号 613] (最終更新 2004/07/12 23:14:38) Q. /etc/termcap に端末の設定を追加したのですが、vi を起動しようとすると、 `vi: xxxx: unknown terminal type' や `vi: No terminal database found' と表示されて起動できません。どうしてでしょうか? A. vi(1) など ncurses(3) を利用したアプリケーションは、cap_mkdb(1) により ハッシュ化されたデータベースを利用していますので、/etc/termcap (実体は /usr/share/misc/termcap) を変えただけでは変更は反映されません。 # cap_mkdb /usr/share/misc/termcap のようにすると、端末設定の変更を反映させることができます。 --- [管理番号 632] (最終更新 1999/02/17 23:58:45) Q. あるホストのディスクを、他のホストのテープ装置を使ってバックアップ したいのですが。 A. tar、dump コマンドは バックアップの出力先ファイルに ユーザー@ホスト:出力先ファイル という形式を指定できます。rmt(8)、rcmd(3) のマニュアルを参照して下さい。 以下に具体的な使用例を示します。 hostA テープ装置のあるホスト hostB バックアップしたいホスト 1. hostAの設定をします。 テープ装置をアクセスするユーザーを追加します。 tape:*:888:5::0:0:tape:/home/tape: このユーザーは operator グループに所属している必要があります。 /home/tape/.rhosts に 以下の行を記述します。 hostB root このファイルは、tape または root に所有され、所有者以外の書き込みが禁 止されている必要があります。 /etc/inetd.confファイルの以下の行を有効にします。 shell stream tcp nowait root /usr/libexec/rshd rshd 2. hostBでのバックアップ。 # dump 0uf tape@hostA:/dev/nrst0 /dev/rwd0s1a # tar cvpf tape@hostA:/dev/rst0 . [注] FreeBSD の デバイスファイルは tar (GNU tar) で正しくバックアップをとる ことができません。このためシステム全体のバックアップをとる場合は dumpや cpio 等を使う方が良いでしょう。 また、この設定は、場合によってはセキュリティホールとなる場合も考えられ ますから tcp_wrapper(tcp_wrappers)等を併用することも検討して下さい。 --- [管理番号 654] (最終更新 1999/02/17 23:58:45) Q. xlock を起動させようとすると xlock: Can not get hostbyname といって起動しません。ホストネームはちゃんと設定しているのですが、どう すれば起動できますか? A. /etc/rc.conf だけではなく、/etc/hosts にも hostname(とその IP address)を設定してある必要があります。 /etc/rc.conf で設定する hostname は hostname(1) が返す文字列を指定して いるだけであり、gethostbyname(3) が求める hostname と IP address の対 応は /etc/hosts または DNS によって解決されています。gethostbyname(3) の働きは、hostname と IP address の対応を書いた表の検索だというように 理解しておくと今後似たような問題にも対応できると思います。 --- [管理番号 657] (最終更新 1999/02/17 23:58:45) Q. ディレクトリの残り容量を自動で監視する方法はありますか。 A. cron とシェルスクリプトを使う方法があります。 ここでは 30分ごとに /varの使用容量を調べ、 90%を越えたら自動で foo@my.domainあてにメールを出す例を説明します。 rootアカウントで以下の作業を行います。 ディレクトリを作成します。 # mkdir /root/chkdisk 以下の内容でシェルスクリプト /root/chkdisk/chk.sh を作成します。 ------------------ cut here (start)---------------- #!/bin/sh df -k | awk '$6=="/var"{ print }' | awk '$5 > "90%" { print }' \ > /root/chkdisk/alarm ; if [ -s /root/chkdisk/alarm ] then cat /root/chkdisk/head > /root/chkdisk/work.txt cat /root/chkdisk/alarm >> /root/chkdisk/work.txt cat /root/chkdisk/work.txt | sendmail -t rm /root/chkdisk/alarm rm /root/chkdisk/work.txt fi exit 0 ------------------ cut here (end)---------------- このシェルスクリプトに実行権を設定します。 # chmod +x /root/chkdisk/chk.sh 以下の内容で /root/chkdisk/head を作成します。 ------------------ cut here (start)---------------- To: foo@my.domain Subject: Check the space on /var, please. ----- このメールは cronにより自動で発送されました。 /var の残り容量が減ってきましたので確認してください。 ------------------ cut here (end)---------------- つぎに /etc/crontab を編集して次の 3行を追加します。 最後の行の意味は、30分ごとに上記で説明した chk.shを rootアカウントで 実行することです。 ------------------ cut here (start)---------------- # # check disk space on /var */30 * * * * root /root/chkdisk/chk.sh ------------------ cut here (end)---------------- /etc/crontabを編集すると cronを起動し直さなくても数分の内にシステムが 変更を認識します。 以上で設定が終りました。 もし、/varでなく別のディレクトリを監視したい場合は上記で作成したファイル 中の '/var' をコマンド df -k の結果の 6番目の文字列と置き換えてください。 例えば以下の例のように /home/foo を監視したいなら '/var' を '/usr'に置き換えます。 % df -k /home/foo Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/wd0s2f 595623 361235 186739 66% /usr --- [管理番号 666] (最終更新 2003/11/17 02:28:48) Q. CD-ROM や MO のマウントをする際、いちいち root になるのが面倒なのですが。 A. amd (Auto Mount Daemon) という、あるディレクトリを参照すると自動的にマ ウントしてくれるシステムがあります。 amd を利用するためにはカーネルに NFS が組み込まれていなければなりませ ん。具体的にはカーネルコンフィギュレーションファイルに options NFS という行が必要ですが、デフォルトの GENERIC カーネルには含まれています ので、この行をあえて削除していないならば amd は利用可能です。 現在、次のようにマウントできているとします。 ATAPI CD-ROM mount -t cd9660 /dev/acd0a /cd SCSI MO (UFS 形式) mount /dev/da0a /od SCSI MO (FAT 形式) mount -t msdos /dev/da0s1 /odpc ATA HDD (FAT 形式) mount -t msdos /dev/ad1s1 /dos この場合は次のように /etc/amd.map を書きます。 /defaults fs:=/a/${key} cd type:=program;\ mount:="/sbin/mount mount -t cd9660 /dev/acd0a ${fs}";\ unmount:="/sbin/umount umount /dev/acd0a"; od type:=program;\ mount:="/sbin/mount mount /dev/da0a ${fs}";\ unmount:="/sbin/umount umount /dev/da0a"; odpc type:=program;\ mount:="/sbin/mount mount -t msdos /dev/da0s1 ${fs}";\ unmount:="/sbin/umount umount /dev/da0s1"; dos type:=program;\ mount:="/sbin/mount mount -t msdos /dev/ad1s1 ${fs}";\ unmount:="/sbin/umount umount /dev/ad1s1"; amd を実行するためには portmap(8) というデーモンを起動しておかなく てはなりませんが、FreeBSD 4.4-RELEASE 以降では portmap が標準で起動 しなくなりました。 もし ps ax | grep portmap して portmap が起動していないようなら、amd よりも先に # portmap として portmap を起動してください。なお、/etc/rc.conf に amd_enable="YES" と記述してマシンを再起動すれば、自動的に portmap が起動されます。 ディレクトリを作成して、実行テストをします。 % mkdir -p /a/{cd,od,odpc,dos} % amd -l syslog -c 20 /mnt /etc/amd.map もし /mnt/cd が参照 (ls /mnt/cd 等) されたら、amd は % mount -t cd9660 /dev/acd0a /a/cd を自動的に実行し、/a/cd へのシンボリックリンクを /mnt/cd に作成します。 また、一定時間が経過すると自動的にアンマウントします。この場合は -c 20 によって 20秒に設定されます。 ここまでうまく行ったら起動時に amd を起動するようにしましょう。 /etc/rc.conf を次のようにします。 amd_enable="YES" amd_flags="-l syslog -c 20 /mnt /etc/amd.map" また、 % ln -s /mnt/cd /cd のようにしておくと、/cd にアクセスすると /mnt/cd にアクセスしてくれて 少し便利です。デバイス名はご自分の環境に合わせて下さい。 さらに、手動でCD-ROMなどを eject したい場合は、 % amq -u /mnt/cd % cdcontrol -f acd0 eject (もちろん、かわりに eject ボタンを 押してもいいです) などとしてください。これは一般ユーザ権限で実行可能です。 また、メディアが挿入されていない状態で /mnt/cd などにアクセスすると、 amd は automount が失敗したことを認識してくれません。この場合は、再度 amq -u /mnt/cd としてください。 --- [管理番号 675] (最終更新 1999/02/17 23:58:45) Q. パーティションの振り分けですが、/(ルート)だけという構成では 問題があるでしょうか? A. パーティションを分割することによって以下のようなメリットと デメリットが生じます。前もってよく検討して、方針を決めて 置きましょう。 分割するメリット サーバーに使う場合などを除いた一般的な運用であれば FreeBSD のインストーラがデフォルトで使う数値でほとんど 問題がないでしょう。 パーティションを分ける理由としては、ディスク容量を使いきってし まった時のことがあります。 例えば /home というパーティションの中で作業しているとします。 何らかのミスで /home がいっぱいになってしまっても / や /usr にある 重要なファイルの読み書きに影響せずにすみます。これが、1パーティション になっていると、重要なファイルが書き込めずにシステムがクラッシュしたり 不安定になったりする原因になってしまいます。 分割するデメリット 例えば mail や news をため込むような使い方をする場合 /var をあふれさせ てしまう例があります。また ports / packages のデータベースも /var 以下 に作られこれも案外大きくなる場合があります。 経験不足、あるいはディスク容量に余裕がないなどで各パーティションの 使用量を見積もることが難しい場合には、 / のみの構成を選択することに 十分意味があります。 また、一旦パーティション分けを行うと簡単に切り直しができないので、 ある程度のスキルがないと予想に反した使用状況になった場合に修正がききません。 --- [管理番号 693] (最終更新 2000/03/22 02:28:33) Q. /var/log を覗くと、hoge 以外に hoge.0.gz, hoge.1.gz, ... というファイル が生成されているのですが、これらのファイルはどのようにして生成されている のでしょうか。 A. /usr/sbin/newsyslog が cron から定期的に実行され、/etc/newsyslog.conf で設定されているタイミング (ログファイルのサイズや、前回保存してから指定 した時間が経過したなど) でログファイルを圧縮・変更しています。 また、/var/log/wtmp は 2.2.1-RELEASE から 2.2.5-RELEASE までは newsyslog 2.2.6-RELEASE 以降の 2.2.x 系統では /etc/monthly スクリプト 3.x 系統以降では /etc/periodic/monthly/200.accounting スクリプト により圧縮されています。 --- [管理番号 714] (最終更新 2001/08/12 02:51:18) Q. ユーザ、グループの新規追加をしようと思うのですが、ユーザ ID、 グループ ID の付け方には何か決まりはあるのでしょうか? A. 既存の ID と重ならない番号を使えばいいだけです。 ただし、一般に UNIX の「慣習」としてユーザ ID は、 0〜99 : root、daemon、bin、sys などのマシンの管理に必要なアカウントや アプリケーションのための特別なアカウント 100〜 : 一般ユーザアカウント とすることが多いです。参考にして下さい。 グループ ID についても、/etc/group にシステム予約のグループが書かれて おり、同様の事が言えます。 なお、adduser(8) コマンドでユーザの追加を行なうとユーザID、 グループ ID ともに 1000 から割り当てられます。 --- [管理番号 718] (最終更新 1999/02/17 23:58:45) Q. あるメモリを大量に使うプログラムを実行しようとすると Cannot allocate memory と怒られてしまい、実行できません。 A. limits(1) を使用するか、sh系のシェルでは ulimit コマンド、csh系のシェル では limit コマンドを使用して、datasize の値を大きくしてから実行しましょう。 この datasize のデフォルトは /etc/login.conf で設定されています。 [管理番号 532] [管理番号 533] も参照して下さい。 --- [管理番号 746] (最終更新 1999/02/17 23:58:45) Q. CVSupによりソースツリーを取って来てmake worldしましたが、 /stand以下が更新されません。どうすれば更新できるでしょうか。 A. いくつか方法があります。 A1. boot.flpとfixit.flpを作成し、boot.flpで起動後fixitモードにして /stand以下をコピーすれば良いです。 A2. /stand以下のファイルが必要無ければ何もしなくて良いでしょう。 sysinstallのみ必要であれば、/usr/src/release/sysinstallで version.hの__RELEASEの部分を正しいバージョンにして、 make; make installすれば良いです。 A3. /usr/src/releaseで以下のようにして作成します。 # mkdir boot_crunch # cd boot_crunch # crunchgen ../boot_crunch.conf # make -DRELEASE_CRUNCH -f boot_crunch.mk realclean all\ NOCRYPT=yes "CFLAGS=-O2 -pipe -DCRUNCHED_BINARY" ここで作られる boot_crunch というファイルがsysinstallになります。 あとは/stand以下の全てのファイルにハードリンクを張り直します。 なお、helpもコピーする事をお忘れなく。 --- [管理番号 749] (最終更新 2004/04/09 05:04:57) Q. Sendmail をバージョンアップしたい。インストールするためのパッケージは ありませんか。 A. 特にありませんが、最新の FreeBSD-current, -stable では RELEASE に 付属のバージョンよりも新しい sendmail が付属していることが多いので これのソースを持ってきてコンパイルするのが比較的簡単です。 から入手できます。バージョンアップに際しては以下の Web サイトを 参考にするとよいでしょう。 - Sendmailの公式ページ - コンピュータ緊急対応センター (JPCERT/CC) 「技術メモ - sendmail バージョンアップマニュアル -」 古いバージョンで使用していた設定ファイル sendmail.cf をそのまま使って たいていは問題ないでしょう。ただし、新しく導入された機能にはそれに対応 した設定を行う必要があるので、適宜見直した方がよいでしょう。 --- [管理番号 768] (最終更新 1999/02/17 23:58:45) Q. FreeBSD のファイルシステム最大容量はいくらですか? A. 1TB = 1024GB です. ccd(4) を用いて RAID 0 相当機能を使用する場合の最大容量も 1TB です. --- [管理番号 771] (最終更新 1999/02/17 23:58:45) Q. シングルユーザモードで mount コマンドを実行したら WARNING: R/W mount of / denied. Filesystem is not clean - run fsck. と言われました。 A. fsck するしかないです。 [管理番号 299] を参照してください。 --- [管理番号 780] (最終更新 1999/02/17 23:58:45) Q. fsck を実行すると "CLEAN FLAG NOT SET IN SUPERBLOCK" と 表示されるのはどうしてですか? A. 使用中のファイルシステムに対して fsck を実行するとこの メッセージが表示されます。"CLEAN FLAG" は正常にマウントを 外すことができた時に、ファイルシステムのスーパブロックに セットされるフラグです。ファイルシステムを使用している間は このフラグがセットされていないため必ず上記のメッセージが 表示されます。 基本的に fsck は使用されていないファイルシステムに対して のみ実行して下さい。 また、不慮の事故などにより、ファイルシステムのマウントを 外す事ができずにシステムがダウンしてしまった場合にも このようなメッセージが表示されます。 --- [管理番号 792] (最終更新 1999/02/17 23:58:45) Q. timed をスレーブモードで使用したらいきなり時刻が 9 時間進んでしまい ました。どうしたらいいですか? A. 内蔵時計を JST にして、インストール時の時刻設定で、内蔵時計が地方時 を表すようにした場合、このような現象が発生します。簡単な対策は、内蔵時 計が UTC を表すようにすることです。sysinstall や tzsetup で変更して下 さい。 ただし、内蔵時計を UTC にすると、DOS や Windows を起動した時にも UTC になります。 --- [管理番号 795] (最終更新 1999/02/17 23:58:45) Q. 起動時にいつも "WARNING: / was not properly dismounted" と表示され てしまうのはなぜですか? A. これは、前回の終了時にルートパーティションのマウントを正しくはずし ていないことを示すメッセージです。FreeBSD では、システムの終了時にすべ てのファイルシステムのマウントを解除します。このとき、各ファイルシステ ムのスーパーブロックに "clean flag" というフラグを立てます。起動時に行 なわれるファイルシステムのチェックでは、このフラグが立っていれば、正常 にマウントが解除されたファイルシステムであるとして何もしません。質問に あるようなメッセージが出る原因としてもっとも可能性が高いのは、 正しい終了手順を行なっていないこと です。FreeBSD を終了させる場合は、shutdown(8) や halt(8) を使用します。 例えば、 shutdown -h now システムを直ちに終了させます。(operator グループに属する ユーザが行なえます。) halt 同じ。ただし、root しか実行できない。 shutdown -r now システムを再起動します。 reboot 同じ。ただし、root しか実行できない。 という使い方があります。前 2 者の場合、終了処理が行なわれた後、 The operating system has halted. Please press any key to reboot. と表示されます。この表示が出てから電源やリセットボタンを操作して下さい。 絶対に、 いきなり電源ブチッ 暴走即リセット ということを行なってはいけません。 --- [管理番号 803] (最終更新 1999/02/17 23:58:45) Q. FreeBSD と他の OS とが同じハードディスク上に混在しています。FreeBSD よりも前のスライスにインストールされている他の OS がいらなくなったので、 この領域を潰して FreeBSD から使いたいと思います。何か注意することはあ りませんか? A. まず始めに、バックアップを取って下さい :-) FreeBSD が起動する時に、同じハードディスク上に複数の FreeBSD スライス が存在する場合、FreeBSD は最も若いスライス番号を持つスライスにインストー ルされている (と仮定して) FreeBSD を起動しようとします。そしてその a パーティションにある (と仮定して) /kernel (か boot string でユーザが指 定したカーネル) から起動しようとします。 補足: FreeBSD スライスとは、スライス ID が 165 であるスライス そのため、今まで使っていた FreeBSD よりも若いスライス番号を持つスライ スを FreeBSD スライスに設定すると、以後その若い側にあるスライスから FreeBSD が起動してしまうため、これまで使っていたスライスにある FreeBSD からは起動できなくなってしまいます。 実は、このスライス ID と呼ばれるものは、FreeBSD が起動する時にどのスラ イスに FreeBSD がインストールされているか、どのスライスから FreeBSD が 起動すればいいかを決めるためだけに使われているので、新しく使いたい、若 いスライスのスライス ID を 165 以外に設定して newfs を行なうと、実はそ のスライスを通常の FreeBSD のファイルシステムとして mount できて、使え てしまいます。 実際に使用する上では、/etc/fstab を変更して、この mount を起動時に自動 的に行なわれるようにしたいと考えるかもしれません。 もう一つ注意する点があります。FreeBSD よりも若いスライス番号のスライス 数が増減した場合、FreeBSD のスライス番号がずれることになるので、 /etc/fstab 中の /, /usr, /var などのマウントポイントに対するブロックデ バイス名が変更されることになる点についても、要注意です。 サンプル (一台目の IDE の場合) Slice 1 他の OS 2 未使用 <- このスライスの ID を 165 以外に設定する 3 FreeBSD # newfs /dev/rwd0s2c /dev/rwd0s2c: 1733760 sectors in 424 cylinders of 1 tracks, 4096 sectors 846.6MB in 27 cyl groups (16 c/g, 32.00MB/g, 7680 i/g) super-block backups (for fsck -b #) at: 32, 65568, 131104, 196640, 262176, 327712, 393248, 458784, 524320, 589856, 655392, 720928, 786464, 852000, 917536, 983072, 1048608, 1114144, 1179680, 1245216, 1310752, 1376288, 1441824, 1507360, 1572896, 1638432, 1703968, # mount -t ufs /dev/wd0s2 /mnt --- [管理番号 814] (最終更新 1999/02/17 23:58:45) Q. 上位ネットワーク管理者より ネットワークを割り当ててもらったところ netmaskの長さが 8bit単位でありません。 この様なネットワークで DNS の逆引きさせるには どうすればいいですか? A. netmaskの長さが 8bit単位でないネットワークでの逆引きを解決する方法 はいくつかあります。どの様に解決するかは、そのネットワーク管理者の 方針によって変わりますので、そのネットワークを割り当てた上位の管理 者に相談してください。 なお、上位の管理者に相談する前に オライリー・ジャパンから発行されて いる 「BIND & DNS改訂版」の 9章 9.5 in-addr.arpa ドメインのサブドメ イン の部分を予習しておくと いいでしょう。 参考書: 書名 DNS&BIND 改訂版 発行元 オライリー・ジャパン 発売元 オーム社 ISBN: ISBN4-900900-42-7 C3055 定価: 4,800円(税別) --- [管理番号 827] (最終更新 2003/05/17 21:39:26) Q. リモートから telnet 接続できないようにするにはどうすればいいんでしょ うか。 A. いくつかの方法が考えられます。 ・/etc/inetd.conf の telnet stream tcp nowait root /usr/libexec/telnetd telnetd という行の先頭に「#」をつけてコメント行にしてしまう。 (kill -HUP `cat /var/run/inetd.pid` を忘れずに)。 この方法だと、localhost からの telnet 接続もできなくなる。 なお FreeBSD 4.4-RELEASE 以降から、telnetd を含めた inetd 経由で 起動されるデーモンは、全て標準で無効になりました。 ・tcp_wrapper(tcp_wrappers) を使って、一部のホストからのみ telnet 接続できるようにする。なお、ルータや xinetd で設定することもでき る。 ・該当アカウントのパスワードファイルのシェルを変更しておく。 ユーザ単位での管理で、telnet 接続させたくないユーザのログインシェ ルに、たとえば /sbin/nologin などを指定して、これを /etc/shells に登録しておく。 なお、 ・telnet のポート番号を変えてしまう。 デフォルトの telnet ポートは23番だが(/etc/services を参照)、これ を別の空いているポートに変えておく。この方法だと、telnet のポート 番号を知っている自分だけが telnet できる。 というのは、ポートスキャンされれば一発でばれます。やめておきましょう。 --- [管理番号 828] (最終更新 1999/07/24 15:31:37) Q. Windows95/98 を含む LAN で時刻を同期させたいのですが、どうしたら よいのでしょうか? A. 以下の方法があります。 A1. PC-UNIX機で xntpd を動かし、Windows95 マシンで桜時計などの NTPクライアントを動かす。 桜時計はフリーソフトで、 から入手できます。 xntpd で上位サーバ無しで相互の同期を取る場合、一工夫いるようです。 [FreeBSD-users-jp 18626] xntpd の設定 のスレッドを参考にしてください。 A2. PC-UNIX機で timed を動かし、Samba をいれて Windows 付属の NET TIMEコマンドで同期させる。 Samba で export されたディレクトリを Windows 側にマウントさせるための コマンドとまとめてバッチファイルにしてスタートアップにいれておけば 起動する毎に時間を同期させられます。 Samba については [管理番号 178]、[管理番号 308] を参考にしてください。 A3. PC-UNIX機で timed を動かし、Windows95マシンに Network Time for Windows をインストールして、スタートアップにいれておく。 この方法だと、Windowsマシンを起動する毎に時間を同期させられます。 Network Time for Windowsは フリーソフトで、 から入手できます。 --- [管理番号 837] (最終更新 2002/01/27 00:09:33) Q. ブート時にかかる時間が長いです。待ちきれません。 A. そんなせっかちなあなたは、カーネルコンフィギュレーションをいじるとよ いでしょう。 A1. 不要なデバイスの記述をコメントアウトする。 認識されることのないデバイスを毎回調べにいく必要はありません。 最初からコメントアウトしておけば、その分 起動時間が短くなります。 ブート時に xxx not found at .... などと表示されるデバイスをコメントアウトしてください。dmesgの 出力を見ながら作業するといいでしょう。 A2. 不要な device を外すだけならカーネルを再構築せずとも UserConfig で disable することができます。カーネルコンフィギュレーションに options USERCONFIG が含まれているなら (GENERIC カーネルには含まれています)、起動時に 出る boot: という prompt で boot: -c と入力した後、不要な device を disable します。 command line からは config> disable とします。ls でデバイス一覧が、help で簡単な説明がでます。 カーネルコンフィギュレーションに options VISUAL_USERCONFIG が入っているなら (こちらも GENERIC カーネルに含まれています) 、 config> visual と入力すればインストール時と同様の設定画面になります。 以後はこの設定が使われますので、起動するたびに設定する必要はありません。 A3. SCSI デバイス認識の待ち時間を短く設定する。 デフォルトでは options SCSI_DELAY=15 とSCSIデバイス認識のために15秒待ちます。古いものなら15秒待たないと ダメかもしれませんが、最近のSCSI機器はそんなに待たなくても認識されます。 options SCSI_DELAY=5 などとするといいでしょう。 参考: handbook 3. 繋がっていないIDEのデバイスをコメントアウトする。 例えば、IDEのプライマリ・マスタしか使っていなかったら、 controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 #disk wd1 at wdc0 drive 1 #controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr #disk wd2 at wdc1 drive 0 #disk wd3 at wdc1 drive 1 と、不要なデバイスをコメントアウトしてください。IDE を全く使って いないなら、上記のデバイスを全てコメントアウトするといいでしょう。 参考: handbook なお、カーネルの再構築については、 handbook を参考にしてください。 FreeBSD2.2.7+Celeron266 に、FDD、SCSIカード、CD-ROM(SCSI)、HDD(SCSI)、 MO(SCSI)、56k モデム、ネットワークカードを付けたマシンで (IDE 未使用)、 カーネルコンフィギュレーションを書き換えることで、どれだけ起動時間が変わ るかを試しました (もちろん環境によって起動時間は違うでしょうから参考までに)。 計ったのは、boot: プロンプトが表示されてから、ログインプロンプトが表示 されるまでの時間です。 a) GENERIC (デフォルトのカーネル) 1分30秒 b) GENERIC から認識されない不要なデバイスを削ったもの 1分21秒 c) GENERIC の SCSI_DELAY を 5 にしたもの 1分23秒 d) GENERIC から IDE のデバイスを全て削ったもの 52秒 e) GENERIC に b)、c)、d)の全てを行ったもの 30秒 うまくいけば起動時間が3分の1に短縮されるというのは、結構うれしく ありませんか? ;-) --- [管理番号 1086] (最終更新 1999/11/19 15:46:31) Q. セキュリティを向上させるために、管理ユーザー (wheelグループなど)が ネットワークからログインする際の認証方法を S/KEY に限定したい。 A. 下記のいずれかの方法があります。 A1. 該当ユーザーのパスワードを * にして、keyinit します。しかしこの方法 ではコンソールからのログインにも S/KEY の使用を強制されます。 A2. /etc/skey.access によってユーザー/グループ単位でログイン元によっ て通常の UNIX パスワードでの認証の許可、不許可が制御できます。 サンプルファイルは /usr/share/examples/etc/skey.access にあります。たとえば、wheel グループのユーザーがコンソール以外からログ インする際に S/KEY での認証のみ許可する際は次のようになります。 permit group wheel port console .... (1) deny group wheel ...... (2) permit ........(3) (1) グループ wheel のユーザーで、ログイン端末が /dev/console のユーザー 認証は UNIX パスワードを許可する。 (2) (1)以外のグループ wheel のユーザーは UNIX パスワードでの認証を拒否 する。 (3) それ以外のユーザーは UNIX パスワードでの認証を許可する。 詳細は skey.access(5) を見て下さい。 --- [管理番号 1170] (最終更新 1999/02/24 04:24:23) Q. Windows95 上で Partition-It (version 1.02) というソフトで Windows95 側の partition を変更したら、FreeBSD が起動できなくなりました。 A. Partition-It がハードディスク内のスライス番号を変更してしまったため です。シングルユーザモードで起動し /etc/fstab の内容を修正して対処しま しょう。 [管理番号 298] 参照。 手順 (FreeBSD のスライスが wd0s2* に変わった例) 1. インストールフロッピで起動し、ディスクラベルエディタで現在のスライス (wd0s2a など) を確認します。単に Q でディスクラベルエディタを終了し ます。 2. HDD から起動します。 3. "Enter full pathname of shell or RETURN for /bin/sh:" で止まったら、 RETURN を入力し、sh で作業します。/bin/csh でも作業可能ですが、標準で は必要な path が設定されていないかもしれません。 4. 臨時に元の / パーティションを /mnt へマウントします。fsck で [y/n] は `y'を入力します。 # fsck /dev/wd0a # mount /dev/wd0a /mnt 5. 以下のようにして新しいデバイスファイルを追加します。デバイス名や引 き数などは十分確認してください。 # cd /mnt/dev # sh MAKEDEV wd0s2a または # cd /mnt/dev # mknod rwd0s2a c 3 0x00030000 # mknod rwd0s2b c 3 0x00030001 # mknod rwd0s2c c 3 0x00030002 # mknod rwd0s2d c 3 0x00030003 # mknod rwd0s2e c 3 0x00030004 # mknod rwd0s2f c 3 0x00030005 # mknod rwd0s2g c 3 0x00030006 # mknod wd0s2a b 0 0x00030000 # mknod wd0s2b b 0 0x00030001 # mknod wd0s2c b 0 0x00030002 # mknod wd0s2d b 0 0x00030003 # mknod wd0s2e b 0 0x00030004 # mknod wd0s2f b 0 0x00030005 # mknod wd0s2g b 0 0x00030006 注: wd0sMN の M、N が以下の対応になります (FreeBSD 2.2.[56] の場合)。 わかりにくいので従来の /dev/wd0s* を ls -l して、十分理解してから mknod しましょう。 M 1 0x0002000* 2 0x0003000* 3 0x0004000* 4 0x0005000* 5 0x0006000* N a 0x000*0000 b 0x000*0001 c 0x000*0002 d 0x000*0003 e 0x000*0004 f 0x000*0005 g 0x000*0006 h 0x000*0007 6. 臨時のマウントをはずします。 # cd / # umount /mnt 7. 現在のパーティションを必要なだけ一つずつ fsck /dev/wd0s2a などとし ます。[y/n] は `y'を入力します。 8. たとえば以下のようにして各パーティションをマウントします。 # mount -u /dev/wd0s2a / # mount /dev/wd0s2e /var # mount /dev/wd0s2f /usr マウントポイントなどを忘れている場合は、cat /etc/fstab で以前の設定を 参考にしましょう。 9. うまくマウントできたら、vi /etc/fstab で新しい設定に修正します。 10. 正常に boot できるまで復旧できたら、将来苦労しないためにも /dev 以 下で全ての wd0s* を MAKEDEV で作っておくとよいでしょう。 --- [管理番号 1176] (最終更新 1999/02/24 04:27:18) Q. root 宛に cron で毎日送られてくる security check output に、 checking setuid files and devices: マシン名 setuid diffs: 27c27 < -r-sr-xr-x 5 root bin 290816 Mar 13 19:01:45 1998 /usr/bin/hoststat --- > -r-sr-xr-x 5 root bin 290816 Jul 27 02:00:05 1998 /usr/bin/hoststat 36c36 < -r-sr-xr-x 5 root bin 290816 Mar 13 19:01:45 1998 /usr/bin/mailq --- > -r-sr-xr-x 5 root bin 290816 Jul 27 02:00:05 1998 /usr/bin/mailq などと書いてあり、タイムスタンプが変更されている様です。何が起こったの でしょうか。 A. security check では、suid や sgid されたファイルについて、タイムス タンプやファイルサイズを含む差分を毎日作成して、管理者向けにメールを送 ります。 自分あるいは他の管理者がバージョンアップやインストール作業をした場合は、 作業内容と変更点の照合を行い、不審な点がないかを調べれば良いでしょう。 自分あるいは他の管理者が誰も作業を行っていない筈なのに、変更点が送られ て来た場合は、オリジナルのファイルが残っていれば、md5(1) あるいは diff(1) でファイル自体が修正されているかどうかを調べます。 ファイル自体が修正されている場合は、侵入者の痕跡である可能性があります。 ファイル自体が変更されていない場合、OS 自体のバグによるものと考えられ ます。以下の記事で始まるスレッドが参考になるでしょう。 このような場合に備えて、find(1)、md5(1) などを利用して、あまり変更され ないはずのファイルの一覧を作っておくのは良い考えです --- [管理番号 1306] (最終更新 2001/08/12 02:51:17) Q. perl のソースを CPAN などから入手し、自力で build してインストール しましたが、色々なトラブルが起こるようです。 A. perl(1) の build は非常に難しく、ヘッダーファイルの依存関係、 システムコールやライブラリ関数の仕様を完全に理解していない限り 簡単に build できるものではありません。また、システムに インストールされている /usr/bin/perl も、FreeBSD 固有の変更が 施されたもので、CPAN などで配布しているソースは、そのまま コンパイルして動くような状態になっているとはいえません。 システム標準の /usr/bin/perl か ports/packages のものを用いるのが 無難です。 このようなシステム非標準の perl を用いた場合、たとえば apache に mod_perl を組み込む際にコンパイルできないなどの 様々な問題が生じる可能性があります。 --- [管理番号 1311] (最終更新 1999/05/07 00:51:06) Q. (bind-4.x.x で使用していたゾーンファイルのままで) BIND-8.2 + patch1 を動作させると、/var/log/messages に No default TTL set using SOA minimum instead というメッセージが出力されます。 A. デフォルトの TTL が設定されていないので、ゾーンファイルに TTL directive を記述して下さい。(参照: RFC1035,RFC2308) 例) $TTL 86400 ただし、 BIND-8.2 では「SOA レコードの minimum TTL」が 常に「default minimum TTL」に上書きされてしまうというバグが あります。これはエラーにはなりませんが、 8.2.1(1999/04/10 現在未公開) で修正される予定です。 --- [管理番号 1315] (最終更新 1999/05/07 00:51:11) Q. /var/log にあるログファイルの更新・圧縮は、どのプログラムが行って いるんでしょうか。どこに設定ファイルがあるんでしょうか。 A. /etc/crontab を見て下さい。そこには 0 * * * * root /usr/sbin/newsyslog いう行があります。これにより、cron デーモンは毎時0分に /usr/sbin/newsyslog を実行しますが、このプログラムがログの ローテートを行っています。 newsyslog に対する設定は /etc/newsyslog.conf で行ないます。 履歴の個数(*.1 *.2 をどこまでつくるか) 一定サイズを越えたら新しいファイルを作るか 一定時間を経過したら新しいファイルを作るか 圧縮するか などを設定することができます。詳細は newsyslog(8) で調べて ください。 なお、cron が起動しているかどうかは、 % ps axww | grep cron で確かめてください。/etc/defaults/rc.conf の cron_enable="YES" の行をいじらない限り、普通は動いてるはずです。 --- [管理番号 1334] (最終更新 2003/10/16 23:20:29) Q. boot -v などで起動すると、起動メッセージの最初の部分が、dmesg にも /var/log/messages にも残っていないのですが。 A. dmesg で表示されるメッセージは、カーネルがメッセージバッファに貯めて いるものです。このサイズは決まっており、起動時のメッセージが長すぎると バッファに入り切らず、先頭部分が表示されなくなります。 また、/var/log/messages には、マルチユーザーモードに入って syslogd が 起動した時に、カーネルのメッセージバッファを読んで書き込まれます。 その時点でバッファがあふれてしまっているので、これも dmesg と同様に 先頭部分が記録されないわけです。 このバッファのサイズは /usr/src/sys/sys/msgbuf.h で #define MSGBUF_SIZE 8192 と指定されています。 バッファを増やすには、MSGBUF_SIZE というオプションを指定して カーネルの再構築をします。LINTによると、 # Size of the kernel message buffer. Should be N * pagesize. options "MSGBUF_SIZE=40960" のように指定します。この場合はデフォルトの 5倍の容量になるわけです。 i386アーキテクチャではページサイズは普通は 4096 バイトとなっています ので、4096の倍数で指定してください。 カーネルの再構築の方法は を参照してください。 なお、MSGBUF_SIZE が使えるのは 2.2.7 以降のバージョンです。 --- [管理番号 1340] (最終更新 2001/08/12 02:51:17) Q. カーネルを再構築しようと思い、ハンドブックなどを参考に config、 make depend、make という順番で作業を進めていきました。 すると config と make depend までは正常に終了するのですが、 make をすると error を出して止まってしまいます。 A. カーネルコンフィギュレーションファイルに間違いはありませんか? config(8) コマンドは可能な限りカーネルコンフィギュレーション ファイルのチェックを行いますが、限界があります。 このような場合、原因は色々考えられますが、次のような点をチェック してください。 (1) pseudo-device などのエントリの誤り。 (2) 依存する options の指定がない。 例えば 4.3-RELEASE の場合、options として DUMMYNET や BRIDGE を指定する場合には同時に IPFIREWALL も指定しなければ なりませんが、options IPFIREWALL が欠けていても config(8) は warning も error も報告しません。しかし、 カーネルをリンクする際に失敗します。 このような options は LINT や NOTES などに注意が記述されて いるので必ず目を通してください。 (3) 依存するデバイスの指定がされていない。 例えば、device atadisk が指定されているのに device ata など が指定されていない場合などにはコンパイル時やリンク時に エラーになります この他に、テストの十分でない機能やデバイスを指定した場合に 類似の問題が生じることもあります。 --- [管理番号 1364] (最終更新 1999/07/02 16:28:12) Q. /var/log/messages に last message repeated 2 times というログが残っているんですが、これは何ですか? A. 直前の行と同じメッセージが、更に2回分出力されたことを意味しています。 syslogd が関与する記録では、同様な処理が行われます。 たとえば tail -f /var/log/messages としてログを見ながら、別の kterm 上で ・su でわざと間違ったパスワードを入力する。それを3回繰り返す。 ・su で正しいパスワードを入力して root になる。 としてみてください。すると、/var/log/messages に su: BAD SU username to root on /dev/ttyp0 last message repeated 2 times su: username to root on /dev/ttyp0 と記録されることがわかると思います。 これは su: BAD SU username to root on /dev/ttyp0 su: BAD SU username to root on /dev/ttyp0 su: BAD SU username to root on /dev/ttyp0 su: username to root on /dev/ttyp0 と同じ意味ですが、ログの容量を抑え、なおかつログを読みやすくするために syslogd が工夫してくれているわけです。 --- [管理番号 1501] (最終更新 2000/03/04 08:15:31) Q. FreeBSD 3.x でカーネルを再構築した後、新カーネルで起動すると起動中に無 効にしたはずのデバイスに関する以下のようなメッセージが表示されます。な にが原因なのでしょうか。 config> di psm0 No such device: psm0 Invalid command or syntax. Type `?' for help. config> di ppc0 config> di zp0 No such device: zp0 Invalid command or syntax. Type `?' for help. config> di ze0 No such device: ze0 Invalid command or syntax. Type `?' for help. (上記の例では /sys/i386/conf 以下のカーネル設定ファイルで無効にしたデ バイスは psm0、zp0、ze0 です) A. 最初のインストールのとき、以下の Kernel Configuration Menu が出てきた と思いますが、 Skip kernel configuration and continue wiht installation Menu Start kernel configuration in Visual mode Startkernel configuration in CLI mode のうち、 Menu Start kernel configuration in Visual mode あるいは Start kernel configuration in CLI mode を選んでインストールしませんでしたか? 3.x ブランチでは、インストール時にこれらのモードを使ってデバイスを非活 性にするとその情報を /boot/kernel.conf に書き込みます。そして、インス トール直後の GENERIC カーネルはそのファイルの情報を元にデバイスを非活 性にします。([管理番号 1255] 参照)。 新しいカーネルを作成した場合、たとえば psm0 を削除したカーネルでそのま ま起動をかけると /boot/kernel.conf を読み込んで psm0 を非活性にしよう としますが、カーネル自体に psm0 のドライバが含まれていないため config> di psm0 No such device: psm0 Invalid command or syntax. Type `?' for help. となるわけです。 FreeBSD 3.x において、自分で作った新しいカーネルを使う場合は、カーネル 構築後、/boot/kernel.conf の内容を消去する (方法は色々ありますが、例えば cp /boot/kernel.conf /boot/kernel.conf.old cp /dev/null /boot/kernel.conf ) か、/boot/loader.confの userconfig_script_load="YES" を "NO" あるい はコメントアウトするなりして /boot/kernel.conf を起動時に読み込まない ようにして下さい。 また、逆にカーネルに組み込んであるデバイスを臨時に非活性にしたいような 場合は /boot/kernel.conf を編集すればOKです。たとえば、セカンダリの IDEコントローラを (wd1) を非活性にしたい場合は次のようにします。 di wdc1 q --- [管理番号 1580] (最終更新 2000/04/19 21:38:21) Q. FreeBSD 3.x で追加された、VESA ビデオモードを使用した広いコンソール を使いたいのですが、どうすればいいですか? A. 以下の手順で作業してみてください。 1. ビデオカードが VESA に対応しているか確認する そのビデオカードのメーカのサイトへ行って、VESA に対応しているかを 確認しましょう。ただし、最近は 3D 関係ばかりが重要視されて、VESA に 関して情報を載せていないメーカもあります。 または、MS-DOS のプログラムですが、 にある vesadump を使って確認する方法もあります。 それらしく (VESAのバージョン等) が表示されれば、多分大丈夫でしょう が、ビデオカードの中には VESA を完全にはサポートしていない物もある ようなので、これが OK でも必ずしも使えるとは限りません。 2. カーネル再構築 まず、あなたのカーネル構成を確認する必要があります。LINT を見ればわ かるように、options VESA が VESA ビデオモードを直接サポートするオプ ションですが、3.x-RELEASE では同時に options "VM86" も必要なことが 分かります。4.0-RELEASE 以降では VM86 オプションは統合されたため不要 です。また、当然 device vga0 も必要ですが、これは GENERIC にも含まれ ますので、実際には options VESA (及び 3.x では options "VM86" の2行) を追加する必要があるでしょう。 以下は 3.4R の LINT の抜粋です。 # The video card driver. device vga0 at isa? port ? conflicts # To include support for VESA video modes options VESA # needs VM86 defined too!! # Allow processes to switch to vm86 mode, as well as enabling direct # user-mode access to the I/O port space. This option is necessary for # the doscmd emulator to run and the VESA modes in syscons to be available. # options "VM86" もうひとつの方法は、カーネルから options VESA を削る代わりに、KLD モジュールをロードする方法です。これには /boot/loader.conf に以下の 行を追加します。ただこの場合もカーネルの VM86 サポートは必須です。 vesa_load="YES" 詳細については vga(4) にも目を通しておきましょう。 3. デバイス認識の確認 boot -v で起動し、 >vga0: rev 0x01 int a irq 11 on pci1.0.0 >VESA: v2.0, 8192k memory, flags:0x1, mode table:0xf0236d36 (1000022) >VESA: Matrox Graphics Inc. >VESA: Matrox >VESA: MGA-G200 >VESA: 00 このようにビデオカードの情報が出力されているかを確認します。また、 % vidcontrol -i adapter % vidcontrol -i mode でも確認しておきましょう (特に mode は、使いたい画面モードがちゃん と表示されているかどうかを確認しましょう)。 >% vidcontrol -i adapter >fb0: > vga0, type:VESA VGA (5), flags:0x700ff > initial mode:24, current mode:24, BIOS mode:3 >% vidcontrol -i mode > mode# flags type size font window linear buffer >------------------------------------------------------------------------------ > 0 (0x000) 0x00000001 T 40x25 8x8 0xb8000 32k 32k 0x00000000 0k (中略) >209 (0x0d1) 0x00000009 T 132x60 8x8 0xb8000 32k 32k 0x00000000 0k 4. フォントのロード ここで例えば 132x60 文字モードを使おうとした場合、8x8 フォントを 必要とするので、 % vidcontrol -f 8x8 /usr/share/syscons/fonts/iso-8x8.fnt としてフォントをロードしておきます。もしくは、/etc/rc.conf に font8x8="/usr/share/syscons/fonts/iso-8x8.fnt" を加えてリブートすれば、FreeBSD 起動時に自動的にロードできます。 また、同じように 8x14 及び 8x16 フォントについても font8x14="/usr/share/syscons/fonts/iso-8x14.fnt" font8x16="/usr/share/syscons/fonts/iso-8x16.fnt" などとすることができます。 5. 画面モードの変更 % vidcontrol VESA_132x60 とすると、その virtual console の画面モードが変更されます。ALT+F? での他の virtual console のモードも変更したければ、/etc/rc.conf に 次のように設定すれば良いでしょう。 allscreens_flags="VESA_132x60" より詳細は vidcontrol(1) を参照してください。 --- [管理番号 1638] (最終更新 2000/06/25 02:30:26) Q. root のパスワードを忘れてしまいました。 /etc/ttys で console を insecure に設定している為、[管理番号: 464] の 様にシングルユーザモードに入ってパスワードを再設定しようとしても、root のパスワードを要求されるのでそもそもシングルユーザモードに入れません。 A. Fixit フロッピーを利用すれば /etc/ttys の console 行の insecure を secure に変更することが出来、シングルユーザモードで root のパスワード を変更出来るようになります。 (1) Boot、mfsroot、fixit フロッピーを利用して Fixit モードに入ります。 (2) / パーティションにあたる device を mount します。 例えば、/ パーティションが /dev/wd0s1 の場合は: Fixit# mount /dev/wd0s1 /mnt (device は FreeBSD 4.x で ATA なら ad、SCSI なら da となります。 あなたのシステムに合わせて下さい)。 (3) Fixit には ex/vi が含まれていますので、ex/vi を用いて /etc/ttys を 編集し, console と書いてある行の insecure を secure に変更します。 ex を使用する場合は Fixit# /stand/ex /mnt/etc/ttys /^console/p s/insecure/secure/p w q (尚、ここで用いている command はそのまま ed でも通用するはずです)。 (4) /mnt を unmount するのを忘れないようにしましょう。 Fixit# umount /mnt (5) あとはリブートすればシングルユーザモードに入る際に root パスワード が要求されませんので、[管理番号: 464] などを参考に root のパスワー ドを変更すれば良いでしょう。 (6) /etc/ttys の console 行を secure から insecure に戻すのを忘れない ようにしましょう。 おまけ: 一般ユーザでログインできる場合は、/etc/ttys をコピーして編集し、 その後 fixit モードで cp を使ってコピーするという手もあります。 (確認は FreeBSD/i386 3.4-RELEASE、4.0-RELEASE で行なわれています)。 --- [管理番号 1646] (最終更新 2002/08/24 06:22:40) Q. FireWall を構築しました。破棄 (deny) したパケットの log を取りたいので すが、どのようにすればよいでしょうか? A. 次のオプションを含めてカーネルを構築してください。 options IPFIREWALL_VERBOSE options "IPFIREWALL_VERBOSE_LIMIT=30" オプションの詳しい解説はファイル「/usr/src/sys/i386/conf/LINT」を読ん でください。 次に、rc.firewall に記述している ipfw のルールに 「log」を追加してくだ さい。 例えば次のようなルールを記述していたら、 $fwcmd add 65000 deny all from any to any 「deny」の次に「log」という引数を追加してください。 $fwcmd add 65000 deny log all from any to any 記述したら reboot してください。 成功したら次のようなメッセージが console に表示されます。 ipfw: 65000 Deny P:2 123.456.789.012 224.0.0.2 out via mx0 ipfw: 65000 Deny ICMP:9.0 123.456.789.012 224.0.0.1 in via mx0 以上は FreeBSD 3.4-RELEASE にて確認されました。 以下の参考文献を参照してお使いのシステムに当てはまるかどうか確認して下さい。 参考文献: ipfw(8) FreeBSDハンドブック 「6.4 ファイアウォール」 ファイル 「/usr/src/sys/i386/conf/LINT」 --- [管理番号 1670] (最終更新 2001/02/18 05:58:13) Q. cvsup(1) の設定で, 設定例ファイル /usr/share/examples/cvsup/refuse を refuse ファイルとして使用すると、src-all の更新ができなくなくなるの はなぜですか? A. cvsup の refuse ファイルは cvsup で更新したくないファイルの ファイル名を記述する目的で使われます。このファイルには現在の ところ`#'で始まるコメント行を書くことができません。 しかし FreeBSD 4.1-RELEASE 以前の /usr/share/examples/cvsup/refuse には `#' から始まるコメントが含まれているため、設定例ファイルを そのままコピーして使用するとコメント行が含まれることになります。 その一部に ` src ' という文字があるため src-all が更新できません。 すべてのコメント行を消去すれば解決します。 --- [管理番号 1682] (最終更新 2001/01/08 04:32:07) Q. DES をインストールしたら、 % passwd /usr/libexec/ld-elf.so.1: Undefined symbol "com_err_hook" referenced from COPY relocation in passwd のように言われて、passwd コマンドが使えなくなったのですが。 A. DES のインストール時に kerberos もインストールしたのではありません か。OS のバージョンによっては、su で core を吐く、ということもある ようです。passwd, su などのコマンドは kerberos によってそれに対応し たものに置き換えられてしまいます。kerberos が不要ならアンインスト ールしましょう。 --- [管理番号 1683] (最終更新 2003/10/16 23:20:15) Q. Kerberos (ケルベロス) をアンインストールするにはどうしたらいいですか。 A. 2 つの方法があります。 A1. /stand/sysinstall を使って bin をインストールし直す。 FreeBSD FAQ「Q: Kerberos をアンインストールするにはどうすればいいの?」 に書かれている方法で、これが一番簡単です。ただし、これをやると、/etc のファイルなども最初の状態に戻ってしまう恐れがありますし、DES をインス トールしていた場合はそれもいくつかのファイルが元に戻ってしまいます。 A2. Kerberos によって置き換えられてしまったファイルを、bin, proflibs 配布ファイルから復元する。 例えば次のようにするといいでしょう。なお、$CDROM は FreeBSD の配布ディ レクトリを指定しておきます。 1) ルートディレクトリに移動します。 # cd / 2) Kerberos の配布ファイルに含まれるファイルのリストを作ります。 [3.5-RELEASE まで] # cat $CDROM/des/krb.?? | tar ztf - | sort > /tmp/ttt [4.0-RELEASE から] # cat $CDROM/crypto/krb4.?? | tar ztf - > /tmp/ttt1 # cat $CDROM/crypto/krb5.?? | tar ztf - >> /tmp/ttt1 # sort /tmp/ttt1 | uniq > /tmp/ttt 3) 元のファイルを配布ファイルから展開します。 # chflags noschg `cat /tmp/ttt` # cat $CDROM/bin/bin.?? | tar --unlink -zxvpf - `cat /tmp/ttt` > /tmp/yyy # cat $CDROM/proflibs/proflibs.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy # cat $CDROM/manpages/manpages.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy [4.0-RELEASE から追加] # cat $CDROM/crypto/crypto.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy 4) 残ったゴミを片付けますが、念のためどのファイルが削除 されるか確認してください。 # comm -3 /tmp/ttt /tmp/yyy1 5) 確認できたら、削除します。 # rm -f `comm -3 /tmp/ttt /tmp/yyy1` おまけとして、上記の作業を自動化するスクリプトを添付します。使用に 際しては自己責任でお願いします。 なお、この作業は /etc や /bin などを直接いじる作業になりますので、 本質的に危険です。tar の仕様変更により、実際に被害が出た例もあり ます [FreeBSD-users-jp 74025] (以下のスクリプトでは修正済みです)。 ----ここから---- #!/bin/sh # Example: # # cd / # # sh ./uninstall_kerberos /proj/ftp/FreeBSD/4.2-RELEASE # Please use *at your own risk* CDROM=/cdrom [ "$1" != "" ] && CDROM=$1 KRB=/tmp/krb.list KRB1=/tmp/krb1.list ORG=/tmp/org.list ORG1=/tmp/org1.list DEL=/tmp/del.list CRYPTO= echo 'Make a list of kerberos binaries.' if [ -d $CDROM/crypto ]; then CRYPTO=crypto cat $CDROM/crypto/krb4.?? | tar ztf - > $KRB cat $CDROM/crypto/krb5.?? | tar ztf - >> $KRB elif [ -d $CDROM/des ]; then cat $CDROM/des/krb.?? | tar ztf - > $KRB else echo "$CDROM: No such kerberos distribution files." 1>&2 exit 1 fi sort $KRB | uniq > $KRB1 echo -n 'Restore files from distribution files:' rm -f $ORG chflags noschg `cat $KRB1` for i in bin proflibs manpages $CRYPTO do echo -n " $i" cat $CDROM/$i/$i.?? | tar --unlink -zxvpf - `cat $KRB1` >> $ORG 2> /dev/null done echo "." echo 'Cleanup all garbage.' sort $ORG | uniq | sed '/\/$/d' > $ORG1 comm -3 $KRB1 $ORG1 > $DEL less $DEL read -p "Would you like to delete these files now? y or n [n]" YES_NO case "${YES_NO}" in y) rm -f `cat $DEL` rm -f $DEL ;; *) echo "Make sure to run rm -f `cat $DEL` yourself" ;; esac : ----ここまで---- --- [管理番号 1730] (最終更新 2001/01/08 04:34:53) Q. FreeBSD 4.1.1-RELEASE 以降を使用しています。 FreeBSD ハンドブック「10.5 ディスクの追加」の「10.5.2.2 専用モード」を 参考にして HDD の追加を試みましたが、次のエラーが出て先に進めません。 % dd if=/dev/zero of=/dev/rad1 dd: /dev/rad1: Operation not permitted A. 可能性の一つでしかありませんが、インストール時に「Select default system security profile」を「High」(4.1.1R) または「Extreme」(4.2R 以降) に設定しなかったでしょうか。sysinstall(8) で次の場所にある項目です。 /stand/sysinstall -> Configure -> Security 設定したなら /etc/rc.conf に次の行があると思います。 -- /etc/rc.conf -- kern_securelevel="2" kern_securelevel_enable="YES" ------------------ この二行があると、上記エラーになります。システムをシングルユーザモード で再起動して作業するか、セキュリティレベルを下げてください。 FreeBSD のカーネルには 0〜3 までの 4 つのセキュリティレベルがあり、こ の値によってデバイスファイルへの書き込みを禁止できます。これ以外にも、 カーネル変数の変更を禁止したり、パケットフィルタルールの変更を禁止した りできます。 現在のセキュリティレベルは % sysctl kern.securelevel で参照可能。デフォルトは -1。 詳しくは securelevel(8) または init(8) を読んでください。また、セキュ リティに関して security(7) も参考になるでしょう。なお、sysinstall(8) のメニューに登場したのは 4.1.1-RELEASE が最初ですが、セキュリティ レベルの機能自体はもっと以前からありました。 --- [管理番号 1837] (最終更新 2001/03/07 02:08:45) Q. /etc を別パーティションにすると、 boot が正常に行えません。 A. /etc や /sbin は別パーティションにするべきではありません。 /etc には disk の mount 情報を記述した /etc/fstab や、 boot するための一連の手続きが書かれた /etc/rc.* があり、 /sbin には disk を mount するコマンドが格納されています。 もし /etc を別パーティションにしてしまうと、「金庫の鍵は 金庫の中」状態になってしまいます。また、 - /etc や /sbin が必要とするディスク容量はさほど大きく ない (FreeBSD 4.2-RELEASE でそれぞれ 700KB、10MB 程度) - 更新されることがほとんど無い という点を考えると、独立したパーティションにするほどの メリットは見あたりません。 デフォルトで / に存在するディレクトリについては、/usr、 /var、/tmp 以外は別パーティションにしないほうがよいでしょう。 --- [管理番号 1866] (最終更新 2001/04/18 02:12:12) Q. FreeBSD 4.2-RELEASE において、jail 環境上でシェアードメモリを使う ソフトウェアを動かしたいのですが、たとえば PostgreSQL ならば IpcMemoryIdGet: shmget failed (Function not implemented) key=5432010, size=144, permission=0 IpcMemoryAttach: shmat failed (Function not implemented) id=-2 FATAL 1: AttachSLockMemory: could not attach segment とのエラーメッセージが報告されて起動できません。 カーネルは options SYSVSHM をつけて構築してありますし、jail 環境上 で ipcs -M を実行しても有意な数値が出るのに何故でしょうか。 A. 4.2-RELEASE の場合 jail の親環境でシェアードメモリがサポートされて いたとしても、名前空間が jail 環境と親環境、あるいは別の jail 環境 で共用されていることに起因するセキュリティ上の危険性を理由として 標準状態では jail 環境からシェアードメモリへのアクセスはできません。 危険性をふまえた上でこの制限を解除するには、システム変数 jail.sysvipc_allowed を 1 にする必要があります。 コマンドラインから手動でこれをセットする場合には、次のようにします。 # sysctl -w jail.sysvipc_allowed=1 あるいは、/etc/sysctl.conf に jail.sysvipc_allowed=1 という 記述を入れれば、親環境の起動時に自動的に上のコマンドが実行される ようになります。 詳しくは jail(8) の Sysctl MIB Entries の項目を参照してください。 なお、この制限は 4.1.1-RELEASE (正確には 2000/11/01 以前の 4.x-STABLE) 以前のバージョンにはありません。[FreeBSD-users-jp 60031] --- [管理番号 1943] (最終更新 2001/08/12 05:25:01) Q. FreeBSD では secure hash 関数として OpenBSD で使っているような blowfish は使えますか? また、使えるとしたら、どのようにしたら使えますか? A. 2001 年 5 月 24 日以降の 4.3-STABLE と 2001 年 3 月 11 日以降の 5.0-CURRENT では使用可能です。 /etc/login.conf の default クラスに :passwd_format=blf:\ という行を挿入して cap_mkdb /etc/login.conf します。最後の `\' 記号は 継続行を意味します。このあとで passwd(1) コマンドを使用すれば、 パスワードが blowfish に変更されます。パスワードが $2a$04$ で はじまっていれば変更は成功です。 特定のユーザのみに対して blowfish を使う方法は [管理番号 345] を 参照してください。 --- [管理番号 1944] (最終更新 2001/08/12 05:25:03) Q. パスワード用の secure hash の生成方式として MD5 を使っていますが、 perl(1) などのスクリプトや C 言語のプログラムで crypt(3) を 使うと DES になってしまいます。perl などからも MD5 を利用するのに はどうしたらいいのでしょうか? A. /etc/auth.conf に crypt_default = md5 を入れてください。これで直ちに perl の crypt 関数で MD5 が 使えるようになります。また、blowfish を使う場合も同様で、 crypt_default = blf という指定を行えば使えます。ただし、ユーザ毎にこれを変更する方法は ありません。 C 言語のプログラムから動的に secure hash の生成方式を変更 することは可能で、具体的には crypt_set_format(3) を使います。 次が切替えのサンプルプログラムです。 ---サンプル ここから--- #include #include int main(int argc, char *argv[]) { char *salt = "Salt"; char *pass = "pass"; crypt_set_format("des"); printf("DES: %s\n", crypt(pass, salt)); crypt_set_format("md5"); printf("MD5: %s\n", crypt(pass, salt)); crypt_set_format("blf"); printf("Blowfish: %s\n", crypt(pass, salt)); return 0; } ---サンプル ここまで--- これを例えば hash_test.c に入れて、 % cc -o hash_test hash_test.c -lcrypt としてコンパイルして、実行すると DES: Safj2rfnJqVOw MD5: $1$Salt$waybwAhVEO4TqNqokkPGS/ Blowfish: $2a$04$Salt..................iuF.iYZyE5m5qX55B4pXbGQonP.kj5y という結果を得ます。なお、上のプログラムは切替え方を示すサンプル に過ぎないので、実際には指定すべき salt の長さなどについて考慮する 必要があります。 --- [管理番号 1945] (最終更新 2001/08/12 05:25:03) Q. デフォルトの secure hash の生成方式として MD5 を指定していますが、adduser(8) でユーザを登録すると パスワードが DES になってしまいます。 A. これは adduser(8) が perl スクリプトであるために起こります。 /etc/auth.conf に次の設定を入れてください。 crypt_default = md5 この現象は adduser(8) に限らず、crypt 関数を用いた perl スクリプト 全般で起こる可能性があります。これについては [管理番号 1944] を 参照してください。 --- [管理番号 1963] (最終更新 2001/10/22 01:18:35) Q. FreeBSD 4.3-RELEASE で ccd 用 disklabel を作るため disklabel -r -w ccd0 auto を行ったら、 Warning, partition c is not marked as unused! Warning, An incorrect partition c may cause problems for standard system utilities というメッセージが出てきますが、実用上問題ありますか? A. disklabel(8) は ccd(4) デバイスの初期化の際、他のデバイスと異なり C パーティションを指定します。 4.3-RELEASE 以降では、disklabel コマンドで C パーティションが未使用 (unused) になっていないと上記メッセージを出すようになりました。 ccd デバイスにおいて fstype が単一の場合(多くの場合そうでしょう)、 このメッセージは無視してしまって構いません。 気になる場合は、disklabel -e して 3 partitions: # size offset fstype [fsize bsize bps/cpg] c: 2047968 0 4.2BSD 0 0 0 # (Cyl. 0-999*) を 1 partitions: # size offset fstype [fsize bsize bps/cpg] a: 2047968 0 4.2BSD 0 0 0 # (Cyl. 0-999*) などと書き換えてください。 --- [管理番号 2031] (最終更新 2001/10/22 01:18:35) Q. /tmp に知らないファイルがあるんですが、消してよいですか? A. そもそも /tmp には様々なテンポラリファイルが置かれます。当然その中には 今その瞬間において、使用中のファイルもあるかもしれません。従って、無闇 に消して良いというものではありません。 しかし、中にはプログラムが異常終了したとか、お行儀の悪いプログラムによっ て、そのままほったらかしにされたファイルもあるでしょう。また、複数のユー ザが使用するようなマシンでは、作業ファイルを /tmp に残したままにする人 もいるかもしれません。このような場合、いくつか対策が考えられます。 1. 相手が実体を持つ人の場合は、まずはその人に消してくれるように頼む。(^^; 2. 繁雑にリブートを繰り返すマシンなら、リブート時に自動的に消去してくれ るように、rc.conf(5) に次の設定を追加する。ただし、セキュリティ的に は少々マイナスかもしれない。 clear_tmp_enable="YES" 3. periodic(8) を利用して定期的に古い一時ファイルを消去する。この機能を 有効にするには /etc/periodic.conf に次の設定を追加します。詳細につい ては periodic.conf(5) を参照。 daily_clean_tmps_enable="YES" 4. 手作業でファイルが使用中かどうか確認しながら消去する。これには fstat(1), sockstat(1), netstat(1) などのコマンドが役に立つでしょう。 例えば、X をセットアップしたら、/tmp に `.X11-unix' というディレクトリ、 `.XF86Setup284' というディレクトリが出来ますが、`.XF86Setup284' は XF86Setup を実行したときの作業用ファイルでしょうから消してよいでしょう。 しかし /tmp/.X11-unix/ は消してはダメです。それを ls(1) で見ると % ls -l /tmp/.X11-unix/ srwxrwxrwx 1 root wheel 0 Oct 5 11:07 X0 ^ここ というファイルがあります。この先頭が s になっているものはソケットで (see ls(1))、このソケットファイルを経由してデータをやりとりしている プログラムがいるということです。 具体的にそのソケットを使っているプログラムを見るには sockstat(1) を 使います。 % sockstat -u root kterm 1191 3 stream XF86_Mach64[245]:21 root kterm 1153 3 stream XF86_Mach64[245]:19 root kterm 1048 3 stream XF86_Mach64[245]:20 mat mozilla- 370 8 stream XF86_Mach64[245]:17 mat emacs-dl 316 4 stream XF86_Mach64[245]:18 mat emacs-dl 316 5 stream cannaserver[172]:8 root kterm 254 3 stream XF86_Mach64[245]:10 mat kinput2 250 3 stream XF86_Mach64[245]:8 mat kinput2 250 6 stream /tmp/.ki2-unix/_0-ja_JP root XF86_Mac 245 1 stream /tmp/.X11-unix/X0 root XF86_Mac 245 6 stream /tmp/.X11-unix/X0 root XF86_Mac 245 7 stream /tmp/.X11-unix/X0 root XF86_Mac 245 8 stream /tmp/.X11-unix/X0 root XF86_Mac 245 9 stream /tmp/.X11-unix/X0 root XF86_Mac 245 10 stream /tmp/.X11-unix/X0 root XF86_Mac 245 11 stream /tmp/.X11-unix/X0 mat xinit 244 3 stream XF86_Mach64[245]:6 bin cannaser 172 0 stream /tmp/.iroha_unix/IROHA bin cannaser 172 8 stream /tmp/.iroha_unix/IROHA (略) なので - /tmp/.X11-unix/X0 を使っているのは XF86_Mach64 (Xサーバ) - その X サーバと通信しているのは kterm や emacs や mozilla など (つまり Xクライアント) ということがわかります。他の項目を見れば - /tmp/.iroha_unix/IROHA を使っているのは cannaserver - /tmp/.ki2-unix_0-ja_JP を使っているのは kinput2 ということも読み取れます。 ちなみに X サーバと X クライアントが やりとりしている内容は、 「今そっちのウィンドウにマウスがのったよ」(X サーバから X クライアントへ) 「マウスボタンの右が押されたよ」 (X サーバから X クライアントへ) 「座標 (x,y) に赤色の円を描いて」 (X クライアントから X サーバへ) といったことです。 --- [管理番号 2063] (最終更新 2002/02/14 00:39:59) Q. セキュリティに関する情報はどうやって入手すればよいですか? A. セキュリティホールが見付かり次第、問題点と対処法をまとめた「FreeBSD Security Advisory」が announce-jp@jp.FreeBSD.org に流されます (announce-jp に流れたメールは、FreeBSD-users-jp@jp.FreeBSD.org 参加者 にも配送されます)。 過去の Advisory は以下のサイトを参照して下さい。 FreeBSD Security Information (英語) 上記ページの日本語訳。 ただし和訳作業が必要なため、最新の情報を得たい場合は 本家のページを見ましょう。 また、CERT 関連の情報もチェックしておくとよいでしょう。 CERT Advisory CERT Advisory 邦訳版 CERT Advisory 迅速和訳計画 その他、以下のサイトから情報収集をすることをお勧めします。 セキュリティホール memo。 セキュリティアンテナ。セキュリティ関連のサイトの更新状況チェック。 incidents.org (英語) JPCERT/CC レポート (週刊) IPA 脆弱性関連情報 (随時更新) また、以下のメールマガジンを購読するのもよいでしょう。 Scan Security Wire 有料版 (週1回) Scan Security Wire 無料版 (有料版のダイジェスト) Scan Daily Express (有料。月〜金 日刊) --- [管理番号 2077] (最終更新 2002/01/27 00:09:33) Q. 起動時に時刻を合わせるにはどうしたらいいですか? A. 起動時に ntpdate で時刻補正を行いましょう。 /etc/rc.conf に ntpdate_enable="YES" ntpdate_flags="xxx.xxx.xxx.xxx" の二行を追加しましょう。 --- [管理番号 2224] (最終更新 2002/06/18 23:56:59) Q. FreeBSD 4.X-RELEASE で May 19 05:52:07 サイト名 sshd[1866]: warning: /etc/hosts.allow, line 23: can't verify hostname: getaddrinfo(ドメイン 名, AF_INET) failed がでるのですが、セキュリティ上問題はありませんか? /etc/hosts.allow はオリジナルのまま変更していません。 A. このメッセージは sshd(8) にかぎらず、 libwrap(3) をリンクしたサーバプログ ラム、具体的には inetd(8), portmap(8), sendmail(8) からも発生します。 これは接続して来たクライアントの逆引き→正引きを行なった後、 /etc/hosts.allow の評価を行ないます。そして 逆引き→正引きを行なった際、正 引き情報と一致しないものを排除するためのものです。該当するアクセスがあれば、 逆引きに失敗するのでこの様な warning が発生します。 ホスト名・ドメイン名を偽造したアクセスである可能性が高いので、 warning が気 になる人は、 /etc/hosts.allow の先頭、少なくとも ALL : ALL : allow の前に、 ALL : PARANOID : RFC931 20 : deny を追加して下さい。 warning は消えませんが、この様なアクセスを排除することが できます。 --- [管理番号 2272] (最終更新 2003/10/16 23:20:14) Q. 起動時に "boot -v" とすれば、詳細なブートメッセージが表示される と聞いたのですが、どうやって入力するのか分かりません。 A. FreeBSD 起動時に、 Hit [Enter] to boot immediately, or any other key for command prompt. と出てきたところで Enter 以外 (例えばスペースキーなど) を叩くと ok というプロンプトが表示されますので、ここで boot -v と入力します。 ハンドブックの以下の項目も参考になるでしょう。