Compiz Fusion(NetBSD 5.0 on Netbook編)

2009年4月29日にNetBSD 5.0が正式リリースされました。
そのNetBSD 5.0のパッケージソースにはCompiz-Fusion(compiz 0.6.2)が用意されています。



ここではNetbook上でNetBSD 5.0のCompiz-Fusionを体験する手順を中心に紹介します(手順の一例です)。
またマルチメディア系アプリの利用やカーネル再構築による無線LANの利用手順についても触れています。
Aspirer oneとNetBSD 5.0の相性はよくNetBSD 5.0はAspire oneのPC-UNIX系OSとして重宝すると思いますが、
Aspirer oneにインストールして即フル稼働できるLinux(特にUbuntu Netbook Remix 9.04)との違いをいろいろ発見してみて下さい。


  1. マシン環境

  2. Aspirer oneへのNetBSD 5.0のインストール
    ここでは今回NetBSD 5.0をインストールした際のポイントだけ紹介します。
    (1)USB HDDをAspire oneに接続。
    (2)インストール用CD/DVDドライブは外付けのUSB接続ドライブを使用。
    (3)PCをブートしてF12キーを押し、ブートメニューから外付けのUSB接続ドライブを選択してブート。
    (4)NetBSD bootcodeのMBRへのインストール有無:Yes
    (5)NetBSDパーティション:USB HDD全体
    (6)Realtek RTL8102Eのネットワークインタフェース名はre0となります。
    (7)NetBSD 5.0のインストール後、再起動します。
    (8)PCリブート時、F12キーを押してブートメニューからUSB HDDを選択してブート。
    (9)rootでログインして基本設定を行います。

  3. NetBSD 5.0インストール直後の基本設定
    (1)/etc/rc.confにホスト名、ネットワーク構成、自動起動サービス(sshd等)を設定します。
    (2)/etc/resolv.confの設定
    (3)/etc/ssh/sshd_configでrootでのssh接続を許可します。
    (4)NetBSDを再起動するか、または「/etc/rc.d/network restart」「/etc/rc.d/sshd start」を実行します。

  4. DRM対応カーネルの作成(カーネル再構築)
    NetBSDでCompiz-Fusionを利用するにはハードウェアによる3Dアクセラレーション機能を使用します。
    そのためには以下のことを実施します(具体的手順も説明します)。
    (1)DRMオプションを有効にしたカーネルを作成します。
    (2)DRIを使用するためのIntel GMA 950グラフィックス用Xサーバ環境を構築します。
    (3)Intel GMA 950グラフィックス用Xサーバ設定ファイル(/etc/X11/xorg.conf)でDRIを使用する旨の宣言を行います。

    まずDRMオプションを有効にしたカーネル再構築は以下のように行います。
    # cd /
    # tar zxvf /root/syssrc.tgz ※ダウンロードしたカーネルソースの展開です。
    # cd /usr/src/sys/arch/i386/conf
    # cp GENERIC GENERIC.org
    # grep drm ALL >> GENERIC
    # config GENERIC
    # cd ../compile/GENERIC
    # make depend
    # make
    # mv /netbsd /netbsd.nodrm
    # mv netbsd /
    # reboot
    # dmesg|grep drm
    以下のように表示されます。
    i915drm0 at vga1: Intel i945GME (unit 0)
    i915drm0: AGP at 0x40000000 256MB
    i915drm0: Initialized i915 1.5.0 20060119

    下記は9時間ずれの日時を調整する操作です(必要に応じて実施します)。
    ※/etc/rc.confへの「rtclocaltime=yes」追加で済ませても構いません。
    # gdb --write /netbsd
    (gdb) set rtc_offset=-540
    (gdb) quit
    # reboot

    [注意事項]
    (1)カーネル設定ファイル(GENERIC)に「options DRM_NO_AGP」オプションは絶対に追加指定しないで下さい。
    (2)「options DRM_NO_AGP」オプション付きカーネル環境でDRI対応x11/xf86-video-intelのintelドライバは使用できません。
    (3)そのintelドライバを使用するとXサーバ起動時にXorgがクラッシュして自動リブートされます。
    (4)カーネルを再々構築する時間がなければvesaドライバ(x11/xf86-video-vesa)をビルドして使用して下さい(但しDRI不可)。

  5. DRIを使用するためのIntel GMA 950グラフィックス用Xサーバ環境の構築
    これは以下の操作で行います。
    (USB HDD使用ということもありコンパイル等に少し時間が掛ります)
    # tar zxvf pkgsrc.tar.gz -C /usr ※ダウンロードしたパッケージソースの展開です。
    # echo "X11_TYPE=modular" >> /etc/mk.conf
    # echo "PKG_OPTIONS.modular-xorg-server+=dri">> /etc/mk.conf
    # download-vulnerability-list
    # export ALLOW_VULNERABLE_PACKAGES=yes
    # cd /usr/pkgsrc/x11/modular-xorg-server
    # make install
    以下同様に次のディレクトリ群についてもmake installを実行します。
    /usr/pkgsrc/x11/xf86-video-intel
    /usr/pkgsrc/meta-pkgs/modular-xorg-apps
    /usr/pkgsrc/meta-pkgs/modular-xorg-fonts
    /usr/pkgsrc/meta-pkgs/modular-xorg-libs
    /usr/pkgsrc/graphics/glx-utils
    /usr/pkgsrc/x11/xf86-input-keyboard
    /usr/pkgsrc/x11/xf86-input-mouse

    尚、Xorg -configureによるxorg.confの作成はこの時点ではまだ不要です。

  6. GNOMEデスクトップ環境の構築
    GNOMEデスクトップ環境構築のためには多くのパッケージをコンパイルする必要があります。
    Intel Atom N270 1.6GHzではそのコンパイルにかなりの時間が掛ります。
    そこでなるべくなら高速CPUのマシンで上記のUSB HDDからブートしてGNOMEデスクトップ環境を構築することをお薦めします。
    ※その場合、/etc/rc.confのネットワーク設定も変更します。
    今回はCore i7マシンでGNOMEデスクトップ環境を構築してみました。
    使用するマシンに関わらず以下の操作でGNOMEデスクトップ環境を構築します。
    # export ALLOW_VULNERABLE_PACKAGES=yes
    # cd /usr/pkgsrc/x11/gnome-desktop
    # make install
    以下同様に次のディレクトリ群についてもmake installを実行します。
    /usr/pkgsrc/x11/gnome-mag
    /usr/pkgsrc/x11/gnome-panel
    /usr/pkgsrc/x11/gnome-screensaver
    /usr/pkgsrc/x11/gnome-session
    /usr/pkgsrc/x11/gnome-themes
    /usr/pkgsrc/x11/gnome-themes-extras
    /usr/pkgsrc/x11/gnome-applets
    /usr/pkgsrc/meta-pkgs/gnome-admin
    /usr/pkgsrc/x11/gnome-terminal
    /usr/pkgsrc/editors/gedit
    /usr/pkgsrc/misc/gnome-utils ※gnome-screenshot等含む。
    /usr/pkgsrc/www/epiphany (任意)
    /usr/pkgsrc/mail/evolution (任意)
    /usr/pkgsrc/x11/gdm
    /usr/pkgsrc/fonts/ja-sazanami-ttf
    /usr/pkgsrc/fonts/kochi-ttf
    /usr/pkgsrc/fonts/vlgothic-ttf
    /usr/pkgsrc/inputmethod/uim ※Anthyも自動インストールされます。
    /usr/pkgsrc/www/firefox3
    /usr/pkgsrc/graphics/gimp
    /usr/pkgsrc/sysutils/gnome-system-tools ※ユーザとグループを管理するツール等を含みます。

    以下はGDM環境の整備操作です。
    (1)GDM自動起動時のシステムクラッシュ/自動リブートループ回避のため/usr/pkg/sbin/gdmをリネームしておきます。
    # mv /usr/pkg/sbin/gdm /usr/pkg/sbin/gdm.disabled
    (2)dbus-daemon自動起動設定
    # cp -p /usr/pkg/share/examples/rc.d/dbus /etc/rc.d/dbus
    # chmod 755 /etc/rc.d/dbus
    # vi /etc/rc.conf
    下記1行の追加。
    dbus=YES
    (3)シャットダウン
    # shutdown -h now

    もし、別の高速CPUのマシンで上記GNOMEデスクトップ環境構築した場合はこの時点でUSB HDDをNetbook側に戻します。
    ※その場合、/etc/rc.confのネットワーク設定も変更します。

  7. Intel GMA 950グラフィックス用Xサーバ設定ファイル(/etc/X11/xorg.conf)の作成
    (1)Xサーバ設定テンプレートファイルの自動生成
    Netbook側で以下のコマンドを実行します。
    # cd
    # Xorg -configure
    ※これによって/root/xorg.conf.new(Xサーバ設定テンプレートファイル)が自動生成されます。
    # cp /root/xorg.conf.new /etc/X11/xorg.conf
    (2)Xサーバ設定ファイルの編集
    # /etc/X11/xorg.conf
    Xサーバ設定テンプレートファイルに下記朱書き太字の5行を追加してXサーバ設定ファイルを完成させます。
    Section "ServerLayout"
            Identifier     "X.org Configured"
            Screen      0  "Screen0" 0 0
            InputDevice    "Mouse0" "CorePointer"
            InputDevice    "Keyboard0" "CoreKeyboard"
    EndSection
    
    Section "Files"
            ModulePath   "/usr/pkg/lib/xorg/modules"
            FontPath     "/usr/pkg/lib/X11/fonts/misc/"
            FontPath     "/usr/pkg/lib/X11/fonts/TTF/"
            FontPath     "/usr/pkg/lib/X11/fonts/OTF"
            FontPath     "/usr/pkg/lib/X11/fonts/Type1/"
            FontPath     "/usr/pkg/lib/X11/fonts/100dpi/"
            FontPath     "/usr/pkg/lib/X11/fonts/75dpi/"
    EndSection
    
    Section "Module"
            Load  "extmod"
            Load  "dbe"
            Load  "glx"
            Load  "dri"
            Load  "dri2"
    EndSection
    
    Section "InputDevice"
            Identifier  "Keyboard0"
            Driver      "kbd"
            Option    "XkbModel" "jp106"
            Option    "XkbLayout" "jp"
    EndSection
    
    Section "InputDevice"
            Identifier  "Mouse0"
            Driver      "mouse"
            Option      "Protocol" "wsmouse"
            Option      "Device" "/dev/wsmouse"
            Option      "ZAxisMapping" "4 5 6 7"
    EndSection
    
    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Monitor Model"
    EndSection
    
    Section "Device"
            ### Available Driver options are:-
            ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
            ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
            ### [arg]: arg optional
            #Option     "NoAccel"                   # [<bool>]
            #Option     "SWcursor"                  # [<bool>]
            #Option     "ColorKey"                  # <i>
            #Option     "CacheLines"                # <i>
            #Option     "Dac6Bit"                   # [<bool>]
            #Option     "DRI"                       # [<bool>]
            Option    "DRI"                    "True" 
            #Option     "NoDDC"                     # [<bool>]
            #Option     "ShowCache"                 # [<bool>]
            #Option     "XvMCSurfaces"              # <i>
            #Option     "PageFlip"                  # [<bool>]
            Identifier  "Card0"
            Driver      "intel"
            VendorName  "Unknown Vendor"
            BoardName   "Unknown Board"
            BusID       "PCI:0:2:0"
    EndSection
    
    Section "Screen"
            Identifier "Screen0"
            Device     "Card0"
            Monitor    "Monitor0"
            DefaultDepth    24 
            SubSection "Display"
                    Viewport   0 0
                    Depth     1
            EndSubSection
            SubSection "Display"
                    Viewport   0 0
                    Depth     4
            EndSubSection
            SubSection "Display"
                    Viewport   0 0
                    Depth     8
            EndSubSection
            SubSection "Display"
                    Viewport   0 0
                    Depth     15
            EndSubSection
            SubSection "Display"
                    Viewport   0 0
                    Depth     16
            EndSubSection
            SubSection "Display"
                    Viewport   0 0
                    Depth     24
                    Modes    "1024x600" 
            EndSubSection
    EndSection
    

  8. Intel GMA 950グラフィックス用DRI設定ファイルの新規作成
    # vi /etc/drirc
    <driconf>
       <device screen="0" driver="i915">
         <application name="Default">
           <option name="vblank_mode" value="0" />
         </application>
       </device>
    </driconf>
    

  9. テストユーザの作成
    ここで主にGDM/GNOME環境のテストを行うテストユーザ(gdmtest)を作成します。
    # groupadd bsduser
    # useradd -G wheel -g bsduser -d /home/gdmtest -m -s /bin/ksh gdmtest
    # passwd gdmtest
    ここでパスワードを設定します。
    # su - gdmtest
    $ vi .xinitrc(新規作成)
    ~/.xinitrcに以下の3行を追加します。
    export XMODIFIERS=@im=uim
    export GTK_IM_MODULE=uim
    exec uim-xim
    # su - root

  10. GNOMEデスクトップ表示とglxgearsのスコア確認
    (1)GDMグラフィカルログイン画面の表示。
    # gdm.disabled
    これで英語GDM画面が表示されます(この時点のstartxではtwmが表示されます)。
    (2)英語GDM画面の[Language]−[Select Language]で[Japanese]を選択して日本語GDM画面に変更します。
    (3)日本語GDM画面の[セッション]で[gnome.desktop]を選択します。
    (4)gdmtestユーザでログインすると日本語GNOMEデスクトップが表示されます。
    (5)glxgearsのスコア確認
    $ glxgears
    DRIを適用したAspire one ZG5マシン環境でのglxgearsのスコアは大体950FPS程度となります(vesaでは130FPS程度)。
    ※「LIBGL_ALWAYS_INDIRECT=1 INTEL_BATCH=1 glxgears」起動では多少高速化され1200FPS台になることもあります。
    ※INTEL_BATCH=1は高速化オプションです。



    [ご参考]
    ・Core i7 920(2.67GHz)+ATI Radeon HD 4670(DRIなし)+SATA HDD+NetBSD 5.0(32bit版)での
    glxgearsスコアは概ね1800FPS程度です。

    (6)GNOMEの[システム]−[設定]−[自動起動するアプリ]で自動起動するプログラムとして以下を指定します。
    ・uim-toolbar-gtk-systray
    ・uim-xim
    (7)gdmtestで再ログインします。
    (8)uim-Anthyによる日本語入力が可能となります(GNOMEパネルのuimツールバー)。

  11. Compiz-Fusionのインストール
    以下のコマンドでCompiz-Fusionをインストールします。
    # export ALLOW_VULNERABLE_PACKAGES=yes
    # cd /usr/pkgsrc/meta-pkgs/compiz-fusion
    # make install

  12. Compiz-Fusionの利用
    (1)gdmtestユーザでログインします。
    ※rootでも問題なくGDMログインするだけでGNOMEデスクトップが表示されます。
    (2)GNOMEの[システム]−[設定]−[CompizConfig Settings Manager]を選択します。
    (3)CompizConfig Settings ManagerでCompiz-Fusionの各種カスタマイズを行います。
    (4)MetacityからCompiz-Fusionへの切替。
    以下のコマンドでウィンドウマネジャをMetacityからCompiz-Fusionに切り替えます。
    $ LIBGL_ALWAYS_INDIRECT=1 INTEL_BATCH=1 compiz --replace ccp &
    $ gtk-window-decorator --replace &
    (4-1)単なる「compiz --replace ccp &」(OpenGL直接レンダリング)起動ではGEMの初期化に失敗してFatalエラーとなります。
    (4-2)ここでは「LIBGL_ALWAYS_INDIRECT=1」指定でOpenGL間接レンダリングを指示しています(GEMの初期化エラー回避)。
    (4-3)更に高速化オプション(INTEL_BATCH=1)も併用しています。

    下記の画像はオーソドックスなデスクトップキューブです(rootユーザでの操作)。
    端末ウィンドウのタイトルバーが空白表示となります(gtk-window-decoratorの動作に問題があるようです)。



  13. Xfce4デスクトップ環境でのCompiz-Fusion利用
    (1)以下のコマンドでXfce4のバイナリパッケージをインストールします(pkgsrcからでは時間が掛るので)。
    # export PKG_PATH=ftp://ftp4.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0/All
    # pkg_add xfce4-4.4.3nb3.tgz (メタパッケージ)
    # pkg_add xfce4-extras-4.4.3nb2.tgz (メタパッケージ)
    # pkg_add xfce4-dev-tools-4.4.0.1.tgz
    # pkg_add xfce4-volman-0.2.0.tgz
    # vi /etc/hosts
    当該ホストのIPアドレスを登録しておきます(これが無いとXfce4セッション起動時にエラーメッセージが表示されます)。
    (2)Xfce4セッションの起動
    とりあえずはGDMの[セッション]メニューで[フェールセーフの端末]を選択してログインします。
    ※必要なら事前にお好みのフォントをインストールしておきます。
    (3)ログイン後、右下に表示されるウィンドウ枠のない端末から「startxfce4」を実行すると
    Xfce4のスプラッシュ画面が出てからデスクトップが表示されます。
    このスプラッシュ画面はXfceメニューの[設定]−[起動画面](Splash Screen Settings)で変更できます。
    デフォルトは小さな子ネズミが表示される「Mice」ですがそれを大きなネズミの「Balou」に変更できます。
    「Balou」を選択して<テスト>ボタンを押すとプレビューできます(Balouプレビュー例)。
    (4)Xfce4のデスクトップ例
    (5)Compiz-Fusionの利用
    Xfceメニューの[設定]−[CompizConfig Settings Manager]でCompiz-Fusionの各種カスタマイズを行います。
    (6)Compiz-Fusionモードへの切替。
    以下のコマンドでCompiz-Fusionモードに切り替えます。
    $ LIBGL_ALWAYS_INDIRECT=1 INTEL_BATCH=1 compiz --replace ccp &
    $ gtk-window-decorator --replace &

    下記の画像もオーソドックスなデスクトップキューブです。



    (7)Compiz-Fusionモードのままログアウトする際にセッション保存オプションの有効・無効を選択できます。
    セッション保存オプションを有効にすると次のXfce4セッションではウィンドウ枠のない画面でアプリが復元されます。
    xfwm4コマンドでウィンドウ枠を再表示できますが毎回xfwm4を実行するのは手間が掛ります。
    一層のこと保存したセッション情報を削除してからXfce4セッションを起動するとよいかと思います。
    $ rm -rf ~/.cache
    $ rm -rf ~/.config
    $ startxfce4
    (8)日本語変換入力について
    Xfce4デスクトップ環境ユーザがXfceメニューの[設定]−[自動開始アプリケーション]でuim-toolbar-gtk-systrayを指定します。
    次回ログインから画面上部のタスクバーにuimのアプレット(デフォルトはAnthy利用)が自動表示されます。
    「半/全」キーで日本語入力モードにして簡単に日本語変換入力ができます。
    もちろん[自動開始アプリケーション]での設定はGNOME環境にも引き継がれます。

  14. Aspire oneの無線LAN利用
    (1)今回使用しているAspire oneの無線LANアダプタはAtheros AR5007EG Wirelessです。
    (2)NetBSD 5.0はこの無線LANアダプタには標準対応していません。
    (3)但し、NetBSD 5.0のカーネルソースにパッチを適用してカーネル再構築することでこの無線LANアダプタが使用可能となります。
    (4)Aspire oneの無線LAN利用手順は以下の通りです。


  15. Aspirer one上のNetBSD 5.0に関する補足


  16. Aspirer one上のPC-BSD 7.1.1について
    FreeBSDディストリビューションでもAspire Oneをある程度利用できますがNetBSDほどではないようです。
    今回はFreeBSDディストリビューションの一つとしてPC-BSD 7.1.1を主に使用してみました。
    PC-BSD 7.1.1はUSBメモリにインストールしました(インストーラは内蔵HDDには影響を与えません)。
    試行結果は以下の通りです。
    (1)有線ネットワークはRealTek 8101E/8102E/8102ELとして認識され問題なく利用できます。
    (2)無線ネットワークはAtheros 5424/2424として認識され標準ドライバがそのまま利用できます(無線使用の様子)。
    (3)グラフィックはIntel 945GME SVGA controllerとして認識されintelドライバが自動使用されます。
    また1024x600の解像度でも問題なく使用できます。
    glxgearsスコアは概ね280FPS程度ですがチューニングで320FPS程度にはなります。
    (4)AIGLX上でCompiz Fusionが極めて簡単に使用できます(カーネル再構築や特殊なドライバビルドは不要です)。
    ・AIGLX対応/etc/X11/xorg.confの準備(xorg.confの例) ※ポイントは「Option "AIGLX" "true"」の追加です。
    ・「pkg_add -r compiz-fusion」でCompiz Fusionを高速バイナリインストール
    ・CCSM(CompizConfig設定マネージャ)でCompiz Fusionの使用効果をカスタマイズします。
    ・「compiz --replace --indirect-rendering ccp &」を実行します。
    ・ウィンドウ装飾のないウィンドウとなりますがKDEでもGNOMEでも3Dデスクトップ環境が使用できます。
    例;
    KDEでのシリンダ表示例
    GNOMEでのシリンダ表示例
    (5)サウンドデバイスはIntel 82801G High Definition Audio Controllerとして認識され問題なく利用できます。
    (6)今回使用マシン付属のWebカメラはPC-BSD 7.1.1では標準サポートされていないようです。
    halデーモンが起動されていてもCheeseはWebカメラを検出できず、「カメラが見つかりませんでした!」エラーを表示します。
    (7)アプリの追加は「pkg_add -r パッケージ名」というように簡単かつ高速にバイナリインストールができます。
    但し、一部のアプリ導入時には手動で~/.cshrcにLD_LIBRARY_PATHを設定する必要があります。
    例えばfirefox3導入後は~/.cshrcに「setenv LD_LIBRARY_PATH "/usr/local/lib"」を指定することでfirefox3を利用できます。
    本指定がない場合firefox3起動時に以下のエラーが発生します。
    /libexec/ld-elf.so.1: Shared object "libplds4.so.1" not found, required by "firefox-bin"
    (8)Eee PC 901-XでのPC-BSD 7.1.1実行
    Aspirer OneでUSBメモリにインストールしたPC-BSD 7.1.1はEee PC 901-Xでも動作します。
    ・有線ネットワークのインタフェース名はre0ではなくale0となります。
    ・無線ネットワークは使用できません(この点はAspire Oneとの相性の方がよいです)。
    ・Webカメラは認識しません。
    ・/etc/X11/xorg.confは変更なしでOKです。
    ※glxgearsのスコアは420FPS前後となり、Compiz Fusionも利用できます。

  17. Ubuntu Netbook Remix 9.04の概要
    Ubuntu Netbook Remix 9.04はUbuntu 9.04のDesktop版, Server版と同時リリースされたNetbook用のUbuntu 9.04です。
    Ubuntu Netbook Remix 9.04(以下、UNR 9.04)の大きな特徴は以下の通りです。

  18. Aspirer one上のUbuntu Desktop 9.04について
    Aspirer oneではUbuntu Netbookの他に通常のUbuntu Desktop 9.04 日本語 Remix版も使用できます。
    Aspirer oneのデバイスは無線LAN含めてWebカメラ、サウンド等すべて利用できます。
    Aspirer one上でもNetbook対応仕様でないUbuntu Desktop 9.04 日本語 Remix版の方が使いやすいと感じる人も多いかと思います。


  19. Aspirer one上のVine Linux 5.0について
    Vine Linux 5.0についてはCompiz Fusion(Vine Linux 5.0 on Netbook編)をご参照下さい。

現状、労せずしてAspirer oneのデバイスを使いこなせるPC-UNIXはやはりUbuntu or Vine系かも知れません。
機会があれば2009年4月26日にリリースされたDragonFly 2.2.1もNetbookでネーティブ実行してみようと思います。
(とり急ぎ、Aspire OneのNetBSD 5.0でのQEMU 0.9.1でDragonFly 2.2.1を実行してみました)