Failure to boot from USB - Dell Latitude XT

Bug #364538 reported by Scott James Remnant (Canonical)
92
This bug affects 11 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
Medium
Stefan Bader
Jaunty
Fix Released
Medium
Stefan Bader

Bug Description

SRU justification:

Impact (from Scott):
The ub driver is an old attempt for a slow USB Block Device driver,
it hasn't been maintained in quite a while and we don't have an easy
way to enable it.

libusual is a strange mechanism for the kernel to auto-select between
usb-storage and ub. It works by stealing the aliases from them both
and modprobe'ing (from the kernel) the other module when a device is
connected.

The trouble is that because it's built into the kernel, on machines with
particularly fast init, it could be trying to call it before the initramfs
has even been switched to - or before the initramfs has called "depmod".
In either case, since there's no modules.alias/modules.dep files, the
modprobe call with fail and the USB storage device will not be enabled.

Plugging a second USB storage device in will magically cure the problem.

Fix: Attched patch to disable those modules. This bumps ABI as the libusual functions go missing. All IDs automagically go over to usb-storage.

Testcase: Booting from usb storage with a quick host.

---

Continuing from bug #363038

Pete Graner's problem with the Dell Latitude XT was that the kernel was calling "modprobe usb-storage" before the initramfs has run "depmod" to initialise the module db.

This was all crack.

There's no reason to have the kernel call modprobe in this way, it was caused by something called "libusual" which steals all of usb-storage's aliases and then modprobes it. The intent is that it allows you to alternate between "usb-storage" and "ub".

Not only is "ub" very crufty and unmaintained, but we can do that kind of switching in userspace these days.

Disabling libusual in the kernel config means that usb-storage gets modprobe aliases just like every other driver, and is loaded by udev just like every other driver. Race condition solved, laptop boots.

Revision history for this message
Scott James Remnant (Canonical) (canonical-scott) wrote :

Patch has been committed to Karmic kernel tree

Revision history for this message
Scott James Remnant (Canonical) (canonical-scott) wrote :

we should backport this fix to jaunty-updates

Changed in linux (Ubuntu Jaunty):
assignee: nobody → smb (smb)
importance: Undecided → Medium
milestone: none → jaunty-updates
status: New → In Progress
Stefan Bader (smb)
Changed in linux (Ubuntu Jaunty):
assignee: smb → stefan-bader-canonical
Stefan Bader (smb)
Changed in linux (Ubuntu Jaunty):
status: In Progress → Fix Committed
description: updated
Revision history for this message
Matt Zimmerman (mdz) wrote :

This sounds like the same issue as http://lwn.net/Articles/330779/ which has some upstream cross-references, in case thaht's still useful

Revision history for this message
Steve Langasek (vorlon) wrote :

Accepted linux into jaunty-proposed, the package will build now and be available in a few hours. Please test and give feedback here. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you in advance!

tags: added: verification-needed
Revision history for this message
Matthew Incorvia (mincorvia) wrote :

The wiki page section on installation testing seems out of date. There is no folder at http://archive.ubuntu.com/ubuntu/dists/jaunty-proposed/main/installer-i386/ . There is one at ../binary-i386/ , but that just has a package list that I would have no idea what to do with. Am I missing something?

Steve Beattie (sbeattie)
tags: added: hw-specific
Revision history for this message
Steve Langasek (vorlon) wrote :

confusador,

Sorry, no installer updates are available for testing at this point; the change has only been propagated to the linux kernel packages. Testable installer updates will have to come later, though in any case we won't reroll the install media for Ubuntu 9.04 aside from updating the netboot images.

Revision history for this message
tarski (guy-laffitte) wrote :

I found a solution to this problem, recreating file "casper/initrd.gz" after updating script "/init".
This update consists to insert the following lines before line containing "maybe_break mount" :
   modprobe -r libusual
   sleep 3
   modprobe usb-storage
   sleep 5

The second line is mandatory to let "libusual' remove smoothly before loading "usb-storage".
Moreover, I successfully performed a non-regression test with a "slow" machine which was not concerned by this problem.

Revision history for this message
dannyp32 (dannyp32) wrote :

hello i had this problem with ubuntu 9.04 but could someone reword tarski's solution so that its easier to understand
do i insert these commands when the error appears while using the usb device? if not then when do i insert these commands

Revision history for this message
Stefan Bader (smb) wrote :

The script is actually slightly inaccurate as libusual is not a module. But modprobe on the initrd does not seem to print a warning in that case. What was done is to unpack the initrd then look into the file /init and add those commands before the given line.
For a manual workaround it is possible to wait until the boot drops out to the initrd shell. Then type "modprobe usb-storage", wait 1-2secs and then type "exit"
Using kernel-2.6.28-12.43 or later (currently only in the proposed archive) will make this unnecessary as libusual has been removed.

Revision history for this message
tarski (guy-laffitte) wrote :

   Here is my detailed solution. In a running system, open a terminal and plug the USB stick created with usb-creator for example. I assume that the partition on the USB stick is mounted in "/media/disk". In the attached file, comments begin with "#" and other lines are to be typed in the terminal.

  You can now unmount your USB stick and try booting with it.

Revision history for this message
Jarpis (jarpis) wrote :

I successfully booted from Ubuntu netinstall/minicd image (from cd) and did installation in text mode over network.

Installed system (with all updates) boots flawlessly. For what it is worth booting failure occurs identically on OpenSuse Livecd.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 2.6.28-13.44

---------------
linux (2.6.28-13.44) jaunty-proposed; urgency=low

  [ Stefan Bader ]

  * Revert "SAUCE: [jaunty] ALSA: Add retry for Intel8x0 clock measurement"
  * Revert "SAUCE: [jaunty] ALSA: Fix clock and buffer calculations for
    Intel8x0"
  * Revert "SAUCE: [jaunty] ALSA: Fix buffer positions and checks"

linux (2.6.28-12.43) jaunty-proposed; urgency=low

  [ Amit Kucheria ]

  * Enable SYN_COOKIES for iop32x and versatile flavours
    - LP: #361687
  * SAUCE: Quirk for BT USB device on MacbookPro to be reset before use
    - LP: #332443

  [ Brad Figg ]

  * [jaunty] Add missing mvsas (Marvel SAS 6440) module configuration.
    - LP: #352336

  [ Chuck Short ]

  * SAUCE: [USB] Unusual Device support for Gold MP3 Player Energy
    - LP: #125250

  [ Daniel T Chen ]

  * SAUCE: [jaunty] ALSA: Fix buffer positions and checks
    - LP: #345627
  * SAUCE: [jaunty] ALSA: Fix clock and buffer calculations for Intel8x0
    - LP: #345627
  * SAUCE: [jaunty] ALSA: Add retry for Intel8x0 clock measurement
    - LP: #345627

  [ Luke Yelavich ]

  * disable CONFIG_SND_HDA_INPUT_BEEP on amd64 and i386
    - LP: #331589

  [ Makito SHIOKAWA ]

  * [ARM] 5404/1: Fix condition in arm_elf_read_implies_exec() to set
    READ_IMPLIES_EXEC
    - LP: #364358

  [ Manoj Iyer ]

  * SAUCE: Added quirk to fix key release for Samsung NC20
    - LP: #360247

  [ Oleg Nesterov ]

  * posix timers: fix RLIMIT_CPU && fork()
    - LP: #361508

  [ Scott James Remnant ]

  * [Config] Disable libusual and the ub driver
    - LP: #364538

  [ Stefan Bader ]

  * Disable unwanted staging builds
    - LP: #366144
  * Remove prism2_usb driver from ubuntu and use the one from staging
    - LP: #325366
  * SAUCE: Make rtl8187se depend on WIRELESS_EXT
    - LP: #366144
  * Disable CONFIG_RTL8187SE for armel.versatile
    - LP: #366144

  [ Tejun Heo ]

  * libata: handle SEMB signature better
    - LP: #257790

  [ Tim Gardner ]

  * Set USB_SERIAL=m for i386/amd64
    - LP: #345002
  * SAUCE: Jaunty - aic79xx - set reset delay to 5 seconds, down from 15.
    - LP: #79542
  * SAUCE: (drop after 2.6.28) Wifi suspend/resume scan timeout fixes
    - LP: #336055
  * Sony laptop: Sony Vaio laptops do not enable wwan power by default.
    - LP: #364678

  [ Tyler Hicks ]

  * SAUCE: (drop after 2.6.28) eCryptfs: Larger buffer for encrypted
    symlink targets
    - LP: #357345

  [ Upstream Kernel Changes ]

  * V4L/DVB (9999): gspca - zc3xx: Webcam 046d:089d added.
    - LP: #326674
  * V4L/DVB (10044): gspca - pac7311: Webcam 093a:2620 added.
    - LP: #363195
  * hwmon: (it87) Add support for the ITE IT8720F
    - LP: #357766
  * vgacon: Return the upper half of 512 character fonts
    - LP: #355057
  * drm/i915: add support for G41 chipset
    - LP: #365958

 -- Stefan Bader <email address hidden> Mon, 25 May 2009 17:30:40 +0200

Changed in linux (Ubuntu Jaunty):
status: Fix Committed → Fix Released
Ivo (ivo-ac)
Changed in linux (Ubuntu):
status: Fix Committed → Fix Released
status: Fix Released → Fix Committed
Stefan Bader (smb)
Changed in linux (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.