Troubleshooting boot issues

m (Categorization)
(Cleanup and markup, still needs help)
Line 1: Line 1:
-
When trying to debug boot problems, the following (or something simillar) may help you.
 
-
 
You'll need bootmenu [http://fanoush.wz.cz/maemo/#initfs] with a telnet or ssh server installed. I'll suppose that a telnet server is used:
You'll need bootmenu [http://fanoush.wz.cz/maemo/#initfs] with a telnet or ssh server installed. I'll suppose that a telnet server is used:
Line 36: Line 34:
Don't forget that the watchdog will reboot the machine after a some time.
Don't forget that the watchdog will reboot the machine after a some time.
 +
 +
== Reporting reboot issues ==
 +
 +
When reporting strange booting/rebooting issues here is a list of information that is helpful in debugging:
 +
 +
* Output of <code>/proc/bootreason</code>
 +
* Output of <code>/var/lib/dsme/stats/lifeguard_resets</code>
 +
* Application running when the reboot occurred
 +
* State of device - idle with cover, idle without cover, turned off, in use, etc.
 +
* Mode of device - R&D or production mode
 +
* <code>dmesg</code> after a successful boot. This will show whether the OOM (out of memory) killer is reaping processes.
 +
 +
<code>/proc/bootreason</code> can have the following values:
 +
pwr_key Power key was pressed to switch on device
 +
32wd_to Watchdog reset - something was consuming too much CPU causing a watchdog reset, or kernel crashed
 +
sw_rst Software reset (critical system application crashing or being killed by the kernel OOM-killer)
 +
rtc_alarm An alarm woke up the device
 +
 +
You need to install XTerm or [[SSH]] to get a console. Then use <code>cat</code> to get the contents of a particular file.
 +
 +
You can create a <code>core-dumps</code> directory on the internal flash card, then crashing applications will leave core files in it. Use <code>file core.*</code> to find out the name of the crashed application. In theory, you can use <code>gdb</code> to get the stack trace, but without debug symbols it wont be any use. If you copy <code>*.core</code> files to your Linux PC you can use <code>gdb</code> see what program crashed, use <code>gdp -core core.xxxx</code> where <code>xxxx</code> is the number of the file.
 +
 +
And finally, file [http://bugs.maemo.org bugs] against the problem applications!
[[Category:Users]]
[[Category:Users]]
 +
[[Category:Development]]

Revision as of 07:38, 19 April 2009

You'll need bootmenu [1] with a telnet or ssh server installed. I'll suppose that a telnet server is used:

  • Boot Nxx0 and start the telnet/ssh server
  • Connect USB cable to PC
  • In your Linux PC run:
modprobe usbnet
ifconfig usb0 up
ip addr add dev usb0 192.168.10.2/24
telnet 192.168.10.1

(where 192.168.10.1 is the IP address of the Nxx0 device and 192.168.10.2 is an IP address in the same subnet to be used by your PC)

  • You're now connected. Load required modules for accessing your root partition (not all of them are required):
insmod /lib/modules/2.6.21-omap1/jbd.ko 
insmod /lib/modules/2.6.21-omap1/mbcache.ko 
insmod /lib/modules/2.6.21-omap1/ext2.ko 
insmod /lib/modules/2.6.21-omap1/ext3.ko
  • And mount the root partition (suppose it is /dev/mmcblk0p2):
mount /dev/mmcblk0p2 /mnt/new_root -t ext3 -o noatime
  • Now run:
cd /mnt/new_root
mount -obind /tmp /mnt/new_root/tmp
pivot_root . mnt/initfs

export OSSO_VERSION=$(cat /etc/osso_software_version)

  • And you're ready to manually boot it:
cd /etc/init.d
./rcS
./rc 2

This will do the whole bootup procedure (not exactly, but the interresting part) and you'll be able to watch all bootup messages.

Don't forget that the watchdog will reboot the machine after a some time.

Reporting reboot issues

When reporting strange booting/rebooting issues here is a list of information that is helpful in debugging:

  • Output of /proc/bootreason
  • Output of /var/lib/dsme/stats/lifeguard_resets
  • Application running when the reboot occurred
  • State of device - idle with cover, idle without cover, turned off, in use, etc.
  • Mode of device - R&D or production mode
  • dmesg after a successful boot. This will show whether the OOM (out of memory) killer is reaping processes.

/proc/bootreason can have the following values:

pwr_key 	Power key was pressed to switch on device
32wd_to 	Watchdog reset - something was consuming too much CPU causing a watchdog reset, or kernel crashed
sw_rst 	Software reset (critical system application crashing or being killed by the kernel OOM-killer)
rtc_alarm 	An alarm woke up the device

You need to install XTerm or SSH to get a console. Then use cat to get the contents of a particular file.

You can create a core-dumps directory on the internal flash card, then crashing applications will leave core files in it. Use file core.* to find out the name of the crashed application. In theory, you can use gdb to get the stack trace, but without debug symbols it wont be any use. If you copy *.core files to your Linux PC you can use gdb see what program crashed, use gdp -core core.xxxx where xxxx is the number of the file.

And finally, file bugs against the problem applications!