FreeBSD 9.1R (4)

ようやく,OSとして動くようになりましたので,肝心のアプリのインストールを行います。しょっちゅう,portsがアップデートされていますので,portsnap fetch updateをかけて最新の状態にしてからインストールにとりかかります。

setenv FTP_PROXY http://proxy.hoge.com:3128
cd /usr/ports/ports-mgmt/portupgrade/
make
make install

としてとりあえずportupgradeをインストールします。

/etc/make.confを適当に編集します。以下の行を追加するくらいでよいと思います。wgetをfetchの代わりに使って,かつ,activeモードで使いたい場合はFETCH_*のコメントをはずします。

CPUTYPE?=core2
CFLAGS?=-O2 -fno-strict-aliasing -pipe
MAKEOPTS="-j 9"
#
# ports constant
MASTER_SITE_OVERRIDE?=ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
PORTSDIR=/usr/ports
#FETCH_BINARY=/usr/local/bin/wget
#FETCH_ARGS=--no-passive-ftp
#DISABLE_SIZE=yes

graphics/xvのインストールに失敗するのでCFLAGSはCFLAGS?としておかないとダメみたいです。

portupgradeがインストールされれば,

portsnap fetch update
portsdb -Uu
pkgdb -aF
portversion -c > update.sh
./update.sh

という感じでインストール済みのportsのアップデートができます。

あとはひたすらportsからportinstallを使ってアプリケーションを突っ込んでいきます。あたりさわりのなさそうなものから入れていきます。以下はだいたいのインストールの順番です。

converter/dosunix
archivers/{gtar,gzip,lha,untar,unzip,zip,rpm,sharutils}

untar.cの改行コードがDOS形式になっているという罠があるために,パッチがあたらない,というエラーでひっかかるため先にdosunixをインストールしておいて,

cd /usr/ports/distfiles
dosunix untar.c untar.c.unix
mv untar.c untar.c.org
mv untar.c.unix untar.c
cd /usr/ports/archivers/untar
make NO_CHECKSUM=yes
make install

とやって無理矢理インストールします。

converters/{base64,iconv,mpack,unix2dos}
ftp/{ncftp3,wput,wget}
japanese/{a2ps,kon2-14dot,less,man,mtools,nkf}
mail/postfix

/etc/aliasesにrootの転送先を設定してnewaliasesを走らせておきます。/etc/rc.confにpostfix_enable="YES"を追加して,/usr/local/etc/rc.d/postfix startとしてpostfixを起動します。もともと,sendmailが走っていたら,/etc/rc.d/sendmail stopで止めます。

comms/{jerm,minicom}
x11/xorg
editors/emacs
deskutils/howm
editors/color-mate
print/yatex
mail/{c-sig,mew}
japanese/{migemo-emacs23,mh}
www/emacs-w3m
converters/mule-ucs

converters/mule-ucsはemacs21をインストールしようとするのでportsのなかのMakefileを
EMACS_PORT_NAME?= emacs24
と書き換えて無理矢理インストールしてしまいます。

gimpをインストールする前に,make config-recursiveしてうっかり何かのオプションでaspellとispellの両方にチェックを入れてコンフリクトしてmakeに失敗する,という罠にはまりました。素直にispellだけにしておくのが良さそうです。

graphics/gimp
devel/{f77flow,fpp}
lang/{g95,gcc47}
www/{opera,opera-linuxplugins,firefox,firefox-i18n}
x11-wm/{fluxbox,blackbox,icewm,oroborus}
shells/{zsh,fd}
sysutils/{fusefs-exfat,fusefs-ext4fuse,fusefs-ntfs,mbmon,xosview,gkrellm2}
ports-mgmt/pkg_tree
net/{wol,ntp,rsync}
math/{R,xgraph,gnuplot,scilab,octave,octave-forge,maxima,wxMaxima,scalapack,linpack,laspack}
multimedia/xanim
lang/{f2c,f77}
graphics/{rawtherapee,pgplot,xfig,epdfview}

xfigをコンパイルしようとすると,なぜか,print/transfigがmissing headerとかでエラーになるためxfigのコンパイルまで到達しません。とりあえず,面倒なのでxfigはインストールしないで放置します。

japanese/{xv,xpdf,tgif,kterm}
databases/{ruby-mysql, rrdtool}
devel/{ruby-gems,subversion}
misc/compat{5x,6x,7x,8x}
japanese/{w3m-img,kinput2-wnn7,wnn7egg,p5-Jcode,p5-nkf, acroread9, lynx}
print/{psutils-a4,pstotext,gv}
emulators/virtualbox-ose
java/{openjdk7,netbeans}
mail/{bsfilter,fetchmail,procmail}

最後にteTexをインストールしますが、dvipsk-tetexがコンフリクトするのでpkg_deleteで削除してからインストールします。

japanese/teTex
print/{dvipdfmx,tgif2tex}
textproc/{hyperestraier,prosper}
java/eclipse
editors/openoffice-3

openofficeのコンパイルでgraphics/vigraの設定で、Fortranを使うようなオプションを選ぶとコンパイルに失敗しますので、選ばないようにします。また、math/coinmpのconfigureの途中にunexpected errorで停止してしまいます。どうも、Fortranがらみのエラーのようです。

cd /usr/local/bin
ln -s gfortran4? gfortran

として、configureがgfortranを見つけられるようにシンボリックリンクを張っておくととりあえず先へ進みます。

ここまできてからxfigを再度インストールしたらうまくインストールできました。最初に試したときから日数がたっているので、portsがupdateされたのかもしれません。

昔は全然updateされていなかったGMTのportsをみたら新しいバージョンが使えるようになっていたので、portsからインストールします。

graphics/gmt

しかし、science/libkmlをコンパイルするところで、swigのバージョンをちゃんと取得できないとか言うエラーで止ります。ここの書き込みにしたがって、/usr/ports/science/libkml/work/libkml-1.2.0/configureの中の

if test ${SWIG_VERSION:4} -lt 35; then

という行を探して、これを

if test ${SWIG_VERSION} -lt 35; then

と無理矢理書き直してから、改めて、/usr/ports/science/libkmlでmakeしてmake installしてしまいます。とりあえず先へ進むのでいいかな、と。

japanese/jvim3

がBROKENでコンパイルできないようなので、場当たり的に

japanese/elvis

インストールしておきました。

www/apache22
lang/php5

apache22はオプションとしてproxyとproxy-balancerを追加しておきます。php5はBuild Apache moduleを選んでおきます。

FreeBSD 9.1R (3)

とりあえずインストールしてカーネルのパラメータなどの設定はできましたが、PCBSDのインストーラからインストールすると、なぜかソースも入ってないし、portsもはいってないし、という状況です。

まず、portsをインストールします。昔は、sysinstallからconfigureを選んで適当にディストリビューションパッケージを選べばよかったのですが、なんか、うまくインストールできません。9.1からはportsのアップデートの方法も変わったようなので、それにしたがってインストールします。

portsnap fetch

として最新のports collectionを落としてきて、

portsnap extract

で/usr/ports/に展開します。

これでportsがインストールされました。portsをアップデートするためには、

portsnap fetch update

とやれば最新の状態にアップデートしてくれます。

次にソースをインストールします。これもsysinstallではうまくいかないので、FreeBSDのftpサイトからsrc.txzを落としてきて、ルートになって、ルートでファイルを展開してしまいます。

su
cd /
tar Jxvf (somewhere)/src.txz

圧縮ファイルのデフォルトがbzip2からxzに変わったのでtarのオプションがjからJに変わってます。

ソースをインストールしたら、

freebsd-update fetch
freebsd-update install

とやってパッチを当ててアップデートします。

FreeBSD 9.1R (2)

PCBSD 9.1のインストーラでインストールしたFreeBSD 9.1は

gpart show

としてパーティションを見ると

=> 63 1953525105 ada0 MBR (931G)
63 63 - free - (31k)
126 1953524979 1 freebsd [active] (931G)
1953525105 63 - free - (31k)

という具合になっていてMBRを使っているみたいです。なので、FreeBSDのインストーラでGPTを使うとうまく起動できなかったのかもしれません。でも、まったくよくわかりません。

zpool status

として、みてみるとtank1というzfs poolが作られていることがわかります。とても単純です。dfコマンドでパーティションの分割をみるとやたら細かく設定してあることがわかります。これは

zfs list

でも見たほうがわかりやすいかもしれません。

zfsでパーティションテーブルを設定している場合は/etc/fstabには何も書いてありませんが、nfsをマウントするためにはfstabが必要です。これには、適当にnfsサーバーを指定してマウントポイントを書き込んでおきます。

ついでに、/etc/rc.confに

nfs_client_enable="YES"
lpd_enable="YES"
linux_enable="YES"
usbd_enable="YES"
powerd_enable="YES"
ntpdate_enable="YES"
ntpdate_flags="-b xxx.xxx.xxx.xxx"
ntpd_enable="YES"
ntpd_flags="-p /var/run/ntpd.pid -f /var/db/ntpd.drift"

などと書いておきます。さらに、/etc/ntp.confには最低限、
server xxx.xxx.xxx.xxx
のようにntpサーバーのアドレスだけは書いておきます。

/boot/loader.confにはzfsのカーネルモジュールをロードするようにだけ書かれていますので、必要そうなカーネルモジュールを書き加えておきます。

vfs.root.mountfrom="zfs:tank1/ROOT/default"
zfs_load="YES"
coretemp_load="YES"
vm.kmem._size="4096M"
vm.kmem_size_max="8192M"
vfs.zfs.arc_max="2048M"

coretempをロードしておくとcore2系のCPUでは

sysctrl -a | grep temper

とやると各CPUの温度を表示させることができます。あるいは、

sysctrl dev.cpu.0.temperature

とするとcpu0の温度が見えます。同様にして

sysctrl dev.cpu.0.freq

で現在のcpuの動作クロックが表示されます。

/etc/rc.confに書いたpowerd_enable="YES"によってcpuのクロック周波数を負荷に応じて落とすことができます。

ロードされたカーネルモジュールは

kldstat

として見ることができます。

vm.kmem_sizeはデフォルトだとなんか32GBも使っているというように表示されるので(それってメモリ全部なのに...)、さすがにどうかと思いますので、適当なサイズにしておきます。あまり小さいとzfsがメモリ喰いなのでカーネルパニックで死にます。

kmemの状態などもsysctrlで調べることができます。

sysctrl -a | grep vm.kmem_size
sysctrl -a | grep vfs.zfs.acr_max

という具合です。

このあたりまで設定したらとりあえず再起動してちゃんと動くかどうか確認したほうがよいかもしれません。