カーネル再構築

2.4.26-pre2

Red Hat Linux 9 のカーネルを 2.4.26-pre2 に.

kernel.org から linux-2.4.25.tar.bz2 と 2.4.26-pre2 へのパッチ patch-2.4.26-pre2.bz2 をダウンロード.

本体を展開し,シンボルリンクを新しく張り直して,パッチをあてる.

# cd /usr/src
# rm linux
# rm linux-2.4
# tar jxvf linux-2.4.25.tar.bz2
# mv linux-2.4.25 linux-2.4.26-pre2
# ln -s linux-2.4.26-pre2 linux
# ln -s linux-2.4.26-pre2 linux-2.4
# cd linux-2.4.26-pre2
# bzcat patch-2.4.26-pre2.bz2 | patch -p1

ELSA EX-VISION 500TV を使うために, bytesex.org で配布されている v4l2 のパッチ patch-2.4.25-rc1-kraxel.gz をあてる.

# cd /usr/src/linux
# zcat patch-2.4.25-rc1-kraxel.gz | patch -p1

なお,カーネルにパッチをあてるのではなく,カーネルをコンパイルした後で video4linux-20040305.tar.gz を追加する方法を試してみたが, saa7134.oUnresolved Symbols を吐いてモジュールが組み込めなかった.

このままだと TV から音が出なかったり, プログラムを終了しても音が出たままだったりと問題があるので, Linux でビデオ録画 の 601 と 641 に従って saa7134-cards.c を修正する.

# cd /usr/src/linux/drivers/media/video
# cp saa7134-cards.c saa7134-cards.orig.c
# vi saa7134-cards.c
# diff -c saa7134-cards.orig.c saa7134-cards.c
*** saa7134-cards.orig.c        2004-03-13 18:32:50.000000000 +0900
--- saa7134-cards.c     2004-03-13 18:34:34.000000000 +0900
***************
*** 496,509 ****
                },{
                        .name = name_tv,
                        .vmux = 8,
-                       .amux = TV,
-                       .tv   = 1,
-               },{
-                       .name = name_tv_mono,
-                       .vmux = 8,
                        .amux = LINE2,
                        .tv   = 1,
                }},
          },
        [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
                  .name           = "ASUS TV-FM 7134",
--- 496,508 ----
                },{
                        .name = name_tv,
                        .vmux = 8,
                        .amux = LINE2,
                        .tv   = 1,
                }},
+               .mute = {
+                       .name = name_mute,
+                       .amux = TV,
+               },
          },
        [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
                  .name           = "ASUS TV-FM 7134",

ついでに UHF の受信も可能にするため, Linux でビデオ録画 の 918 に従って tuner.c も修正. しかし,私の環境ではこの修正をしても UFH は受信できなかった.

# cp tuner.c tuner.orig.c
# vi tuner.c
# diff -c tuner.orig.c tuner.c
*** tuner.orig.c        2004-03-13 18:34:52.000000000 +0900
--- tuner.c     2004-03-13 18:35:17.000000000 +0900
***************
*** 229,235 ****
            16*170.00, 16*450.00, 0x01,0x02,0x08,0x8e,732},

        { "HITACHI V7-J180AT", HITACHI, NTSC,
!         16*170.00, 16*450.00, 0x01,0x02,0x00,0x8e,940 },
        { "Philips PAL_MK (FI1216 MK)", Philips, PAL,
          16*140.25,16*463.25,0x01,0xc2,0xcf,0x8e,623},
        { "Philips 1236D ATSC/NTSC daul in",Philips,ATSC,
--- 229,235 ----
            16*170.00, 16*450.00, 0x01,0x02,0x08,0x8e,732},

        { "HITACHI V7-J180AT", HITACHI, NTSC,
!         16*170.00, 16*450.00, 0x01,0x02,0x08,0x8e,940 },
        { "Philips PAL_MK (FI1216 MK)", Philips, PAL,
          16*140.25,16*463.25,0x01,0xc2,0xcf,0x8e,623},
        { "Philips 1236D ATSC/NTSC daul in",Philips,ATSC,

次に make menuconfig などを利用して .config を作成. Video4Linux のためには以下を有効にしておく.

CONFIG_I2C=m
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_SAA7134=m

他の項目は適当に答えておく.

.configを作成したら,コンパイル & インストール.

# make dep clean bzImage modules modules_install install

make install/boot/grub/grub.conf に新しいカーネルの設定が追加されるが,

root=LABEL=/

を削除する.これを残しておくと,カーネルが起動時に / パーティッションを発見できずにカーネルパニックを起こしてしまう.

/etc/modules.conf に Video4Linux の設定をする.

alias char-major-81 videodev
alias char-major-81-0 ssa7134
options tvaudio tda9840=0 ta8874z=1
options tuner type=40
options saa7134 card=15

これで xawtv などのプログラムを起動時に 自動でモジュールを組み込んで欲しいのだが, うまくいかないので OS 起動時に強制的に組み込む. /etc/rc.d/rc.local に以下を追加.

modprobe tvaudio tda9840=0 ta8874z=1
modprobe saa7134 card=15
chmod 666 /dev/video0 /dev/audio /dev/dsp /dev/mixer

参考リンク


viusulce@hotmail.com
Last modified: Mon Mar 29 22:30:32 JST 2004