2009年11月3日

Java開発環境(SDK)のセットアップ

Javaの開発を行う必然性が生じて、環境のセットアップを行う。
開発環境自体はpkgsrcを用いてセットアップする。その作業の覚書。

まずは、インストールするSDKのバージョンを決める。
Package一覧を見ると、J2SE1.4, J2SE5.0, J2SE6.0がある。最新版のJ2SE6.0をインストールすることにする。

まずは、/etc/mk.confに以下のエントリを追加する。
  ACCEPTABLE_LICENSES+= sun-jdk6-license

インストールを行うためにはバイナリファイルを自分でダウンロードしてくる必要がある。(ライセンスの関係?)
http://java.sun.com/products/archive/から"JDK 6u14"と"JRE 6u14"のLinux版をダウンロードし、/usr/pkgsrc/distfilesにファイルをおく。

以下のコマンドでインストール作業を実行
  $ cd /usr/pkgsrc/lang/sun-jdk6/
  $ make
  $ make install
  $ make clean
  $ make clean-depends

続いて、/etc/fstabに以下を追記する。
  procfs   /emul/linux/proc    procfs   rw,linux

インストールしたjava関連コマンドは /usr/pkg/java/sun-6/bin/ 配下に置かれるので、PATHの設定を行う。これでOK!

2009年11月2日

Adobe Readerのインストール

これまでNetBSDではPDFファイルは見ていなかった(Windowsですませていた)のだけれども、いい加減使い勝手が悪いので、Adobre Readerをインストールすることにする。

まずは、pkg_addでバイナリをインストールしようと試みるもエラー発生。
調べてみると、pkgsrcではバイナリ版のパッケージは用意されていなかった。(おそらくライセンス関係の問題だと思われる)

では、ソースコードからのビルドを実行。今度はビルドエラーが出た。
  $ cd /usr/pkgsrc/print/acroread7/
  $ make
  ERROR: This package has set PKG_FAIL_REASON:
  ERROR: acroread7-7.0.9nb2 has an unacceptable license condition:
  ERROR:     adobe-acrobat-license
    (以下略)
エラーメッセージにある通り、ライセンスの関係から意図的にエラーとしている模様。
エラーメッセージの内容にしたがい、/etc/mk.conf に以下のエントリを追加
  ACCEPTABLE_LICENSES+= adobe-acrobat-license
この修正を加えた上で、以下のコマンドでインストール成功!
  $ cd /usr/pkgsrc/print/acroread7/
  $ make
  $ make install
  $ make clean
  $ make clean-depends

ただ、これだけだと日本語のフォントがインストールされていないので、acroread7-jpnfontもインストールする。これでOK!

2009年11月1日

ath0: device timeout

NetBSD5.0を使用していて、無線LANドライバで以下のような警告(?)メッセージが表示される。
ath0: device timeout (txq 1, txintrperiod 5)
ath0: device timeout (txq 1, txintrperiod 4)
ath0: device timeout (txq 1, txintrperiod 3)
ath0: device timeout (txq 1, txintrperiod 2)
このメッセージが何なのかはサッパリ分からない。
調べてみると、NetBSDのメーリングリストで以下の解決策が記載されていた。

/etc/sysctl.conf  に以下を追加する。
  hw.ath0.txintrperiod=1
これで、とりあえず警告メッセージは表示されなくなった。

2009年10月1日

Goole Android を試してみる。

Google Androidが気になっていて、今回開発環境にトライしてみる。
基本的には、"Android Developers"のサイトに従ってインストールおよびHelloAndroidプロジェクト実施。しかしながら、エミュレータの動作が非常に遅くて、なかなか難航しています。

エミュレータの動作が遅いのは、Googleで調べると色々なところで指摘されている模様。
私の環境では、「仮想デバイス」を作成して初回の実行ではうまく動作するが、2回目以降はいつまでたっても起動しなかったり・・・。今後、この点についてちょっと調べないとなと思っています。

Androidの仮想デバイスに関する操作については、JavaDriveさんのサイトが大変参考になります。
  JavaDrive : http://www.javadrive.jp/android/index.html

ちなみに、個人で使用している環境は以下の通り。
  OS : Windows XP Professional SP3
  Eclipse : Eclipse 3.5 (Galilero)
  Android SDK : Android SDK 1.6R1 (Windows用)
  CPU : Pentium-M 1.7GHz
  メモリ : 1GB

# 余談。Android携帯には興味があるが、私的な理由で個人的にauにしたいと思っています。(現在はSoftbank)現時点ではNTT DocomoからしかAndroid携帯は発売されていませんが、来年('10年)にはAUからも発売されるのかな?

2009年9月24日

pkglint, cpuflagsのインストール(ソースコードから)

せっかくpkgsrcを利用しているのだから、ソースコードから自前でビルド+インストールできるようにしたいと思いました。pkgsrcはインストール済み(その時の記録)ですが、これまではバイナリインストールしか行っていませんでした。

今回、NetBSDのサイトで公開されている"The pkgsrc guide"を参考にソースコードからビルドする方式を試してみることにしました。まずは、ガイドに載っている pkglint というパッケージをインストール。基本的にガイドに載っている通りのコマンドを実行すればOKでした。
  $ cd /usr/pkgsrc/pkgtools/pkglint
  $ make
  $ make install
  $ make clean
  $ make clean-depends
なんて簡単なんだろう。ちょっと感動です。

続いて、「せっかくソースからコンパイルするのだから、コンパイルオプションで最適化を行いたい」と思いcpuflagsをインストールすることにしました。
  $ cd /usr/pkgsrc/devel/cpuflags
  $ make
  $ make install
  $ make clean
  $ make clean-depends

さっそくインストールしたcpuflagsコマンドを実行したところ、以下のような出力になった。
  $ cpuflags
  -mfpmath=sse -msse2 -march=pentium-m
この設定を、pkgsrcのソースコードビルドで有効にするために、/etc/mk.conf を作成し以下を記述
  USE_CPUFLAGS=yes
これでビルド時に自動的に cpuflags コマンドの結果(上述の設定)がコンパイルオプションとして渡されるのかな?(試していないが‥)

2009年9月23日

Enhanced SpeedStep(その2)

先日のエントリでEnhanced SpeedStepでCPU動作周波数を設定する方法について記載しましたが、前回調べたestdにて自動で設定をできるようにしてみました。

まずはプログラムのインストール。PackageCollectionからインストールします。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/estd-0.6.tgz
インストール時にメッセージが出てくる通り、動作させるためには /etc/rc.d/estd というファイルを作成する必要があります(ファイルの記載内容は、/usr/pkg/share/examples/rc.d/estd を参考にします)。まずは深く考えずに、サンプルファイルをコピー。
  $ cp /usr/pkg/share/examples/rc.d/estd /etc/rc.d/estd
  $ chmod 755 /etc/rc.d/estd
また、/etc/rc.conf に以下のエントリを追加します。
  estd=YES
これで、システム再起動あるいは、estdの起動(/etc/rc.d/estd start)を行います。



これで設定はOK。ちゃんと動いていることを確認するためにCPUに負荷のかからない状態(ターミナルソフトを立ち上げているだけ)と負荷のかかる状態(カーネルコンパイル時)とで、CPU動作周波数を確認。
  $ sysctl machdep.est  #負荷がかかっていない状態
  machdep.est.frequency.target = 600
  machdep.est.frequency.current = 600
  $ sysctl machdep.est  #負荷がかかっている状態
  machdep.est.frequency.target = 1700
  machdep.est.frequency.current = 1700
ちゃんと動いている模様。

2009年9月19日

色々(Emacs関係)

Emacsを使っていて何点か‥

まず、Anthyでの日本語変換がうまく行かない。
Anthyモードへの切り替えおよびひらがなの入力はできたが変換がうまく動作しない。
Emacsの起動時メッセージに
 "anthyのelcファイルが23系でコンパイルされている"
みたいなWarinigメッセージが出ていた。これが原因かと思う。
僕は22系のEmacsをインストールしたが、Package Collectionのanthy-elispは23系でコンパイルされている模様。そこで、anthy-elispがインストールされている /usr/pkg/share/emacs/site-lisp/anthy/ 配下のelcファイルをコンパイルしなおす。
Emacsを起動して、"M-x byte-compile-file"を行えばOK。
これを行ったところ、変換も問題無く動作するようになった。

続いてctagsについて。
EmacsでもTAGを参照したいが、NetBSDに標準で入っているtagsコマンドはEmacs用のTAGファイル作成には対応していない模様。そこで、Package Collectionのexctagsをインストールする。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/exctags-5.7.tgz
これでEmacsでもTAGを使って関数の参照が可能になった。

Enhanced SpeedStep

使用しているPCはThinkPad X31で、CPUにはPentium-M(Baniasコア)が使われている。
このコアにはEnhanced Intel Speedstep Technologyが搭載されている。

このコアでは、動作周波数は600MHz〜1.7GHzが使用できるのだが、Xを起動すると1.7GHz固定になってしまう。処理自体はほとんど行わせていないにも係わらずファンが回り出したりするので、これを何とか設定できないものかな?と思い色々と試してみる。

まずはOSでどのように動作しているのかを確認。"sysctl -A"コマンドで関係しそうなものは以下。
  machdep.est.frequency.target = 1700
  machdep.est.frequency.current = 1700
  machdep.est.frequency.available = 1700 1400 1200 1000 800 600
availableは分かる。currentも"現在の周波数"ってことだろうけど、targetって何だろう?
カーネルのソースコード(sys/arch/x86/x86/est.c)をザッとながめたところ、targetで指定した周波数に設定されるように見える。(currentは参照するだけっぽい)

そこで、sysctlコマンドを使って周波数を変更できるか試してみた。
  $ sysctl -w machdep.est.frequency.target = 1000
  machdep.est.frequency.target: 1700 -> 1000
  $ sysctl machdep.est
  machdep.est.frequency.target = 1000
  machdep.est.frequency.current = 1000
  machdep.est.frequency.available = 1700 1400 1200 1000 800 600
設定できた模様。

過去にLinuxを使っていた時には、cpufreqd というデーモンプログラムで動作周波数を自動的に変更していたが、NetBSDでも同様なことをしてくれるプログラムは無いものだろうか?
と思って探してみたら、estd というプログラムがあった。今度試してみよう。

アプリケーションのインストール

最低限必要なアプリケーションをインストールする。
とりあえず、Emacsとブラウザ(Firefox)が必須。

Emacs(22系)と、Emacs上でAnthyを利用するためのElispをインストールする。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/emacs-22.3nb2.tgz
  $ pkg_add ftp://ftp.netbsd.org/pug/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/anthy-elisp-9100nb3.tgz

続いてFirefoxのインストール
$ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/firefox3-3.0.13.tgz
Firefoxを入れた後は、昔調べたこれでフォントサイズを設定。


ちなみに、前回 mlterm 上で日本語が入力できなかったが、今回入れたEmacs, Firefox共に日本語入力は問題無くできた。
# mltermで日本語入力ができないのは、mlterm側の問題っぽい?



とりあえずは、このマシンで作業をするための最低限の環境が整ったのでOKとしよう。

日本語環境の設定

NetBSD5.0のX環境で日本語を使えるように設定を行う。
とりあえずは、フォント・ターミナルソフト・入力システムの3つを使えるようにしておく。

フォント
以前Linuxを利用していたときは、M+フォント(ビットマップおよびアウトライン)が見やすくて気に入っていた。調べてみたところ、NetBSDのPackage Collectionでも vlgothic-ttf パッケージにM+フォント(アウトライン?)が含まれている模様。ビットマップはPackage Collectionには含まれていないみたいだが、Shinonomeフォントがあるのでそれを利用することにする。
まずはPackage Collectionからフォントをインストールする。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/vlgothic-ttf-20090422.tgz
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/ja-shinonome-0.9.11.tgz

続いて、Xの設定ファイル(/etc/X11/xorg.conf)にフォントパスを設定する。
   FontPath   "/usr/pkg/lib/X11/fonts/TTF"
   FontPath   "/usr/pkg/lib/X11/fonts/local"

最後に、TTFフォントを使えるようにするため、fc-cacheを更新する。
/etc/fonts/local.conf にフォントパスを追加。以下のように記載する。
 
 
 
     


/usr/pkg/lib/X11/fonts/TTF 

この設定を追加した上で以下のコマンドでキャッシュを更新する。
  $ fc-cache -v
これでとりあえずはフォントの設定OK


ターミナルソフト
日本語が取り扱えるターミナルソフトとしては、rxvtmlterm が有名かな?(最近は、xtermもUTF-8が取り扱えると思うけど‥)
個人的に色々とカスタムできる mlterm がお気に入りなので、mltermをインストールすることにする。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/mlterm-2.9.3nb1.tgz
mltermの設定は $HOME/.mlterm/ 配下に設定ファイルを記述すればよい。設定内容については、刻色館に詳しく記載されています。


入力システム
Linuxを使っていた際は、日本語入力環境として SCIM + Anthy を使っていた。
NetBSDのPackage CollectionにはSCIMが含まれていない模様なので、UIM + Anthyという構成にすることにした。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/uim-1.5.5.tgz
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/anthy-9100.tgz
インストール後、$HOME/.xinitrc に以下を追記
  export LANG=ja_JP.eucJP
  export LC_ALL=ja_JP.eucJP
  export LC_CTYPE=ja_JP.eucJP
  export XMODIFIERS="@im=xim"
  export GTK_IM_MODULE=uim
  uim-xim &

としてみたが、mltermで日本語入力ができない。何故だろう?
少し調べてみたが原因が分からなかった。この件については後日調査することにしよう‥



CtrlとCapsLockの入れ替え

Ctrlキーが 'A'キーの横に無いと落ち着かない性分です。
元々、Xの設定ファイル(/etc/X11/xorg.conf)のキーボード設定として、
  Option  "XkbOptions"   "ctrl:swapcaps"
と記述していた(期待通り、CtrlキーとCapsLockキーが入れ替わっていた)のだけれども、awesome設定のために $HOME/.Xmodmap を読み込むようにしたら(先日のブログ)この設定が聞かなくなった。(何故だろう??)

Xの動作ログ(/var/log/Xorg.log)を確認すると、
  (**) Option "XkbOptions" "ctrl:swapcaps"
  (**) ThinkPadKeyboard: XkbOptions: "ctrl:swapcaps"
とログが残っているので、Xの設定は問題無いはず。
また、.Xmodmapファイルを読み込まないようにすれば入れ替えが聞くので、やはり .xinitrc で .Xmodmapファイルを読み込んでいるのがマズいのか??

とりあえず、Xの設定ファイルで入れ替えを設定するのを諦め、CtrlとCapsLockの入れ替えも .Xmodmap で行うようにする。
以下の記載を、$HOME/.Xmodmapに追加
  remove Lock = Caps_Lock
  remove Control = Control_L
  keysym Control _L = Caps_Lock
  keysym Caps_Lock = Control_L
  add Lock = Caps_Lock
  add Control = Control_L
これで何とか解決できた!

sudoのインストール・設定

インストールはパッケージコレクションから。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/sudo-1.7.1.tgz

インストール後、設定ファイルを visudo コマンドで編集する。
このコマンドで、/usr/pkg/etc/sudoers のファイルが編集される。

僕の環境では、wheel グループのユーザに一通りの権限を与えたいので、以下の行を追加する。
  %wheel   ALL=(ALL)  ALL

awesomeのセットアップ

前回、ウィンドウマネージャとしてawesome-2.3.4をインストールしたが、その設定を色々行ってみる。

"無変換"キーをMod4に割り当てる
awesomeでは、標準で"Mod4"をプレフィックスキーとしており、このキーを中心にしてウィンドウマネージャの各種操作を行う。
X Window Systemの標準では、WindowsキーがMod4に割り当てられている。
ただ、使用しているThinkPad X31には、Windowsキーが無い!
そこで、"無変換"キー(スペースキーの左隣のキー)をMod4に割り当てるようにする。
Mod4に割り当てを行うためには、$HOME/.Xmodmapというファイルを作成し、そのファイルに以下を記述する。
  keycode 131 = Muhenkan
  add mod4 = Muhenkan
続いて、$HOME/.xinitrcにてこのファイルを読み込むように設定を行う。
僕の環境では以下のような形で.xinitrcに記述している。
  usermodmap = $HOME/.Xmodmap
  if [ -f "$usermodmap" ]; then
      xmodmap "$usermodmap"
  fi
  awesome
これで、startx コマンドでXを起動する際に上記設定ファイルが自動的に読み込まれ、"無変換"キーがMod4に追加される。

awesomeのキーバインド(標準)
では、awesomeのキーバインドを色々と覚えよう。キーバインドについては man ページにおおよそ記述が載っているので、以下は個人的な覚書レベル。
  • Mod4 + Enter : ターミナル(xterm)を起動する
  • Mod4 + Spage : レイアウト(ウィンドウの並び)を変更する
  • Mod4 + Shift + Spage : ※同上※(変わる順が上と逆順)
  • Mod4 + b : ステータスバーの表示/非表示の切り替え
  • Mod4 + j : フォーカスウィンドウの切り替え
  • Mod4 + k : ※同上※(変わる順が上と逆)
  • Mod4 + 数字 : 指定した番号にタブを切り替える
  • Mod4 + m : フォーカスの当たっているウィンドウを最大化する
  • Mod4 + Ctrl + 数字 : 指定したタグをトグルする
  • Mod4 + Shift + 数字 : 指定したタグにウィンドウを移動する
  • Mod4 + Ctrl + Shift + 数字 : 指定したタグにウィンドウをマージする
  • Mod4 + Shift + q : awesomeを終了する
途中、よく分からない説明があるが、青字の操作は結構感動ものです。
頑張って慣れようと思う。

ちなみに、awesome操作については nabeken さんのサイトにわかりやすいチュートリアルが乗っています。

awesomeの設定
awesomeの各種設定を行うには、$HOME/.awesomerc というファイルを作成しそのファイルに設定を記述します。詳細は AWESOME(5) のマニュアルページに記載されています。また、/usr/pkg/share/examples/awesome/awesomerc に設定ファイルのサンプルがある。これを $HOME/.awesomerc としてコピーして編集すると楽。


2009年9月17日

NetBSD5.0の設定(X&ウィンドウマネージャ)

前回に引き続き、NetBSD5.0の設定。
今回はX Window Systemに関する設定を行う。

まずは、X Window Systemの設定を行う。
  $ xorgconfig
で、基本的な設定を行うことができる。
この設定ファイルが、/etc/X11/xorg.conf として設定ファイルに記述されるので、あとは手修正で一部手直しを実施。
これでX Window Systemは動くようになった。

続いて、ウィンドウマネージャを入れる。これまでは fluxbox を使っていたのだけれども、"タイル型マネージャ"というのが気になっていたので、awesomeをインストールすることにする。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/awesome-2.3.4nb1.tgz
でインストール実施。
このインストール時に、依存するパッケージとして fam-2.7.0nb9 もインストールされた。famの設定として、/etc/inetd.conf に以下の設定を追記
  sgi_fam/1-2  stream  rpc/tcp  wait  root  /usr/pkg/sbin/famd    famd
あわせて、etc/rc.conf に以下の行を追記
  rpcbind=YES

$HOME/.xinitrc でawesomeを起動するように設定し、startxで起動したところ無事立ち上がった。
まだ全然使いこなせていないが、画面をフル活用できてウィンドウサイズをいちいち自分でどうこう設定しなくてもよいのは期待大。
とりあえず、キーバインドを覚えなければ。現在は終了するにも "Ctrl + Alt + Backspace"を使ってます。(X Window Systemを終了させている‥)

2009年9月14日

NetBSD5.0の設定(2)

前回に引き続き、NetBSDの設定を行う。

ユーザの追加
通常用途でマシンを利用する際のユーザアカウントを作成する。
ユーザアカウント作成に当たっては、sudoコマンドを利用できるようにするため、wheelグループに追加する。
以下のコマンドでユーザを追加。ユーザ追加と同時にユーザのパスワードを設定する。
  $ useradd -g users -G wheel -m -s /bin/csh (ユーザ名)
  $ passwd (ユーザ名)

pkgsrcの入手
NetBSDで用いられているパッケージ管理システムのpkgsrcを利用できるように設定する。pkgsrcについては、NetBSDサイトのドキュメントページに分かりやすくまとまっている(リンク)。
以下のコマンドにて、pkgsrc(2009年Q2版)を入手する。
  $ cd /tmp
  $ ftp ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2009Q2/pkgsrc-2009Q2.tgz
  $ tar -xvf pkgsrc-2009Q2.tar.gz -C /usr
とりあえず入れてみたけど、まだ何も試していない‥

tcshのインストール
NetBSDの標準では、sh, csh, kshが利用可能である(利用可能なシェルは、/etc/shells を見れば分かる)。ただしいくら何でもこれらのシェルでは非力過ぎるので、tcshを使用することにする。ついさっき pkgsrc を入れたのだけれども、今回はサーバ上に用意されているコンパイル済みのパッケージをインストールする。
ちなみに、i386向けの2009Q2のコンパイル済パッケージは、
  ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/
以下に置かれている。上記パスを含めて pkg_add コマンドで指定すればインストールできる。
以下のコマンドで、tcshをインストールする。
  $ pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0_2009Q2/All/tcsh-6.16.00.tgz
インストールが終わったら、/etc/shellsの内容を確認して tcsh が選べるようになっていることを確認。続いて各ユーザのログインシェルを以下のコマンドで変更する。
  # chsh -s /usr/pkg/bin/tcsh

2009年9月13日

NetBSD5.0の設定(1)

インストールしたNetBSD5.0の設定を行う。
ちなみに、このマシンは"デスクトップ"用途で使用する予定。(プログラミング関係の勉強等)
サーバ用途には使用しない。

/etc/rc.confに以下を追記する。
  hostname=(設定するホストファイル名)
  auto_ifconfig=NO
  net_interface="ath0"
  dhclient=YES
  dhclient_flags="ath0"
  ifconfig_ath0="mode 11g ssid (SSID) nwkey (WEPキー)

この設定について簡単に解説しておくと、
  • ネットワークは、無線LAN(ドライバとしてath0がアタッチされる)を使用
  • ネットワーク設定はWEPを使用
  • ネットワークには無線ルータを使用(DHCP)しているので、DHCPでIPアドレス取得
という感じ。

続いて、CtrlとCapsLockを入れ替えるために、/etc/wscons.conf を編集する。
encodingという行がある(インストール時の設定では、jpとなっている)ので、そこを以下のように修正する。
  encoding jp.swapctrlcaps

これで、ネットワークの設定とキーボードの設定はできた。
「ネットワークでWEPを使ってるのか?」という声が聞こえてきそうだけど、まぁ暫くはこれで。そのうちWPAに切り替えようと思います。

NetBSD5.0をインストール

ThinkPad X31にNetBSD5.0をインストールする。
NetBSDのサイトからISOイメージファイルを入手し、CD-Rに焼く。焼いたCDからインストーラを起動してインストール。

起動後は、AFTERBOOT(8)のマニュアルページを見ながら各種設定を行う。