FreeBSD 6.1 インストールメモ
2006/05/27 〜 2006/06/06



ノートパソコンに入れていたFreeBSD 4.11を消してFreeBSD 6.1をインストールしてみました。
以下はOSとアプリケーションのインストールメモ。

■ FreeBSD 6.1をインストール

FreeBSDのftpサイトからisoイメージをダウンロード。
ダウンロードしたのは以下の2つのisoファイル。
FreeBSDを入れるだけならdisc1のみでOKですがSambaやらApache、KDE、WindowMakerなどの
パッケージ類も入れる場合はdisc2も必要。
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.1/6.1-RELEASE-i386-disc1.iso
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.1/6.1-RELEASE-i386-disc2.iso
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.1/CHECKSUM.MD5
※MD5 チェックサムの確認にはGaoEncodeを使わせてもらいました。(感謝

インストール用CDの作成にはライディングソフトのB's Recorder GOLD5を利用しました。
B's Recorder GOLD5を起動して補助メニューを閉じ、下の画像の丸の所にisoイメージを
ドロップして書き込みボタンを押すだけでCDブート可能なインストールCDが出来上がります。


出来上がったCDでbootしてみましたがインストラーはFreeBSD 4.xと比べて殆ど変わら無いような感じでした。
私は"Standard"を利用してインストールしました。
インストール前に注意すべき点はsysinstallのmenu画面で"keymap"をjapanese106に変更すること。
パーティション作成は"A"でデフォルト設定にしないで出来るだけ手動で設定した方がいいです。
SWAP領域は搭載メモリの2倍程度が目安。

(以下略)




■ カーネルの再構築

> カーネルコンフィグレーションファイルをコピーし書き換え
# cd /usr/src/sys/i386/conf
# cp GENERIC ORGKERNEL
# vi ORGKERNEL


※必要に応じてoptionsやdeviceを追加or削除
※IPFWを使う場合は"IPFIREWALL"等を追加


# /usr/sbin/config ORGKERNEL
# cd ../../compile/ORGKERNEL # FreeBSD 4.x
# cd ../compile/ORGKERNEL # FreeBSD 6.x
# make depend
# make
# make install

# cd /usr/src
# make buildkernel KERNCONF=ORGKERNEL
# make installkernel KERNCONF=ORGKERNEL


無事終われば再起動
# shutdown -r now




■ 日本語環境

> jbigkit、netpbm、ja-groffをインストール
# portinstall graphics/jbigkit graphics/netpbm japanese/groff

> jlessとlvをインストール
# portinstall japanese/less misc/lv

>jmanとjman-docをインストール
# portinstall japanese/man japanese/man-doc


***********************************************************************
* Japanese online manual has been successfully installed.             *
*                                                                     *
* (1) To read jman(1), use the following command sequence:            *
*        % setenv LC_CTYPE ja_JP.eucJP                                *
*        % setenv PAGER jless                                         *
*        % jman jman                                                  *
*                                                                     *
* (2) For more info, please visit following web page (Japanese):      *
*        Jpman project         *
*                                                                     *
* (3) If you have any questions, comments, bug reports, suggestions,  *
*     and/or requests for modifications, please send e-mail to:       *
*        Jpman project mailing list            *
*                                                                     *
***********************************************************************

> 日本語(2バイト文字)対応エディタはお好みの物を・・私はelvisを入れました
# cd /usr/ports/japanese/elvis
# make install clean



> FreeBSD6では日本語のロケールはja_JP.eucJPよりja_JP.UTF-8の方が良いようですが
> FreeBSD6でUTF-8を使うにはまだ問題が多い模様...
> http://www.xdelta.net/blog/FreeBSD/2006/01/18/p128
> 上のmaskenさんのブログで紹介されているパッチを当ててmklocaleを取り合えずインストール
> ※パッチファイルは念の為うちのサーバに置いておきます
> ja_JP.eucJP.src.diff

# cd /usr/src/share/mklocale
# patch -p3 < ja_JP.eucJP.src.diff
# make install clean



> .cshrcを編集
# vi ~/.cshrc
# シェル環境に合わせて変更 (exportとか)
#setenv LANG C
setenv LANG ja_JP.eucJP
setenv PAGER /usr/local/bin/lv
setenv JLESSCHARSET japanese-euc
[EOF]
※昨日ja_JP.UTF-8で記載していましたがja_JP.eucJPに戻しました


> sourceコマンドで変更した設定を適用
# source ~/.cshrc


> 以下で日本語が問題なく表示されれば取り合えずOK
# jman jman


> 文字化けしたマニュアルの削除
# rm /usr/share/man/ja/cat?/*
# rm /usr/local/man/ja/cat?/*









■ その他メモ ※クリックすると解説に飛びます


サーバ系
Apache(2.2.0) ・・・ WWWサーバ
ProFTPD(1.3.0.r3) ・・・ FTPサーバ ※FTP over SSL対応
ntpd(4.2.0-a) ・・・ タイムサーバ
samba(smbclient)(3.0.21b) ・・・ ファイルサーバ
OpenSSH() ・・・ SSHサーバ
postfix(2.2.9) ・・・ SMTPサーバ(MTA)
qpopper(4.0.8) ・・・ POP3サーバ ※APOP対応

CUI系
nkf(2.05) ・・・便利な漢字コードの変換フィルタ ※JIS, Shift-JIS, EUC and MIME decode
IPFW() ・・・ IPパケットフィルタリングツール
tcpdump() ・・・ パケットダンプツール
tcpdrop() ・・・ TCPコネクションを切断するためのコマンド
tcptrace(6.6.7) ・・・ tcpdump の出力ファイルを分析
elvis(1.8.4_1) ・・・ 2バイト文字対応のviクローン
memtest(4.0.5) ・・・ メモリーチェックソフト
xmbmon(205_6) ・・・ CPUの温度を検出するソフト
jls(0.5) ・・・ 日本語対応ls ※FreeBSD 5.1以降コマンドが重複する場合があるようです
jless(ja-less382) ・・・ 日本語対応less
w3m(0.5.1) ・・・ CUIで使えるテキストベースのWWWブラウザ
wget(1.10.2) ・・・ 便利なダウンロード支援ツール
nmap(4.01) ・・・ 高機能ポートスキャナー
skill(4.1.1) ・・・ 
p5-libwww(5.805) ・・・ perl用のlibwwwモジュール
Net-SSLeay(1.30_1) ・・・ perl用のNet-SSLeayモジュール
MIME-Base64(3.07) ・・・ perl用のBase64モジュール
p5-Jcode(2.03) ・・・ perl用のJcodeモジュール

GUI系
firefox(1.5.0.1) ・・・オープンソースの多機能WWWブラウザ
Ethereal(0.10.14) ・・・ 高機能LANアナライザソフト
xmms(1.2.10) ・・・ Unix系OS用のWinampクローン ※スキン対応
sylpheed2(2.2.0) ・・・ 3ペイン型の電子メールクライアント ※国産
GKrellM(1.2.13_4) ・・・ 多機能システムモニタツール ※スキン対応
fmsx(3.0) ・・・ MSXエミュレータ
Ezfm(0.4.3_1) ・・・ エクスプローラ風 ファイルマネージャ
mplayer(0.99.7_11) ・・・ 映像・音声再生用のメディアプレーヤー ※DVD再生対応





Apache Ver.2.2.0 (FreeBSD 6.1)

% cd /usr/ports/www/apache22
% sudo make install clean

> 最低限の設定
# vi /usr/local/etc/apache22/httpd.conf
DocumentRoot	"/usr/local/www/public_html"

<Directory "/usr/local/www/public_html">

    Options Indexes FollowSymLinks	# Indexesを削除するとindexリストを表示しなくなる

    AllowOverride None		# .htaccess等を使う場合は AuthConfig Limit 等に変更

</Directory>

AccessFileName .htaccess	# デフォルトのアクセス制御用ファイル.htaccessを変更する場合書き換え

HostnameLookups Off	# DNS逆引きをしない場合OFF

<IfModule alias_module>
    ・
    ・
    ScriptAlias /cgi-bin/ "/usr/local/www/public_html/cgi-bin"
<IfModule>


<Directory "/usr/local/www/public_html/cgi-bin">	# cgiの設定
    ・
    ・

</Directory>

<IfModule mime_module>

	AddHandler cgi-script .cgi	# cgiの設定

</IfModule mime_module>
[EOF]


※以下の警告が出る場合はaccf_http.koモジュールをロードする必要があるようです
No such file or directory: Failed to enable the 'httpready' Accept Filter

# kldload /boot/kernel/accf_http.ko

システム起動時に自動でモジュールをロードする場合は以下のようにすると良いようです。

# vi /boot/loader.conf
accf_http_load="YES"    # この一行を追加
accf_data_load="YES"




> 起動/停止/再起動
# apachectl start		# 起動
# apachectl stop		# 停止
# apachectl restart	# 再起動

▲戻る





ntpd Ver.4.2.0-a (FreeBSD 6.1)

% cd /usr/ports/net/ntp
% sudo make install clean


> "/etc/services"にNetwork Time Protocolの記述があるか確認
# cat /etc/services | grep 123
ntp             123/tcp    #Network Time Protocol
ntp             123/udp    #Network Time Protocol

> inetdデーモンから起動する場合inetd.confの以下のコメントを外す
# vi /etc/inetd.conf
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal
[EOF]

> 設定ファイル作成
# vi /etc/ntp.conf
server 133.100.9.2		# 福岡大学のNTPサーバ
server 133.100.11.8	#  〃
server 131.107.1.10	# アメリカNIST
driftfile /etc/ntp.drift
[EOF]

NTP サーバ一覧

※server		・・・ 時刻源サーバ・アドレス
※peer		・・・ 時刻源サーバ・アドレス
※broadcast	・・・ ブロードキャスト・アドレス

> /etc/rc.confにntpdの設定を追加
# vi /etc/rc.conf
xntpd_enable="YES"
ntpdate_enable="YES"
ntpdate_program="/usr/sbin/ntpdate"
ntpdate_flags="133.100.9.2"
xntpd_program="/usr/sbin/ntpd"
ntpd_flags="-p /var/run/ntpd.pid -c /etc/ntp.conf"
[EOF]

※追記(2006/06/06)
NetBios over TCP/IP (NBT) をOFFにした状態(WidowsXP)で桜時計からLAN内のntpサーバに
問い合わせると「ホスト確認 エラー (11004)」で繋がらなくなる
エラーメッセージから推測するにIP→HOSTの逆引きが出来ていない為?と思い
C:\WINDOWS\system32\drivers\etc\hostsに以下一行を追加すると問題なく繋がるように
192.168.XXX.XXX freebsd


▲戻る





samba(smbclient) Ver.3.0.21b (FreeBSD 6.1)

> portsからsamba3をインストール
% sudo portinstall japanese/samba3

> 設定ファイル書換え(最低限の設定)
# vi /usr/local/etc/smb.conf
[global]

workgroup = MYGROUP		# Windowsのワークグループ名

hosts allow = 192.168.1. 127.	# 接続を許可するIP or ネットワーク

load printers = no			# プリンターを使う場合はyes 使わない場合no

log file = /var/log/log.%m		# ログ記録ファイル ※ %mはクライアント・マシンのNetBIOS名

max log size = 50			# ログファイルのサイズ(Kb)

security = user			# セキュリティオプションでデフォルトではユーザレベルで制限

encrypt passwords = yes		# パスワード暗号化の有無
				# smbpasswdでsamba専用のパスワード設定が必要になります

socket options = TCP_NODELAY	# sambaのパフォーマンスが悪くなったorハングアップする場合
				# はここのオプションを適切に変更すると改善するかもしれません
				# 通常はデフォルトのTCP_NODELAYで問題ないようです

dns proxy = no			# noの場合WINSで、yesの場合DNSを使用


[homes]
comment = Home Directories	# sambaサーバ接続時にフォルダに表示されるコメント文(何でもOK)
browseable = no		# 
read only = No		# 読み取りの有無
writeable = yes		# 書込みの有無
> 起動用スクリプト
/usr/local/etc/rc.d/samba.sh > システム起動時にsambaを起動
# vi /etc/rc.conf
samba_enable="YES"
sambaの古いメモ


> おまけ(smbclient)
samba付属のsmbclientを使うとFreeBSDからWindowsの共有フォルダにアクセスできます。
Windowsマシン(192.168.0.2)のhogeフォルダにユーザhogeで接続する場合は下記のようになります。
パスワードはWindows側で設定したものを入力
% smbclient //192.168.0.2/hoge -U hoge
Password:
smb: \>

smb: \>でコマンド入力待ち状態になるので、コマンドを打つとファイルを
ダウンロードしたり読込み・書換え等できます。
コマンドの一覧はhelp

smb: \> help
?              altname        archive        blocksize      cancel
case_sensitive cd             chmod          chown          del
dir            du             exit           get            getfacl
hardlink       help           history        lcd            link
lowercase      ls             mask           md             mget
mkdir          more           mput           newer          open
print          prompt         put            pwd            q
queue          quit           rd             recurse        reget
rename         reput          rm             rmdir          setmode
stat           symlink        tar            tarmode        translate
volume         vuid           logon          listconnect    showconnect
!

> hoge.txtファイルをダウンロード
smb: \> get hoge.txt

> hogehoge.txtファイルをアップロード
smb: \> put hogehoge.txt

> 終了
smb: \> exit (or quit)

▲戻る




ProFTPD Ver.1.3.0.r3 (FreeBSD 6.1)

% cd /usr/ports/ftp/proftpd
% sudo make install clean
> OpenSSLオプション(FTP over SSL)を追加。これでftps対応になります。
Make sure you have the following lines in your PAM configuration file
so that ProFTPd's PAM module can authenticate users correctly.

ftpd auth required pam_unix.so try_first_pass ftpd account required pam_unix.so try_first_pass ftpd session required pam_permit.so

> pamモジュールに上の3行を追加しろとの事で/etc/pam.d/ftpdに追加
> ※FreeBSD 4.xは/etc/pam.conf


# vi /etc/pam.d/ftpd
ftpd auth    required    pam_unix.so         try_first_pass
ftpd account required    pam_unix.so         try_first_pass
ftpd session required    pam_permit.so

> proftpdの設定ファイルを書き換え

# vi /usr/local/etc/proftpd.conf
ServerType	inetd			# inetdデーモンからの起動
ScoreboardFile	/var/run/proftpd.scoreboard	# 後でスコアーボード作成
DefaultRoot	~			# ホームディレクトリ以下のみアクセスを許可

# パーミッション変更を許可
<Limit SITE_CHMOD>
    #DenyAll
  AllowAll
</Limit>

> スコアーボードを作成
# touch /var/run/proftpd.scoreboard


> inetd設定ファイルに以下の一行を追加
# vi /etc/inetd.conf
ftp stream tcp nowait root /usr/libexec/tcpd /usr/local/sbin/proftpd


> inetdデーモンを起動
# /usr/sbin/inetd

> 起動している場合は再起動
# /etc/rc.d/inetd restart
or
# killall -HUP `cat /var/run/inetd.pid`


rc.confを書き換えてinetdを有効に # vi /etc/rc.conf
inetd_enable="YES"


> sftp対応のFTPクライアント/SSLプロキシ
NextFTP(シェア)
SmartFTP(外国産/フリー) ※日本語化パッチあり
WinSSLWrap(SSLプロキシソフト/フリー) ※FFFTP等で使用可能。オススメ


▲戻る



postfix Ver.2.2.9 (FreeBSD 6.1)

> portsから postfix をインストール
% sudo portinstall mail/postfix

> postfix のユーザとグループを追加する場合[y]
Would you like me to add it [y]? y
> mailer.confの書換えの有無
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y


> sendmailの記述があればコメントアウト
% cat /etc/inetd.conf | grep sendmail


> postfix設定ファイルの書換え
# vi /usr/local/etc/postfix/main.cf


> sendmailを停止
# skill sendmail

> aliases.db を作成
# cd /usr/ports/mail/postfix/
# newaliases


> root宛てのメールを特定ユーザに転送
#vi /etc/aliases
root: hoge@hoge.mail.com

# newaliases


※rootのメールは通常[/var/mail/root]に保存されているのでこの内容を
特定ユーザのメールファイルに追加書込みするようなスクリプトを組んで
cronにでも登録すれば上で記載している事と同じようなことが出来ます



▲戻る



qpopper Ver.4.0.8

> portsから qpopper をインストール
% sudo portinstall mail/qpopper

>/etc/inetd.conf を編集
# vi /etc/inetd.conf
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -t /var/log/qpopper.log

>inetdを再起動
kill -HUP `cat /var/run/inetd.pid`



●APOPの使用
POP3ではサーバ接続時に送るパスワードがそのままネット上を流れていく為セキュリティ上あまり好ましくありません。
そこでqpopperのインストールオプションで選択できるAPOPを使いネット上を流れるデータを暗号化します。

> portsからインストールするとオプション選択画面が表示されるので
> そこでAPOPをチェックしてインストール

※スクリーンショット

> pop.auth.db を作成
# qpopauth -init


> APOPのパスワードを設定するユーザでログインし以下のコマンド
% qpopauth
Adding only APOP password for *****.
New password:

> 上のメッセージが表示されAPOPのパスワードを聞いてくるので入力


> APOP登録アカウントの一覧を表示
# qpopauth -list ALL

> APOP登録アカウントの削除
# qpopauth -delete [USER ID]

▲戻る




nkf

オプション
	-e 変換結果をEUC-JPで出力する 
	-j 変換結果をISO-2022-JPで出力する 
	-s 変換結果をShift-JISで出力する 
	-u 変換結果のバッファリングを行わない

	-L[wmu] 改行モード
	    -Lu   unix (LF)
	    -Lw   windows (CRLF)
	    -Lm   mac (CR)

> hoge.txtの文字コードをEUCに変換して出力
# nkf -e hoge.txt

> hoge.txtの文字コードをEUCに変換して結果をhoge2.txtに出力
# nkf -e hoge.txt > hoge2.txt

> hoge.txtの文字コードをEUCに変換して結果を上書き保存
# nkf -e --overwrite hoge.txt

> hoge.txtの改行コードを windows (CRLF)に変換して結果を上書き保存
# nkf -Lw --overwrite hoge.txt

> 文字コードを判別
# nkf --debug hoge.txt > /dev/null
ISO-2022-JP

▲戻る




tcpdrop

# sockstat -c | grep 21
xxx     proftpd    2900  0  tcp4   192.168.0.1:21        192.168.0.2:2104

※192.168.0.2の2104ポートから192.168.0.1の21ポートに接続しているコネクションを切断する場合は以下

# tcpdrop 192.168.0.1 21 192.168.0.2 2104
▲戻る




p5-libwww

500 Wide character in syswrite
Content-Type: text/plain
Client-Date: XXX, XX XXX 2006 XX:XX:XX GMT
Client-Warning: Internal response

500 Wide character in syswrite

UTF-8 の文字列を含んだ データをリクエストで送ろうとした時のエラーメッセージ
リクエストデータをSJISやEUC等の文字コードに変換して送ると回避できる


▲戻る