ボブ「やあ,ジョニー,聞いてくれよ.」
ジョニー「なんだい,ボブ」
ボブ「最近,nouveauがmain kernel入りしてイケてるじゃん?」
ジョニー「2.6.33でDRMがmergeされたって話だね.」
ボブ「そうそう」
ジョニー「nouveaufbがKMS centricになったって話も聞いたよ?」
ボブ「うん,それでちょっと前に試してみたんだけど,やっぱりぶっ壊れてたんだ.」
ジョニー「ああ,そう言えば君はppc32だったね.」
ボブ「うん,x86が嫌いだからね.」
ジョニー「なるほど,多分offbがdestroy出来なかったのが原因だね.」
ボブ「そうなんだ,offbのトコにdestroyが追加されたんだ.」
ジョニー「じゃあ,offb - nouveaufb間のハンドオフが出来る様になるハズだから...」
ボブ「うん,もう一回試そうかと思ってさ.」
ジョニー「なるほど,ぶっ壊れるのを恐れずにまたも果敢に挑戦する訳だね?」
ボブ「もちろん,ricerだからね!」
ジョニー「まずはkernelを更新しようか.」
ボブ「どれが良いかな?」
ジョニー「2.6.33ベースのモノならどれでもイイと思うな.」
ボブ「じゃあ,手堅くsys-kernel/gentoo-sources-2.6.33にしよう.」
$ emerge =sys-kernel/gentoo-sources-2.6.33
ジョニー「kernelをbuildしておかないとDRM moduleがbuild出来ないから先に片付けてしまおう」
ボブ「そう言えば,知っているかい? eselect kernelで/usr/src/linuxのsymlinkが変更出来るんだぜ.」
$ eselect kernel linux-2.6.33-gentoo
ジョニー「でもこれってeselect profileに匹敵するくらい要らない機能じゃない? ln -sfとドコがちが...」
ボブ「ソイツは言わないお約束さ! kernelをbuildするのはGentooらしくgenkernelを使おうか!」
$ genkernel \
--kernel-config=/etc/kernels/kernel-config-${ARCH}-$(uname -r) \
--menuconfig --makeopts=-j2 all
ジョニー「configには気をつけないとね.」
ボブ「具体的には?」
ジョニー「x11-base/nouveau-drmの中のCONFIG_CHECKを参考にするれば良いと思うよ」
ボブ「これはどう言う風に解釈するんだい?」
ジョニー「eclass/linux-info.eclassをみれば分かるよ.」
ボブ「ああ,なるほど.!が付いているヤツはN,それ以外はYかMにすれば良いんだね?」
ジョニー「うん」
ジョニー「次はDRMだね.」
ボブ「officialのx11-base/nouveau-drmでイイかい?」
ジョニー「なんだricerらしくないじゃないか.先っぽを使うに決まってるだろう?」
ボブ「先っぽを使うとなんかメリットがあるの?」
ジョニー「x11-drivers/nouveau-firmwareが要らなくなるよ.runtimeでDRM module自身が生成してくれる.2.6.33ベースだと,多分この変更は入っていないのでconfigのやり直しになるよ?」
ボブ「でもnouveau/linux-2.6をgit cloneするのはメンドくない?」
ジョニー「物好きが必要な部分だけhg repoにsnapshot作りながら,ebuildまで用意しているよ?」
ボブ「じゃあ,コイツを使おう.」
$ emerge =x11-base/nouveau-drm-99999999-r1
ジョニー「忘れずに/etc/conf.d/modulesを更新しておこう.」
ボブ「具体的には?」
ジョニー「最近はload-time orderはあんまり問題にならないケド,AGP,DRM,nouveauの順で追加すればイイと思うよ.」
ボブ「ふむふむ.」
ジョニー「ああ,それからnouveau moduleはmodesetパラメータを持ってるんだ.」
ボブ「なんだいそれは?」
ジョニー「1と0のどちらかを設定する事でKMSのon/offが出来るのさ.defaultではonだけどね.」
ボブ「へぇ.」
ジョニー「最後にuserlandな野郎共を更新しよう.x11 overlayのlive ebuildを使うんだよ?」
ボブ「わかってるさ.x11-proto関連も忘れずに,だね!」
ジョニー「それからmedia-libs/mesaはGallium3D capable(USE="gallium")にしてVIDEO_CARDS="nouveau"だよ.念の為,x11-base/xorg-serverとx11-drivers/*もremergeしておくとイイと思うよ.」
ボブ「FULL ACK!」
$ emerge \
=x11-proto/dri2proto-9999 \
=x11-proto/glproto-9999 \
=x11-proto/xf86driproto-9999 \
=x11-libs/libdrm-9999 \
=media-libs/mesa-9999 \
x11-base/xorg-server \
$(qlist -I -C x11-drivers/) \
=x11-drivers/xf86-video-nouveau-9999
ジョニー「live ebuildがコケたらどうするか覚えてる?」
ボブ「勘でbisectして,EGIT_TREE経由でcommit revisionを指定だね?」
ジョニー「最近気付いたんだけど,EGIT_COMMIT経由でcommit revisionを指定してもイイみたい.」
ボブ「まったく,gitはbad-designだから周りまでbad-designになって困るね.」
ジョニー「必要なら最後にboot loaderの設定ファイルを弄ってMBRとかに相当するモノを更新しよう.」
ボブ「ボクの場合は/etc/yaboot.confの更新だね.」
ジョニー「sys-boot/yabootはsys-boot/liloと同じで設定ファイルを更新したらコマンドでboot partitionを弄らないといけないね.」
ボブ「ボクは常にmkofbootとybinの合わせ技だね.-vでverboseにしながら.」
# mkofboot -v && ybin -v
ジョニー「そう言えば,GRUB2には移行しないのかい?」
ボブ「そのうち試そうとは思ってるよ!」
ジョニー「よし,再起動だ!」
ボブ「逝くぜ!」
# reboot
ボブ「動いた!dmesg, Xorg.0.log, glxinfoまで完璧だ!」
ジョニー「まぁ,すごいのはupstream devsであって僕らじゃあないけどね.」
ボブ「やっぱり,Gentooは最高だぜ!」
修正:若干のtypos.
O HAI THIS BLOG PURPZIEZ 2 B UZED AZ MAH PLESIOUS MEM. :)
0 件のコメント:
コメントを投稿