Greetings. I need your help with the following situation: I want to install Debian 13 on an external SSD USB 3.0 and I want to boot from that drive which is connected to an external USB 3.0 adapter that is not recognized by the BIOS: the motherboard ASUS P5K (LGA775 Socket), which is old, supports fine USB 2.0 boot. And because it seems that there is no a solution to that problem (booting directly from external USB 3.0 adapter), I want to know if I could boot from USB 2.0 with GRUB or a GNU/Linux distribution (Debian 13) installed on it as an intermediary step and then select a USB 3.0 disk which would be connected to USB 3.0 external card to boot from it.
So, I searched for info and also I asked Proton Lumo (AI). Could you validate the following info and then respond to me? Thanks in advance. Question to Proton Lumo: "I have a motherboard ASUS P5K (LGA775 Socket) and an installed external USB 3.0 card adapter: Via VL800 USB 3.0 Hub 4 Port Card Adapter to PCI-e x1: https://www.via-labs.com/product_show.php?id=51 Booting from the USB 2.0 interface which this motheboard has is fine. But even though the external USB 3.0 card works fine on Windows 7 with related drivers installed, my external hard drives and SSDs are not shown in the BIOS when they are connected via the USB 3.0 external card. 1) Do you know how to boot from the USB 3.0 external card and how to make my external drives to be shown in the BIOS? 2) Also, could I boot from USB 2.0 with GRUB or a GNU/Linux distribution (Debian 13) installed on it as an intermediary step and then select a USB 3.0 disk which would be connected to USB 3.0 external card to boot from? And if yes, how? " The answer: "Great questions — this is a classic problem with older BIOS motherboards and add-on USB controllers. Let me break down both the root cause and your options. 1) Why USB 3.0 drives don't appear in BIOS — and can you fix it? Root cause: The ASUS P5K is a legacy BIOS motherboard (circa 2007). Its BIOS firmware contains USB drivers only for its onboard USB 1.1/2.0 controllers (EHCI/UHCI). The VIA VL800 PCIe card is a third-party USB 3.0 (xHCI) controller that the BIOS knows nothing about. For BIOS to enumerate USB devices behind an add-on card, the card would need its own Option ROM — a small firmware blob that runs during POST and registers the card's devices with the BIOS boot table. The VIA VL800 cards sold for consumers generally do not include an Option ROM, which is why neither drives nor boot entries show up. Can you fix it? - BIOS update: ASUS stopped updating the P5K BIOS years ago, and no version added xHCI support. A dead end. - Option ROM injection: Theoretically, you could extract a VIA VL800 Option ROM and inject it into the P5K BIOS using tools like CBROM or MMTool, then flash the modified BIOS. In practice, this is extremely fragile, risky (you could brick the board), and I'm not aware of a readily available VL800 Option ROM for this purpose. Not recommended. - Card with native Option ROM: Some rare USB 3.0 PCIe cards shipped with an Option ROM (e.g., certain ASMedia-based cards). If you could find one, it might work. But this is hit-or-miss and increasingly hard to source for such an old platform. Bottom line: On the P5K, you almost certainly cannot boot directly from the VIA VL800 USB 3.0 card through BIOS. The hardware limitation is fundamental. 2) Can you use USB 2.0 → Linux → boot from USB 3.0 drive? Yes, absolutely. This is a well-known technique, and there are two practical approaches: Approach A: Root filesystem on USB 3.0, kernel + initramfs on USB 2.0 (Recommended) This is the cleanest method. The idea is: 1. USB 2.0 stick holds: GRUB, the Linux kernel, and the initramfs. 2. USB 3.0 drive holds: the actual root filesystem (your full Debian 13 installation). 3. During boot, GRUB loads the kernel and initramfs from USB 2.0 (which BIOS can see). 4. The initramfs contains the xHCI drivers (xhci_hcd, xhci_pci) and a script that: - Loads the xHCI module → the VIA VL800 controller is initialized. - Waits a few seconds for the USB 3.0 drive to be detected (USB 3.0 devices take a moment to enumerate after xHCI init). - Finds the USB 3.0 drive by UUID/label. - Mounts it as the root filesystem. - Calls pivot_root / switch_root to hand control to the real OS. The OS then runs entirely from USB 3.0 at full speed. The USB 2.0 stick is only used briefly during early boot. How to set this up with Debian 13: # On your working Debian system, create an initramfs that includes xHCI drivers: sudo nano /etc/initramfs-tools/initramfs.conf # Ensure MODULES=most (or MODULES=dep if you list modules manually) # Explicitly add xHCI modules: echo "xhci_hcd" | sudo tee -a /etc/initramfs-tools/modules echo "xhci_pci" | sudo tee -a /etc/initramfs-tools/modules echo "uas" | sudo tee -a /etc/initramfs-tools/modules # USB Attached SCSI for better performance # Add a udev rule or custom initramfs script to wait for the USB 3.0 drive: sudo nano /etc/initramfs-tools/scripts/local-premount/wait-usb3 Example script content: #!/bin/sh PREREQ="" prereqs() { echo "$PREREQ"; } case "$1" in prereqs) prereqs; exit 0;; esac # Wait up to 10 seconds for USB 3.0 devices to settle for i in $(seq 1 10); do if [ -b /dev/disk/by-uuid/YOUR-USB3-DRIVE-UUID ]; then break fi sleep 1 done sudo chmod +x /etc/initramfs-tools/scripts/local-premount/wait-usb3 sudo update-initramfs -u Then on the USB 2.0 stick: # Format it, install GRUB: sudo mount /dev/sdX1 /mnt/usb2 sudo grub-install --boot-directory=/mnt/usb2/boot /dev/sdX # Copy kernel and initramfs: sudo cp /boot/vmlinuz-* /mnt/usb2/boot/ sudo cp /boot/initrd.img-* /mnt/usb2/boot/ # GRUB config: sudo nano /mnt/usb2/boot/grub/grub.cfg set timeout=5 menuentry "Debian 13 (from USB 3.0)" { linux /boot/vmlinuz-6.x.x-amd64 root=UUID=YOUR-USB3-DRIVE-UUID rw rootdelay=10 initrd /boot/initrd.img-6.x.x-amd64 } Install Debian 13 normally onto the USB 3.0 drive (you can do this from a live USB session where the OS already sees the USB 3.0 card). Just make sure `root=UUID=...` matches the USB 3.0 drive's root partition. Approach B: kexec (boot minimal Linux, then jump to USB 3.0 kernel) This is more flexible but involves two full boot cycles: 1. Install a minimal Debian on the USB 2.0 stick (just enough to boot, with kexec-tools installed). 2. The minimal system boots via BIOS/GRUB from USB 2.0. 3. Linux initializes the VIA VL800 via xHCI drivers — the USB 3.0 drive is now visible. 4. A startup script finds the kernel on the USB 3.0 drive and calls kexec: #!/bin/bash # Wait for USB 3.0 drive for i in $(seq 1 15); do [ -b /dev/disk/by-uuid/YOUR-USB3-UUID ] && break sleep 1 done USB3_ROOT=$(readlink -f /dev/disk/by-uuid/YOUR-USB3-UUID) USB3_PART=${USB3_ROOT##*/} # Mount the USB 3.0 drive mkdir -p /mnt/usb3 mount /dev/$USB3_PART /mnt/usb3 # Load kernel from USB 3.0 drive into memory kexec --load /mnt/usb3/boot/vmlinuz-6.x.x-amd64 \ --initrd=/mnt/usb3/boot/initrd.img-6.x.x-amd64 \ --command-line="root=UUID=YOUR-USB3-ROOT-UUID ro rootdelay=10" # Execute it kexec --execute 5. kexec jumps directly to the new kernel without going through BIOS again — the USB 3.0 controller stays initialized since the hardware state persists across kexec. Which approach to choose? Approach A (initramfs) | Approach B (kexec) Complexity | Moderate | Moderate-High Boot speed | Faster (one boot) | Slower (two boot stages) Reliability | High | High Flexibility | Fixed at build time | Scriptable, can add logic I'd recommend Approach A — it's simpler, faster, and the standard Debian initramfs system handles it naturally. The key things to get right are: 1. Including xHCI + UAS modules in the initramfs. 2. Adding a rootdelay or custom wait script so the USB 3.0 device has time to enumerate before the root mount attempt. 3. Using UUIDs (not /dev/sdX names) since device ordering can vary. One thing to note: the VIA VL800 is known to have some quirks with Linux xHCI drivers. Make sure you're running a reasonably recent kernel (Debian 13 will have a modern kernel, so this should be fine). The uas module is worth including — it gives significantly better throughput than the default usb-storage driver for USB 3.0 SSDs/hard drives. "

