Here's a full explanation of the situation:
I have a Macbook Air 11" mid 2012 with only Arch Linux on it. I don't want OSX. I don't want to install any other distro (Fedora etc).
I had a Arch Bang installation with GNOME on it. My linux would load using Gummiboot. I did a pacman -Syu
and that brought in 3.13.7-1 arch kernel. I rebooted to get "waiting for 10 seconds for root device..." message and this would lead to the rootfs prompt. Looking at this article on arch forums I understood there was some issue between gummiboot and the latest 3.13.7 kernel and the suggestion was to switch to refind bootloader.
I did but I was still falling to rootfs prompt. Then I decided to bypass bootloaders altogether and use efibootmgr to directly tell uefi firmware that "hey look this is my linux installation, load it". So bootloader is no longer a suspect.
Now, I was initially chrooting like this via a live cd:
(From the live cd terminal)...
mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot/efi
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /dev/pts
modprobe efivarfs
chroot /mnt
(and then from inside the chroot)...
pacman -Syy linux
mkinitcpio -p linux
exit
(inside live cd terminal)...
umount /mnt/sys/firmware/efi/efivars /mnt/sys /mnt/dev /mnt/dev/pts /mnt/proc /mnt/boot/efi /mnt
But still I was getting the rootfs prompt. Solution was to chroot like this:
mount /dev/sda3 /mnt
chroot /mnt /bin/bash
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devtmpfs udev /dev
mkinitcpio -p linux
exit
umount /mnt/proc /mnt/dev /mnt/sys /mnt
reboot
I am not sure what is different from what I was doing to this but it sure worked. I wish I hadn't reinstalled my OS. I should have stuck to my belief that you can rescue more often than reinstall.