2009年5月29日金曜日

NVIDIAドライバ

自分のビデオカードはGeForce3ですが、今まで汎用ドライバのまま使用していました。しかし、Debian5.0 (Lenny)でもNVIDIAのドライバがパッケージ(non-free)として用意されていることを知りインストールしてみました。
専用ドライバではビデオカードに最適化されているため描画速度がアップしたり、使用できる解像度やリフレッシュレートが増えます。
自分の環境ではビデオカードも大分古いこともあってか速度的には「多少スクロールが速くなったかな?」程度でしたが、リフレッシュレートは50hzから85hzに設定出来るようになったのでチラつきが減り見やすように思います。
上記の様にビデオ環境は少なからず改善しますが、導入には少々危険を伴います。ドライバのインストール自体は通常のパッケージと変わりは無いのですが、X Serverの設定ファイルである「xorg.conf」を弄る必要があるので最悪の場合X Window Systemが起動せずにGUIが使用出来なくなる恐れがあります。
以下にインストールと設定の手順を記しますが、実効する場合は慎重かつ、あくまで自己責任でお願いします。

インストールパッケージ

「nvidia-glx」または「nvidia-glx-legacy-96xx」
ドライバーはカード別に新旧あります。使用しているカードにあったものを選択します。
「Synapticパッケージマネージャ」で検索し、パッケージの説明を見れば対応カードを確認できます。
検索してもヒットしない場合は設定が「non-free」のパッケージに対応していないのでメニューの 設定>リポジトリ「Debian Software」で「DFSGに適合しないソフトウェア(non-free)」にチェックを入れます。

「nvidia-kernel-2.6.26-2-686」もしくは「nvidia-kernel-legacy-96xx-2.6.26-2-686」等。
使用しているドライバ及びカーネルに合ったものを選択します。

「nvidia-xconfig」
NVIDIAのカード、ドライバに合った「xorg.conf」を自動作成してくれます。

「nvidia-settings」
GUIで解像度等の設定が行えます。Macで言うとコントロールパネルです。

インストールが終了したら「xorg.conf」のコピーを取っておきます。これは設定を書き換えた後X Window Systemが起動しなくなった場合に設定を元に戻すために使用します。

# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.copy

次に「xorg.conf」の設定をします。「Root Terminal」もしくはsuで以下を実行します。
実行するとNVIDIAのカード、ドライバ向けに「xorg.conf」を自動で書き換え、バックアップファイル(xorg.conf.backup)を作成します。

# nvidia-xconfig

PCを再起動します。

再起動後、X Window Systemが起動せずにコマンドラインで起動してしまった場合はrootでログインし、コピーしておいた「xorg.conf.copy」で「xorg.conf」を元に戻しますが、その前に今の状態の「xorg.conf」をコピーしておくと後の解決に役立つと思います。

「nvidia-xconfig」で設定された「xorg.conf」をコピーします。
# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.nvidia

コピーしておいた「xorg.conf.copy」で「xorg.conf」を元に戻します。
# cp /etc/X11/xorg.conf.copy /etc/X11/xorg.conf

PCを終了します。
# shutdown -h now

これで環境は「nvidia-xconfig」を実行する以前の状態に戻ります。
他にも「vi」というコマンドライン上で使用出来るテキストエディタで「xorg.conf」を修正する方法もあります。
「vi」の使用方法は「vi コマンド」等で検索すれば詳しい解説ページを見つけられます。

ドライバのインストール及び設定が成功した場合は起動時にNVIDIAのロゴが表示されます。
「nvidia-settings」を使用すればGUIで解像度等を設定出来ますが、root権限が無いと設定を書き換えることが出来ないので注意が必要です。
一般ユーザの場合アプリケーションメニューからでなく「Root Terminal」もしくはsuで「nvidia-settings」を呼び出します。

# nvidia-settings (root権限が無いとxorg.confに設定を書き込めません)

「xorg.conf」はビデオカードの設定の他にキーボードの設定も含んでいます。「nvidia-xconfig」の実行によりキーボードの設定が変更されてしまうので「xorg.conf」を直接開いてコピーしておいた以前の設定からキーボードの設定部分をコピー&ペーストします。

$ gedit /etc/X11/xorg.conf.copy (コピーしておいた「xorg.conf」を開きます)

$ gksu gedit /etc/X11/xorg.conf (現在の「xorg.conf」を編集可能な状態で開きます)

自分の場合だと以下の部分を

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

下記のように書き換えました。

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
EndSection

参考までに自分の現在の「xorg.conf」を張っておきます。

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildd@ninsei) Tue Jun 24 18:11:48 UTC 2008

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildd@ninsei) Fri Sep 5 22:23:08 UTC 2008

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
EndSection

Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
EndSection

Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
EndSection

Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection

Section "ServerFlags"
Option "Xinerama" "0"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Sony"
HorizSync 31.0 - 79.0
VertRefresh 56.0 - 85.0
Option "DPMS"
EndSection

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce3"
EndSection

Section "Screen"

# Removed Option "metamodes" "1152x864_85 +0+0"
# Removed Option "metamodes" "1280x960 +0+0"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
Option "TwinView" "0"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "metamodes" "1152x864_85 +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

2009年5月21日木曜日

ファイルシステム及びサウンドのトラブル

udftoolsを使いDVD-RWやCR-RWのパケットライトを可能にしようと色々弄っていたところ、システムが不安定になり何度か再起動しているうちに「fsck」のチェックでエラーが出てしまい立ち上がらなくなってしまいましたorz
どうしたものかとしばし考えて、別パーティションに残しておいたDebian4.0(etch)を立ち上げ、端末から「fsck」を実効しました。
「fsck」はLinuxならば他のディストリビューションでも使えるはずなので、HDに別のLinux環境が無い場合はLiveCDを利用するのも一つの手だと思います。

# fsck /dev/hda4(修復するデバイスはアンマウントしておきます)

色々メッセージが表示されy/nを聞いてきますが、手動で修復するスキルも無いので取り合えず全てyを選択。終了後再起動するとどうにかDebian5.0 (Lenny)が立ち上がってくれました。一見問題ないように思えたのですが、やはりダメージを受けていたらしく音が出なくなってしまいました(つД`)
試行錯誤の末なんとか音も出るようになったのですが、どの作業が有効だったのか良く分からないので行ったことを一通り書き留めておきます。

まず「alsa-utils」「alsa-base」等alsa関連を再インストール。
次いでサウンドカードとモジュールを確認。
$ cat /proc/asound/cards
$ cat /proc/asound/modules

デバイスファイルを再構築。
# /usr/share/alsa-base/snddevices

サウンドカードを指定。
# alsaconf

「音量コントロールが強制終了しました」と表示されますが設定後に再読み込みをクリック。
システム>設定>サウンド サウンド「ソフトウェアによるサウンド・ミキシング(ESD)を有効にする」のチェックを外す。
PCを再起動後「音量コントロール」で音量とミュートの設定をします。「Master」「PCM」がミュートになっていると音が出ません。
システム>設定>サウンド サウンド「ソフトウェアによるサウンド・ミキシング(ESD)を有効にする」のチェックを入れ直します。
PCを再起動。

alsa関連を再インストール、再設定した形ですが、自分の場合は以上で復旧することが出来ました。

2009年5月14日木曜日

DebianでのRAWデータ現像

デジタルカメラの記録形式にはJPEGが多く使用されていますが、一眼レフ等ではRAWデータという「生の画像データ」で保存することが出来ます。フィルムカメラで例えるならばRAWデータがネガでJPEGがプリントされた写真といったところでしょうか。
通常デジタルカメラは内部でRAWデータを現像してJPEGに変換しているわけですが、これをRAWデータで記録することによってパソコン上で自分好みに現像することが出来ます。
RAWデータの利点は画像調整の際に劣化が無いこと、JPEGの各色8bitに対して各色12bitのため諧調がより滑らかに再現される等の利点があります。反面、現像には専用のソフトが必要な他、データが大きくなる(自分の使用してるNikon D40ではJPEGに対して二倍強の大きさになります)といった短所もあります。データの大きさに関しては大容量メモリーカードの登場やパソコンの性能向上もあり、最近ではあまり支障は無いと思いますが、問題は現像ソフトの方です。と言うのもRAWデータは各メーカー、更にはカメラごとに違います。このためRAWデータを扱えるソフトであっても自分のカメラに対応していなければ開くことは出来ません。各メーカー自社カメラに対応した現像ソフトを用意していますが、残念ながらWindowsまたはMac OSX用です。
しかしながらメーカー純正以外でもRAWデータを扱えるソフトは幾つかあります。Debian5.0 (Lenny)でも「ufraw」というソフトがあります。
「ufraw」はRAWデータを現像しPPM、JPEG、PNGに書き出すことが出来ます。もちろん現像の際に露出、色調等の調整をすることが可能です。対応しているカメラはHPで確認できます。ただしこれは最新版での対応状況なのでDebian5.0 (Lenny)での「ufraw」のバージョン(0.13-1+b2)では最近のカメラは対応していないかもしれません。
自分の使用しているNikon D40は発売されて二年以上経過しているので問題なく現像することが出来ました。各操作は分かりやすく過去に画像編集ソフトを触ったことがあれば迷うことは無いと思います。
自分は提案パッケージの「gimp-ufraw」という「GIMP」用のプラグインもインストールしました。「ufraw」は単体でも動作しますが、このプラグインによって「GIMP」と容易に連系を取ることが可能となります。
「ufraw」によりRAWの現像環境も整い、丁度、友人から8GBのカードを貰ったのでこれからはRAWでの撮影も気軽に行えそうです(^0^)
ちなみに貰ったカードはTranscend SDHC 8GB CLASS6(TS8GSDHC6)でフォーマットを確認したところ初期状態でFAT32、カメラで初期化後もFAT32でした。パソコンでマウントすると容量が7.5GBと表示されますが、これはメモリーカードメーカーは1000Bを1KBとして表記しているのに対しOS側は1024Bを1KBとしているためです。
Nikon D40ではRAWで約1000枚、JPEG FINE Lサイズでは約2200枚撮影することが出来ます。速度的にもCLASS6だけあって自分としては満足のゆくレベルです。

2009年5月5日火曜日

zipファイルの文字化け

他環境からDebianにファイルを持ってきた場合、文字コードの違いから日本語ファイル名が文字化けすることがあります。対処法としては以前このブログでも紹介した「convmv」を使い変換する方法があります。しかし、zipファイルから解凍したファイルには「convmv」で変換しても文字化けが直らないものがあります。
通常Debianでzipファイルを解凍するには「unzip」を使用します。「unzip」は解凍の際に文字コードを自動的に変換する機能を有していてるのですが、これが曲者で強制的にラテン語ベースで変換を行ってしまうらしいのです。これにより日本語のファイル名が破損し「convmv」で変換しても文字化けが直らないのです。当然これはバックエンドとして「unzip」を使用している「書庫マネージャー」(File-Roller)でも起こります。
対処法としては「unzip」のソースを書き換えて文字コードを変換する機能を無効にする等があるようですが、自分には些か敷居が高いです(´・ω・`)
色々考えた末に「unzip」の問題なのだから「unzip」以外でzipファイルを解凍すればいいことに気づきました。そこで最初に「p7zip-full」を試してみましたがやはり上手く生きません。更に色々と調べてようやくたどり着いたのが、jarコマンドを使う方法です。
jarはJavaARchiveと言ってJava環境で使用されるファイル形式ですが、実際はzipファイルです。
Debian5.0 (Lenny)ではJava環境があらかじめインストールされているのでjarコマンドをそのまま使用することが出来ます。

$ jar xvf zipファイルを指定

解凍後に $ convmv -r -f sjis -t utf8 ディレクトリをフルパスで指定 --notest で変換

以上で見事文字化けが直りました\(> <)/
この「unzip」による日本語ファイル名の不具合は周知の事実のようで、姉妹ディストリであるUbuntuでは既に「unzip」の修正版があるようです。zipファイルは普及率も高く使用する機会も多いのでDebianでも早く修正されることを期待しています。