2014年春に記述。ハードは前回と同じ機種(が違う個体)。 いつからか知らないが、jp.106.kbdのCtrlとCapsLookを逆にしたjp.106x.kbdというキーマップが選べるようになっていた。 インストールディスクにLiveCD機能が統合されている。FreeSBIEが2007年1月の2.0と2.0.1で更新停止しており、2014年5月現在wiki.freesbie.orgやblog.freesbie.orgがタイムアウトで応答しなくなっている(www.freesbie.orgは生きている)が、FreeBSDに吸収されたのだろうか(まったく未確認)。 パーティションテーブルのデフォルトがGPT(GUID Partition Table)に変更されており、MBR前提のツールと併用する場合は設定が必要。パーティションエディタは、ディスク(ここでパーティションテーブルの種類を選択)の下にスライス(筆者は0xA5のFreeBSDパーティションを先に作っておいた)、スライスの下にパーティションという配置。AutoにするとGPTでブート領域とスワップ領域以外ひとまとめになる(EFI起動の高性能マシンでzfsなんかを使えるならいいのかもしれないが、非力なマシンでサーバ用途だと、従来のスライスの方が安心な気がした)。 余談までにZFSの評判など http://blog.livedoor.jp/hkoie/archives/54295769.html (2012年末の情報、一部抜粋) ZFSはハードディスクがいっぱいつながっているのが大前提。1台だとうれしいことはなにもない。 ZFSは既存のファイルシステムのいいとこどりしている。トレードオフになっているところはCPUなどマシンパワーで解決する。 ZFSの管理が簡単になるというのは、いままでコマンドラインでUFSをさわってた人にはあまり簡単になったとは思えないかも。 ディスクの中にストレージプールの情報が入っているが起動時に全部のディスクを読んでたら時間がかかるので、/boot/zfs/zpool.caccheにも書いてあるが、これが壊れていると起動できなくなる。(つくりなおすことは可能) http://d.hatena.ne.jp/kamosawa/20130402 (2013年春の情報、一部抜粋) ZFSの中のディスクはログを残さずひっそり壊れてることがあります。注意!!! 個別のディスクの状態を確かめたい時は "/usr/local/sbin/smartctl -a /dev/[ディスク名]"を使いましょう。 https://peta.okechan.net/blog/archives/1789 (2012年の情報、一部抜粋) 削除処理は遅いだけでなく、通常運用中よりメモリを食う。 FreeBSDの場合ZFSはカーネルで動作するのでメモリが不足するとマシンが止まる。 (マシンが止まって再起動した後)zpool importすると、マウントされる前にまず未処理のトランザクションが処理される。(ロールバックではない) 未処理のトランザクション実行中にマシンが止まると再起動して何度もやり直すことになるが、マシンが止まらなかった場合(メモリが不足しなかった場合)と比べてトランザクションの完了までにトータルで数倍の時間がかかる。 よってメモリはできるだけ大量に積んどいた方がいい。 削除処理の遅さ、メモリ消費量は、dedupオンでさらに数倍になる。 まあそんなところだろう。UFS2の使い勝手も地味に向上しているので、当分はテスト以外で触る機会はないかなぁ。 sysinstallがなくなったらしいので一体どうするのかと思っていたが、ルートパスワードからネットワークまで新しいインストーラー(bsdinstall)が面倒を見てくれる。シェルを起動するチャンスも何度かあるので、gpart(8), fdisk(8), bsdlabel(8)あたりを使いたければそちらでもよい。なお、ここまで自動化が進んでもサブネットマスクの入力は手動だが、ユーザー作成の際にシェルの選択ができるようになった。BINDもデフォルトから外れたが筆者は使っていないので影響なし。 そういえばディストリビューションを聞かれなかった(基本的なデーモンを数個を選ぶだけになった)が、やはり筆者には無問題。前回愚痴った「portsがやたらXを入れたがる傾向」(現実的な問題点は「Xが入ってしまうインストールオプションをサクっと見分けられないこと」にあったのかも)も、新システムのpkg(後述)ではまったく見られずストレスがない。PC-BSDとの住み分けができてきたのかしら。PC-BSDにはTrueOSというサーバ向けインストールオプション(というか、以前のFreeBSDでいうサーバ向けディストリビューションみたいなもの、だと思う)もできた模様。 上記の影響かSSHがデフォルトで入るようになった(もちろん入れない選択もできるし、インストールだけして無効にしておくこともできる)。まあどのみち真っ先にアップデートするから、どちらでもよかったりする。NTPdも入るがデフォルトで有効でない。NTPdは起動でコケたときに処理を握り続けるという悪癖があるので、正しく設定できたのを確認してから自動起動を登録した方が無難だと思う(シングルユーザーモードで起動すれば再設定するのは難しくないがメンドクサイ)。 筆者はいまだにフロッピーディスクを使って鍵の受け渡しをしているが、今時はUSB機器の対応が進んでいるので、USBメモリを挿して > mount_msdosfs /dev/hoge /mnt/hoge とするだけでよかったりする。技術が進んだとはいえ、少なくとも当分は、最初に必要な「安全な経路」を手作業で確保しなければならないのだろう。運搬の必要がありそうなのは、SSH関連とFTP関連の設定のファイルくらいだろうか。SSH用のauthorized_keysはユーザーのホームディレクトリ配下に設置するのが普通なので忘れずに(パーミッションも0400などにしておかないと怒られる)。 /etc/ssh/sshd_configを開いて、少なくとも、 Port(22) Protocol(2) ListenAddress(LANのアドレス範囲) Log関連(環境に応じて) PermitRootLogin(no) PubkeyAuthentication(yes) AuthorizedKeysFile(./.ssh) PasswordAuthentication(no) PermitEmptyPasswords(no) ChallengeResponseAuthentication(no) UseDNS(問題があればno) あたりを確認(括弧内は一般的と思われる設定)。SSHdを再起動しないとsshd_configの内容が反映されないことに注意、というか、インストールディスクからは入れずに自分で入れた方が面倒が少なさそう。 とりあえず、 > freebsd-update fetch install をやっておく。moreを抜けると自動でインストールが始まる。 今回からバイナリパッケージ中心にする予定だが一応 > portsnap fetch extract もやっておいた。 どうもportaudit(というかports-mgmtセクション丸ごと)がコレクションから外れたようで、後述のauditオプションでpkgを回せということのようだ(多分)。 passwdの書式チェックが厳しくなり、従来(少なくとも8.0まで) nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin で通っていたものが nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin でないと蹴られるようになった。追加された第5、6、7フィールドはそれぞれ、未使用、パスワード変更勧告タイミング、パスワード有効期限。 新ツールpkgの使い方は下記。 http://kaworu.jpn.org/freebsd/pkg いちど > pkg を実行するとインストールするかどうか聞かれる。面白い導入方法だ。rehashは手動なのがFreeBSD流。以下、pkgバージョン1.2.7_2とportupgradeバージョン2.4.12,2を前提とした話。 パッケージ情報の更新は、 > pkg update -f 導入したソフトウェア(パッケージ管理コマンド自身を含む)のバージョンチェックは > pkg version 導入したソフトウェアのバージョンアップは > pkg upgrade 導入したソフトウェアの脆弱性情報チェックは > pkg audit -F とする、らしい。-fや-Fはグローバルオプション(pkgコマンドの実行オプション)でなくプラグインオプション(pkgが呼び出すサブコマンドの実行オプション)で、詳しい使い方がわからなかったので、推奨されている例が多いものを勘で採用した。 パッケージの検索は、 > pkg search パッケージ名の一部 導入したパッケージの情報(portsから入れたパッケージについては適用したコンパイルオプションも表示される:pkgから入れた分のコンパイルオプションをどこで確認するのか探しているのだが、よくわからない)は、 > pkg info パッケージ名 また設定ファイルはデフォルトだと /usr/local/etc/pkg.conf に保存されている。 pkgとportupgradeは管理情報を共有しており、どちらかでアップグレードを行うと、どちらでインストールしたコマンドも更新される(たとえバージョンが新しくても、オプション違いということで対象になるようだ)。コンパイルオプションを指定したビルドを指定しないビルドで置換されると困るので、 > pkg lock パッケージ名 でロックをかけ更新されないようにする。しかしそのままだとportupgradeでも更新されないため、 > pkg unlock パッケージ名 で解除する(lockとunlockは-gオプションで正規表現を受け付ける)。そのうち自動判別が導入されそうではあるが、当面は #! /bin/sh PKGNAME="hoge/moge" /usr/sbin/pkg lock -q -y ${PKGNAME} /usr/sbin/pkg upgrade /usr/sbin/pkg unlock -q -y ${PKGNAME} /usr/local/sbin/portupgrade ${PKGNAME} などとアップグレード用のスクリプトを組んでおいた方がラクかも知れない。pkg upgradeでは更新されるコマンドの一覧を表示してくれる(-yオプションは使わずに手作業するのがよさそう)。 コンパイルオプションをイジりたかったのでPostfixをportsから入れたが、先にpkgを使い依存環境を整えてから本体だけリコンパイルしたので、従来よりも所要時間が大幅に短くなった。デフォルトコンパイラがgccからLLVM Clangに変わり、コンパイル自体が少し速くなったという紹介も見た。 postfixのmain.cfでsmtpd_sasl_authを使うときのパスの設定が、バージョン2.3から以下のように変わった。 旧:smtpd_sasl_application_name = smtpd 新:smtpd_sasl_path = smtpd apacheをなんとなく2.4系に切り替えてみたが、デフォルトのディレクトリ名がapache24になっている以外とくに手間はなかった。 今回は作業手順が変わったのに(筆者が)追従するのが大変だっただけで、トラブルらしいトラブルが(ソフトウェアに限っては)なく、自動化が進んだ恩恵なのかもしれない。 デーモンが落ち着いたところでdfとduをかけてみると、/が250MB(/boot/kernelが9割ちょい)、/varが300MB(ほとんど/var/db、あとはキャッシュがちょぼちょぼ)くらいとけっこう大きい。/usrは、/usr/srcと/usr/portsがそれぞれ1GBくらい、残りから/usr/homeを除くと400MBくらい(webサイトのデータやメールディレクトリなども極力/usr/home以下に置いている)。Xなしにしてはやや膨れたかもしれないが、まあこんなものだろう。 デスクトップ用にWindows7を入れたメインマシン(といいつつほとんど動かしていなかったのをこの間発掘)からFTPでファイルを送ってみたところ、旧環境よりも格段に素早く動作した。サーバマシンとデスクトップ用サブマシンは同じハードだから、WindowsXPがボトルネックになっていたか、8.0>10.0でパフォーマンスが上がったのだろう(Pure-ftpdが速くなっただけかもしれない)。余談ながら、バックアップした設定ファイルを展開したまま送ろうとしたところ、Win側のFTPクライアントがシンボリックリンクで無限ループした(tar玉を送ってローカル展開して解決)。 sambaも試験導入したのでメモ(上記のディスク消費量は導入前のもの)。まずLDAPの設定をするよう促されるので/usr/local/etc/openldap/ldap.confを開くと、デフォルトでは全行コメントアウトになっている。/usr/local/etc/smb.conf.sampleからsmb.confも作る。あまり自信のない設定で、検索エンジン経由でコピペした人がドツボにハマってもアレなのでファイル内容は非公開。ユーザー管理はsmbpasswd(8)でなくpdbedit(8)でやる。「kickoff時間を無制限にする引数は、 "決して指定してはならない"」というよくわからない説明がいくつかヒットしたが、原文は「Use "never" as argument to set the kickoff time to unlimited」で「kickoffタイムを無制限に設定するには、引数に"never"を用いる」が正しい。