ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2009年6月7日日曜日

initrd.gz をマウントするには ...

kernelが cramfs に対応してる必要がある
- File systems --->
- Miscellaneous filesystems --->
- Compressed ROM file system support (cramfs)
- ROM file system support

その上で、gunzip initrd.gz
mount -o loop initrd /mnt

2008年9月15日月曜日

kgdb on linux-2.6.26

kernel 2.6.26には kgdbがマージされている。
以下のオプションを有効にしたkernelを作成。

Kernel hacking
KGDB: kernel debugging with remote gdb
KGDB: use kgdb over the serial console

grub menu.lstのkernelオプションに以下を追加。
kgdboc=ttyS1,9600 kgdbwait

qemu のserialで kgdbに接続するなら
オプションに -serial stdin -serial pty を
付けて起動し、ホスト側で gdb を起動

cd linux-2.6.26
gdb
(gdb) file vmlinux
(gdb) set remotebaud 9600
(gdb) break init_post
(gdb) target remote /dev/pts/0

で、kgdbに接続できる。

けど、gdbを Ctrl-c で止めると再接続できないよ ^^;

結局、qemu使った方がラク

qemu -s -kernel linux-2.6.26/arch/x86/boot/bzImage -h -initrd initrd-2.6.26.img da hda.img -append "root=/dev/VolGroup00/LogVol00"

(gdb) target remote localhost:1234

... gdbの接続待ってくれないのがイマイチですが...

moduleをデバッグする場合は...
linux起動後、ターゲットモジュールを insmod して、
cat /proc/modules で アドレスを確認。
...
ne2k_pci 8680 0 - Live 0xc8815000
...

gdb で symbol をロードすれば良い。
(gdb) add-symbol-file drivers/net/ne2k-pci.ko 0xc8815000
(gdb) break ne2k_pci_open

で、ifconfig eth0 X.X.X.X/24 とかすると break する。