Some context first:

I have an old PC I intend to use as NAS with a openmediavault (debian based) installed in a flash drive. So I bought a pci-e expansion card with USB 3.0 ports for higher speeds from flash drive (S.O. installed on usb 2.0 port was taking way to long for everything, even a simple apt-get update would take ages). thing is, my mobo (ASUS P5KPL) doesnt recognize the pci-e card (or maybe it's 3.0 USB or maybe it's both) natively. I spent some time googling and found a suggestion to move boot and grub to a flash drive in a 2.0 port, so basic drives would load with grub, and edit the grub.cfg to point to the distro in the 3.0 flash drive.

The problem:

That's where I'm having difficulties, I'm fairly new to Linux. I copied (literally ctrl+c ctrl+v) the openmediavault boot folder to another flash drive, but when I opened grub.cfg generated from OMV installer, I undestood almost nothing: https://pastebin.com/i1khxP2S - that's the original grub.cfg generated from installation.

It made no sense to me. I tried to add to line 177 things I read here and here like:

menuentry "Try USB HD0 boot" {
    rootnoverify (hd0)
    chainloader +1

menuentry "Try USB HD1 boot" {
    map (hd0) (hd1)
    map (hd1) (hd0)
    rootnoverify (hd0)
    chainloader +1

but I'm still lost with no sucess. Any idea on what should I edit?

some points:

-I'm installing the distro (openmediavault) on the flash drive because it's a NAS distro and I intend to leave the HDD exclusively to storage.

-When I booted from openmediavault ISO installer from a USB 2.0 port, it insta recognized the flash drive on 3.0 port, so I think any kind of basic drive should work.

-Already got the suggestion to enable ACPI 2.0 Support in bios, no sucess.

Edit: Tried to use a generic and basic grub.cfg with as few line as possible, still no sucess.

2 Answers 2


I think, maybe, it's not the problem with grub.

If you want to run Linux from USB drives(and do not want to mess with computer storage), then you need two different usb/flash drives:

  1. To install on
  2. To run from

Also, you shall create a 1 GB partition on the 2nd USB/flash drive to have the bootloader installed.


GRUB relies on hardware support from the system firmware. On an old BIOS-based system, the firmware will often support only one USB storage device at boot time, and even that only when you have specifically selected to boot from that device. In other words, the BIOS-level support for USB storage devices is quite limited.

In particular, if you are adding an USB 3.x PCIe card to a system whose motherboard has only USB 2.0 ports, then the firmware almost certainly will not recognize the USB 3.x XHCI controller at all. I've never seen such an expansion card come with a BIOS extension ROM that would extend BIOS boot support to a USB 3.x device.

Furthermore, those chainloader entries would require you to have another instance of GRUB on the USB 3.0 flash drive, requiring you to manage two differently-configured GRUBs on the same system and a single OS. I would call that an unnecessary complication.

You would have to load the Linux kernel and initramfs file from the USB 2.0 device, and make sure all the USB controller drivers will get included into the initramfs file. Once the kernel has started up and loaded its USB drivers from initramfs, it would have full USB 3.x support available, and could mount a root filesystem from a USB 3.0 device.

That would essentially mean having the /boot be a partition on a USB 2.0 flash drive, and the root filesystem (and the rest of the OS) on USB 3.0 flash drive. If you want to modify your existing installation to that, you would have to:

  • copy the root filesystem to the USB 3.0 device
  • modify the linux ... lines of your existing GRUB configuration to point to the new root filesystem
  • boot into the new configuration and verify it works
  • verify that update-grub will correctly regenerate the GRUB configuration with the correct root= option to the kernel, so that system updates will not cause GRUB to fail (if corrections are needed, editing /etc/default/grub should be enough)

You must log in to answer this question.

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