# [SOLVED] USB root disk not found during boot

## Madjic

Hi,

I'm struggling to boot my system from a external USB3.0 harddrive

I have a Intel NUC D54250WYKH and I want it to boot gentoo from an external hard drive connected via USB3.0

the UEFI firmware and the rEFInd boot manager (started from internal disk) have no problems seeing the external drive, but when I'm trying to boot the kernel it panics when trying to mount the root disk (/dev/sdb3)

It can see /dev/sda, which is the internal harddisk, but it doesn't see the USB drive.

so far my installations have been very simple (internal disk, no initramfs), so I'm not sure I forgot something.

When I tried using dracut initramfs I can see the USB devices are detected after dracut cancels the boot process. Adding the slowusb kernel parameter didn't help with or without initrd

any idea what's wrong?

rEFInd config:

```

menuentry Gentoo {

        icon EFI/refind/icons/os_linux.png

        loader EFI/gentoo/kernel.efi

        initrd EFI/gentoo/initrd.img

        options "root=326B4E12-A4D8-4416-8447-B90CB8BAC9DA slowusb init=/usr/lib/systemd/systemd"

}

```

```
$ grep USB .config

# CONFIG_USB_SWITCH_FSA9480 is not set

# USB Network Adapters

# CONFIG_USB_CATC is not set

# CONFIG_USB_KAWETH is not set

# CONFIG_USB_PEGASUS is not set

# CONFIG_USB_RTL8150 is not set

# CONFIG_USB_RTL8152 is not set

# CONFIG_USB_USBNET is not set

# CONFIG_USB_IPHETH is not set

# CONFIG_MOUSE_SYNAPTICS_USB is not set

# CONFIG_I2C_TINY_USB is not set

# USB GPIO expanders:

# CONFIG_MFD_RTSX_USB is not set

CONFIG_SND_USB=y

CONFIG_SND_USB_AUDIO=m

# CONFIG_SND_USB_UA101 is not set

CONFIG_SND_USB_USX2Y=m

CONFIG_SND_USB_CAIAQ=m

CONFIG_SND_USB_CAIAQ_INPUT=y

CONFIG_SND_USB_US122L=m

# CONFIG_SND_USB_6FIRE is not set

# CONFIG_SND_USB_HIFACE is not set

# USB HID support

CONFIG_USB_HID=y

CONFIG_USB_HIDDEV=y

CONFIG_USB_OHCI_LITTLE_ENDIAN=y

CONFIG_USB_SUPPORT=y

CONFIG_USB_COMMON=y

CONFIG_USB_ARCH_HAS_HCD=y

CONFIG_USB=y

# CONFIG_USB_DEBUG is not set

CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

# Miscellaneous USB options

CONFIG_USB_DEFAULT_PERSIST=y

CONFIG_USB_DYNAMIC_MINORS=y

# CONFIG_USB_OTG is not set

# CONFIG_USB_MON is not set

# CONFIG_USB_WUSB_CBAF is not set

# USB Host Controller Drivers

# CONFIG_USB_C67X00_HCD is not set

CONFIG_USB_XHCI_HCD=y

CONFIG_USB_EHCI_HCD=y

CONFIG_USB_EHCI_ROOT_HUB_TT=y

CONFIG_USB_EHCI_TT_NEWSCHED=y

CONFIG_USB_EHCI_PCI=y

CONFIG_USB_EHCI_HCD_PLATFORM=y

CONFIG_USB_OXU210HP_HCD=y

CONFIG_USB_ISP116X_HCD=y

CONFIG_USB_ISP1760_HCD=y

CONFIG_USB_ISP1362_HCD=y

CONFIG_USB_FUSBH200_HCD=y

CONFIG_USB_FOTG210_HCD=y

CONFIG_USB_OHCI_HCD=y

CONFIG_USB_OHCI_HCD_PCI=y

CONFIG_USB_OHCI_HCD_PLATFORM=y

CONFIG_USB_UHCI_HCD=y

CONFIG_USB_SL811_HCD=m

# CONFIG_USB_SL811_HCD_ISO is not set

CONFIG_USB_R8A66597_HCD=m

# CONFIG_USB_HCD_SSB is not set

# CONFIG_USB_HCD_TEST_MODE is not set

# USB Device Class drivers

# CONFIG_USB_ACM is not set

# CONFIG_USB_PRINTER is not set

# CONFIG_USB_WDM is not set

# CONFIG_USB_TMC is not set

# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may

# also be needed; see USB_STORAGE Help for more info

CONFIG_USB_STORAGE=y

CONFIG_USB_STORAGE_DEBUG=y

# CONFIG_USB_STORAGE_REALTEK is not set

# CONFIG_USB_STORAGE_DATAFAB is not set

# CONFIG_USB_STORAGE_FREECOM is not set

# CONFIG_USB_STORAGE_ISD200 is not set

# CONFIG_USB_STORAGE_USBAT is not set

# CONFIG_USB_STORAGE_SDDR09 is not set

# CONFIG_USB_STORAGE_SDDR55 is not set

# CONFIG_USB_STORAGE_JUMPSHOT is not set

# CONFIG_USB_STORAGE_ALAUDA is not set

# CONFIG_USB_STORAGE_ONETOUCH is not set

# CONFIG_USB_STORAGE_KARMA is not set

# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set

# CONFIG_USB_STORAGE_ENE_UB6250 is not set

# CONFIG_USB_UAS is not set

# USB Imaging devices

# CONFIG_USB_MDC800 is not set

# CONFIG_USB_MICROTEK is not set

# CONFIG_USB_MUSB_HDRC is not set

# CONFIG_USB_DWC3 is not set

# CONFIG_USB_DWC2 is not set

# CONFIG_USB_CHIPIDEA is not set

# USB port drivers

# CONFIG_USB_SERIAL is not set

# USB Miscellaneous drivers

# CONFIG_USB_EMI62 is not set

# CONFIG_USB_EMI26 is not set

# CONFIG_USB_ADUTUX is not set

# CONFIG_USB_SEVSEG is not set

# CONFIG_USB_RIO500 is not set

# CONFIG_USB_LEGOTOWER is not set

# CONFIG_USB_LCD is not set

# CONFIG_USB_LED is not set

# CONFIG_USB_CYPRESS_CY7C63 is not set

# CONFIG_USB_CYTHERM is not set

# CONFIG_USB_IDMOUSE is not set

# CONFIG_USB_FTDI_ELAN is not set

# CONFIG_USB_APPLEDISPLAY is not set

# CONFIG_USB_SISUSBVGA is not set

# CONFIG_USB_LD is not set

# CONFIG_USB_TRANCEVIBRATOR is not set

# CONFIG_USB_IOWARRIOR is not set

# CONFIG_USB_TEST is not set

# CONFIG_USB_EHSET_TEST_FIXTURE is not set

# CONFIG_USB_ISIGHTFW is not set

# CONFIG_USB_YUREX is not set

# CONFIG_USB_EZUSB_FX2 is not set

# CONFIG_USB_HSIC_USB3503 is not set

# CONFIG_USB_ATM is not set

# USB Physical Layer drivers

# CONFIG_USB_PHY is not set

# CONFIG_USB_OTG_FSM is not set

# CONFIG_NOP_USB_XCEIV is not set

# CONFIG_SAMSUNG_USB2PHY is not set

# CONFIG_SAMSUNG_USB3PHY is not set

# CONFIG_USB_GPIO_VBUS is not set

# CONFIG_USB_ISP1301 is not set

# CONFIG_USB_RCAR_PHY is not set

# CONFIG_USB_GADGET is not set

# CONFIG_USBIP_CORE is not set

# CONFIG_LINE6_USB is not set

# CONFIG_USB_ENESTORAGE is not set

# CONFIG_USB_WPAN_HCD is not set

# CONFIG_BCM_KONA_USB2_PHY is not set

# CONFIG_PHY_SAMSUNG_USB2 is not set

 
```

full .configLast edited by Madjic on Wed Aug 13, 2014 10:35 pm; edited 1 time in total

----------

## Madjic

the actual error messages:

without dracut:

```
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6

Please append a correct "root=" boot option; here are the available partitions:

0800 244198584 sda driver: sd

 0801 204800 sda1 [GUID]

 0802 51200 sda2 [GUID]

...

 0807 67108864 sda7 [GUID] 

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

...

```

with dracut initrd:

```

[ OK ] Started Apply Kernel Variables.

dracut: FATAL: No or empty root= argument

[dracut: Refusing to continue

 OK ] Started Create Static Device Nodes in /dev.

usb1-1: device descriptor read/64, error -71

systemd[1]: Shutting down.

systemd-shutdown[1]: Sending SIGTERM to remaining processes...

systemd-journald[1227]: Received SIGTERM frim PID 1 (systemd-shutdow).

[here it's deactivating swap, loop devices, DM devices]

systemd-shutdown[1]: Halting system.

sd 0:0:0:0: [sda] Synchronizing SCSI cache

sd 0:0:0:0: [sda] Stopping disk

usb 1-1: New USB device found, idVendor=8087, idProduct=8000

usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0

hub 1-1:1.0 USB hub found

hub 1-1:1.0: 8 ports detected

reboot: System halted

```

I'd prefer to boot the system with rEFInd using the EFI stub, support and without an initramfs, but if it can't be helped initramfs is ok

----------

## NeddySeagoon

Madjic,

The problem is caused by attempting to mount the root filesystem before USB is started.

Thats a feature of the kernel.

Without an initrd, the kernel parameter rootdelay=7 allows 7 seconds for USB to become ready before the kernel looks for root.

This works in most cases.  An initrd is just a fake root filesystem.  If you have everything needed built into the kernel for root on USB, then the rootdelay=7 will probably work.

If the initrd contains modules for USB,  it probably won't work.  The reason being that rootdelay will apply to the initrd being mounted as root.

If you really must use an initrd with modules, you need to edit its init script to get the required delay.

----------

## Madjic

I'm an idiot   :Embarassed: 

```

CONFIG_CMDLINE_BOOL=y

CONFIG_CMDLINE=""

CONFIG_CMDLINE_OVERRIDE=y

```

but thanks for the hint with rootdelay

after seeing no delay, I tried a few other parameters and when it didn't react to those I checked my config

----------

## NeddySeagoon

Madjic,

 *Madjic wrote:*   

> I'm an idiot

 

Not at all, you have just experienced a Gentoo learning opportunity.  :)

----------

## mgs

 *NeddySeagoon wrote:*   

> 
> 
> The problem is caused by attempting to mount the root filesystem before USB is started.
> 
> Thats a feature of the kernel.
> ...

 

Sorry to resurrect an old thread, but I seem to have the same problem as the OP here: install on an external USB drive with the error

```

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

```

I think I have everything else right (file sys support built in, EFI enabled, root device specified in Kernel Command Line, efibootmgr set). This (USB not "up" in time for kernel to find it) might be the problem.

My question is, should this (rootdelay=7) be added to the kernel command line before specifying the device?

Thanks!

----------

