スマホの第3勢力としてtizenとfirefoxOSの情報がちらほらでてきているが、いまのところ様子を
みたい。下手をするとwindows phoneのようになりそうな気がする。
とりあえず、firefoxで動作するfirefoxエミュレータをインストールしてみたが、いまのところ開発意欲はそこまでわかなかった。
どちらの端末も今年中には発売される。

tizenはNTTドコモ、サムソンがサポート
firefoxOSはkddiがサポート。


・tizen sdk
https://developer.tizen.org/downloads/tizen-sdk

・firefox OS
http://www.mozilla.org/en-US/firefox/partners/


・slideshareにあるわかりやすい解説(firefoxOS)
http://www.slideshare.net/dynamis/firefox-os-html5j

・slideshareにあるわかりやすい解説(tizen)
http://www.slideshare.net/moguriso/kansai-opensource-20121110#btnLast

・その他の情報
https://event.atmarkit.co.jp/events/d559c6b95217176d7998a67c915d93c7/atmarkit_report
http://gihyo.jp/news/report/2013/01/3001

とりあえず、kdumpを有効にしてvmcoreが作成された場合
まず最初に一般情報のみ取得してから、各構造体のアドレスを参照していく。


[一般情報の取得]
# crash /boo/systemtap.xxx /usr/lib/debug/xxx.xx/vmlinux vmcore

crashにはいったら任意のフォルダにマシン情報を保持する.は任意のpid

crash> bt -f >/tmp/bt-f
crash>bt -f > /tmp/bt-f-pid
crash>kmem -v >/tmp/kmem-v
crash>kmem -V >/tmp/kmem-V
crash>kmem -s >/tmp/kmem-s
crash>ps -u >/tmp/ps-u
crash>ps -k >/tmp/ps-k
crash>ps -G >/tmp/ps-G
crash>sig >/tmp/sig-pid
crash>files >/tmp/files-pid
crash>task >/tmp/task
crash>vm >/tmp/vm
crash>foreach -bt >/tmp/foreach-bt
crash>foreach -vm >/tmp/foreach-vm
crash>foreach files >/tmp/foreach-files
crash>foreach -R files /opt >/tmp/foreach-files-opt

上記の情報を取得後,各構造体の値を確認していく。
crash>mount
crash>net
crash>log

crash>mount super_block xxxxxx (mountで表示されるアドレス)

kdumpを有効にしてlinuxでdumpを取得する。

[ネットワークダンプの設定]

1.sshでcrash用のユーザをリモートホスト上で作成する
# adduser crash
# passwd crash (パスワードは任意)

2.crashを取得するサーバの/etc/kdump.confの設定変更
以下の設定を追加。
それぞれkdumpが出力したダンプをリモートホスト上の/tmp/crashに保存する。

net crash@xx.xx.xx.xx
path /tmp/crash

3.kdumpの設定の更新と確認
# /etc/init.d/kdump propagate

# /etc/init.d/kdump restart

# cat /sys/kernel/kexec_crash_loaded


4.リモートに保存できるかテストする
# echo c >/proc/sysrq-triger

src.rpmやkernelソースをブラウザで参照できるサイト

http://rhkernel.org
http://lxr.linux.no/
http://opensource.apple.com/source
http://www.sourcecodebrowser.com/

sdデバイスとsgデバイスの相互確認


sdデバイスがsgのどれに対応するか調べるにはsg_map26コマンドを使う。
sg_mapコマンドではだめ。


使い方
# sg_map26 /dev/sda
# sg_map25 /dev/sg3

で相互に変換可能。sgデバイスとsdデバイスではkernel内部でも処理が違うため注意する。

sgデバイスにioctlを発行したときはエラーになる。
sdデバイスにioctlを発行したときはエラーにならない。









・sdにたいしてioctlをコールしたときのkernel内部の関数コール
sd_ioctl
->scsi_cmd_ioctl
-->sg_io
--->blk_get_request

・sgにたいしてioctlをコールしたときのkernel内部の関数コール
sg_ioctl
->sg_new_write
-->sg_common_write
--->sg_stat_req
---->blk_get_request


100行目から150行目を取り出すためのawkの1ラインコマンド。
syslogで重点的にチェックしたい時間帯があればこのコマンドを
別ファイルにリダイレクトとかして調査する。

awk 'NR>=100 && NR<=150 {print $0}' < syslog

システムコールからlinuxのkernelが動作している部分の辿り方


1.man xxxx
で調べたい関数がシステムコールであることと、引数の数を確認する。

2.「SYSCALL_DEFINE」でlinux kernelのソースを検索する。
はシステムコールの引数の数。


システムコールがkernel内部でどのように処理をしているか調べたい
ときに重宝する。また、sys_xxx ->do_xxxというような流れでコール
されていない関数もあるので注意する。

About