Workshops (Sa, 06.05.2006)
Linux Kernel debugging over Firewire
von Bernhard Kaindl (SUSE Linux Products GmbH / Novell)
Samstag, 06.05.2006, Raum 1A-3, 15:00-16:00 Uhr
FireWire (IEEE1394) allows system memory read/write access, which makes it possible get a post-mortem memory image of crashed systems, without complicated setup. It allows also manipulation of a running system, but remotely, without assistance by system software - system software only has to do a one-time initialisation of hardware (the OHCI1394 physical response unit).
Topics of the talk:
- Introduction to FireWire
- Like USB? - Not at all!
- Where is Firewire used?
- Applicable standards
- Speed compared to other transfer methods
- Linux driver support
- Technical Details of IEEE1394
- Transfer methods
- Adressing devices on the bus
- OHCI-1394 spec
- physical DMA
- Introduction to remote Kernel debugging using kgdb
- gdb remote protocol
- gdb backends: gdbserver and gdb stubs
- kgdb - gdb backend in the kernel
- Linux Firewire programming related to physical DMA
- raw1394 module for raw IEEE1394 bus access with libraw1394 API
- fwmem - kernel device driver for DMA using /dev/mem-like interface
- firescope - principle of operation
- gdb stub for firewire - fireproxy
- kgdb I/O module for Firewire - kgdbomem
- Live Demonstratrions
- Retrieving the kernel message buffer (dmesg) from a remote system over Firewire
- Analyzing global kernel data using gdb using physical DMA (listing tasks with symbolic backtraces)
- Retrieving the CPU context (including stack data) with kgdb using Firewire
Über den Autor Bernhard Kaindl:
Bernhard Kaindl was born 1971 in Austria. His experience with information technology started 1986 with a Zilog Z80-based home computer, where he used a book on machine programming to write a small machine-language program (he had no assembler) to add virtual consoles to the system. Working in a pulp and paper mill on the maintenance of industrial automation systems and feedback-control systems for process control of the mill, he used the earned money to adopt early i386-based computers and taking programming courses after work.
Following, he became a software developer and system engineer in local companies which developed and deployed Unix systems before he heard of Linux and was a user of a local fidonet mailbox where the sysop was so kind to send him a DAT tape with one of the Linux first distribution on it. It was called the Softlanding Linux System 1.01 and it is said to have been the first comprehensive Linux distribution. After adopting GNU/Linux, the Internet became the next topic for him, so he used a modern 14.400 baud modem and a book on TCP/IP to hook his computers up to the Internet using this distribution.
This allowed contributing patches to the Linux kernel, e.g. the update of the pcxx driver for microprocessor-driven multiport serial cards and a trivial fix which made pre-emptive scheduling work again where it was broken during the Linux-1.3 development kernel series. He also developed the concept and prototype for converting the initial kernel configuration scripts into a menu oriented configuration system while the initial configuration system can still stay in place. The menu oriented kernel configuration tools make xconfig (now succeeded as well) and make menuconfig, both implemented by other developers were the final tools resulting from this development.
In 1998, he moved to Nürnberg and joined "System- und Software Entwicklung GmbH", better known as S.u.S.E., where he works on maintaining the distribution since. He has maintained the area of dial-up networking using Modems and ISDN adapters using wvdial, ADSL using PPP over Ethernet (used in Germany) and PPP over ATM (used in other countries).
Subsequently, he bootstrapped and maintained the SuSE distribution on the S/390 mainframe architecture up to its modern 64-bit incarnation, most commonly called zSeries today. Having been one of the first mainframe distributions, it is still the distribution of choice for many mainframe Linux adopters. Recently, he has started working with Linux on AMD64(x86_64)
