O HAI THIS BLOG PURPZIEZ 2 B UZED AZ MAH PLESIOUS MEM. :)

2010/02/28

migrate2KMS(&nouveau); /* again */

  ボブ「やあ,ジョニー,聞いてくれよ.」
ジョニー「なんだい,ボブ」
  ボブ「最近,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.

0 件のコメント: