Recovering from bad kernel flash

From PlugWiki
Jump to: navigation, search

The initial version of this article was an adaption of this blog entry taken with permission from the author.

After having flashed a "bad" kernel onto the sheevaplug that doesn't boot anymore, not all is lost. The following is extracted from various entries in this Wiki. It assumes that the U-Boot boot loader is still working.

On another Linux machine, set up a TFTP server:

   sudo mkdir /tftpboot
   sudo chmod 777 /tftpboot
   sudo apt-get install tftpd

Edit <tt>/etc/inetd.conf</tt>:

   tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot

Restart the TFTP server:

   sudo /etc/init.d/openbsd-inetd restart

Put a "good" (i.e. usually older) kernel uImage file into <tt>/tftpboot</tt>. You can get such an image e.g. from here.

Connect to the sheevaplug using the serial console:

   sudo modprobe ftdi_sio vendor=0x9e88 product=0x9e8f
   screen /dev/ttyUSB1 115200

(Or use <tt>/dev/ttyUSB0</tt>, this depends.)

Reset the sheevaplug by pushing a needle or paper-clip into the small hole near the serial port connector. Stop the boot sequence by pressing a key.

Connect the sheevaplug to the ethernet network. Set own and the TFTP server IP address:

   setenv ipaddr 192.168.1.77
   setenv serverip 192.168.1.2

Load the kernel image:

   tftpboot 0x2000000 sheeva-2.6.31-uImage

Set needed bootargs, e.g.

   setenv arcNumber 2097
   setenv mainlineLinux yes
   setenv bootargs rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=192.168.1.77:192.168.1.2:192.168.1.1:255.255.255.0:sheevaplug:eth0:none

Finally, start the system using the kernel loaded over the network:

   bootm 0x2000000

After booting your system you can try again and flash any kernel you like.

Personal tools