Tiny Core Linux (8) - Xorgの最小化

  • 投稿日:
  • 更新日:2015/03/08
  • by
  • カテゴリ:

これまでの流れ

軽い画像ビューアであるFehをインストールして起動も結構早くなったのですが、Dynabook SS 3410は標準のXVesaが使えず、Xorgを入れる必要があるので、その分パッケージが大きくなるのが難点です。

注意深く見れば、Xorgのパッケージ(圧縮状態で14.28MB)のうち、不要なものを除く、というよりも必要なものだけを入れ、tinycore.gzに入れてしまえば軽くなるのではないでしょうか。

試しに、Xorg-7.5とそれに必要なパッケージ群を、以前説明したようにすべてtinycore.gzにパックしてみました。 結果はgrubのメニューから最初の画像が表示されるまで約30秒。 ...かえって遅くなってしまいました。 free -mのusedの値も77MBになってしまいます。

やはり、細かく見なければいけないようです。

Xorgを最適化

Xorgはけっこう難敵なので、手始めにFehを調べてみると、fehの実行に必要なファイルは以下のみであることがわかりました。

/usr/local/bin/feh
/usr/local/share/feh/fonts/yudit.ttf
/usr/local/lib/libgiblib.so.1 -> libgiblib.so.1.0.6
/usr/local/lib/libgiblib.so.1.0.6

Fehに必要なパッケージは圧縮状態で336kBですが、上記の3ファイルの合計は非圧縮でも242kBで す(参考まで、上記ファイルをgzip圧縮したものは114kB)。 そのため、これらを取り出してtinycore.gzに取り込んでしまえば、サイズがさらに小さくなってパッケージの読み込みも不要になります。

さてXorgについてです。 やり方は、まずXorg-7.5を入れずに(/mnt/hda1/tce/onboot.lstからエントリを削除)起動します。 そして、Xorgのパッケージ群をunsquashfsで別途展開しておきます。

% tce-load -i squashfs-tools-4.x (まだダウンロードしていなければオプションは-wi)
% cd /tmp
% unsquashfs -d expat2 /mnt/hda1/tce/optional/expat2.tcz
% unsquashfs -d fontconfig /mnt/hda1/tce/optional/fontconfig.tcz
% unsquashfs -d openssl /mnt/hda1/tce/optional/openssl-0.9.8.tcz
% unsquashfs -d pixman /mnt/hda1/tce/optional/pixman.tcz
% unsquashfs -d Xorg-bin /mnt/hda1/tce/optional/Xorg-7.5-bin.tcz
% unsquashfs -d Xorg-lib /mnt/hda1/tce/optional/Xorg-7.5-lib.tcz
% unsquashfs -d Xorg /mnt/hda1/tce/optional/Xorg-7.5.tcz
% unsquashfs -d Xorg-fonts /mnt/hda1/tce/optional/Xorg-fonts.tcz

次に、メインファイルであるXorgを移動します。

% sudo cp -p Xorg/usr/local/bin/Xorg /usr/local/bin

これでXorgを起動すれば、さまざまなエラーが出ると思います。 最初はライブラリが足りないですし、次にエラーログが/var/log/Xorg.0.logに出てきます。 これらを確認しつつ、ひとつづつ/tmpからファイルをコピーしていきます。 実際には、ファイルのリストを作りながら、tarでコピーしていきました。 地道な作業です。

その後、Xを起動しては/var/log/Xorg.0.logを確認し、エラーが出ているライブラリを追加する作業を繰り返します。

そ のうちエラーが出なくなって画面が出るようになるのですが、ここで問題です。 その状態ではキーボードの入力を受け付けない(マウスは受け付ける)ことです。 これは、どのファイル不足しているのが原因か、ログファイルからはわかりませんので、何とかいろいろ試すしかありません。 少々苦労しましたが、それらのファイルを特定しました。

なお、私が扱っているDynabook SS 3410の場合、Tridentのチップなので、ドライバは、

/usr/local/X11/modules/drivers/trident_drv.so

となりましたが、他のチップの場合は同じディレクトリにある他のファイルを取り込めば動くかもしれません。 たとえば、VirtualBoxの場合、

/usr/local/lib/X11/modules/drivers/vesa_drv.so
/usr/local/lib/X11/modules/libshadow.so

を追加することで動作しました。

Xorgの最小セット完成

そんな感じでだいぶ苦労しましたが、「最小セット」のリストができました。 ついでに、自動でtinycore.gzを作成するスクリプトも作りました。

スクリプトのダウンロードはtinycore-xorg.tar.gzからどうぞ。

使 い方は、まず必要なパッケージとして、squashfs-tools-4.xとadvcompを利用可能にしておきます。 また、Xorg-7.5.tczほか、必要なtczファイルを/mnt/hda1/tce/optionalにダウンロードしておきます。 その後以下のように実行するだけで、新しい/tmp/tinycore.gzが出来上がります。

% sudo sh mktinycore.sh

やっていることは以下のとおりです。

  1. 元となるtinycore.gzを/tmp/tinycoreに展開
  2. 必要なパッケージを展開
  3. リストの内容に従い、パッケージ内のファイルを/tmp/tinycoreにコピー
  4. 上記2.と3.をパッケージの数だけ繰り返す
  5. /tmp/tinycoreを再パックして、/tmp/tinycore.gzを作成する

なお、これはtridentのドライバしか組み込みません。 VirtualBoxで動かしてみたい場合は、ファイルの中にそれ用の設定ファイルも用意したので、次のように置換してからmktinycore.shを動かしてください。

% mv Xorg-7.5.tcz.vbox.minlist Xorg-7.5.tcz

tinycore.gzの展開と作成の詳細については、tinycore.gzの作り方も参照してください。

なお、この方法だと、以前組み込んだときとはd101m_ucode.binの位置が違う(以前: /lib/firmware/e100、今回: /usr/local/lib/firmware/e100)のですが、問題ありません。

これでできたtinycore.gzのサイズは、約11.03MB。 オリジナルのtinycore.gzが約8.01MBなので、おおよそ3MB増量ということになります。 tce-loadでXorg-7.5とFehをインストールすると、合計では、

8.01 (tinycore.gz) + 14.28 (Xorg-7.5) + 0.33 (Feh) = 22.62MB

ということで、およそ半分弱にまで容量が減ったことになります。

さて、期待(?)の起動時間です。 grubからは約23秒、電源を入れてからのトータル約35秒でした。 前回からさらに3秒ほど高速化しました。 grubの待ち時間を1秒にして、トータル約33秒になりました。 メモリ消費量は、free -mのused部分で45MBです。 前回(56MB)に比べて、11MBほど減らすことができました。

もっとやろうと思うと...もうtinycoreはあきらめて、microcoreベースで構築するしかないですね。

戻る 0 1 2 3 4 5 6 7 8 9 次へ

こちらもよく読まれています