11.04のアップデートマネージャからサクっとアップグレード。
環境的には余り変化が無い。
Skypeがタスクバーに入らなくなるとか、conky のcoretempのパラメータを書き換えないと動かないとか、日本語フォントが見にくいとかあるけど、今までとほぼ変わりなく使えている。
kernel が 3.0 になったので、dkms 関係をキッチリしとかないといけない。
noizumi@purplecat:~$ dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 2.6.38-8, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed
cdc-acm はFOMAの携帯電話を繋ぐドライバで、このあたりのネタをdkmsで設定して、カーネルがアップデートされても自動的にドライバを再構築するようにしてあるのだが、kernel 3.0 でもドライバが勝手に入ってるな。
しかし、元ソースがkernel 2.6.38-8から取ってきたcdc-acmなのと、diff 取ってみたら2.6.38と3.0.0の cdc-acm.c は変更されているので、3.0.0のcdc-acmにする。
kernel 3.0に入ったカーネルドライバを削除
# dkms remove -m cdc-acm -v 2.6.38-8 -k 3.0.0-12-generic
——– Uninstall Beginning ——–
Module: cdc-acm
Version: 2.6.38-8
Kernel: 3.0.0-12-generic (x86_64)
————————————-
Status: Before uninstall, this module version was ACTIVE on this kernel.
cdc-acm.ko:
– Uninstallation
– Deleting from: /lib/modules/3.0.0-12-generic/updates/dkms/
– Original module
– No original module was found for this module on this kernel.
– Use the dkms install command to reinstall any previous module version.
depmod………..
DKMS: uninstall Completed.
前の環境でlinux-sourceパッケージをインストールしてあったので、アップグレードしたら、 /usr/src/linux-source-3.0.0.tar.bz2 が既にあった。
$ sudo su –
# cd /usr/src
# sudo tar xvjf linux-source-3.0.0.tar.bz2
で、もりっと展開。
応用開発さんのドライバを取ってくる
# wget “http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fcdc-acm%2F33631%2Fcdc-acm-v026.zip” -O cdc-acm-v026.zip
# unzip cdc-acm-v026.zip -d cdc-acm-3.0.0-12
Archive: cdc-acm-v026.zip
inflating: cdc-acm-3.0.0-12/cdc-acm.h
inflating: cdc-acm-3.0.0-12/cdc-acm.c
inflating: cdc-acm-3.0.0-12/Makefile
inflating: cdc-acm-3.0.0-12/readme.txt
さっき展開したソースから、cdc-acm.c cdc-acm.h をコピー
# cp linux-source-3.0.0/drivers/usb/class/cdc-acm.* cdc-acm-3.0.0-12
cdc-acm.c.patch
cdc-acm.h.patch
このファイルをそれぞれ適用
# cd cdc-acm-3.0.0-12
# patch <cdc-acm.c.patch.txt
patching file cdc-acm.c
Hunk #1 succeeded at 66 with fuzz 1 (offset -35 lines).
Hunk #2 succeeded at 876 (offset -93 lines).
Hunk #3 succeeded at 886 (offset -93 lines).
Hunk #4 succeeded at 933 (offset -93 lines).
Hunk #5 succeeded at 999 (offset -89 lines).
Hunk #6 succeeded at 1277 with fuzz 2 (offset -77 lines).
Hunk #7 succeeded at 1632 (offset -76 lines).
# patch <cdc-acm.h.patch.txt
patching file cdc-acm.h
Hunk #2 succeeded at 147 (offset -11 lines).
Makefile の先頭行をコメントアウト
#KERNEL_VERSION := uname -r
dkms.conf を用意してやる
PACKAGE_NAME=”cdc-acm”
PACKAGE_VERSION=”3.0.0-12″
CLEAN=”make clean”
MAKE[0]=”cd ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build; make KERNEL_VERSION=${kernelver}”
BUILT_MODULE_NAME[0]=”cdc-acm”
BUILT_MODULE_LOCATION[0]=””
DEST_MODULE_LOCATION[0]=”/kernel/drivers/usb/class”
DKMSに追加
# dkms add -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic
Creating symlink /var/lib/dkms/cdc-acm/3.0.0-12/source ->
/usr/src/cdc-acm-3.0.0-12
DKMS: add Completed.
buildしてみる
# dkms build -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic
Kernel preparation unnecessary for this kernel. Skipping…
Building module:
cleaning build area….
cd /var/lib/dkms/cdc-acm/3.0.0-12/build; make KERNEL_VERSION=3.0.0-12-generic….
cleaning build area….
DKMS: build Completed.
install してみる
# dkms install -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic
cdc-acm:
Running module version sanity check.
– Original module
– Installation
– Installing to /lib/modules/3.0.0-12-generic/updates/dkms/
depmod….
DKMS: install Completed.
# dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 3.0.0-12, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed
2.6.38のカーネル使う時は2.6.38用、3.0.0のカーネル使う時は3.0.0用のcdc-acm.koが使われるので運用はこれで良いが、よく考えたら、カーネルアップデートが掛かったら、両方共 cdc-acm.ko だからマズいなあ…
3.0.0 カーネルはわしの使用用途では特に問題は出てないし、2.6.38カーネル消すか。