Difference between revisions of "Install/Bootloader"

From Funtoo
Jump to navigation Jump to search
(add docs about nomodeset)
 
(44 intermediate revisions by 4 users not shown)
Line 8: Line 8:
{{InstallNavigation|num=14|prev=Kernel|next=Network}}</noinclude>
{{InstallNavigation|num=14|prev=Kernel|next=Network}}</noinclude>


<!--T:214-->
==== How Booting Works ==== <!--T:301-->
These install instructions show you how to use GRUB to boot using BIOS (legacy) or UEFI.


<!--T:215-->
<!--T:302-->
ego boot update ({{c|ego boot}}) is installed by default, but GRUB is not, as it is not required for all Funtoo Linux systems (such as containers, for example.) But for booting on bare metal, it is the recommended and best-supported boot loader, so you will need to emerge it:
In order for Funtoo Linux to boot, it must detect the boot filesystem, root filesystem and swap. The most reliable way to do this is to use the UUID,
or unique identifier, of the partitions holding these filesystems. We will use these UUID values in the {{c|/etc/fstab}}, which we will set up next.


<!--T:216-->
<!--T:303-->
The UUID allows Linux to find the right filesystem, even if it detects the disks differently or you move them around in your computer. Funtoo Linux
uses a Linux kernel and initial RAM disk to boot, and to get everything set up, we need to set up {{c|/etc/fstab}} correctly, and then install the
GRUB boot loader -- and there are two different commands for this, depending on whether you are using MBR or UEFI. Then, finally, we run {{c|ego boot update}}
which is a Funtoo command that configures everything for us.
 
==== Label partitions ==== <!--T:304-->
 
<!--T:305-->
To see the UUIDs for your existing filesystems, type the following command:
 
<!--T:306-->
{{console|body=
# ##i##ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jan 27 13:42 6883428138129353569 -> ../../sdb1
lrwxrwxrwx 1 root root 15 Jan 27 13:42 CE4B-855D -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jan 27 13:42 ac280eb5-1ea7-4742-9e71-9c7addd35c54 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Jan 27 13:42 e5a76428-8b3f-4349-81af-cbe29c7f7d09 -> ../../nvme0n1p3
}}
 
<!--T:307-->
The UUIDs are listed to the left-hand side of the {{c|->}}. Use these values for setting up the {{f|/etc/fstab}} file, below.
 
==== /etc/fstab ==== <!--T:11-->
 
<!--T:12-->
{{f|/etc/fstab}} is used by the {{c|mount}} command which is run when your system boots. Lines in this file inform {{c|mount}} about filesystems to be mounted and how they should be mounted. In order for the system to boot properly, you must edit {{f|/etc/fstab}} and ensure that it reflects the partition configuration you used earlier in the install process. If you can't remember the partition configuration that you used earlier:
 
<!--T:13-->
{{console|body=
{{console|body=
%chroot% ##i##emerge -av grub
%chroot% ##i##nano -w /etc/fstab
}}
 
<!--T:308-->
{{file|name=/etc/fstab|desc=An example fstab file|body=
UUID=CE4B-855D                                  /boot        vfat    noauto,noatime  1 2
UUID=ac280eb5-1ea7-4742-9e71-9c7addd35c54      none          swap    sw              0 0
UUID=e5a76428-8b3f-4349-81af-cbe29c7f7d09      /            ext4    noatime        0 1
}}
}}


<!--T:198-->
<!--T:309-->
Next, edit {{c|/etc/boot.conf}} using {{c|nano}} and specify "{{c|Funtoo Linux genkernel}}" as the {{c|default}} setting at the top of the file, replacing {{c|"Funtoo Linux"}}.
{{Important|Be sure to use the actual UUIDs from your system, not the example values above!}}


== boot.conf Configuration ==
<!--T:25-->
{{Note|If you mounted a /var or /home partition, add them to your fstab, or your system may not boot correctly.}}


Most users, particularly those who plan on setting up a graphical environment, will want to remove {{c|nomodeset}} from {{c|params}} in {{f|/etc/make.conf}}. This option is in {{c|/etc/boot.conf}} by default because it ensures that the initial console login prompt will appear for all users upon reboot, regardless of graphics card (some graphics cards have issues with kernel mode setting which results in a blank screen after reboot.)
==== boot.conf ==== <!--T:237-->


{{Important|Linux kernel video graphics "mode setting capability" ''is required'' for all graphics drivers except for the proprietary NVIDIA drivers. So most users will want to ''remove'' the {{c|nomodeset}} option from {{c|params}} prior to setting up their graphical environment!}}
<!--T:199-->
<!--T:199-->
{{c|/etc/boot.conf}} should now look like this:
{{c|/etc/boot.conf}} controls boot loader configuration in Funtoo and is used by {{c|ego boot}}. The default configuration is probably fine for you, so most can skip to the appropriate "GRUB Install" section, later on this page.
 
<!--T:310-->
Here is what is in the file by default:


<!--T:200-->
<!--T:200-->
Line 34: Line 73:
boot {
boot {
generate grub
generate grub
default "Funtoo Linux genkernel"  
default "Funtoo Linux"
timeout 3  
timeout 3
}
}


<!--T:238-->
"Funtoo Linux" {
"Funtoo Linux" {
kernel bzImage[-v]
kernel kernel[-v]
initrd initramfs[-v]
params += real_root=auto rootfstype=auto
}
}


"Funtoo Linux genkernel" {
<!--T:239-->
"Funtoo Linux (nomodeset)" {
kernel kernel[-v]
kernel kernel[-v]
initrd initramfs[-v]
initrd initramfs[-v]
        # REMEMBER TO REMOVE nomodeset IF YOU ARE NOT USING NVIDIA:
params += real_root=auto rootfstype=auto nomodeset
params += real_root=auto rootfstype=auto nomodeset
}
}
Line 53: Line 95:
If you are booting a custom or non-default kernel, please read {{c|man boot.conf}} for information on the various options available to you.
If you are booting a custom or non-default kernel, please read {{c|man boot.conf}} for information on the various options available to you.


=== Intel Microcode ===
==== nomodeset ==== <!--T:240-->
 
<!--T:241-->
You will notice after booting that you there will be a boot option in the GRUB menu for a "nomodeset" mode. We don't recommend you use this mode by default but it is available to you for a couple of good reasons:
 
<!--T:225-->
* '''For users with HiDPI (4K+) displays, especially laptops''': If you have not set up a graphical environment, when the kernel automatically changes graphics modes, the console font can be tiny and unreadable.
* '''For users with incompatible graphics cards''': Some graphics cards don't handle mode setting properly and this can result in a blank screen after reboot. Use this boot option as a temporary workaround.
 
<!--T:242-->
To use the {{c|nomodeset}} option, simply select that option from the GRUB menu when your system boots.
 
=== rootwait === <!--T:243-->
If you are using a root partition on an {{c|nvme}} device, add the {{c|rootwait}} kernel parameter to force the kernel to wait for it to asynchronously initialize or the kernel will panic on some hardware.
 
==== Intel Microcode ==== <!--T:232-->


{{c|ego boot}} will ensure that you have the most recent Intel CPU microcode installed on your system if you emerge the
<!--T:233-->
following packages:
{{c|ego boot}} will ensure that you have the most recent Intel CPU microcode installed on your system if you emerge the following packages. These will be merged for you already if
you are using a desktop stage3:


<!--T:234-->
{{console|body=
{{console|body=
%chroot% ##i##emerge intel-microcode iucode_tool
%chroot% ##i##emerge -av intel-microcode iucode_tool
}}
}}


<!--T:235-->
This is not necessary for AMD systems.
This is not necessary for AMD systems.


==== Old School (BIOS) MBR ==== <!--T:204-->
==== GRUB Install: Old School (BIOS) MBR ==== <!--T:204-->


<!--T:205-->
<!--T:205-->
Line 71: Line 131:
<!--T:206-->
<!--T:206-->
{{console|body=
{{console|body=
%chroot% ##i##grub-install --target=i386-pc --no-floppy /dev/sda
%chroot% ##i##grub-install --target=i386-pc --no-floppy /dev/sdX
%chroot% ##i##ego boot update
}}
}}


==== New School (UEFI) Boot Entry ==== <!--T:207-->  
==== GRUB Install: New School (UEFI) Boot Entry ==== <!--T:207-->  


<!--T:208-->
<!--T:208-->
Line 86: Line 145:
{{console|body=
{{console|body=
%chroot% ##i##mount -o remount,rw /sys/firmware/efi/efivars
%chroot% ##i##mount -o remount,rw /sys/firmware/efi/efivars
%chroot% ##i##grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck /dev/sda
%chroot% ##i##grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck
%chroot% ##i##ego boot update
}}
}}


Line 96: Line 154:
{{console|body=
{{console|body=
%chroot% ##i##mount -o remount,rw /sys/firmware/efi/efivars
%chroot% ##i##mount -o remount,rw /sys/firmware/efi/efivars
%chroot% ##i##grub-install --target=i386-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck /dev/sda
%chroot% ##i##grub-install --target=i386-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck
}}
 
==== Ego! ==== <!--T:300-->
 
<!--T:311-->
Now, let's run Funtoo's {{c|ego boot update}} command to get everything configured. This will detect the current kernel(s) on your system and create the necessary GRUB boot entries to get your system booted:
 
<!--T:312-->
{{console|body=
%chroot% ##i##ego boot update
%chroot% ##i##ego boot update
}}
<!--T:213-->
You only need to run {{c|grub-install}} when you first install Funtoo Linux, but you need to re-run {{c|ego boot update}} every time you modify your {{c|/etc/boot.conf}}. When you emerge updated kernels, {{c|ego boot update}} will be run automatically as part of the install process. This will regenerate {{c|/boot/grub/grub.cfg}} so that you will have new kernels available in your GRUB boot menu upon your next reboot.
==== Post reboot UEFI troubleshooting ==== <!--T:236-->
In case UEFI NVRAM boot entry is missing in BIOS and grub does not start you can try moving an already installed GRUB EFI executable to the [https://wiki.archlinux.org/index.php/GRUB#Default/fallback_boot_path default/fallback path]
{{console|body=
%chroot% ##i##mv -v '/boot/EFI/Funtoo Linux [GRUB]' /boot/EFI/BOOT
%chroot% ##i##mv -v /boot/EFI/BOOT/grubx64.efi /boot/EFI/BOOT/BOOTX64.EFI
}}
}}


Line 105: Line 182:
OK -- you are almost ready to boot!  
OK -- you are almost ready to boot!  


<!--T:213-->
You only need to run <code>grub-install</code> when you first install Funtoo Linux, but you need to re-run <code>ego boot update</code> every time you modify your <code>/etc/boot.conf</code> file or add new kernels to your system. This will regenerate {{c|/boot/grub/grub.cfg}} so that you will have new kernels available in your GRUB boot menu, the next time you reboot.
</translate>
</translate>
<noinclude>{{InstallNavigation|num=14|prev=Kernel|next=Network|align=right}}</noinclude>
<noinclude>{{InstallNavigation|num=14|prev=Kernel|next=Network|align=right}}</noinclude>

Latest revision as of 21:53, March 21, 2024

Other languages:
English • ‎Türkçe • ‎español • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎

Install Guide: Bootloader

Install Guide, Chapter 14 < Prev Next >

How Booting Works

In order for Funtoo Linux to boot, it must detect the boot filesystem, root filesystem and swap. The most reliable way to do this is to use the UUID, or unique identifier, of the partitions holding these filesystems. We will use these UUID values in the /etc/fstab, which we will set up next.

The UUID allows Linux to find the right filesystem, even if it detects the disks differently or you move them around in your computer. Funtoo Linux uses a Linux kernel and initial RAM disk to boot, and to get everything set up, we need to set up /etc/fstab correctly, and then install the GRUB boot loader -- and there are two different commands for this, depending on whether you are using MBR or UEFI. Then, finally, we run ego boot update which is a Funtoo command that configures everything for us.

Label partitions

To see the UUIDs for your existing filesystems, type the following command:

root # ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jan 27 13:42 6883428138129353569 -> ../../sdb1
lrwxrwxrwx 1 root root 15 Jan 27 13:42 CE4B-855D -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jan 27 13:42 ac280eb5-1ea7-4742-9e71-9c7addd35c54 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Jan 27 13:42 e5a76428-8b3f-4349-81af-cbe29c7f7d09 -> ../../nvme0n1p3

The UUIDs are listed to the left-hand side of the ->. Use these values for setting up the /etc/fstab file, below.

/etc/fstab

/etc/fstab is used by the mount command which is run when your system boots. Lines in this file inform mount about filesystems to be mounted and how they should be mounted. In order for the system to boot properly, you must edit /etc/fstab and ensure that it reflects the partition configuration you used earlier in the install process. If you can't remember the partition configuration that you used earlier:

chroot # nano -w /etc/fstab
   /etc/fstab - An example fstab file
UUID=CE4B-855D                                  /boot         vfat    noauto,noatime  1 2
UUID=ac280eb5-1ea7-4742-9e71-9c7addd35c54       none          swap    sw              0 0
UUID=e5a76428-8b3f-4349-81af-cbe29c7f7d09       /             ext4    noatime         0 1
   Important

Be sure to use the actual UUIDs from your system, not the example values above!

   Note

If you mounted a /var or /home partition, add them to your fstab, or your system may not boot correctly.

boot.conf

/etc/boot.conf controls boot loader configuration in Funtoo and is used by ego boot. The default configuration is probably fine for you, so most can skip to the appropriate "GRUB Install" section, later on this page.

Here is what is in the file by default:

   /etc/boot.conf
boot {
	generate grub
	default "Funtoo Linux"
	timeout 3
}

"Funtoo Linux" {
	kernel kernel[-v]
	initrd initramfs[-v]
	params += real_root=auto rootfstype=auto
}

"Funtoo Linux (nomodeset)" {
	kernel kernel[-v]
	initrd initramfs[-v]
	params += real_root=auto rootfstype=auto nomodeset
}

If you are booting a custom or non-default kernel, please read man boot.conf for information on the various options available to you.

nomodeset

You will notice after booting that you there will be a boot option in the GRUB menu for a "nomodeset" mode. We don't recommend you use this mode by default but it is available to you for a couple of good reasons:

  • For users with HiDPI (4K+) displays, especially laptops: If you have not set up a graphical environment, when the kernel automatically changes graphics modes, the console font can be tiny and unreadable.
  • For users with incompatible graphics cards: Some graphics cards don't handle mode setting properly and this can result in a blank screen after reboot. Use this boot option as a temporary workaround.

To use the nomodeset option, simply select that option from the GRUB menu when your system boots.

rootwait

If you are using a root partition on an nvme device, add the rootwait kernel parameter to force the kernel to wait for it to asynchronously initialize or the kernel will panic on some hardware.

Intel Microcode

ego boot will ensure that you have the most recent Intel CPU microcode installed on your system if you emerge the following packages. These will be merged for you already if you are using a desktop stage3:

chroot # emerge -av intel-microcode iucode_tool

This is not necessary for AMD systems.

GRUB Install: Old School (BIOS) MBR

When using "old school" BIOS booting, run the following command to install GRUB to your MBR, and generate the /boot/grub/grub.cfg configuration file that GRUB will use for booting:

chroot # grub-install --target=i386-pc --no-floppy /dev/sdX

GRUB Install: New School (UEFI) Boot Entry

If you're using "new school" UEFI booting, run of the following sets of commands, depending on whether you are installing a 64-bit or 32-bit system. This will add GRUB as a UEFI boot entry.

For x86-64bit systems:

chroot # mount -o remount,rw /sys/firmware/efi/efivars
chroot # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck

For x86-32bit systems:

chroot # mount -o remount,rw /sys/firmware/efi/efivars
chroot # grub-install --target=i386-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck

Ego!

Now, let's run Funtoo's ego boot update command to get everything configured. This will detect the current kernel(s) on your system and create the necessary GRUB boot entries to get your system booted:

chroot # ego boot update

You only need to run grub-install when you first install Funtoo Linux, but you need to re-run ego boot update every time you modify your /etc/boot.conf. When you emerge updated kernels, ego boot update will be run automatically as part of the install process. This will regenerate /boot/grub/grub.cfg so that you will have new kernels available in your GRUB boot menu upon your next reboot.

Post reboot UEFI troubleshooting

In case UEFI NVRAM boot entry is missing in BIOS and grub does not start you can try moving an already installed GRUB EFI executable to the default/fallback path

chroot # mv -v '/boot/EFI/Funtoo Linux [GRUB]' /boot/EFI/BOOT
chroot # mv -v /boot/EFI/BOOT/grubx64.efi /boot/EFI/BOOT/BOOTX64.EFI

First Boot, and in the future...

OK -- you are almost ready to boot!

Install Guide, Chapter 14 < Prev Next >