カーネルを再構築してext3ファイルシステムが使えるようにして、ALSAでC-MEDIA CMI8738を鳴らす(debian woody編)

nogajun
nogajun

_

aptでカーネル関係のパッケージ、kernel-source-2.2.20, kernel-patch-ext3-2.2, kernel-packageと、ALSA関係のパッケージ、alsa-base, alsa-header(-0.5), alsa-source(-0.5), alsa-utils(-0.5), alsa-confを入れておきます。ALSAは2.2系のカーネルを使うので、0.5を入れました。

ついでにC-Media Sound Chip Driversから開発版ドライバももらってきてきました。(追記:C-MEDIA本家のほうがバージョンが新しかった)

カーネルコンパイル

/usr/src/にあるkernel-source-2.2.20.tar.bz2とalsa-driver-0.5.tar.gzを展開。カーネルソースにシンボリックリンクを張ります。

 # cd /usr/src/
 # tar xvfj kernel-source-2.2.20.tar.bz2
 # tar xvfz alsa-driver-0.5.tar.gz
 # ln -s kernel-source-2.2.20/ linux

展開したソースディレクトリに降りて、ext3パッチを当てます。

 # cd linux
 # ../kernel-patches/all/apply/ext3fs-2_2

CMI8738純正ドライバを展開してコピーします。(ALSAを入れるので本当はいらない)

 # tar xvfz cmpci-5.64.tar.gz
 # cp cmipci/* drivers/sound/
カーネル再構築の設定する。

ALSAを使うのでSound-->Sound card Supportはモジュールを選んでください。

 # make mrproper
 # make menuconfig[ config | xconfig ]
カーネルとモジュールのコンパイル。

カーネルパッケージのrevisionは、つけなくてもいいです。 make-kpkg modules_installでは、ALSAモジュールをコンパイルしています。

 # make-kpkg clean
 # make-kpkg --revision= binary
 # make-kpkg modules_image

一つ上のディレクトリにkernel-[header,source,image].debとalsa-modules-.debパッケージができてるのでインストールします。

 # cd ../
 # dpkg -i ./*deb

ALSAの設定

dev/ディレクトリに降りて、サウンドデバイスファイルを作ります。

 # cd /dev
 # /usr/share/doc/alsa-base/examples/snddevices
alsaconfを起動して設定の雛型を作り、書き換えます。

alsaconfは適当にサウンドカードを選んで終了します。 /etc/modules.confと/etc/alsa/modutils/0.5に設定が追加されているので、CMI8738用の設定に書き換えます。

 /etc/alsa/modutils/0.5
 -----
 # --- BEGIN: Generated by ALSACONF, do not edit. ---
 # --- ALSACONF verion 0.4.3b ---
 alias char-major-116 snd
 alias snd-card-0 snd-card-cmipci ← snd-card-cmipciに変更
 alias char-major-14 soundcore
 alias sound-slot-0 snd-card-0
 alias sound-service-0-0 snd-mixer-oss
 alias sound-service-0-1 snd-seq-oss
 alias sound-service-0-3 snd-pcm-oss
 alias sound-service-0-8 snd-seq-oss
 alias sound-service-0-12 snd-pcm-oss
 options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0
 options snd-card-cmipci snd_index=0 snd_id=CARD_0 snd_enable_midi=1 snd_enable_fm=1 ← ソースのREADMEを参考に必要なら追加
 # --- END: Generated by ALSACONF, do not edit. ---
 -----
/etc/modules.confも同じように部分が書き換えます。

/etc/alsa/alsa-base.confの startosslayer=false をtrueに変更して、サウンドを鳴らしたいユーザーをaudioグループに追加します /etc/groupと/etc/gshadowの audio: という部分があるので、コロンの後ろにユーザー名を書く。

/etc/init.d/alsa startでALSAを起動。

一旦ログアウトし、ユーザーでログインしなおして、 groups で自分がaudioグループに入ってるか確認。 alsamixerでボリュームをあげて音を鳴らしてみる。音がなれば成功。ならなければ、上の事を確認する。

ext3ファイルシステムの設定

  1. シングルユーザーで起動。
  2. 念のため、/(ルート)以外のパーティションをアンマウントする。
  3. e2fsck (デバイス名) でパーティションのチェックをする。

  4. tune2fs -j (デバイス名) でext3に変換する。

  5. 3〜4を変換したいパーティションに繰り返し、変換が終れば/etc/fstabのext2の部分をext3に変更する。
  6. 再起動。

_ nVIDIAのXFree86 4.x ドライバを使う

nVIDIAのドライバはwoody用のパッケージが古かったのでnVIDIAからもらってきました。(追記: もらってこなくても、sidには最新の物がある)

1. 適当な場所(今回は/usr/src/modules)に、NVIDIA_kernel-1.0-2313.tar.gzとNVIDIA_GLX-1.0-2313.tar.gzを展開。

2. NVIDIA_kernel-1.0-2313ディレクトリ、NVIDIA_GLX-1.0-2313ディレクトリそれぞれの場所で、make installする。

3. /usr/share/doc/NVIDIA_GLX-1.0/READMEのsec-03を参考に、/etc/X11/XF86Config-4を変更する。

 Section "Module"
 #       Load    "GLcore" ← コメントアウト
 #       Load    "dri"    ← コメントアウト
         Load    "glx"    ← 追加
 EndSection
 Section "Device"
 #       Driver  "nv"     ← コメントアウト
         Driver  "nvidia" ← 追加
 EndSection

4. Xを再起動する。

nVIDIAロゴが出れば成功。

_ Logitech QuickCam Express part #861037-00xxをつなぐ

姫路のあぷらいどでLogitechのUSBのQuickcamが2980円で売っていたので、買ってきました。 ぷらっとほーむの情報によると、つなげられるっぽいのでつないでみます。

うーん…

Logitech Quickcam Express USB Driverのdevelopment pageのリンクから行ったhttp://www.abo.fi/~jmunsin/hack.htmlのページによると、オレの買った(VenderId: 0x046d Logitech Inc. / ProductId: 0x0870)タイプは、どうやらDexxa Webcamというもので、ちょっとやっかいなものらしい。

  1. Logitech Quickcam Express USB Driver: http://qce-ga.sourceforge.net/
  2. Download page: http://sourceforge.net/project/showfiles.php?group_id=12924
  3. The dexxa webcam and New Quickcam expresses: http://qce-ga.sourceforge.net/dexxa.html
  4. Linux driver for Logitech Quickcam Express with HDCS1000/PB0100 image sensors: http://wwwbode.cs.tum.edu/~acher/quickcam/quickcam.html

ドライバをコンパイルしたりしたけど、ダメっぽい。

/dev/video*は存在するし、モジュールもあるのに。自分はvideoグループにいれてるのに。

 # lsmod
 Module                  Size  Used by
 mod_quickcam           29120   0  (unused)
 usb-uhci               18252   0  (unused)
 usbcore                49480   0  [mod_quickcam usb-uhci]
 videodev                2720   0  [mod_quickcam]
 NVdriver              819072  10  (autoclean)
 snd-seq-midi            3296   0  (autoclean) (unused)
 snd-seq-oss            26016   0  (unused)
 snd-seq-midi-event      2944   0  [snd-seq-midi snd-seq-oss]
 snd-seq                38672   0  [snd-seq-midi snd-seq-oss snd-seq-midi-event]
 snd-pcm-oss            16792   0  (unused)
 snd-pcm-plugin         14192   0  [snd-pcm-oss]
 snd-mixer-oss           4384   0  [snd-pcm-oss]
 snd-card-cmipci        15936   0
 snd-mixer              23656   0  [snd-mixer-oss snd-card-cmipci]
 snd-pcm                29792   0  [snd-pcm-oss snd-pcm-plugin snd-card-cmipci]
 snd-timer               8288   0  [snd-seq snd-pcm]
 snd-mpu401-uart         2432   0  [snd-card-cmipci]
 snd-rawmidi             9792   0  [snd-seq-midi snd-mpu401-uart]
 snd-seq-device          3860   0  [snd-seq-midi snd-seq-oss snd-seq snd-rawmidi]
 snd                    37024   1  [snd-seq-midi snd-seq-oss snd-seq-midi-event snd-seq snd-pcm-oss snd-pcm-plugin snd-mixer-oss snd-card-cmipci snd-mixer snd-pcm snd-timer snd-mpu401-uart snd-rawmidi snd-seq-device]
 soundcore               2852   6  [snd]
 nls_cp932              76480   0  (unused)
 agpgart                23772   2
 ide-scsi                7392   0
 scsi_mod               58888   1  [ide-scsi]
 8139too                13152   1

 $ xawtv &
 [1] 1132
 jun@knucles:~$ This is xawtv-3.65, running on Linux/i686 (2.2.20ext3)
 can't open /dev/video0: No such device
 v4l-conf had some trouble, trying to continue anyway
 v4l2: open /dev/video0: そのようなデバイスはありません
 v4l: open /dev/video0: そのようなデバイスはありません
 no video grabber device available
 [1]+  Exit 1                  xawtv

今日はヤメにするかぁ。