Fungal you're not intruding, I'd still like to know more about that theory of yours (probably others as well) :)
Also EFI inside of virtual machines (from my experiences which I tried several times) does not translate at all to a real UEFI experience. It's really quirky and weird and often for me just plain did not work as expected.
I actually don't really get the point. Isn't BIOS flagged as legacy anyways?! I mean, in some years from now you won't have no choice anyways when buying a new motherboard. Ain't that right?
If this was the case why not benefit from it's booting capacities. For years BIOS has been nagged upon for being outdated and whatnot. In the future if I wanted to buy a new motherboard, would you recommend to look out for then older boards which support BIOS? Or for then up to date boards that have legacy support and rather use BIOS instead of UEFI? Please explain! I wanna know! (I call for a new thread!)
@ conron
Let's see. What's your motherboard anyways? I find it strange that there already are boards without BIOS support.
Anyways: First thing I would suggest is
do yourself a favor and not use IDs of any sort. IDs are usually recommended because the common practice for years was to go with /dev/sd
x which is error prone for it refers to the ports on your motherboard. Apparently you can switch disks around between those. So root may suddenly become your backup drive when you upgrade your rig in the future or something similar which in return would fool around with your entries (may it be UEFI or /etc/fstab or whatever else).
I personally recommend to label your partitions and use those labels instead.
This is human readable and you will never forget it, because it'll just literally translate to what your partition is used for... Also they will persist as long as you change them or reformat your disk. So no confusion when switching around your hardware. I find this true not for UEFI but for partitioning in general!
The flag to use when formatting depends a little on the format used:
# ext2/ext3/ext4 & jfs & XFS:
sudo mkfs.ext4 -L ROOT /dev/sda3
# ReiserFS:
sudo mkfs.reiserfs -l ROOT /dev/sda3
# exfat/vfat:
sudo mkfs.vfat -n ROOT /dev/sda3
# The label can be uppercase, lowercase or mixed. Choose one, stick with one.
Now for the actual EFI entry. I have read threads and posts about efibootmgr not working well with certain boards. I personally have not had any bad experiences. There are alternatives though. What matters is the resulting entry.
--disk /dev/sdx — Shorthand:
-d — Has to point to the disk containing your ESP
--part x — Shorthand:
-p — Has to point to the ESP partition on the containing disk
--create — Shorthand:
-c — Literally creates the entry
--label "anything" — Shorthand:
-L — This is what you will actually see in your motherboards boot menu as the entry
--loader /vmlinuz-linux — Shorthand:
-l — Has to point to the EFI application to execute by the motherboards boot loader.
Notice: This is ESP root! Make sure that your EFI application can be found!
My recommendation is this when installing:
- Make sure you booted your installation live system with UEFI (check for efivars)
- Partition your disk as described in the obarun wiki
- Format /dev/sda1 to be your ESP with something like: 'sudo mkfs.fat -F32 -n ESP /dev/sda1'.
- After mounting your root partition (possibly /dev/sda3) to /mnt create /mnt/boot as described in the obarun wiki.
- Mount the formatted ESP to /mnt/boot: 'sudo mount /dev/sda1 /mnt/boot'
- Mount anything else as necessary and continue the install.
- After the script finishes when it asks for a bootloader to install choose not to do so.
- Finish the installation script and exit out of it
- Temporarily install efibootmgr to the installation media if it's not on there yet
- Do not chroot into your new install. Chroot has issues with recognizing efivarfs (even though you can get around that)
- Create the EFI boot entry with efibootmgr from your running live system
--unicode "..." — Shorthand:
-u — Anything inside of the brackets will be your kernel parameters.
Notice: The absolute minimum requirement for your system to boot are the following kernel parameters:
- root — Points to your root partition. My tip if you already have the partition: 'sudo e2label /dev/sda3 ROOT'
- rw/ro — Whether to mount your root partition read-write or read-only. Read-only is recommended for obarun
- initrd — Points to your initial ramdisk image (use backslashes if you want to be EFI spec)
Make sure to get these three right. You can add more parameters according to your hardware needs. For testing purposes it may be a good idea to start with the minimum and add from there if all goes well. Easier to debug.
OMG SO COMPLICATED! [NOT]
Let's make a
one liner out of all this:
sudo efibootmgr -d /dev/sda -p 1 -c -L "Obarun" -l /vmlinuz-linux -u "root=LABEL=ROOT ro initrd=\initramfs-linux.img"
This one line is all you ever need to create a new EFI boot menu entry!
After creation you may want to verify your entry with 'sudo efibootmgr -v' and also check that the BootOrder lists your entry number as the first; If it doesn't you can change the boot order with 'sudo efibootmgr -o 0000,0001,0002' etc; If you got anything wrong you can delete the entry with 'sudo efibootmgr -b 0000 -B' where lowercase b is the bootnumber containing your entry.
This I have to say: From here it can go quirky. My motherboard will not let me change the boot order with efibootmgr. I have to delete and create entries to order things (which I never do once it's set up...). But your entry will show up in your motherboards settings (what we actually know as BIOS) from now on. You can usually set boot priorities from there. Be aware that the settings menu and the boot menu is not the same (mine accesses the settings with DEL and the boot menu with F11).
Once everything is set up you won't have to actually go into your motherboards boot menu, it will always boot into the first boot entry or the one set from the settings. Which is your job to get done right ;)
From here on the boot menu F-Key will be your GRUB-panic-button. (You can even access a shell from there!)
Please don't hesitate to ask for more!