試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Ubuntu Gutsyでのuswsuspのスプラッシュを動作させるための覚え書き

uswsuspによる休止/復帰における進行状況バーの表示自体は、動くところまで持っていけたのだが、現状では、Usplash*1/Splashyのいずれの場合も、問題が残ってしまっている。見た目をあまり気にしないのであれば、テキストによる表示で使用するのが一番楽で無難と言えそう。
今回はパッケージビルドなどの作業があるため、一部端末を使用した手順となっている。

uswsuspのソースパッケージをビルドするのに必要なパッケージの準備

パッケージ名を並べているだけなので、Synapticで探して入れてもOK。

$ sudo apt-get install dpkg-dev debian-keyring fakeroot
$ sudo apt-get install debhelper pciutils-dev docbook2x po-debconf libgcrypt-dev zlib1g-dev libusplash-dev libx86-dev

usplashを有効にしてビルド・インストール

下の作業でビルドし直してインストールすることで、休止前の進行状況表示が起動時のような感じで出た後、電源が落ちるようになった。しかし、復帰後の進行状況バーが最後まで進んだ後もその状態のままで、Xには戻らなかった。

$ apt-get source uswsusp
$ cd uswsusp-0.6~cvs20070618/
$ mv suspend-cvs20070513/* suspend-cvs20070618/
$ dpkg-buildpackage -rfakeroot -us -uc -b
$ cd ../
$ sudo dpkg -i uswsusp*.deb

splashyを有効にしてビルド・インストール

事前に、「usplash」パッケージを完全削除しておく。

ビルド

Splashyサポートは、配布されているパッケージでは無効になっているようで、以下の作業によって有効にすることはできるが、そのままでは動作してくれない。
ビルドには、追加で「libsplashy1-dev」パッケージを入れておく必要もある。

$ apt-get source uswsusp
$ cd uswsusp-0.6~cvs20070618/
$ sed -i -e 's/^#\(CONFIG_SPLASHY\)/\1/' suspend-cvs*/Makefile
$ dpkg-buildpackage -rfakeroot -us -uc -b
$ cd ../
$ sudo dpkg -i uswsusp*.deb
Splashyを有効にするための準備

Splashyを有効にするには、

  • 起動時にカーネルへ「vga=0x317」などのパラメータを渡す
  • モジュール「vesafb」を読み込む(initrd内で、起動時にsplashyが実行される前に自動で読まれるようになっている)

の2つを行い、/dev/fb0がDirectFBから使用できるようにしておく。
カーネル引数は「gksudo gedit /boot/grub/menu.lst」などでメニューファイルを開き、「kernel」の行に、解像度に応じた数字を含めて書き足す。値はvesafbに関するカーネル付属ドキュメントを参照。「よって、カーネルモード番号の表は、次の通りです:」と書かれている下に一覧がある。

initrdにSplashyを含める

以下の作業によって/sbin/splashyをinitrdに含めることにより、休止/復帰時の進行状況表示が行われるようになる。

  1. gksudo "sed -i -e 's/ENABLE_INITRAMFS=0/ENABLE_INITRAMFS=1/' /etc/default/splashy"
  2. gksudo "update-initramfs -u -t -k $(uname -r)"


休止時には右から左へ、復帰時には左から右へ進むようになっているのが面白い。

起動時にはバーが進まない?

Splashyは、起動時にも進行状況バーを表示するのだが、何故かバーは進まない。

Ubuntu Linux独自の起動システム(upstart)には対応していないのかというと、そうでもなさそうなのだが...*2
また、電源を切るときや再起動をするときにはスプラッシュは出なくなってしまうのも気になる。

/etc/splashy/config.xmlの途中に

<fifo>/dev/.initramfs/splashy.fifo</fifo>

を追加し、initrdの中にも反映させたが、効果はなし。

また、initrdの中でsplashyが実行されるときにエラーが出ていないかも見たのだが、splashyのエラー出力は全く無かった。

Usplash(起動/終了時のため)とSplashyを両方入れておいて、休止/復帰だけSplashyを使用したいところではあるのだが、それをやろうとすると、起動時にも休止/復帰時にも画面が真っ黒になってしまう(処理自体は普通に進む)。

関連記事:

関連URL:

*1:Ubuntu Linuxで採用されている起動/終了スプラッシュ

*2:upstart固有の問題と、その対処が載っていたりもするため