はじめてのFreeBSD。
ただインストールするだけなら、まあまあ簡単。でも、KDMや日本語環境をまともに動かすようになるまでが結構…。一度わかってしまえば何てことないんだけど。
環境
- ハードウェア
- NEC ValueOne Gシリーズ
CPU Pentium4 HT 3GHz、メモリ1GB、HD 250GB - インストールするOS
- FreeBSD 6.2
他OSとの同居なし。
インストール
-
FreeBSDダウンロードページよりi386のISOイメージをダウンロードして、インストール用CD作成。
-
インストールCDでPCを起動して、インストール開始。
- Country Selection → 110 Japan
- System Console Keymap → Japanese 106
- FreeBSD/i386 6.2-RELEASE – sysinstall Main Menu → Standard plain login
- Fdisk Partition Editor → A Q
- Install Boot Manager for drive ad4 → Standard
- FreeBSD Disklabel Editor → A Q
- Choose Distributions → All を選択した後、src をすべてはずす。
- configure network devices? → yes
- Network interface information → bge0
- IPv6 → no
- DHCP → no
- Network Configuration
- Host: newsvr
- Domain: dip.jp
- IPv4 Gateway: 192.168.0.254
- Name Server: 192.168.0.254
- IPv4 Address: 192.168.0.5
- Netmask: 255.255.255.0
- bring the bge0 interface right now? → yes
- Do you want this machine to function as network gateway? → no
- Do you want configure inetd and the network services that it provides? → no
- Do wish to enable inetd? → no
- Would you like to enable SSH login? → yes
- Do you want to have anonymous FTP access to this machine? → no
- NFS Server → no
- NFS Client → no
- Would you like to customize your system console settings? → yes
- Time Zone Selector → Asia, Japan, JST
- Would you like to enable Linux binary compatibility? → yes
- Does this system have a PS/2, serial or bus mouse? → yes
- The FreeBSD package collection…. Would you like to brose the collection now? → no
- add any initial accounts?
- Group: user
- User: xxxx, Group: user, Member group: wheel
Member groupを設定するのはsuの利用を許可するユーザのみ。
- rootのパスワード設定。
- Visit the general configuration menu for a chance to set any last options? → no
- Are you sure you wish to exit? → yes
-
CDを抜く。
rootログイン用の設定
-
suができるようにするために、/etc/group でwheelにユーザ名を追加。アカウント作成時に指定済みなら不要。
ports更新
-
portsの最新版を入手。
# cd /usr # ftp ftp.freebsd.org Name: ftp Password: ftp ftp> cd /pub/FreeBSD/ports/ports ftp> get ports.tar.gz ftp> quit
-
portsの下をごっそり全更新。
# rm -rf ports # tar xvfz ports.tar.gz
-
portupgradeをインストール。
# cd /usr/ports/sysutils/portupgrade # make install clean # rehash
-
wgetとgtarをインストール。
# pkg_add -r wget # pkg_add -r gtar
xinetd
-
パッケージをインストール。
# pkg_add -r xinetd
-
/etc/inetd.confを編集し、ftpとtelnetの次の行のコメントをはずす。
ftp stream tcp nowait root /usr/libexec/lukemftpd ftpd -l -r telnet stream tcp nowait root /usr/libexec/telnetd telnetd
-
inetdの設定をインポート。
# cd /usr/local/etc xconv < /etc/inetd.conf > xinetd.conf
-
/etc/rc.confを編集。次の行を削除。
xinetd_enable="YES"
-
xinetdを開始。
/usr/local/etc/rc.d/xinetd start
Apache/PHP
-
パッケージをインストール。php5はpkg_addでインストールするとモジュール版として動作させるためのファイルが入らないので、portsの下からインストール。
# pkg_add -r apache # portinstall php5 # portinstall php5-mbstring php5-ftp
【2007/2/2トラブル対策】Apache本体はportsの下でコンパイルしてインストールすると、なぜかPHP5を組み込んで起動するとcoreダンプした。インストール初期状態のportsでportinstallしても、Apache2をportinstallしても結果は同じ。このためpkg_addでインストール。これが正しい対処法なのかどうかは不明。
※php5のパッケージインストール時にオプションを聞かれたら、IPv6以外すべてをチェック。
[X] CLI Build CLI version [X] CGI Build CGI version [X] APACHE Build Apache module [X] DEBUG Enable debug [X] SUHOSIN Enable Suhosin protection system [ ] IPV6 Enable ipv6 support [X] REDIRECT Enable force-cgi-redirect support (CGI only) [X] DISCARD Enable discard-path support (CGI only) [X] FASTCGI Enable fastcgi support (CGI only) [X] PATHINFO Enable path-info-check support (CGI only)
-
PEARをインストール。
# portinstall pear # pear install --alldeps Net_Whois Net_URL Net_SMTP ¥ Mail Mail_Mime HTTP_Header HTTP_Request HTTP_Client
-
php.iniを作成。
# cd /usr/local/etc # cp php.ini-dist php.ini
-
/usr/local/etc/php.iniの次の行を編集。
memory_limit = 256M
-
/etc/rc.confを編集し、次の行を追加。
apache_enable="YES"
-
/usr/local/etc/apache/httpd.confを編集。次の行を追加。
LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php index.html index.cgi
デフォルトのドキュメントディレクトリを定義。
DocumentRoot "/usr/www/ip"
ログはIPではなくホスト名で記録。
HostnameLookups On
画像ファイルのアクセスはログに残さない。
SetEnvIf Request_URI "¥.(bmp)|(gif)|(jpg)|(png)$" object-is-image CustomLog /var/log/httpd-access.log combined env=!object-is-image
余計な情報は出さない。
ServerSignature Off ServerTokens ProductOnly
バーチャルホスト用の設定を追加。
-
htdoc用ディレクトリ作成。
# cd /usr # mkdir www # cd www # mkdir ip amour dek ...
-
log用ディレクトリ作成。
# cd /usr/local # mkdir logs # cd logs # mkdir apache # cd apache # mkdir ip amour dek ... # chmod 777 ip amour dek ...
-
Apacheを起動。
# /usr/local/sbin/apachectl start
Samba
-
日本語版のパッケージをインストール。
# cd /usr/ports/japanese/samba3 # make install clean
-
/usr/local/etc/xinetd.confに次の行を追加。
service netbios-ssn { flags = NAMEINARGS socket_type = stream protocol = tcp wait = no user = root server = /usr/local/sbin/smbd server_args = smbd } service netbios-ns { flags = NAMEINARGS socket_type = dgram protocol = udp wait = yes user = root server = /usr/local/sbin/nmbd server_args = nmbd } service swat { flags = NAMEINARGS socket_type = stream protocol = tcp wait = no user = root server = /usr/local/sbin/swat server_args = swat }
-
xinetdを再起動。
# /usr/local/etc/rc.d/xinetd stop # /usr/local/etc/rc.d/xinetd start
-
ユーザのSambaパスワード設定。初回の設定のみ-aオプションが必要。
# smbpasswd -a [ユーザ名]
-
/usr/local/etc/samba/username.mapを作成し、次の内容を記述。
ユーザ名 = ユーザ名
-
/usr/local/etc/smb.confを作成し、次の内容を記述。
[global] dos charset = SJIS workgroup = ワークグループ名 server string = FreeBSD 6.2 username map = /usr/local/etc/samba/username.map ldap ssl = no template homedir = /home/%U [www] path = /usr/www read only = No [homes] valid users = %S read only = No browseable = No
-
Sambaを再起動。
# /usr/local/etc/rc.d/samba stop # /usr/local/etc/rc.d/samba start
-
smb.confをSWATを使って編集したい場合には、ブラウザで901ポートにアクセスする。ログイン名とパスワードにはrootとそのパスワードを入力。
http://newsvr:901/
Postfix + SMTP-auth
-
パッケージをインストール。
# cd /usr/ports/mail/postfix # make install clean # cd /usr/ports/security/cyrus-sasl2-saslauthd # make install clean
Postfixのオプションは次のものを指定。
[ ] SASL Cyrus SASLv1 (Simple Auth. and Sec. Layer) [X] SASL2 Cyrus SASLv2 (Simple Auth. and Sec. Layer) [ ] DOVECOT Dovecot SASL authentication method [ ] SASLKRB If your SASL req. Kerberos select this option [ ] SASLKRB5 If your SASL req. Kerberos5 select this option [ ] SASLKMIT If your SASL req. MIT Kerberos5 select this option [X] TLS Enable SSL and TLS support [ ] BDB Berkeley DB (choose version with WITH_BDB_VER) [ ] MYSQL MySQL maps (choose version with WITH_MYSQL_VER) [ ] PGSQL PostgreSQL maps (choose with DEFAULT_PGSQL_VER) [ ] OPENLDAP OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER) [ ] CDB CDB maps lookups [ ] NIS NIS maps lookups [ ] VDA VDA (Virtual Delivery Agent) [ ] TEST SMTP/LMTP test server and generator
オプション指定を間違うと「Package is broken」というエラーが出てインストールできなくなる。そうなってしまった場合には、手動でオプション保存ファイルを削除してから再インストールする。
# rm /var/db/ports/postfix/options # cd /usr/ports/mail/postfix # make deinstall install
いくつかの質問には次のように答える。
Would you like me to add it [y]? y Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y
うっかりyを入力せずに先に進んでしまったときには、/etc/mail/mailer.confを次のように書き換える。
# # Execute the Postfix sendmail program, named /usr/local/sbin/sendmail # sendmail /usr/local/sbin/sendmail send-mail /usr/local/sbin/sendmail mailq /usr/local/sbin/sendmail newaliases /usr/local/sbin/sendmail
-
/etc/rc.confに次の行を追加。
saslauthd_enable="YES"
-
/usr/local/etc/rc.d/saslauthdの中のsaslauthd_flagsの定義を次のように変更。
saslauthd_flags=${saslauthd_flags:-"-a sasldb"}
-
/usr/local/lib/sasl2/smtpd.confを作成し、次の行を追加する。
pwcheck_method: saslauthd
-
saslauthdを起動。
/usr/local/etc/rc.d/saslauthd start
-
SASL用のパスワードを登録。
# saslpasswd2 -u sample.domain.jp username
登録できているか確認するには、sasldblistusers2コマンドを使用する。
# sasldblistusers2 username@sample.domain.jp: userPassword
-
/etc/make.confに次の行を追加。
NO_SENDMAIL = true
-
/usr/local/etc/postfix/main.cfを次のように編集。
queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix mail_owner = postfix myhostname = svr.dip.jp mydomain = dip.jp myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 mynetworks_style = host mynetworks = 192.168.0.0/16, 127.0.0.0/8 relayhost = [xxxxx.biglobe.ne.jp] smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/usr/localetc/postfix/sasl_passwd smtp_sasl_security_options = smtp_use_tls = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_sasl_security_options = noanonymous smtpd_recipient_restrictions = permit_mynetworks permit_auth_destination permit_sasl_authenticated reject_unauth_destination alias_maps = hash:/etc/mail/aliases alias_database = hash:/etc/mail/aliases mail_spool_directory = /var/mail sendmail_path = /usr/local/sbin/sendmail newaliases_path = /usr/local/bin/newaliases mailq_path = /usr/local/bin/mailq setgid_group = maildrop html_directory = no manpage_directory = /usr/local/man sample_directory = /usr/local/etc/postfix readme_directory = no allow_mail_to_commands = alias,forward,include notify_classes = bounce,delay,policy,protocol,resource,software
-
/usr/local/etc/postfix/sasl_passwdを作成し、次の内容を記述。
xxxx.biglobe.ne.jp userid:password
管理者以外ファイルを読めないようにパーミション設定し、DB作成。
# cd /usr/local/etc/postfix # chmod 600 sasl_passwd # postmap sasl_passwd
-
/etc/rc.confに次の行を追加。
sendmail_enable="YES" sendmail_flags="-bd" sendmail_pidfile="/var/spool/postfix/pid/master.pid" sendmail_outbound_enable="NO" sendmail_submit_enable="NO" sendmail_msp_queue_enable="NO"
-
/etc/periodic.confを作成、次の行を追加。
daily_status_mail_rejects_enable="NO" daily_status_include_submit_mailq="NO" daily_submit_queuerun="NO"
-
/etc/newsyslog.confのsendmail.stの行をコメントアウト。
#/var/log/sendmail.st 640 10 * 168 B
-
/etc/mail/aliasesにpostfixとrootを追加。
root: 管理者のアカウント postfix: root
追加後はnewaliasesでDB更新。
# newaliases
-
以上でPostfixの設定は完了。Postfixを起動。
# pkill sendmail # postfix start
Cyrus IMAP
-
パッケージをインストール。
# cd /usr/ports/mail/cyrus-imapd23 # make install
オプションは次のものを選択。
[ ] BDB_3 Use BerkeleyDB v3 [ ] BDB_4 Use BerkeleyDB v4 [ ] BDB_41 Use BerkeleyDB v4.1 [ ] BDB_42 Use BerkeleyDB v4.2 [ ] BDB_43 Use BerkeleyDB v4.3 [X] BDB_44 Use BerkeleyDB v4.4 [ ] DRAC Enable DRAC support [ ] IDLED Enable IMAP idled support [ ] LDAP_PTLOADER Enable LDAP ptloader [X] LISTEXT Enable IMAP List extensions [X] MURDER Enable IMAP Murder support [X] NETSCAPEHACK Enable X-NETSCAPE extensions [ ] NNTP Enable NNTP support [ ] REPLICATION Enable replication [ ] SNMP_4 Enable SNMP support using net-snmp v4 [ ] SNMP_5 Enable SNMP support using net-snmp v5
-
/usr/local/etc/imapd.confを編集し、次の行を編集/追加。
admins: cyrus sasl_pwcheck_method: saslauthd sasl_mech_list: cram-md5 digest-md5
saslauthdで認証にgetpwentを利用した場合、ここでsasl_mech_listをplain loginに設定しておかないと、cyradmの認証に失敗する。
-
ログ保存ディレクトリを作成。
# mkdir /var/log/cyrus # chown cyrus:cyrus /var/log/cyrus # touch /var/log/cyrus/imapd.log # chown cyrus:cyrus /var/log/cyrus/imapd.log
-
IMAP用ディレクトリ作成。
# /usr/local/cyrus/bin/mkimap
-
/etc/syslog.confに次の行を追加。
local6.* /var/log/cyrus/imapd.log
-
/etc/rc.confに次の行を追加。
cyrus_imapd_enable="YES"
-
imapdを起動。
# /usr/local/etc/rc.d/imapd start
-
管理者用パスワード設定。
# passwd cyrus # saslpasswd2 cyrus
-
メイルスプール作成。
# cyradm --user cyrus localhost Password: パスワード newsvr> cm user.ユーザ名
/usr/local/etc/imapd.confが設定されていないと、cyradmを実行してもIMAP PasswordではなくPasswordと表示され、認証に失敗する。
-
/usr/local/etc/postfix/main.cfに次の行を追加。
mailbox_transport = lmtp:unix:/var/imap/socket/lmtp fallback_transport = lmtp:unix:/var/imap/socket/lmtp
-
Postfixを再起動。
# postfix stop # postfix start
fetchmail
-
/usr/local/etc/cyrus.confのlmtpの行のコメントをはずし、次のように編集する(cmdの代入に -a オプションを追加)。
lmtp cmd="lmtpd -a" listen="lmtp" prefork=0
※Cyrus IMAPとPostfixの間で認証を省略するための設定。
-
Cyrus IMAPを再起動。
# /usr/local/etc/rc.d/imapd restart
-
fetchmailconfを使うためにPythonとTkinterをインストール(fetchmailconfはなくてもあまり困らないかも)。
# cd /usr/ports/lang/python # make install clean # cd /usr/ports/x11-toolkits/py-tkinter # make install clean
-
ユーザの.fetchmailrcを作成。
set daemon 30 poll mail.biglobe.ne.jp protocol pop3 user ユーザ名 password パスワード nokeep fetchall expunge 0 mda "/usr/local/cyrus/bin/deliver -D -e -a ユーザ名 ユーザ名"
ファイルのパーミションは600に設定。
-
/usr/local/etc/fetchmailrcのパーミションを710に変更。
# chmod 710 /usr/local/etc/fetchmailrc
-
/usr/local/etc/rc.d/fetchmailの処理開始に次の行を追加し、fetchmailを利用するユーザを指定。
fetchmail_users="ユーザ名 ユーザ名"
-
/etc/rc.confに次の行を追加。
fetchmail_enable="YES"
-
fetchmailを起動。
# /usr/local/etc/rc.d/fetchmail start
KDE
-
rootでログインし、次のコマンド実行。日本語フォントを追加しないと、メニューにトーフが表示されまくり。
# pkg_add -r kde # pkg_add -r kde-i18n # pkg_add -r ja-kde-i18n # pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/All/ja-sazanami-ttf-20040629_1.tbz
-
KDMの初期設定ファイル作成のため、kdmを起動。
# kdm
KDMが起動したら、メニューからrestartを選択して再起動。
-
/usr/local/share/config/kdm/kdmrcを編集。
-
rootでKDMでもログインできるように。
AllowRootLogin=true
-
PCからCygwinでKDM起動できるように。
[Xdmcp] Enable=true Port=177
-
-
wrapperをインストール。
# cd /usr/ports/x11/wrapper # make # make install
-
システム起動時に自動的にKDMを起動するため、/etc/ttysを次のように設定。初期設定ではXDMが設定されているが、offになっている。
ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
-
KDM起動時にPAM関連のエラーを抑制するため、/etc/pam.conf に次の4行を追加。
kde auth required pam_unix.so kde account required pam_unix.so try_first_pass kde session required pam_deny.so kde password required pam_deny.so
-
PCから次のようにCygwinコマンドを実行し、KDMの画面が表示されればOK(192.168.0.2はPCのIPアドレス)。
% XWin -screen 0 -query 192.160.0.5 -from 192.168.0.2
-
KDEでログインし、メニューからコントロールセンターを起動し、「システム管理」→「ログインマネージャ」で次のように設定変更。
- 外観→ロケール: 日本語
- ユーザ: ユーザリストを表示しない
データ転送メモ
Solaris 9からFreeBSDのマシンへのデータ転送にはrshとtarを使用。が、FreeBSD側で次のようにコマンドを実行すると、なぜかディレクトリのパーミッションからgroupとotherのビットがすべて落ちる。
# rsh solaris "cd /export; tar cvf - www" | tar xf -
Solaris側で一度tarファイルに落としてコピーし、そこから展開しても結果は一緒だった。このとき、FreeBSD側でtarではなくgtarを使うと正常にコピーできる。
# rsh solaris "cd /export; tar cvf - www" | gtar xf -
理由は不明…。
参考リンク
- FreeBSD
-
- FreeBSD公式サイト
- PC-BSD公式サイト (日本語設定の参考に…)
- 人工ノ翼 … 設定tips
- KDE
- 日本語化
-
- FreeBSD追加フォント
- (FreeBSD) USB日本語106/109キーボードでアンダースコア(_)が入力できない (ttt)
- キーボードの設定
- PC-BSD 1.3 リリース (sasapurinのブログ)
- 日本語入力プログラムのPBIパッケージ (PC-BSD Forum – yamujun氏)
- FreeBSDで日本語化 KDE を使うには? (日本KDEユーザ会) … 情報が古すぎて役に立たなそうかも。
- Postfix
- sendmail (結局使わず…)