hoge diary - March 2005

March 29, 2005

[Gentoo] Enlighted Sound Daemon

media-sound/artsplugin-xine をインストールしようとした時のこと...

/bin/sh ../libtool --silent --mode=link --tag=CXX i686-pc-linux-gnu-g++ \
-Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE \
-Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings \
-DNDEBUG -DNO_DEBUG -O2 -O3 -march=pentium4 -fomit-frame-pointer -funroll-loops -pipe \
-fPIC -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new \
-fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT \
-DQT_NO_TRANSLATION    -o libarts_xine.la -rpath /usr/kde/3.4/lib -L/usr/kde/3.4/lib \
-L/usr/qt/3/lib -L/usr/lib    -module -avoid-version -pthread xinePlayObject.lo \
xinePlayObject_impl.lo audio_fifo_out.lo -L/usr/lib -lxine -lz -lnsl -lpthread -lrt \
-lX11  -lXext -lkmedia2_idl -lsoundserver_idl -lartsflow
grep: /usr/lib/libesd.la: No such file or directory
/bin/sed: can't read /usr/lib/libesd.la: No such file or directory
libtool: link: `/usr/lib/libesd.la' is not a valid libtool archive

USE=-esd でもダメということは,emerge esound をしなければならない,ということなのでしょう.aRts があるにもかかわらず,esound もインストールしなければならないなんて...

March 27, 2005

[TeX関連] LaTeX によるタイプセットをちょっと高速にする方法

例えば,hoge.tex のプリアンブルの末尾に \dump と書いてタイプセットします.

すると,hoge.fmt というフォーマットファイルができあがります.これは LaTeX のマクロを展開した結果が納まったファイルです.

フォーマットが完了したら,先程追加した \dump を削除します.そして次回以降のタイプセットは次のようにすることで,hoge.fmt に格納された情報だけでタイプセットを行うため,若干高速になります.

platex &hoge hoge.tex

強調部分には,ファイル名 hoge.fmt から拡張子を除いた部分を指定します.また,"&" を特殊記号として扱うシェルを使用している場合はエスケープしてください.

言うまでもありませんが,プリアンブルを変更した場合は再フォーマットする必要があります.

March 26, 2005

[TeX関連] jsbook で subsection の目次を出す

プリアンブルに次の 1 行を加えると,\tableofcontents で \subsection までの目次が出力できます.

\setcounter{tocdepth}{2}

March 24, 2005

[雑記] Celeron D

crackbrain 氏から Intel Celeron D 335 を受け取りました.動いたら 6,000 円だそうです.

[雑記] 4 人マインスイーパ - mineman

まだプロジェクトは始動していません.

[TeX関連] pdfjam

portage の app-text/pdfjam に,pdfnup というコマンドがあります.pdfnup は psnup の pdf 版です.

PDF を印刷するときに便利です.

March 22, 2005

[出来事] Nickle 追い出し会 in sudoer's house

crackbrain 宅でにっくるの追い出し会をやっております.

cclub メンバーが私を含めて 4 人,合計 10 人居ますね...

やっぱり店で飲まないと安くあがっていいです.

[TeX関連] BaKoMa

TeX の標準フォントである Computer Modern の TrueType 版がないかなーと探すと,BaKoMa がまさにそれでありました.

これで OpenOffice.org の図がちょっと綺麗に描けます.

March 21, 2005

[雑記] 引っ越し完了

荷物を移動して,あとは寮の片付けだけです.

[Gentoo] Subversion on "K"

Cervisia という,KDE 上で動作する CVS の GUI フロントエンドがあります.

このような Subversion 版の KDE GUI フロントエンドはないでしょうかねぇ.

なお,Windows 環境であれば,TortoiseSVN があります.

探していると,eSvn というのが見つかりました.

インストールしてみます.2005 年 3 月 21 日現在,esvn はマスクされていました.

# ACCEPT_KEYWORDS=~x86 emerge esvn

コンパイル失敗です.

/usr/qt/3/lib/libqt.so: undefined reference to `__pthread_register_cancel@GLIBC_2.3.3'
/usr/qt/3/lib/libqt.so: undefined reference to `__pthread_unregister_cancel@GLIBC_2.3.3'

あれ? 今まで pthread 抜きの glibc を作ってたんでしょうか? だとすると,pthread の他の関数もエラーメッセージに含まれるはずです(Qt が __pthread_unregister_cancel だけ呼んでいるとは考えにくい).

ではここで,glibc は pthread を含んでいると仮定すると... 2005 年 3 月 17 日の glibc アップデート の時に emerge -e をやるべきだった,ということですか? まさか,そんな.

glibc のバージョンはほとんど変化していないので,ライブラリのインタフェースが変わっているとは思えません.

今は忙しいので esvn は保留ということにします... と思ったら,私は何を頓珍漢なことを書いているんでしょう.

% ls /lib/libc-*
/lib/libc-2.3.4.so
%

今システムに入ってるのは glibc-2.3.4 じゃないですか.libqt が参照していたのは glibc-2.3.3 の関数です.

glibc-2.3.3 を glibc-2.3.4 にアップデートした際,emerge -e をし忘れたようです.というわけで... 全パッケージ再コンパイルの刑が確定しました.

% sudo emerge -e world

March 19, 2005

[雑記] The end of ごくせん

第 2 シーズンも終わっちゃいました.

次回作の存在を彷彿とさせるエンディングでした.やるのかな?

[プログラミング] GNU make の単純展開変数

TEXINPUTS を自動的に設定してタイプセットを行う Makefile を書こうとして,次のように書くと失敗します.

% cat Makefile
TEXINPUTS=$(TEXINPUTS)./eps:

all: foo.tex
        platex foo.tex
% make
platex foo.tex
make: *** Recursive variable `TEXINPUTS' references itself (eventually).  Stop.

この原因は,make は変数(マクロ)の展開を,それが実際に使用された時点で行うためです.

変数に値を付け加えたい場合は,"=" の代わりに ":=" を使用して単純展開変数を定義します.

% cat Makefile
TEXINPUTS := $(TEXINPUTS)./eps:

all: foo.tex
        platex foo.tex
% make
platex foo.tex
(snip)
%

この場合,変数が定義された時点で 1 度だけ展開されます.ただし GNU make でないと使えません.

[TeX関連] TEXINPUTS

環境変数 TEXINPUTS に ./eps を付け加えておくと,\includegraphics{hoge.eps} をタイプセットする際に,自動的に eps/hoge.eps を探しに行くので便利です.

設定例は次のような感じです.私は自分専用のスタイルファイルを ~/.texmf の下に入れているので,その設定が含まれています.

export TEXINPUTS=.:${HOME}/.texmf//:./eps:

多くの場合は環境変数 TEXINPUTS の末尾をコロンで終わらせておく必要があります.TEXINPUTS / TEXTFM 等の環境変数は,末尾がコロンである場合,そこにデフォルトの定義が続いているものとして解釈するからです.

ファイルの検索には kpathsea を使用するので,ダブルスラッシュを用いることができます.

また,PATH と同じように,TEXINPUTS にはカレントディレクトリを含める必要があります.

March 18, 2005

[雑記] 変化する hoge

日記の内容を 1 日ごとにバラしてみました.

私は,普通に見るだけならこっちの方が見やすいと思います.

検索機能でも付けたいところですよね.

なお,basic 認証を外しました.

March 17, 2005

[Gentoo] sys-libs/glibc-2.3.4.20041102-r1

portage ツリーを同期して,アップデート確認をすると,glibc がアップデートされることが分かりました.

[ebuild     U ] sys-libs/glibc-2.3.4.20041102-r1 [2.3.4.20040808-r1]

通常,glibc をアップデートすると,例によって glibc に依存するパッケージも再コンパイルしないといけません.

経験から言って,全パッケージが glibc に依存していると言っていいでしょう.したがって,コンパイルにはとてつもない時間がかかります.

「ダイナミックリンクなら問題ないんじゃないの?」という声が聞こえてきました.ええ,メジャーバージョンとマイナーバージョンが変化していなければ,そのままダイナミックリンクできます.

(メジャーバージョンとマイナーバージョンが変化すると,ダイナミックリンク時のシンボル解決に失敗します)

幸い,今回は glibc のバージョンが変化していないので... そのままにしておきたいのが本音です.ということで glibc のアップデートだけにとどめておきます.

March 16, 2005

[SPAM] Night Vision Goggle の有効活用法?

今回も spam ネタを 1 つ出してみます.まずは冒頭から.

赤外線撮影って知ってましたか?
赤外線って光の波長が長いので薄い布なら
透過する性質があるんです。
ウヒヒ。もうおわかりですよね?

赤外線撮影と言われて私が真っ先に想像するのは... Night Vision Goggle(NVG),いわゆる暗視ゴーグルです.

とはいえ,これが spam mail に書かれているのですから,この後にどんな文書が書かれているかは容易に想像できます.

有名芸能人、セレブ達の生の裸が撮影できるんです。

そうです.こんな文章です.

「へぇ,NVG ってこんな使い方ができたのか!」と感心... してはいけません.こんなことができたら,SWAT の皆さんは夜間の隠密作戦中に他人の何かを見て嘔吐してしまうでしょう.

さらにこんな記述もありました.

当サイトで紹介している情報は、
新開発の強力赤外線照射可能な特殊装置での撮影です。

その強力赤外線照射のために,芸能人やセレブたちが熱で燃え出したりしませんよね.

March 12, 2005

[雑記] Arctic Silver

Arctic Silver 5 が今出てるんですか... 99.9% pure silver だそうです.もうそろそろ通電しそうですね.

なんて思ってたら Arctic Silver 5 was formulated to conduct heat, not electricity. って書いてあります.本当かしら.

Arctic Silver II はもう古いんですかねぇ.

March 11, 2005

[雑記] コメント投稿

hoge diary にコメントを投稿する機能を搭載しました.

ただし,コメントが投稿されてもアンテナは捕捉しません.

March 10, 2005

[Gentoo] パケットライト

偶然に見つけた HOWTO Packet Writing on CD-RW - Gentoo Linux Wikiに書いてある手順をほぼそのまま実行してみました.

まずはカーネルのコンパイルから.gentoo-dev-sources-2.6.10-r6 には既にパケットライト用のパッチが当たっているようなので,改めてカーネルにパッチを当てる必要はありませんでした.

Device Drivers ---->
  Block Drivers ---->
    <*> Packet writing on CD/DVD Media (EXPERIMENTAL)
    (8) Freebuffers for data gathering
    [ ] Enable write caching
  File Systems ---->
    CD-ROM/DVD Filesystems ---->
      <*> UDF Filesystem Support

次はモジュールの設定を編集し,デバイスノードの作成を行います.

# vim /etc/modules.d/aliases
alias block-major-97 pktcdvd

# mknod /dev/pktcdvd0 b 97 0

udftools のインストールを.

# emerge udftools

2005 年 3 月 10 日現在にインストールされたバージョンは 1.0.0b-r4 で,パッチは不要でした.

fstab の編集も行います.現在使用しているカーネルは 2.6.10 で,HOWTO Packet Writing on CD-RW - Gentoo Linux Wiki には,%If you have a 2.6.8 kernel, the line above should be: とあるので,次のように編集します.

# vim /etc/fstab
/dev/pktcdvd/0 /mnt/cdrw udf noauto,noatime,rw,users 0 0
 
# mkdir /mnt/cdrw
# chmod 0777 /mnt/cdrw

リブート後,DVD+RW のフォーマットを試みました.

cdrwtool -d /dev/cdroms/cdrom0 -q
using device /dev/cdroms/cdrom0
832KB internal buffer
setting write speed to 12x
Settings for /dev/cdroms/cdrom0:
        Fixed packets, size 32
        Mode-2 disc

I'm going to do a quick setup of /dev/cdroms/cdrom0. The disc is going to be blanked and formatted with one big track. All data on the device will be lost!! Press CTRL-C to cancel now.
ENTER to continue.

Initiating quick disc blank
wait_cmd: Input/output error
Command failed: a1 01 00 00 00 00 00 00 00 00 00 00 - sense 05.30.05
blank disc: Illegal seek
can't unlock door

何かエラーが出ますね... ドライブに突っ込んでいるのが DVD+RW だからでしょうか.良く考えてみれば,DVD+RW の場合,dvd+rw-format というコマンドがあるので,そちらを使ってフォーマットすればいいだけでしょう.

... もとい,今回使用した DVD+RW はフォーマット済みですので,このステップは無視することに.

/etc/conf.d/cdrw を次の内容で作成しました.

cdrw_list="/dev/cdroms/cdrom0"

同様に,/etc/init.d/cdrw を次の内容で作成しました.

#!/sbin/runscript
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {
  need localmount
}

start() {
  # Starting with kernel 2.6.8 there is a different syntax
  # for the pktsetup program.
  kernel_major=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f2` ))
  kernel_minor=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f3` ))
  local i
  local minor=0
  local retval=0
  local last_result=0
  if [ ! -e "/dev/pktcdvd" ]
    then
      /sbin/modprobe -a pktcdvd
  fi
  for i in ${cdrw_list}
  do
    ebegin "Enabling CD-RW packet writing on ${i}"
    if [ ${kernel_major} -ge 6 ] && [ ${kernel_minor} -ge 8 ]
      #then /usr/bin/pktsetup /dev/pktcdvd/${minor} ${i} >/dev/null 2>&1
      then /usr/bin/pktsetup ${minor} ${i} >/dev/null 2>&1
      #else /usr/bin/pktsetup /dev/pktcdvd${minor} ${i} >/dev/null 2>&1
      else /usr/bin/pktsetup pktcdvd${minor} ${i} >/dev/null 2>&1
    fi
    if [ -b /dev/pktcdvd/${minor} ]
      then last_result=0
      else last_result=1
    fi
    retval=$(( ${retval} + ${last_result} ))
    minor=$(( ${minor} + 1 ))
    if [ ${last_result} -gt 0 ]
      then
        ewend ${last_result} "Failed to enable packet writing on ${i}"
    fi
  done
  eend ${retval}
}

stop() {
  # Starting with kernel 2.6.8 there is a different syntax
  # for the pktsetup program.
  kernel_major=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f2` ))
  kernel_minor=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f3` ))
  local i
  local minor=0
  local retval=0
  local last_result=0
  for i in ${cdrw_list}
  do
    ebegin "Disabling CD-RW packet writing on ${i}"
    umount /dev/pktcdvd/${minor} >/dev/null 2>&1 || true
    if [ ${kernel_major} -ge 6 ] && [ ${kernel_minor} -ge 8 ]
      #then /usr/bin/pktsetup -d /dev/pktcdvd/${minor} >/dev/null 2>&1
      then /usr/bin/pktsetup -d ${minor} >/dev/null 2>&1
      #else /usr/bin/pktsetup -d /dev/pktcdvd${minor} >/dev/null 2>&1
      else /usr/bin/pktsetup -d pktcdvd${minor} >/dev/null 2>&1
    fi
    if [ -b /dev/pktcdvd/${minor} ]
      then last_result=1
      else last_result=0
    fi
    retval=$(( ${retval} + ${last_result} ))
    minor=$(( ${minor} + 1 ))
    if [ ${last_result} -gt 0 ]
    then
      ewend ${last_result} "Failed to disable packet writing on ${i}"
    fi
  done
  eend ${retval}
}

スクリプトを実行してみます.

# chmod 0755 /etc/init.d/cdrw
# /etc/init.d/cdrw start
 * Enabling CD-RW packet writing on /dev/cdroms/cdrom0...
 * Failed to enable packet writing on /dev/cdroms/cdrom0   [ !! ]
                                                           [ !! ]

うーむ,走りません.

試しに,最初に作ったブロックデバイススペシャルファイルを消去してみたところ,正常にスクリプトが起動しました.

# rm /dev/pktcdvd0
 * Enabling CD-RW packet writing on /dev/cdroms/cdrom0...  [ ok ]

デバイススペシャルファイルが自動作成されているので,major 番号を確認してみると...

# ls /dev/pktcdvd0
brw-rw----  1 root root 254, 0  3月 10 11:33 /dev/pktcdvd0

97 じゃないじゃないですか.まあいいか.

ということで早速 DVD+RW のパケットライトを試してみます.

% mount /mnt/cdrw
% touch /mnt/cdrw/hoge
touch: cannot touch `hoge': 許可がありません
% umount /mnt/cdrw

では,root ではどうでしょうか.

# mount /mnt/cdrw
# touch /mnt/cdrw/hoge
touch: cannot touch `/mnt/cdrw/hoge': 入力/出力エラーです

ぬぅ,まだまだ先は長いようです.

March 9, 2005

[Linux] X.org on RADEON X800 (2)

修行が足りませんでした.X.org のメンバーは既に RADEON X800 (PCIE) をサポートするドライバを作っていました.X のログによると,このドライバがサポートしているグラフィックチップは次の通りです.

(II) RADEON: Driver for ATI Radeon chipsets: ATI Radeon QD (AGP),
    ATI Radeon QE (AGP), ATI Radeon QF (AGP), ATI Radeon QG (AGP),
    ATI Radeon VE/7000 QY (AGP/PCI), ATI Radeon VE/7000 QZ (AGP/PCI),
    ATI Radeon Mobility M7 LW (AGP),
    ATI Mobility FireGL 7800 M7 LX (AGP),
    ATI Radeon Mobility M6 LY (AGP), ATI Radeon Mobility M6 LZ (AGP),
    ATI Radeon IGP320 (A3) 4136, ATI Radeon IGP320M (U1) 4336,
    ATI Radeon IGP330/340/350 (A4) 4137,
    ATI Radeon IGP330M/340M/350M (U2) 4337,
    ATI Radeon 7000 IGP (A4+) 4237, ATI Radeon Mobility 7000 IGP 4437,
    ATI FireGL 8700/8800 QH (AGP), ATI Radeon 8500 QL (AGP),
    ATI Radeon 9100 QM (AGP), ATI Radeon 8500 AIW BB (AGP),
    ATI Radeon 8500 AIW BC (AGP), ATI Radeon 7500 QW (AGP/PCI),
    ATI Radeon 7500 QX (AGP/PCI), ATI Radeon 9000/PRO If (AGP/PCI),
    ATI Radeon 9000 Ig (AGP/PCI), ATI FireGL Mobility 9000 (M9) Ld (AGP),
    ATI Radeon Mobility 9000 (M9) Lf (AGP),
    ATI Radeon Mobility 9000 (M9) Lg (AGP),
    ATI Radeon 9100 IGP (A5) 5834,
    ATI Radeon Mobility 9100 IGP (U3) 5835, ATI Radeon 9100 PRO IGP 7834,
    ATI Radeon Mobility 9200 IGP 7835, ATI Radeon 9200PRO 5960 (AGP),
    ATI Radeon 9200 5961 (AGP), ATI Radeon 9200 5962 (AGP),
    ATI Radeon 9200SE 5964 (AGP),
    ATI Radeon Mobility 9200 (M9+) 5C61 (AGP),
    ATI Radeon Mobility 9200 (M9+) 5C63 (AGP), ATI Radeon 9500 AD (AGP),
    ATI Radeon 9500 AE (AGP), ATI Radeon 9600TX AF (AGP),
    ATI FireGL Z1 AG (AGP), ATI Radeon 9700 Pro ND (AGP),
    ATI Radeon 9700/9500Pro NE (AGP), ATI Radeon 9700 NF (AGP),
    ATI FireGL X1 NG (AGP), ATI Radeon 9600 AP (AGP),
    ATI Radeon 9600SE AQ (AGP), ATI Radeon 9600XT AR (AGP),
    ATI Radeon 9600 AS (AGP), ATI FireGL T2 AT (AGP),
    ATI FireGL RV360 AV (AGP),
    ATI Radeon Mobility 9600/9700 (M10/M11) NP (AGP),
    ATI Radeon Mobility 9600 (M10) NQ (AGP),
    ATI Radeon Mobility 9600 (M11) NR (AGP),
    ATI Radeon Mobility 9600 (M10) NS (AGP),
    ATI FireGL Mobility T2 (M10) NT (AGP),
    ATI FireGL Mobility T2e (M11) NV (AGP), ATI Radeon 9800SE AH (AGP),
    ATI Radeon 9800 AI (AGP), ATI Radeon 9800 AJ (AGP),
    ATI FireGL X2 AK (AGP), ATI Radeon 9800PRO NH (AGP),
    ATI Radeon 9800 NI (AGP), ATI FireGL X2 NK (AGP),
    ATI Radeon 9800XT NJ (AGP), ATI Radeon X600 (RV380) 3E50 (PCIE),
    ATI FireGL V3200 (RV380) 3E54 (PCIE),
    ATI Radeon Mobility X600 (M24) 3150 (PCIE),
    ATI FireGL M24 GL 3154 (PCIE), ATI Radeon X300 (RV370) 5B60 (PCIE),
    ATI Radeon X600 (RV370) 5B62 (PCIE),
    ATI FireGL V3100 (RV370) 5B64 (PCIE),
    ATI FireGL D1100 (RV370) 5B65 (PCIE),
    ATI Radeon Mobility M300 (M22) 5460 (PCIE),
    ATI FireGL M22 GL 5464 (PCIE), ATI Radeon X800 (R420) JH (AGP),
    ATI Radeon X800PRO (R420) JI (AGP),
    ATI Radeon X800SE (R420) JJ (AGP), ATI Radeon X800 (R420) JK (AGP),
    ATI Radeon X800 (R420) JL (AGP), ATI FireGL X3 (R420) JM (AGP),
    ATI Radeon Mobility 9800 (M18) JN (AGP),
    ATI Radeon X800XT (R420) JP (AGP), ATI Radeon X800 (R423) UH (PCIE),
    ATI Radeon X800PRO (R423) UI (PCIE),
    ATI Radeon X800LE (R423) UJ (PCIE),
    ATI Radeon X800SE (R423) UK (PCIE),
    ATI FireGL V7200 (R423) UQ (PCIE), ATI FireGL V5100 (R423) UR (PCIE),
    ATI FireGL V7100 (R423) UT (PCIE),
    ATI Radeon X800XT (R423) 5D57 (PCIE)

ATI Radeon X800 (R423) UH (PCIE) がありますね.というわけで /etc/X11/xorg.conf を次のように修正します.

Section "Device"
    Identifier  "ATI RADEON X800"
    Driver      "radeon"
    BusID       "PCI:4:0:0"
    ChipID      0x5548
    Screen      0
EndSection

相変わらず ChipID の変更は必要でしたが,これで startx すると,X のログには次のように記録されました.

(WW) RADEON: No matching Device section for instance (BusID PCI:4:0:1) found
(**) ChipID override: 0x5548
(**) Chipset ATI Radeon X800 (R423) UH (PCIE) found

OK! いい感じです.

今は DRI が無効の状態で起動しています.ログを見ると...

(WW) RADEON(0): Direct rendering not yet supported on Radeon 9500 and newer cards

がーん... マジですか.

March 8, 2005

[Linux] X.org on RADEON X800

X.org の ATi Radeon X800 ドライバは ATi から提供されています.

手順通りにインストールしたはいいものの,なぜか起動しません.

/var/log/Xorg.0.log の最後には次のように書いてありました.

(II) ATI Radeon/FireGL: The following chipsets are supported:
        RADEON 9000/9000 PRO (RV250 4966), RADEON 9000 LE (RV250 4967),
        MOBILITY FireGL 9000 (M9 4C64), MOBILITY RADEON 9000 (M9 4C66),
        RADEON 9000 PRO (D9 4C67), RADEON 9250 (RV280 5960),
        RADEON 9200 (RV280 5961), RADEON 9200 SE (RV280 5964),
        MOBILITY RADEON 9200 (M9+ 5C61), MOBILITY RADEON 9200 (M9+ 5C63),
        FireGL 8800 (R200 5148), RADEON 8500 (R200 514C),
        RADEON 9100 (R200 514D), RADEON 8500 AIW (R200 4242),
        RADEON 9600 (RV350 4150), RADEON 9600 SE (RV350 4151),
        RADEON 9600 PRO (RV360 4152),
        MOBILITY RADEON 9600/9700 (M10/M11 4E50), RADEON 9500 (R300 4144),
        RADEON 9600 TX (R300 4146), FireGL Z1 (R300 4147),
        RADEON 9700 PRO (R300 4E44), RADEON 9500 PRO/9700 (R300 4E45),
        RADEON 9600 TX (R300 4E46), FireGL X1 (R300 4E47),
        RADEON 9800 SE (R350 4148), RADEON 9550 (RV350 4153),
        FireGL T2 (RV350 4154), RADEON 9800 PRO (R350 4E48),
        RADEON 9800 (R350 4E49), RADEON 9800 XT (R360 4E4A),
        FireGL X2-256/X2-256t (R350 4E4B),
        MOBILITY FireGL T2/T2e (M10/M11 4E54), RADEON X300 (RV370 5B60),
        RADEON X600 (RV380 5B62), FireGL V3100 (RV370 5B64),
        MOBILITY RADEON X300 (M22 5460), MOBILITY FireGL V3100 (M22 5464),
        RADEON X600 (RV380 3E50), FireGL V3200* (RV380 3E54),
        MOBILITY RADEON X600 (M24 3150), MOBILITY RADEON X300 (M22 3152),
        MOBILITY FireGL V3200 (M24 3154), RADEON X800 (R420 4A48),
        RADEON X800 PRO (R420 4A49), RADEON X800 SE (R420 4A4A),
        RADEON X800 XT (R420 4A4B), RADEON X800 (R420 4A4C),
        FireGL X3-256 (R420 4A4D), MOBILITY RADEON 9800 (M18 4A4E),
        RADEON X800 XT Platinum Edition (R420 4A50), RADEON X800 (R423 5548),
        RADEON X800 PRO (R423 5549),
        RADEON X800 XT Platinum Edition (R423 554A),
        RADEON X800 SE (R423 554B), RADEON X800 XT (R423 5D57),
        FireGL V7100 (R423 5550), FireGL V5100 (R423 5551),
        MOBILITY RADEON X800 XT (M28 5D48),
        MOBILITY FireGL V5100* (M28 5D49), FireGL V5000 (RV410 5E48),
        RADEON X700 XT (RV410 5E4A), RADEON X700 PRO (RV410 5E4B),
        RADEON X700 SE (RV410 5E4C), RADEON X700 (RV410 5E4D),
        RADEON X700 (RV410 5E4F), RADEON 9100 IGP (RS300 5834),
        RADEON 9000 PRO/9100 PRO IGP (RS350 7834),
        MOBILITY RADEON 9000/9100 IGP (RS300M 5835)
(WW) fglrx: No matching Device section for instance (BusID PCI:4:0:1) found
(EE) No devices detected.

ありゃー,ちゃんと RADEON X800 (R423 5548) があるじゃないの,と思いつつ.lspci を実行すると...

0000:04:00.0 VGA compatible controller: ATI Technologies Inc: Unknown device 554f
0000:04:00.1 Display controller: ATI Technologies Inc: Unknown device 556f

あれ,デバイス ID が違う? ああ,そういえば AGP 版と PCI Express 版のチップって別物でしたっけ.

さて,どうしましょう... 最終的には vesa になるんでしょうか.

デバイス ID を誤魔化す方法を考えてみますか.

ありました.というわけで xorg.conf を編集します.

Section "Device"
    Identifier  "ATI RADEON X800"
    Driver      "fglrx"
    ChipID      0x5548
    Screen      0
EndSection

Section "Device"
    Identifier  "ATI RADEON X800 - Secondary"
    Driver      "fglrx"
    ChipID      0x5568
    Screen      1
EndSection

強調箇所が追加箇所です.こうやってデバイス ID を誤魔化して X を起動してみます.

... 残念.起動しません.しかし X のログには以下の内容が残ってました.

(WW) fglrx: No matching Device section for instance (BusID PCI:4:0:1) found
(**) ChipID override: 0x5548
(**) Chipset RADEON X800 (R423 5548) found

ちゃんと誤魔化せてます.ということは他の部分で死んでいるのでしょう.X のログをもう少し先まで読んでみます.

Symbol drmUnmap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmMap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_CheckMagic from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_QueryHwCaps from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol DRIGetDeviceInfo from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_AllocMemBufferFromTop from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_AllocMemBufferFromTop from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_GetMemInfo from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmMap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_AllocCache from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_AllocCache from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_InitPCIe from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_FreePCIe from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmUnmap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmUnmap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmMap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmUnmap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmUnmap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmMap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmUnmap from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol firegl_AGPAcquire from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpGetMode from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpVendorId from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpDeviceId from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpRelease from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpEnable from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpSize from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol drmAgpBase from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol DRIGetDrawableInfo from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetScreenIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetScreenIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetScreenIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetScreenIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetScreenIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetPixmapIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAAGetPixmapIndex from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!
Symbol XAACheckTileReducibility from module /usr/X11R6/lib/modules/drivers/fglrx_drv.o is unresolved!

ぎゃぁ,なんだこれは!

見当はついてます.おそらく X.org のドライバに同梱されていたカーネルの dri ドライバ(fglrx.ko)が必要なんでしょう.

modprobe fglrx でロードしようとすると,X.org 側のドライバ同様,"No such device" エラーが出てロードされないので放置してましたが... こちらもデバイス ID を誤魔化してロードする必要があるようです.

March 6, 2005

[雑記] カップヌードルキムチ

カップヌードルキムチCM,麺の声はめぐさんだったんですね... 気付きませんでした.

March 4, 2005

[PC環境改善] Mozilla Firefox の検索バーの幅

Firefox Help によると,userChrome.css に次の内容を書き加えると,検索バーの幅を変更できます.

#search-container, #searchbar { 
  -moz-box-flex: 400 !important; 
}

これで Mozilla Firefox の検索バーの幅が 400 ピクセルになります.

[Linux] 見えない改行

実行可能スクリプトの改行コードにハマりました.

zsh で実行しようとすると,次のようなエラーが出力されてスクリプトが起動しません.

zsh: そのようなファイルやディレクトリはありません: ./make.sh

次は bash から実行しようとした場合の結果です.

: bad interpreter: そのようなファイルやディレクトリはありません

bad interpreter ということなので,当該スクリプトを vim で開いて確認すると,#!/bin/bash と正しく書かれているように見えます.

エラーメッセージの行頭にコロンが来ているのは何故... ということを考えたとき,原因が判明しました.スクリプトの改行コードが CR+LF だったためでした.

vim ./make.sh
:set ff=unix
:wq

として改行コードを LF に変換して万事解決です.

March 3, 2005

[雑記] FPS

FPS しかプレイしていない人間がゲームを作るとしたら... やっぱり FPS?

[雑記] 炎の撃ちゲー

何時かの Tech Win 誌に吉田せめんとが作って載せたゲームです.マウスでクリックした一般人が爆ぜて死にます,プレイヤーはひたすら画面をクリックする,というものです.一般人,というあたりが Postal チックでなかなか.

指の力が鍛えられそうな逸品.私はプレイしてました.

これに似たゲームを技科大祭で出品したら...

[ゲーム] Unreal Tournament 2004

crackbrain 氏が落としたデモ版をプレイしてみました.いいですね.Instagib CTF を人間だけでやってみたいですね.pushretf さん,どうですか.

March 1, 2005

[雑記] REAL SIZE HARO PC CASE

ハロ型 PC ケースGoodwill 豊橋店 に陳列されておりました.

値段は正気の沙汰とは思えない 99,800 円.買う人居ますか?


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Tue Jan 09 03:21:44 JST 2007