You are not logged in.
I've created an record in EFI just like wiki says
efibootmgr -d /dev/sda -p 1 -c -L "Arch Linux" -l /vmlinuz-linux -u "root=/dev/sda2 rw resume=/dev/sda3 initrd=/initramfs-linux.img"
But on boot i have
Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
Gentoo wiki https://wiki.gentoo.org/wiki/EFI_stub_k … figuration says i should specify rootfs in the kernel itself, but how can i do it with arch without recompiling the kernel?
Thanks.
Last edited by Ximik (2015-11-06 23:15:45)
Offline
Is /dev/sda2 your EFI partition?
If not, copy your kernel to it, and set root=$EFI.
However the easiest option is, as described in the Wiki, to mount your EFI directly to /boot.
Offline
"root" is root FS for linux install, isn't it?
Anyway, tried to change it to /dev/sda1 (EFI root). Now i have
:: mounting '/dev/sda1' on real root
mount: unknown filesystem type 'swap'
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
Offline
Sorry, of course you are right, I mixed that up.
The partition where the kernel lies, is specified by -d and -p, i.e. in your case /dev/sda1, which seems correct.
But why are you then getting this error?
:: mounting '/dev/sda1' on real root
mount: unknown filesystem type 'swap'
Has this partition possibly earlier been a swap partition?
The reason for this error message is most probably that the partition type is set to Linux swap (19), although it should be set to EFI System (1).
Linux does not care about the partition type, but it seems like the EFI does.
However this error appeared due to a missconfiguration I introduced, so it might not be relevant.
It might not be a bad idea though to check the partition types and fix them if necessary using e.g. gdisk's t command.
If this should not work you could try a bootloader like GRUB which is much more customizable.
Offline
/dev/sda1 - efi root, EFI system
/dev/sda2 - root fs, Linux
/dev/sda3 - swap, Linux swap
So it seems correct.
And i make a mistake in my post 'unknown filesystem type vfat', so it's ok cause /dev/sda1 is EFI root.
I don't want to use any additional bootloaders (otherwise we don't need efi, lol). The problem here is probably the kernel config. Mb i can somehow specify boot args via mkinitcpio? Just like i can it do with configuring the kernel via .config?
Offline
Issue was fixed. Just removed resume option.
Offline
I wouldn't call this fixed, assuming you put the resume parameter there intentionally, however if you are satisfied without hibernation capability, please mark this thread as [SOLVED] by prepending it to the title.
According to this gentoo wiki entry, "the Linux kernel is unable to [...] [d]etect the controller for the hard disk" in your case. I am not an expert on this area, but it seems like something is wrong with your swap partition, since I can't imagine that support for swap is not enabled in the default Arch kernel, especially since the Wiki recommends using the resume parameter.
By the way, mkinitcpio only creates the initial ramdisk environment (initramfs), which is loaded by the kernel.
This is why you need initrd=/initramfs-linux.img as kernel parameter, which all have to be passed to efibootmgr in this case.
Last edited by respiranto (2015-11-06 23:27:04)
Offline
For some reason
"root=/dev/sda2 rw initrd=/initramfs-linux.img resume=/dev/sda3"
instead of
"root=/dev/sda2 rw resume=/dev/sda3 initrd=/initramfs-linux.img"
works just fine.
Offline