おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2010年07月27日(Tue) 体調悪いですなー [同日]

[memo] Ubuntu 10.04が起動する時のOOM Killerが発動しないようにする

Ubuntu 10.04 DesktopをDell PowerEdge 1900にインストールしている。 OOM Killerを発動させちゃうサービス(plymouthとureadahed)を、 下記のように/etc/init以下のファイルの名前を変えて止めた。

インストール後起動する画面を眺めていると、oom-killerがどうした、と 不吉なメッセージが見えた。dmesgを見ると、

[    5.683285] Out of memory: kill process 364 (plymouthd) score 38 or a child
[    5.683288] Killed process 364 (plymouthd)

とか

[    5.399938] ureadahead invoked oom-killer: gfp_mask=0xd0, order=0, oom_adj=0
[    5.400013] ureadahead cpuset=/ mems_allowed=0

とか。 本質的にはこのあたりのプロセスが落ちても大きな影響は無いのだと思うのだけれど、 将来のトラブルシューティングの時にひっかかる (事情を知らない人が見てこれも問題だと思う) と嫌なのでつぶしておきたい。

plymouthdについてはカーネルオプションにnoplymouthを与えると良いという記事もみかけたのだが、手元では期待通りには変化しなかった。 自作デーモンをこのマシンで走らせておく必要もあり、upstartについて少し勉強したので、upstartの設定ファイルをいじって起動しないようにしてみることにした。

upstartは これまでLinuxで広く使われていたSysVinitを置き換える機構のようで、 サービスを記述したファイルを/etc/init.d (や/etc/rc?.d) 以下ではなく、 /etc/init以下に置く。 何がすごいって、Ubuntu 10.04 Desktopにグラフィカルログインすると runlevel 2で走ってる! ということなんだけれど、それは置いておいて、 upstartは/etc/init/*.confを読んで、 起動時や起動後に発生するイベントに合わせてこれらのファイルに記述されたサービス を起動したり終わらせたりするようだ。 ざっと見たところ、例えばinitctlコマンドには、 SysVinitのchkconfig --del的なコマンドは用意されていないようだ。 plymouthパッケージをpurgeするとXまで無くなってしまう。 というわけで下記のようにファイル名を変えてみた。

$ for f in /etc/init/plymouth*.conf; do sudo mv $f $f.nouse; done
$ for f in /etc/init/ureadahead*.conf; do sudo mv $f $f.nouse; done

この状態で再起動すると、 期待通り、dmesgに不吉なメッセージは見られなくなった。

ついでに、/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

の行を

GRUB_CMDLINE_LINUX_DEFAULT="nosplash nofb"

にして、

sudo update-grub

した。これで起動時にカーネルのつぶやきが見えるようになった。 依然として画面がまっくらになる時間があるのが残念だけれど。

本日のツッコミ(全2件) [ツッコミを入れる]
> kou (2010年07月30日(Fri) 14:28)

Debian系って昔からランレベル2しか使っていない気が。。。

> zunda (2010年07月30日(Fri) 17:04)

そうだったのかあ!


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>