Freeze at 'loading initial ramdisk', goes away when I plug usb disk in

TL;DR

Arch freezes at 'Loading initial ramdisk', but after USB drive is inserted, it boots normally.

What have I tried:

Appending noapic and/or pci=noacpi to linux line in grub.

Removing nvidia from hooks array.

Using a different USB drive.

None of the above helped / changed anything.

Full story:

Hi!

My desktop Arch sometimes freezes at 'Loading initial ramdisk', but I have found a solution. I don't understand why it works the way it does. Please help me understand what is the culprit here

When I plug a USB pendrive in the USB port and restart the system, it boots correctly. The first line of output I then get after 'loading initial ramdisk' is ' unable to enumerate usb device on port 2' or similar. When I take the USB disk out and restart again, I am still able to boot correctly. The issue returns after few more restarts, sometimes after when I boot to Windows and back and sometimes after the initrd image is recreated. I haven't thoroughly tested more combinations yet.

I have a suspect:

IIRC this started appearing at the time I started using nvidia module. Installed it using nvidia-hook and added to hooks array in mkinitcpio.conf as a first hook.

Wiki on Nvidia says that nvidia module MAY not work with EFI systems and I happen to have one so that might be the case. On the other hand if that was true, graphics would not work at all and other than the boot issue they work great... Plus the USB trick would not work.

My configuration:

Arch

Linux is on UEFI motherboard on a SSD with a GPT partition table. I am using Grub2 and the only thing I appended to linux line is 'nomodeset' for nvidia driver.

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES="piix ide_disk reiserfs"
MODULES=""
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=""
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=""
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No raid, lvm2, or encrypted root is needed.
# HOOKS="base"
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS="base udev autodetect block filesystems"
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS="base udev block filesystems"
#
## This setup assembles a pata mdadm array with an encrypted root FS.
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
# HOOKS="base udev block mdadm encrypt filesystems"
#
## This setup loads an lvm2 volume group on a usb device.
# HOOKS="base udev block lvm2 filesystems"
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr, fsck and shutdown hooks.
HOOKS="nvidia base udev autodetect modconf block filesystems keyboard fsck"
# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=""

How do you specify your volumes in your Grub configuration? Are you using UUIDs?

Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael FaradayYou assume people are rational and influenced by evidence. You must not work with the public much. -- Trilby----How to Ask Questions the Smart Way