The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "Install/Bootloader/zh-cn"
Mmwweettyy (talk | contribs) (Created page with "这些安装说明展示了如何使用 GRUB 用 BIOS(传统)或 UEFI 启动。") |
(Updating to match new version of source page) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
{{InstallNavigation|num=14|prev=Kernel|next=Network}}</noinclude> | {{InstallNavigation|num=14|prev=Kernel|next=Network}}</noinclude> | ||
=== | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
==== How Booting Works ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
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. | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
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. | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
==== Label partitions ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
To see the UUIDs for your existing filesystems, type the following command: | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{console|body= | {{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 | |||
}} | }} | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
The UUIDs are listed to the left-hand side of the {{c|->}}. Use these values for setting up the {{f|/etc/fstab}} file, below. | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
==== /etc/fstab ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{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: | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{console|body= | |||
%chroot% ##i##nano -w /etc/fstab | |||
}} | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{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 | |||
}} | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{Important|Be sure to use the actual UUIDs from your system, not the example values above!}} | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{Note|If you mounted a /var or /home partition, add them to your fstab, or your system may not boot correctly.}} | |||
</div> | |||
==== boot.conf ==== | ==== boot.conf ==== | ||
{{c|/etc/boot.conf}} controls boot loader configuration in Funtoo. Here is what is in the file by default: | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
{{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. | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
Here is what is in the file by default: | |||
</div> | |||
{{file|name=/etc/boot.conf|body= | {{file|name=/etc/boot.conf|body= | ||
Line 40: | Line 105: | ||
}} | }} | ||
如果你需要自定义或者是从一个非默认的内核启动,请阅读 {{c|man boot.conf}} 来获得对你用帮助的信息。 | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
==== nomodeset ==== | ==== nomodeset ==== | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
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: | 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: | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
* '''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 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. | * '''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. | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
To use the {{c|nomodeset}} option, simply select that option from the GRUB menu when your system boots. | To use the {{c|nomodeset}} option, simply select that option from the GRUB menu when your system boots. | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
=== rootwait === | |||
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. | |||
</div> | |||
=== Intel Microcode === | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
==== Intel Microcode ==== | |||
</div> | |||
{{c|ego boot}} will ensure that you have the most recent Intel CPU microcode installed on your system if you emerge the | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
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: | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{console|body= | {{console|body= | ||
%chroot% ##i##emerge intel-microcode iucode_tool | %chroot% ##i##emerge -av intel-microcode iucode_tool | ||
}} | }} | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
This is not necessary for AMD systems. | This is not necessary for AMD systems. | ||
</div> | |||
==== Old School (BIOS) MBR ==== | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
==== GRUB Install: Old School (BIOS) MBR ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
When using "old school" BIOS booting, run the following command to install GRUB to your MBR, and generate the {{c|/boot/grub/grub.cfg}} configuration file that GRUB will use for booting: | When using "old school" BIOS booting, run the following command to install GRUB to your MBR, and generate the {{c|/boot/grub/grub.cfg}} configuration file that GRUB will use for booting: | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{console|body= | {{console|body= | ||
%chroot% ##i##grub-install --target=i386-pc --no-floppy /dev/sdX | %chroot% ##i##grub-install --target=i386-pc --no-floppy /dev/sdX | ||
}} | }} | ||
</div> | |||
==== New School (UEFI) Boot Entry ==== | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
==== GRUB Install: New School (UEFI) Boot Entry ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
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. | 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. | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
For x86-64bit systems: | For x86-64bit systems: | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{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 | %chroot% ##i##grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck | ||
}} | }} | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
For x86-32bit systems: | For x86-32bit systems: | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{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 | %chroot% ##i##grub-install --target=i386-efi --efi-directory=/boot --bootloader-id="Funtoo Linux [GRUB]" --recheck | ||
}} | }} | ||
</div> | |||
==== | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
==== Ego! ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
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: | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
{{console|body= | |||
%chroot% ##i##ego boot update | |||
}} | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
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. | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
==== Post reboot UEFI troubleshooting ==== | ==== 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 [https://wiki.archlinux.org/index.php/GRUB#Default/fallback_boot_path default/fallback path] | 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] | ||
Line 104: | Line 217: | ||
%chroot% ##i##mv -v /boot/EFI/BOOT/grubx64.efi /boot/EFI/BOOT/BOOTX64.EFI | %chroot% ##i##mv -v /boot/EFI/BOOT/grubx64.efi /boot/EFI/BOOT/BOOTX64.EFI | ||
}} | }} | ||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
==== First Boot, and in the future... ==== | |||
</div> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | |||
OK -- you are almost ready to boot! | |||
</div> | |||
<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:54, March 21, 2024
安装指南: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 fileUUID=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
Be sure to use the actual UUIDs from your system, not the example values above!
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
}
如果你需要自定义或者是从一个非默认的内核启动,请阅读 man boot.conf
来获得对你用帮助的信息。
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 > |