2012/03/01

GRUBでサブメニューのデフォルトエントリを指定する

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 でサブメニューまでのデフォルト値まで指定できる。

2011/12/15

Ubuntu 11.10 autofs5/synax error in nsswitch の対処

autofs5 をインストールしたら次のエラーが出た。


  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のアドレスを得る。

# 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" を追加する。以下は一例。


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

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月は休日に外出することが少なかったので、平均的な月より比較的通信量が低めだったと思われる。
この調子で行くと半分以上余る。