can't boot a Mint Cin 17.1 live Sandisk Ultra Fit 3.0 32GB

I’ve tracked down the basic problem many people have been experiencing.

The culprit lies in the Linux Kernel’s udev and USB subsystems. For some reason, the kernel is timing out on trying to read the Sandisk USB device descriptor. This means that the necessary entries never get created in /sys . What happens next is that the capser script bombs in this section :

 else # Scan local devices for the image i=0 while ["$i" -lt 60]; do livefs\_root=$(find\_livefs $i) if ["${livefs\_root}"]; then break fi sleep 1 i="$(($i + 1))" done fi if [-z "${livefs\_root}"]; then panic "Unable to find a medium containing a live file system" fi

But where does livefs_root come from? Well, if we dig deeper, then we find that find_livefs() is indeed failing to find the entries is /sys/block : 

# or do the scan of block devices for sysblock in $(echo /sys/block/\* | tr ' ' '\n' | egrep -v "/(loop|ram|fd|md)"); do devname=$(sys2dev "${sysblock}") [-e "$devname"] || continue fstype=$(get\_fstype "${devname}") if /lib/udev/cdrom\_id ${devname} \> /dev/null; then if check\_dev "null" "${devname}" ; then return 0 fi elif is\_nice\_device "${sysblock}" ; then for dev in $(subdevices "${sysblock}"); do if check\_dev "${dev}" ; then return 0 fi done elif is\_md "${devname}" || is\_mapper "${devname}" ; then if check\_dev "null" "${devname}" ; then return 0 fi elif ["${fstype}" = "squashfs" -o \ "${fstype}" = "ext4" -o \ "${fstype}" = "ext3" -o \ "${fstype}" = "ext2" -o \ "${fstype}" = "btrfs"]; then # This is an ugly hack situation, the block device has # an image directly on it. It's hopefully # casper, so take it and run with it. ln -s "${devname}" "${devname}.${fstype}" echo "${devname}.${fstype}" return 0 fi done return 1 }

find_livefs() in turn calls check_dev(), is_nice_device(), sys2dev() which takes an argument from sysfs and returns the corresponding device node path in /dev, and get_fstype(). Since the kernel udev and USB subsystems timed out on trying to read the Sandisk USB flash drive’s device descriptor, then the entries which should have corresponded to the flash drive never get created in /sys/block and hence the boot fails.

There is one possible solution :

add  

rootwait rootdelay=30 usbcore.autosuspend=120 usbcore.old\_scheme\_first=1 usbcore.initial\_descriptor\_timeout=60 usb-storage.delay\_use=10

to the Linux kernel’s boot command line. Note that I know some of the above parameters are redundant but I just wanted to be extra safe[TM] :stuck_out_tongue: . Also, the timeout values ( in seconds ) are very conservative.

If the above doesn’t work, then you can also try adding :

usb-storage.quirks=VID : PID : Flags

( remove the spaces between the colons above – for some reason the forum software is creating smileys even though the text is in a code block )

to the Linux kernel command line, where VID is your Sandisk USB flash drive’s Vendor ID as returned by “sudo lsusb -v” and the PID is the Product ID returned by the same command. For Flags, there are at least 19 ( documented here ), so you may have to try several combinations ( multiple flags can be used simultaneously ).

I hope this helps.

Regards,

jdb2