カーネル再構築(gentoo-sources-2.6.24-r4)

portageでカーネルがアップデートされてたので、早速入れることにした。

前回、カーネルを構築する際に初期設定が読み込まれない問題で、はまったんだけど、バグレポートが上がってるのを発見した。

http://bugs.gentoo.org/show_bug.cgi?id=215442

で、それのbug fixかなと思ったんだけど、まだ直ってないみたい。まあ、今回は再構築なので、前回それなりにチューニングした.configをそのままコピーしてビルド。

# cd /usr/src/linux
# cp ../linux-2.6.24-gentoo-r3/.config .
# make && make modules_install

ちなみに、USEフラグにsymlinkを定義しておくと、/usr/src/linuxのシンボリックリンクを自動で張り替えてくれるので楽ちん。

しかし、マニュアル通りやってインストールできない状態だとみんな困ってるよね。そもそもGentooを新規でインストールする人なんて少ないのかもしれないけど。

あ、もしかしてgenkernel使えば、すんなりいくとか?

Arcを制御するrc-script

Gentoo LinuxでArcを動かす人向けっていうニッチなネタだけども。

たとえば、news.arcの起動を制御したい場合、まず、nsvを起動するファイルを作成する。とりあえず、ロードして起動するだけの簡単なスクリプト。

rc-news.arc

(load "news.arc")
(nsv)

次に、rc-scriptだけど、Anarkiのas.scmはパラメータでファイルを渡せる拡張が入ってるのでそれを利用する。あと、start-stop-daemonが便利すぎるので、デーモン化とかそういう難しそうなことは、こいつに任せる。

/etc/init.d/news

#!/sbin/runscript

depend() {
  use net
  before lighttpd
}

MZSCHEME="/usr/local/bin/mzscheme" # path to mzscheme
ARC_HOME="/usr/local/arc"          # path to arc directory

start() {
  ebegin "Starting News"
  start-stop-daemon --start --quiet --background --make-pidfile \
                    --pidfile /var/run/news.pid --exec "$MZSCHEME" \
                    -- --no-init-file --mute-banner --load-cd \
                       "$ARC_HOME/as.scm" "$ARC_HOME/rc-news.arc"
  eend $? "Failed to start News"
}

stop() {
  ebegin "Stopping News"
  start-stop-daemon --stop --quiet --pidfile /var/run/news.pid 
  eend $? "Failed to stop News"
}

これで、

# /etc/init.d/news start
# /etc/init.d/news restart
# /etc/init.d/news stop

って感じで、起動停止の制御が可能。OSブート時に一緒に起動したいなら、

# rc-update add news default

とでもしておけばok。

Pythonのバージョンを2.5に上げる

日常のちょっとしたスクリプトはPythonで書くことが多いんだけど、Gentoo LinuxのPythonは未だに2.4なので、既存のスクリプトがほとんど動かない。それはそれは悲しいので2.5にバージョンアップした。unstableまっしぐら。

# echo "dev-lang/python ~x86" >> /etc/portage/package.keywords
# emerge python
# python-updater
# emerge --unmerge python-2.4.4-r9

python-updaterを叩くのを忘れずに。あと、Gentooのパッケージ管理は優秀で、複数バージョンを同居させたりできるから、最後にunmergeする必要はないんだけど、思いきって2.4とは決別した(無謀な挑戦)。

最近のLinuxはシステム管理系のスクリプトの多くがPythonに依存してたりするので、ちょっと勇気が必要だけど、後方互換性に定評があるPythonを信じる。とりあえず、今のところ問題は起きてない。

そういえば、近いうちにGentoo 2008.0がリリースされるのを思い出した。それを待ったほうがよかったかも。

gentoo-sources-2.6.24-r3のビルドには、まずmake defconfig

新しいサーバが届いたので、セットアップ大会開催中。

最近、仕事なんかではUbuntuを使うことが多くて、お気楽な感じでいいんだけど、個人サーバくらいはストイックに行こうと思って、久しぶりにGentooをインストールすることにした。

Gentooのインストールは6年ぶりくらいなんだけど、相変わらずの丁寧すぎるインストールマニュアルのおかげで、途中まではサクサクと進んだ。

だけど、どうもカーネルコンパイルがうまくいかない。menuconfigのデフォルト設定が、やけにあっさりしすぎ。ext2すら有効になってないし、意味不明なのがSATAとかNICのドライバがリストに表示されない。

.configを手書きするほどの勇者ではないので、いろいろ調べてみるも、それらしい情報もなくて、試行錯誤してたら、

# cd /usr/src/linux
# make defconfig
# make menuconfig
# make && make modules_install

でいけた。

というか、README大事。絶対読め。先にREADME読んどけば悩まずにすんだのにってことが、毎年3回くらいはあるから気をつけろ。いいかげん学習しろ。ネットに頼りすぎるな。

ところで、Gentooのインストールマニュアルにも載ってないし、昔は必要なかったと思ったんだけどな。でも、遠い記憶をたどってみると、はじめてカーネルをビルドする時のmake defconfigは常識だったような気もする。もしや、原点回帰とかいうアレか?

近年、Linuxの敷居もずいぶん下がってきたと思うし、なかなか自分でカーネルコンパイルする機会もないよね。なんかもう、カーネルいじって遊ぶのは一部のマニアだけの楽しみなのかもしれない。

Newer Entries »