
| USB
-IOの導入のためカーネルの再構築に挑戦しました。これはその時の私的メモです。いかんせん素人のやることなので参考程度に読んでください。 |
| ソースインストールの場合 # rpm -ivh kernel-2.6.14-1.1637_FC4.src.rpm # rpmbuild -bp --target=i686 /usr/src/redhat/SPECS/kernel-2.6.spec # cd /usr/src/redhat/BUILD/kernel-2.6.14 # cp -R -p linux-2.6.14 /usr/src/ # cd /usr/src/ # ln -s /usr/src/linux-2.6.14 /usr/src/linux # cd /usr/src/linux # cp configs/kernel-2.6.14-i686.config .config この時点でREADMEの内容にしたがってソースを変更し ておく # make mrproper # cp configs/kernel-2.6.14-i686.config .config # make oldconfig # make bzImage && make modules # make modules_install # installkernel 2.6.14-prep arch/i386/boot/bzImage System.map ドライバーの導入(Makefileに一部修正が必要で す。 $ make clean $ make $ cp morphy-usbio.ko /lib/modules/2.6.14-prep/ # /sbin/depmod -a |
| 出来てしまえばなんだそんな事だったのね...なのですが |
| rpmを作成してインストール ソースファイルはあらかじめ/usr/src/redhatにdownloadしておく # rpm -ivh /usr/src/redhat/kernel-2.6.14-1.1637_FC4.src.rpm← あくまでもパッチを作成するための展開です! # cd /usr/src/redhat/SPECS # cp kernel-2.6.spec kernel-2.6.spec-new ここで構築用のスクリプトを作成する # vi KOUCHIKU #!/bin/csh rm -r -f /usr/src/redhat/BUILD/kernel-2.6.14 rpm -ivh ../kernel-2.6.14-1.1637_FC4.src.rpm cp ./kernel-2.6.spec-new ./kernel-2.6.spec rpmbuild -ba --target=i686 kernel-2.6.spec specファイルを変更する # vi kernel-2.6.spec-new 最初に%{rhbsys}の部分を取る。 すると作成されるrpmの名前はオリジナルのものと同じになる。あえて、なぜそうするか?はyumでnvidiaのドライバーをインストール、アップデー ト出来なくなるためです。 %define release %(R="$Revision: 1.1637 $"; RR="${R##: }"; echo ${RR%%?})_FC4%{rhbsys} この辺に # # Patches 0 through 100 are meant for core subsystem upgrades # Patch5000: hid-core.patch ← 追加 Patch1: patch-2.6.14.1.bz2 Patch2: linux-2.6.14.2-pre.patch # Patches 100 through 500 are meant for architecture patches Patch100: linux-2.6-bzimage.patch −省略− この辺に # # Patches 5000 to 6000 are reserved for new drivers that are about to # be merged upstream # %patch5000 -p0 ← 追加 |
| 以下のようにパッチを作成します。前にも書いたのですが、なぜパッチが
必要となるか?ですが
展開したhid-core.c を修正後に rpmbuild -ba --target=i686 kernel-2.6.spec とやるとソースが再展開されて修正前の内容でrpmファイルが作成されてしまうからです。(この穴は大きかったです。) 参考リンク http://www.sip.eee.yamaguchi-u.ac.jp/kou/diff-patch.html |
| # cd /usr/src/redhat/SOURCES # cp /usr/src/redhat/BUILD/kernel-2.6.14/linux-2.6.14/drivers/usb/input/hid-core.c ./hid-core.c-new # vi ./hid-core.c-new { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },
という部分を探し出してその最後の部分に下のように追加してください。編集後にパッチを作成します。 # diff -c /usr/src/redhat/BUILD/kernel-2.6.14/linux-2.6.14/drivers/usb/input/hid-core.c \ /usr/src/redhat/SOURCES/hid-core.c-new > hid-core.patch ファイルの中身はこのようになります。 *** /usr/src/redhat/BUILD/kernel-2.6.14/linux-2.6.14/drivers/usb/input/hid-core.c 2006-01-29 15:52:40.000000000 +0900 --- hid-core.c.new 2006-01-29 16:00:51.000000000 +0900 *************** *** 1571,1576 **** --- 1571,1583 ---- { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_SITECOM_WSL, HID_QUIRK_IGNORE }, + { 0x1352, 0x0100, HID_QUIRK_IGNORE }, + { 0x0BFE, 0x1000, HID_QUIRK_IGNORE }, + { 0x0BFE, 0x1001, HID_QUIRK_IGNORE }, + { 0x0BFE, 0x1002, HID_QUIRK_IGNORE }, + { 0x0BFE, 0x1003, HID_QUIRK_IGNORE }, + { 0x12ED, 0x1003, HID_QUIRK_IGNORE }, + { 0, 0 } }; |
| いよいよrpmファイルを作成します。 |
| # cd /usr/src/redhat/SPECS # ./KOUCHIKU 3時間後に失敗がわかったらやり切れないので...rpm作成を始めてパッチの適応が終わったのが確認でき たら作成中でも問題ないので下のようにして内容を確認します。 # cat /usr/src/redhat/BUILD/kernel-2.6.14/linux-2.6.14/drivers/usb/input/hid-core.c |
| 成功すれば /usr/src/redhat/RPMS/i686
の下に kernel-2.6.14-1.1637_FC4.i686 が出来ているのでそれをインストールする。理屈がまだわからないにのですが... 次に こんな処理をしています。なぜかrpmファイルを作成したディクトリーをコピーしてリンクを張りドライバーをmakeしても動作しませんでした。 それで 下の様に再度 make bzImage && make modules して、そのディレクトリーにリンクを張った後に morphy-usbio.ko を make したら動作しました。うーん...2回試したけどやっぱりそうでした。 ドライバーのdownload先 http://web.mac.com/orangkucing/iWeb/Home/ |
| # cd
/usr/src/redhat/BUILD/kernel-2.6.14 # cp -R -p linux-2.6.14 /usr/src/ # cd /usr/src/ # ln -s /usr/src/linux-2.6.14 /usr/src/linux ←この内容を musbio の make 時に反映させる。 # cd /usr/src/linux # make mrproper # cp configs/kernel-2.6.14-i686.config .config この時点でREADMEの内容にしたがってソースを変更し ておく # make oldconfig # make bzImage && make modules この後にドライバーのコンパイルとインストールを行う。適当な場所に musbio-1.01-2.6.tar.gz を展開してMakefileの3行目を make -C /usr/src/linux SUBDIRS=`pwd` modules としておく。 $ cd /home/hoge/HDH4 $ wget http://homepage.mac.com/orangkucing/morphy/musbio-1.01-2.6.tar.gz $ tar xvzf musbio-1.01-2.6.tar.gz $ cd /home/hoge/HDH4/musbio-1.01-2.6 $ make # cp morphy-usbio.ko /lib/modules/2.6.14-1.1644_FC4/ # /sbin/depmod -a |
| Copyright©2005-2006 熊の巣 All Right Reserved. 管理人へメール |