FreeBSD 6.2 インストール

はじめてのFreeBSD。

ただインストールするだけなら、まあまあ簡単。でも、KDMや日本語環境をまともに動かすようになるまでが結構…。一度わかってしまえば何てことないんだけど。

環境

ハードウェア
NEC ValueOne Gシリーズ
CPU Pentium4 HT 3GHz、メモリ1GB、HD 250GB
インストールするOS
FreeBSD 6.2
他OSとの同居なし。

インストール

  1. FreeBSDダウンロードページよりi386のISOイメージをダウンロードして、インストール用CD作成。

  2. インストール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
  3. CDを抜く。

rootログイン用の設定

  1. suができるようにするために、/etc/group でwheelにユーザ名を追加。アカウント作成時に指定済みなら不要。

ports更新

  1. portsの最新版を入手。

    # cd /usr
    # ftp ftp.freebsd.org
    Name: ftp
    Password: ftp
    ftp> cd /pub/FreeBSD/ports/ports
    ftp> get ports.tar.gz
    ftp> quit
  2. portsの下をごっそり全更新。

    # rm -rf ports
    # tar xvfz ports.tar.gz
  3. portupgradeをインストール。

    # cd /usr/ports/sysutils/portupgrade
    # make install clean
    # rehash
  4. wgetとgtarをインストール。

    # pkg_add -r wget
    # pkg_add -r gtar

xinetd

  1. パッケージをインストール。

    # pkg_add -r xinetd
  2. /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
  3. inetdの設定をインポート。

    # cd /usr/local/etc
    xconv < /etc/inetd.conf > xinetd.conf
  4. /etc/rc.confを編集。次の行を削除。

    xinetd_enable="YES"
  5. xinetdを開始。

    /usr/local/etc/rc.d/xinetd start

Apache/PHP

  1. パッケージをインストール。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)
  2. PEARをインストール。

    # portinstall pear
    # pear install --alldeps Net_Whois Net_URL Net_SMTP ¥
    Mail Mail_Mime HTTP_Header HTTP_Request HTTP_Client
  3. php.iniを作成。

    # cd /usr/local/etc
    # cp php.ini-dist php.ini
  4. /usr/local/etc/php.iniの次の行を編集。

    memory_limit = 256M
  5. /etc/rc.confを編集し、次の行を追加。

    apache_enable="YES"
  6. /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

    バーチャルホスト用の設定を追加。

  7. htdoc用ディレクトリ作成。

    # cd /usr
    # mkdir www
    # cd www
    # mkdir ip amour dek ...
  8. log用ディレクトリ作成。

    # cd /usr/local
    # mkdir logs
    # cd logs
    # mkdir apache
    # cd apache
    # mkdir ip amour dek ...
    # chmod 777 ip amour dek ...
  9. Apacheを起動。

    # /usr/local/sbin/apachectl start

Samba

  1. 日本語版のパッケージをインストール。

    # cd /usr/ports/japanese/samba3
    # make install clean
  2. /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
    }
  3. xinetdを再起動。

    # /usr/local/etc/rc.d/xinetd stop
    # /usr/local/etc/rc.d/xinetd start
  4. ユーザのSambaパスワード設定。初回の設定のみ-aオプションが必要。

    # smbpasswd -a [ユーザ名]
  5. /usr/local/etc/samba/username.mapを作成し、次の内容を記述。

    ユーザ名 = ユーザ名
  6. /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
  7. Sambaを再起動。

    # /usr/local/etc/rc.d/samba stop
    # /usr/local/etc/rc.d/samba start
  8. smb.confをSWATを使って編集したい場合には、ブラウザで901ポートにアクセスする。ログイン名とパスワードにはrootとそのパスワードを入力。

    http://newsvr:901/

Postfix + SMTP-auth

  1. パッケージをインストール。

    # 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
  2. /etc/rc.confに次の行を追加。

    saslauthd_enable="YES"
  3. /usr/local/etc/rc.d/saslauthdの中のsaslauthd_flagsの定義を次のように変更。

    saslauthd_flags=${saslauthd_flags:-"-a sasldb"}
  4. /usr/local/lib/sasl2/smtpd.confを作成し、次の行を追加する。

    pwcheck_method: saslauthd
  5. saslauthdを起動。

    /usr/local/etc/rc.d/saslauthd start
  6. SASL用のパスワードを登録。

    # saslpasswd2 -u sample.domain.jp username

    登録できているか確認するには、sasldblistusers2コマンドを使用する。

    # sasldblistusers2
    username@sample.domain.jp: userPassword
  7. /etc/make.confに次の行を追加。

    NO_SENDMAIL = true
  8. /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
  9. /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
  10. /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"
  11. /etc/periodic.confを作成、次の行を追加。

    daily_status_mail_rejects_enable="NO"
    daily_status_include_submit_mailq="NO"
    daily_submit_queuerun="NO"
  12. /etc/newsyslog.confのsendmail.stの行をコメントアウト。

    #/var/log/sendmail.st                   640  10    *    168   B
  13. /etc/mail/aliasesにpostfixとrootを追加。

    root: 管理者のアカウント
    postfix: root

    追加後はnewaliasesでDB更新。

    # newaliases
  14. 以上でPostfixの設定は完了。Postfixを起動。

    # pkill sendmail
    # postfix start

Cyrus IMAP

  1. パッケージをインストール。

    # 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
  2. /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の認証に失敗する。

  3. ログ保存ディレクトリを作成。

    # mkdir /var/log/cyrus
    # chown cyrus:cyrus /var/log/cyrus
    # touch /var/log/cyrus/imapd.log
    # chown cyrus:cyrus /var/log/cyrus/imapd.log
  4. IMAP用ディレクトリ作成。

    # /usr/local/cyrus/bin/mkimap
  5. /etc/syslog.confに次の行を追加。

    local6.* /var/log/cyrus/imapd.log
  6. /etc/rc.confに次の行を追加。

    cyrus_imapd_enable="YES"
  7. imapdを起動。

    # /usr/local/etc/rc.d/imapd start
  8. 管理者用パスワード設定。

    # passwd cyrus
    # saslpasswd2 cyrus
  9. メイルスプール作成。

    # cyradm --user cyrus localhost
    Password: パスワード
    newsvr> cm user.ユーザ名

    /usr/local/etc/imapd.confが設定されていないと、cyradmを実行してもIMAP PasswordではなくPasswordと表示され、認証に失敗する。

  10. /usr/local/etc/postfix/main.cfに次の行を追加。

    mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
    fallback_transport = lmtp:unix:/var/imap/socket/lmtp
  11. Postfixを再起動。

    # postfix stop
    # postfix start

fetchmail

  1. /usr/local/etc/cyrus.confのlmtpの行のコメントをはずし、次のように編集する(cmdの代入に -a オプションを追加)。

    lmtp          cmd="lmtpd -a" listen="lmtp" prefork=0

    ※Cyrus IMAPとPostfixの間で認証を省略するための設定。

  2. Cyrus IMAPを再起動。

    # /usr/local/etc/rc.d/imapd restart
  3. fetchmailconfを使うためにPythonとTkinterをインストール(fetchmailconfはなくてもあまり困らないかも)。

    # cd /usr/ports/lang/python
    # make install clean
    # cd /usr/ports/x11-toolkits/py-tkinter
    # make install clean
  4. ユーザの.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に設定。

  5. /usr/local/etc/fetchmailrcのパーミションを710に変更。

    # chmod 710 /usr/local/etc/fetchmailrc
  6. /usr/local/etc/rc.d/fetchmailの処理開始に次の行を追加し、fetchmailを利用するユーザを指定。

    fetchmail_users="ユーザ名 ユーザ名"
  7. /etc/rc.confに次の行を追加。

    fetchmail_enable="YES"
  8. fetchmailを起動。

    # /usr/local/etc/rc.d/fetchmail start

KDE

  1. 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
  2. KDMの初期設定ファイル作成のため、kdmを起動。

    # kdm

    KDMが起動したら、メニューからrestartを選択して再起動。

  3. /usr/local/share/config/kdm/kdmrcを編集。

    • rootでKDMでもログインできるように。

      AllowRootLogin=true
    • PCからCygwinでKDM起動できるように。

      [Xdmcp]
      Enable=true
      Port=177
  4. wrapperをインストール。

    # cd /usr/ports/x11/wrapper
    # make
    # make install
  5. システム起動時に自動的にKDMを起動するため、/etc/ttysを次のように設定。初期設定ではXDMが設定されているが、offになっている。

    ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
  6. 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
  7. PCから次のようにCygwinコマンドを実行し、KDMの画面が表示されればOK(192.168.0.2はPCのIPアドレス)。

    % XWin -screen 0 -query 192.160.0.5 -from 192.168.0.2
  8. 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
KDE
日本語化
Postfix
sendmail (結局使わず…)
タイトルとURLをコピーしました