id:NeoCat:20080421 のエントリで、MacのBoot CampとrEFItを使ってパーティション上にインストールしたLinuxを、Parallelsからも起動できるようにしましたが、ハードウェア構成が変化するため、そのままではXの起動に失敗してしまいます。
そこで、これを自動的に再設定するようにしてみました。
方法は簡単、それぞれの環境用のxorg.confを用意しておき、次のようなスクリプトを使って起動時に自動的に切り替えさせるだけです。
#!/bin/sh switch_xorg_conf() { if [ -r xorg.conf-$1 ]; then echo Switching to xorg.conf-$1 ... cp xorg.conf-$1 xorg.conf else xorg.conf-$1 not found. fi } cd /etc/X11 if /sbin/lspci -n | /bin/grep 1ab8:1131 > /dev/null; then echo Parallels enviromnet detected. switch_xorg_conf parallels elif /sbin/lspci -n | /bin/grep 10de:0407 > /dev/null; then echo nVIDIA enviromnet detected. switch_xorg_conf nvidia else echo Unknown environment. do nothing. fi
1ab8:1131とか10de:0407は、それぞれParallelsのVGAエミュレーションデバイス、Boot Campで見えるMacBook Pro 15"のnVIDIAのグラフィックデバイスの番号で、lspci | grep VGA でアドレスを調べた後、lspci -n でデバイス番号を調べた結果です。
nVIDIA用ドライバはlivnaからyumでインストールした後で、/etc/X11/xorg.conf を /etc/X11/xorg.conf-nvidia として保存。
Parallelsも同様に、Parallels Toolsを(Macの「アクション」メニューから)インストールしたあとのものを xorg.conf-parallelsという名前で保存しました。
あとは上記のスクリプトを実行権限付きで/usr/local/bin/switch-xorg-configに保存し、 /etc/X11/prefdm あたりにでも、
# Switch xorg.conf based on the system environment if [ -x /usr/local/bin/switch-xorg-config ]; then /usr/local/bin/switch-xorg-config fi
とか書いておけばよいでしょう。
なお、上記を書いた prefdm というのは、GNOMEやKDEなどを設定に応じて切り替えるためのスクリプトとのこと。ただし、rhgb(グラフィカルな起動メッセージ)が出ない場合があります。rhgbが立ち上がるときはrootパーティションは書き込み不可なので、仕方ないかな〜。