Ubuntu 11.10 32bit で kernel 3.0.0-16 に更新したら、ひどく不安定になったり kernel panic を起こして終了するようになったので 3.0.0-14 で動かすようにした。
apt のデータベースを壊したくないのでパッケージのアンインストールやダウングレード等はせず、grubにおいてマニュアルで Previous Linux versions から選択していたのだが面倒。
デフォルトで古いバージョンのカーネルを動作させる方法を調べるとここにあった。
/etc/default/grub の GRUB_DEFAULT でサブメニューまでのデフォルト値まで指定できる。
C/J Prog's Blog
C/Java/Linux/Androidについて調べたこと。
2012/03/01
2011/12/15
Ubuntu 11.10 autofs5/synax error in nsswitch の対処
autofs5 をインストールしたら次のエラーが出た。
syntax error in nsswitch config near [ synax error ]
ここにバグとして挙がっていた。
/etc/nsswitch に次のエントリーを追加すると直った。
automount: files
syntax error in nsswitch config near [ synax error ]
ここにバグとして挙がっていた。
/etc/nsswitch に次のエントリーを追加すると直った。
automount: files
2011/10/17
LinuxでLoadable Moduleをデバッグする
Linux のloadable moduleをデバッグしたときのメモ。
元ネタはO'Reillyの"Linuxデバイスドライバ"。
static linkしたモジュールはgdbでvmlinuxを読み込めばシンボル情報が読み込まれるが、loadable moduleは一手間かけないとシンボルが見えない。
ここでは uvcvideo モジュールをデバッグ対象とする。
まず、ターゲットとなるモジュールの.text, .bss, .dataのアドレスを得る。
続いてデバッガでシンボルを追加する。カレントディレクトリはLinuxカーネルソースのディレクトリ。
これで関数名を指定してブレークポイントを置いたり、ソースを追いながらステップ実行できるようになる。
もう少し楽にやる方法はないかと思う。
なお、.ko にデバッグ情報を残すにはモジュールのソースディレクトリにある Makefile に、
などと記述しておけば良い。
ついでにモジュールのみのビルド方法は、カーネルソースのトップディレクトリにおいて、"make M=[モジュールのディレクトリ]"。
元ネタはO'Reillyの"Linuxデバイスドライバ"。
static linkしたモジュールはgdbでvmlinuxを読み込めばシンボル情報が読み込まれるが、loadable moduleは一手間かけないとシンボルが見えない。
ここでは uvcvideo モジュールをデバッグ対象とする。
まず、ターゲットとなるモジュールの.text, .bss, .dataのアドレスを得る。
# cat /sys/module/uvcvideo/sections/.{text,bss,data}
0xf86c6000
0xf86d4560
0xf86d3000
続いてデバッガでシンボルを追加する。カレントディレクトリはLinuxカーネルソースのディレクトリ。
(gdb) add-symbol-file drivers/media/video/uvc/uvcvideo.ko 0xf86c6000 -s .bss 0xf86d4560 -s .data 0xf86d3000
これで関数名を指定してブレークポイントを置いたり、ソースを追いながらステップ実行できるようになる。
もう少し楽にやる方法はないかと思う。
なお、.ko にデバッグ情報を残すにはモジュールのソースディレクトリにある Makefile に、
EXTRA_CFLAGS += -O0 -g
などと記述しておけば良い。
ついでにモジュールのみのビルド方法は、カーネルソースのトップディレクトリにおいて、"make M=[モジュールのディレクトリ]"。
2011/10/15
カーネルをデバッグするためのGRUB2設定
Ubuntu 11.04でカーネルデバッグをしたときの設定です。
VMWare同士でシリアルポートを接続する方法で、baudrate 115200で接続。
* デバッグ対象のOS
- /boot/grub/grub.cfg のデバッグしたいカーネルの menuentry をコピーして、新しい menuentry を追加する。
- 追加した menuentry の "linux" のパラメータに "kgdboc=ttyS0,115200 kgdbwait" を追加する。以下は一例。
- 再起動時にSHIFTキーを押し続けてブートメニューを表示し、追加した menuentry に対応する項目を選ぶ。
* デバッガを起動するOS
GRUBとは関係ないが、ついでにデバッガ側の作業も記述しておく。
カーネルをビルドしたディレクトリに移動して、gdbを起動。以下のコマンドを入力。.gdbinit に記述しておいても良い。
# GRUB2とはバージョン1.9以降を指すそうだ。ややこしい...。
VMWare同士でシリアルポートを接続する方法で、baudrate 115200で接続。
* デバッグ対象のOS
- /boot/grub/grub.cfg のデバッグしたいカーネルの menuentry をコピーして、新しい menuentry を追加する。
- 追加した menuentry の "linux" のパラメータに "kgdboc=ttyS0,115200 kgdbwait" を追加する。以下は一例。
menuentry 'Ubuntu, with Linux 2.6.38.8 (debug)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root ba000129-5c3a-403c-9107-3d7649a4d051
linux /boot/vmlinuz-2.6.38.8 root=UUID=ba000129-5c3a-403c-9107-3d7649a4d051 ro kgdboc=ttyS0,115200 kgdbwait
initrd /boot/initrd.img-2.6.38.8
}
- 再起動時にSHIFTキーを押し続けてブートメニューを表示し、追加した menuentry に対応する項目を選ぶ。
* デバッガを起動するOS
GRUBとは関係ないが、ついでにデバッガ側の作業も記述しておく。
カーネルをビルドしたディレクトリに移動して、gdbを起動。以下のコマンドを入力。.gdbinit に記述しておいても良い。
(gdb) file ./vmlinux
(gdb) set remotebaud 115200
(gdb) target remote /dev/ttyS0
# GRUB2とはバージョン1.9以降を指すそうだ。ややこしい...。
2011/09/15
VMWare / Android x86 にadbで接続する
よく忘れるのでメモ。
* ゲストOS (Android)側
- IPアドレスを調べる。
# netcfg
(ifconfigではない)
* ホストOS側
- Androidデバイスに接続する。
# adb connect [ゲストOSのIPアドレス]
- 接続したデバイスを確認する。
# adb devices
デフォルトのポート番号は 5555。
ポート番号を例えば 5678 に変更したいときは、次のようにする。
* ゲストOS側
# setprop service.adb.tcp.port 5678
# kill `pgrep adbd`
* ホストOS側
# adb connect [ゲストOSのIPアドレス]:5678
* ゲストOS (Android)側
- IPアドレスを調べる。
# netcfg
(ifconfigではない)
* ホストOS側
- Androidデバイスに接続する。
# adb connect [ゲストOSのIPアドレス]
- 接続したデバイスを確認する。
# adb devices
デフォルトのポート番号は 5555。
ポート番号を例えば 5678 に変更したいときは、次のようにする。
* ゲストOS側
# setprop service.adb.tcp.port 5678
# kill `pgrep adbd`
* ホストOS側
# adb connect [ゲストOSのIPアドレス]:5678
2011/08/25
HTC Desireでb-mobile talking Fairを使う
現在 HTC Desire (X06HT, CyanogenMod 6.1.1) に b-mobile talking Fair のSIMを挿して使い始めた。
元々 b-mobile Fair を契約していたが、以下の理由により移行した。
- 携帯電話とスマフォを2台持ち歩くのが面倒だったので、1つにまとめたかった。
- 普段電話はそれほど使わないので、電話の基本料金も安く抑えたかった。
- b-mobile Fair 販売開始直後に契約して3ヶ月半、そろそろ更新の時期だった。b-mobile も更新のタイミングで talking Fair の製品発表をしたのだろう。
携帯は11年以上使っていたauの最安プランSS。au の解約料金と b-mobile talking Fair の初期費用を含めて計算したところ、私の場合は13ヶ月目以降に2台持ちよりも支払いが少なくなるようだ。ちょっと長いが1台になる利便性を考えると移行して良かったと思う。
# au の"誰でも割"解約料は11年目以降に安くなる。11年に達していなければ、移行費用を回収できる期間がさらに長くなるので、契約更新月まで待ったほうがトータルで安くなりそう。
# ちなみに b-mobile は契約期間1年未満で解約料10,500円が発生。
留守電等のオプションサービスは契約していない。
Android Marketから "圏外着信お知らせツール" をインストールして試したら、問題なく動作した。これは便利。
ところでちょっとしたことだが、b-mobile Fair から talking Fair の SIM に変更したら、電波強度のところに HSDPA の "H" が表示されるようになった。Fair でも通信速度を見ると HSDPA は有効になっていたので表示が変わったというだけ。
2011/06/02
Androidでb-mobile Fair 30日間の通信量
5/1-5/31の使用量: 81MB
外出した日の使用量は2MB〜8MBの範囲。
主な用途はメール・ブラウザ・RSSリーダー。
たまにアプリをダウンロード。
5月は休日に外出することが少なかったので、平均的な月より比較的通信量が低めだったと思われる。
この調子で行くと半分以上余る。
外出した日の使用量は2MB〜8MBの範囲。
主な用途はメール・ブラウザ・RSSリーダー。
たまにアプリをダウンロード。
5月は休日に外出することが少なかったので、平均的な月より比較的通信量が低めだったと思われる。
この調子で行くと半分以上余る。
登録:
投稿 (Atom)