udevadm info --attribute-walk --path=/sys/class/tty/ttyUSB1 Test rules without rebooting the sheevaplug device: udevadm test /sys/class/tty/ttyUSB1 To boot the Kernel from tftp: ------------------------------ tftpboot 0x8000000 armedslack/uinitrd-kirkwood ; tftpboot 0x2000000 armedslack/uImage-kirkwood; setenv bootargs console=ttyS0,115200 root=/dev/sda3 rootdelay=10 rootfs=xfs ; bootm 0x2000000 0x8000000 Boot the installer: ===================== tftpboot 0x8000000 armedslack/uinitrd-kirkwood.img ; tftpboot 0x2000000 armedslack/uImage-kirkwood; setenv bootargs console=ttyS0,115200 nodhcp kbd=uk root=/dev/ram rw ; bootm 0x2000000 0x8000000 Reboot from a crashed initrd: echo b > /proc/sysrq-trigger Udev rules: # /etc/udev/rules.d/10-sheevaplug.rules # Attach /dev/sheevaplug to the 2nd USB port on the SheevaPlug. # by Jim Hawkins # ACTION=="add", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="01", ATTRS{interface}=="SheevaPlug JTAGKey FT2232D B", SYMLINK+="sheevaplug" ################################################################################## # Document: sheevaplug-booting.txt # Purpose: Booting Slackware ARM on the Marvell SheevaPlug # Author : Stuart Winter ################################################################################## # #References: # http://computingplugs.com/index.php/Booting_entirely_off_an_external_USB_device # http://www.cyrius.com/debian/kirkwood/sheevaplug/unpack.html # http://dev.gentoo.org/~armin76/arm/sheevaplug/install.xml ################################################################################## Upgrading U-boot on the SheevaPlug ---------------------------------- On the x86 host: cd /tmp mkdir sheeva cd sheeva # Check the availability of the Plug's software: # http://www.plugcomputer.org/index.php/resources/downloads wget http://www.marvell.com/files/products/embedded_processors/developer/kirkwood/SheevaPlug_U-Boot.zip unzip SheevaPlug_U-Boot.zip cp "SheevaPlug_U-Boot/U-Boot - Image/u-boot-rd88f6281Sheevaplug_400db_nand.bin /tftpboot/u-boot.bin" On the SheevaPlug, at the U-Boot console: # This is the IP of the SheevaPlug: setenv ipaddr 192.168.1.20 Marvell>> dhcp # This is the IP of the tftpboot server: Marvell>> setenv serverip 192.168.1.1 Marvell>> bubt Respond 'Y' to changing the environment variables Note: Some documents on the web suggest not resetting the environment variables. However, I've not had any issues doing so on both of my SheevaPlug units; and it's the only way I've found to get console output from the Linux Kernel once it's 'live' (I'm not sure what the setting is that makes it work!). If you're concerned about this, I'd advise that you setup logging in your terminal program, and then issue a printenv command at the U-Boot console, so that you have a backup of the previous settings. Marvell>> printenv **** I take no responsibility for any damage to your device!! *** Marvell>> reset The first time it boots, you'll see this message: NAND:512 MB *** Warning - bad CRC or NAND, using default environment Interrupt the boot sequence again by hitting the ENTER key a few times, until you're dropped to the U-Boot console. Note: The MAC address of the Unit will have changed (the SheevaPlug seems to generate new ones). If you want to set the MAC address to something in particular: Marvell>> setenv ethaddr xx:xx:xx:xx:xx:xx Change the settings so that the SheevaPlug expects to boot a non-stock Kernel, save the settings & reboot the device: Marvell>> setenv mainlineLinux yes Marvell>> setenv arcNumber 2097 Marvell>> saveenv Marvell>> reset You should notice that you no longer receieve the warning message. Installer --------- On x86: cp isolinux/uinitrd-kirkwood.img /tftpboot/armedslack/ cp kernels/kirkwood/uImage-kirkwood /tftpboot/armedslack/ On the plug: Marvell>> usb start If your device says: (Re)start USB... USB: scanning bus for devices... 2 USB Device(s) found scanning bus for storage devices... Device NOT ready Request Sense returned 05 24 00 1 Storage Device(s) found Where it says that the device is not ready, keep resetting the device until it works! Marvell>> reset It should report: Marvell>> usb start (Re)start USB... USB: scanning bus for devices... 2 USB Device(s) found scanning bus for storage devices... 1 Storage Device(s) found Marvell>> Now download the Kernel and Slackware ARM installer via TFTP: Unless you have statically configured an IP address to your SheevaPlug, or you want to use DHCP: Marvell>> dhcp Marvell>> tftpboot 0x8000000 armedslack/initrd-kirkwood.img Marvell>> tftpboot 0x2000000 armedslack/uImage-kirkwood Marvell>> setenv bootargs console=ttyS0,115200 nodhcp kbd=uk root=/dev/ram rw Marvell>> bootm 0x2000000 0x8000000 ----- insert the filesystem type here... setenv bootargs_root 'root=/dev/sda3 rootdelay=10 rootfs=ext4' setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x0800000 /uinitrd-kirkwood; ext2load usb 0:1 0x400000 /uImage-kirkwood' setenv bootcmd 'setenv bootargs $(console) $(bootargs_root); run bootcmd_usb; bootm 0x400000 0x0800000' saveenv run bootcmd In the installation, add this line so we get a login on the serial console: /etc/inittab: s0:12345:respawn:/sbin/agetty 115200 ttyS0 vt100 If we can't get a USB stick working from U-Boot ------------------------------------------------ Sometimes the SheevaPlug just won't find the USB device "ready". It may *find* the device, but won't let you use it from the U-Boot console. This is a known bug in the SheevaPlug. Although this is far from ideal; If this *is* the case, we can still boot into our new OS (even though it is installed on the USB stick), by booting the Initial RAM disk and the Kernel via TFTP: First ensure that the 'Kirkwood' initrd and Kernels are in your tftpboot directory: cd armedslack-xx cp -fav kernels/kirkwood/uImage /tftpboot/armedslack/uImage-kirkwood cp -fav kernels/kirkwood/uinitrd /tftpboot/armedslack/uinitrd-kirkwood Marvell>> tftpboot 0x8000000 armedslack/uinitrd-kirkwood Marvell>> tftpboot 0x2000000 armedslack/uImage-kirkwood Marvell>> setenv bootargs console=ttyS0,115200 root=/dev/sda3 rootdelay=10 rootfs=ext4 Marvell>> bootm 0x2000000 0x8000000 Older stuff - kept for reference before I got it working --------------------------------------------------------- tftpboot 0x8000000 gentoo/sheevaplug.initramfs tftpboot 0x2000000 gentoo/uImage_kwplug tftpboot 0x8000000 as/uinitrd tftpboot 0x2000000 as/uImage setenv bootargs_root 'root=/dev/sda2 waitforroot=10' setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x0800000 /boot/uinitrd; ext2load usb 0:1 0x400000 /boot/uImage' setenv bootcmd 'setenv bootargs $(console) $(bootargs_root); run bootcmd_usb; bootm 0x400000 0x0800000' saveenv run bootcmd Try and boot Kernel: setenv bootargs console=ttyS0,115200 root=/dev/ram rw bootm 0x2000000 0x8000000 setenv bootargs console=ttyS0,115200 root=/dev/sda2 rw setenv bootcmd nand read 0x01000000 0x00100000 0x00400000\;setenv bootargs $(console) root=/dev/sda2 waitforroot=10\; bootm 0x01000000 console=ttyS0,115200 mtdparts=nand_mtd:0x100 000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw root=/dev/nfs rw nfsroot=192.168.1.1:/mnt/ARM_FS/ ip=192.168.1.19:192.168.1.1:::DB88FXX81:eth0 :none mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500 mv_phone_config=dev0:fx s,dev1:fxs