Is it possible to enable the usb-host boot support in the ARMMP kernel
for the cubietruck in the way that the hd-media tarball used by d-i
does?
I've tried experimenting with the various options, I've narrowed it to
just the initrd. With the installer initrd, I can boot from USB and
access the USB filesystem. With the default armmp initrd, I get a
kernel panic:
[ 4.879987] sda: sda1 sda2 sda3 < sda5 >
[ 4.886513] sd 0:0:0:0: [sda] Attached SCSI disk
[ 4.893857] sd 0:0:0:0: Attached scsi generic sg0 type 0
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin:
Running /scripts/local-top ... done. Begin: Waiting for root file
system ... done. Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/"8c5538d5-e865-4650-a51c-ce955b6e132f" does
not exist. Dropping to a shell! modprobe: module i8042 not found in
modules.dep [ 36.102241] ehci_hcd: USB 2.0 'Enhanced' Host Controller
(EHCI) Driver [ 36.110876] ehci-pci: EHCI PCI platform driver
[ 36.124979] ehci-orion: EHCI orion driver
modprobe: module uhci-hcd not found in modules.dep
[ 36.163008] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
BusyBox v1.22.1 (Debian 1:1.22.0-9+b1) built-in shell (ash)
Enter 'help' for a list of built-in commands.
/bin/sh: can't access tty; job control turned off
(initramfs)
(/dev/sda in this case is a SATA drive which I want to ignore for the
purposes of this boot)
There is no uhci listing in the modules.dep of the running system which
accesses /dev/sdb1 just fine.
Running system installed on SATA:
# lsmod|grep hci
ohci_platform 4082 0
ehci_platform 4562 0
ohci_hcd 37631 1 ohci_platform
ehci_hcd 64429 1 ehci_platform
ahci_sunxi 2652 0
libahci_platform 4679 4 ahci_sunxi
libahci 23077 1 libahci_platform
libata 161809 3 libahci,libahci_platform,ahci_sunxi
UUID="8c5538d5-e865-4650-a51c-ce955b6e132f" is the first partition of a
USB stick, which shows as /dev/sdb1 *after* boot but is not available
in the default initrd.
I've tried to tweak the default initrd manually:
Added to ohci-platform and ehci-platform modules, added these
lines to modules.dep (ignore line breaks):
kernel/drivers/usb/host/ohci-platform.ko:
kernel/drivers/usb/host/ohci-hcd.ko
kernel/drivers/usb/host/ehci-platform.ko:
kernel/drivers/usb/host/ehci-hcd.ko
Added modprobe.d/aliases.conf:
softdep uhci-hcd pre: ehci-hcd
softdep ohci-hcd pre: ehci-hcd
kernel/drivers/usb/host/ehci-platform.ko:
kernel/drivers/usb/host/ehci-hcd.ko
Briefly, before the installer starts, I can see that sdb is recognised
by either the installer kernel or the default armmp kernel but it
disappears behind the installer prompt and I can't seem to replicate
this with the default armmp initrd.
uboot commands for usb boot:
setenv autoload no
usb start
setenv initrd_high '0xffffffff'
setenv fdt_high '0xffffffff'
setenv initrd_addr_r ${ramdisk_addr_r}
setenv loadkernel 'load usb 0:1 ${kernel_addr_r} vmlinuz-3.16.0-4-armmp-lpae'
setenv loadinitrd 'load usb 0:1 ${initrd_addr_r} initrd-usb.img-3.16.0-4-armmp-lpae.u-boot; setenv initrd_size ${filesize}'
setenv loadfdt 'load usb 0:1 ${fdt_addr_r} dtb-3.16.0-4-armmp-lpae'
setenv bootargs 'console=ttyS0,115200 rw root=UUID="8c5538d5-e865-4650-a51c-ce955b6e132f" ip=dhcp'
setenv bootcmd 'run loadkernel; run loadinitrd; run loadfdt; bootz ${kernel_addr_r} ${initrd_addr_r}:${filesize} ${fdt_addr_r}'
boot
--
Neil Williams
=============
http://www.linux.codehelp.co.uk/
Attachment:
pgpfXqORdHhAL.pgp
Description: OpenPGP digital signature