4

I have a PC based on Intel DP55KG "Kenigsberg" motherboard. It doesn't have a usb 3.0 bus (xHCI). I installed a usb 3.0 adaptor card (Inateck KT4006) (working fine, both on Windows and Ubuntu 18); but, I would like to boot from an Ubuntu system residing on a USB HDD; and, before booting, the BIOS does not recognize the additional usb 3.0 bus (and device) created by the adaptor.

So I can't select the USB HDD for boot, if it's connected through the usb 3.0 adaptor. (The same USB HDD works fine after boot, connected to the usb 3.0 adaptor).

1 Answer 1

7

If the motherboard doesn't come with an xHCI controller, then it's likely that its firmware actually doesn't have xHCI drivers built-in either. Without that, the firmware simply doesn't know how to enumerate USB devices through this controller.

(In fact your motherboard predates the first release of xHCI by a few months, so its default firmware cannot possibly have drivers for it.)

Meanwhile, the OS can use USB 3.0 just fine because it doesn't rely on any firmware functionality – both Windows and Linux have their own xHCI (and EHCI, OHCI) drivers which directly talk to the controller via PCI bus.


To work around this, you can put GRUB and the Ubuntu /boot partition on different storage (e.g. a SATA HDD or a USB 2.0 flash drive). This will allow the motherboard to start GRUB, and as soon as GRUB loads the Ubuntu kernel+initrd, the xHCI controller will become usable through Linux drivers and the system should boot normally.

(That's actually the whole point of having an initrd – it contains all drivers needed for the kernel to access the root filesystem.)

5
  • 1
    grawity: this sounds great. Can you explain, how to have just GRUB and Ubuntu kernel + initrd on a partition, and how to have them hand-off control to another Ubuntu partition? Commented Nov 15, 2019 at 16:04
  • 1
    Create a regular ext4 partition, move your Ubuntu /boot files there (including grub.cfg), run a grub-install on the disk... the rest is exactly the same as normal. Linux will find your root partition according to the root=/dev/... parameter that you already have. Commented Nov 15, 2019 at 16:12
  • user1686: I followed your instructions up to: running grub-install, and up to there it looks ok; but then, after booting from the USB-hdd, it is stuck at the grub menu. How do I tweak Grub to: a. load the right drivers; b. then pass control to the system on another HDD? (Running Ubuntu 18.04.3 with kernel: 5.0.0-37-generic) Commented Jan 11, 2020 at 6:34
  • Does it have any menu items, or just a blank config? Commented Jan 11, 2020 at 15:52
  • user1686: This is the grub.cfg file: menuentry "Booting from usb-hdd" { linux /boot/vmlinuz-5.0.0-37-generic root=UUID=23a... ...f82fdc1 ro echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-5.0.0-37-generic configfile /boot/grub/grub.cfg } Commented Jan 12, 2020 at 17:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .