diff --git a/_topic_map.yml b/_topic_map.yml index b42ccd4..7c8d9a1 100644 --- a/_topic_map.yml +++ b/_topic_map.yml @@ -46,6 +46,10 @@ Topics: File: creating-rpm-packages - Name: Configuring X Window System using the xorg.conf file File: configuring-x-window-system-using-the-xorg-conf-file + - Name: (CHECK) GRUB 2 + File: grub2 + - Name: (CHECK) Spotify + File: spotify - Name: (FIX ME!) Anaconda File: anaconda - Name: (FIX ME!) AutoUpdates diff --git a/en-US/grub2.adoc b/en-US/grub2.adoc new file mode 100644 index 0000000..5bfd723 --- /dev/null +++ b/en-US/grub2.adoc @@ -0,0 +1,560 @@ += The GRUB2 Bootloader + +[[introduction]] +== Introduction +*GRUB2* is the latest version of *GNU GRUB*, the _GRand Unified Bootloader_. +A bootloader is the first software program that runs when a computer +starts. It is responsible for loading and transferring control to the +operating system kernel. In Fedora, the kernel is Linux. The kernel then initializes +the rest of the operating system. + +*GRUB2* is the follower of the previous version *GRUB* (version 0.9x). The original version is available under the name *GRUB Legacy*. + +Since Fedora 16, *GRUB2* has been the default bootloader on x86 BIOS +systems. For upgrades of BIOS systems, the default is also to install +*GRUB2*, but you can opt to skip bootloader configuration entirely. + +[[installing-grub-2-on-a-bios-system]] +== Installing GRUB2 on a BIOS system + +Usually, *GRUB2* will be installed by the installer, *Anaconda*, during the installation process. You will probably never have to deal with manual installation of *GRUB2*. However, in certain situations , you will want to install *GRUB2* manually, if you want to update from an older or different bootloader, for instance. To install *GRUB2*: + +. Install *GRUB2* software using the *dnf* package manager ++ +---- +$ sudo dnf install grub2 +---- + +[[Installing-grub-2-on-the-hard-disk-bios]] +== Installing GRUB2 on the hard disk on BIOS systems + +Installing the *GRUB2* software on your system does not change your bootloader configuration. In order to use *GRUB2* for loading the operating system, you have to install it on the hard disk. There are two possible options to install it: + +. in the master boot record (MBR) of the hard disk +. on an extra partition on the hard disk + +*GRUB2* is able to load many operating systems, including Windows, so it is recommended to install it as the default bootloader in the MBR of the primary hard disk, usually the `sda` device. + +.Before you start + +* Make sure you have installed the *GRUB2* software onto your system. See xref:installing-grub-2-on-a-system[Installing GRUB2 on your system] for more information. +* To automatically collect information about your disks and operating systems installed on them, the `os-prober` package needs to be installed on your system. + +.Procedure + +. List devices available on the system. ++ +---- +$ lsblk +---- + +. Identify the primary hard disk. Usually, it is the `sda` device. + +. Install *GRUB2* in the MBR of the primary hard disk. ++ +---- +$ sudo grub2-install /dev/sda +---- + +. Create a configuration file for *GRUB2*. ++ +---- +$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg +---- + +.More information + +* The `grub2-mkconfig` command will create a new configuration based on the currently +running system. It collects information from the `/boot` partition (or directory), from the `/etc/default/grub` file, and the customizable scripts in `/etc/grub.d/`. +* The configuration format has evolved over time, and a new configuration +file might be slightly incompatible with the old bootloader. It is +therefore a good idea to first run `grub2-install` whenever you would need +to run `grub2-mkconfig`. +* It is generally safe to directly edit `/boot/grub2/grub.cfg` in Fedora. +*Grubby* in Fedora patches the configuration when a kernel update is +performed and will try to not make any other changes than what is +necessary. Manual changes might however be +overwritten with `grub2-mkconfig` next time the system is upgraded with +*Anaconda*. Customizations can be placed in `/etc/grub.d/40_custom` or +`/boot/grub2/custom.cfg` files and will survive running the `grub2-mkconfig` command. + +[[installing-grub-2-configuration-on-uefi-system]] +== Installing GRUB2 on a UEFI system + +To install or fix *GRUB2* on a UEFI system on Fedora 18 or newer, you +need to do three things: + +* create an EFI System Partition (ESP) +* install the bootloader files +* configure the *GRUB2* configuration + +[[create-an-esp]] +=== Create an ESP + +UEFI firmware, in general, likes to boot from an _EFI System Partition_ on +a disk with a GPT label. + +.Before you start + +. Learn how to create partitions using `gdisk`. + +.Procedure + +. List available block devices to find a place to create your ESP. ++ +---- +$ lsblk +---- + +. Create at least a 128 MiB disk partition using a GPT label on the primary hard disk. ++ +---- +$ sudo gdisk /dev/sda +---- + +. Format the partition with the _FAT32_ file system. ++ +---- +$ sudo mkfs.vfat /dev/sda1 +---- + +. Mount the partition to `/boot/efi` mount point. ++ +---- +$ sudo mount /dev/sda1 /boot/efi +---- + + +[[install-the-bootloader-files]] +=== Install the bootloader files + +In order to use *GRUB2* with on the UEFI systems, you need to install appropriate packages: + +.Before you start + +. Mount the `/boot/efi` mount point. See xref:create-an-esp[Create an ESP] to create it. + +.Procedure + +. Install the necessary packages. ++ +---- +dnf install grub2-efi grub2-efi-modules shim +---- + +. If they are already installed, reinstall them. ++ +---- +dnf reinstall grub2-efi grub2-efi-modules shim +---- + +.More information + +* This installs the signed shim and the *GRUB2* binary. + +[[create-a-grub-2-configuration]] +=== Create a GRUB2 configuration + +Under EFI, *GRUB2* looks for its configuration in +`/boot/efi/EFI/fedora/grub.cfg`. For newly installed kernels to work, +`grubby` expects `/etc/grub2-efi.cfg` to be a symlink to the real +grub.cfg (for example `/boot/efi/EFI/fedora/grub.cfg`). + +If you already have a *GRUB2* EFI config file, you do not need to do anything else. Otherwise, you can try to create the configuration file using the `grub2-mkconfig` command. + +---- +$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg +---- + +[[solve-problems-with-uefi-bootloader]] +=== Solve problems with UEFI bootloader. + + +[[adding-the-boot-menu-entries]] +==== Adding the boot menu entries +When you power on your system, your firmware will look for EFI variables +that tell it how to boot. If you are already booted in EFI mode and EFI +runtime services are working correctly, you can configure your boot menu +with `efibootmgr`. If not, you will have to bootstrap the process. + +Fortunately, `shim` can help you bootstrap. The EFI program +`/boot/efi/EFI/BOOT/fallback.efi` will look for files called `BOOT.CSV` +in your ESP and will add boot entries corresponding to them. The `shim` command +provides a `BOOT.CSV` file that will add an entry for `grub2-efi` for you. + +Using the *EFI Shell* to invoke `fallback.efi` should work for you. You can do this +with commands like: + +---- +> fs0: +> cd EFI\BOOT +> fallback.efi +---- + +If you have no boot entries at all, then just booting off your disk in +UEFI mode should automatically invoke `/boot/efi/EFI/BOOT/BOOTX64.EFI`, +which will, in turn, invoke `fallback.efi`. + +If you already have incorrect boot entries, you'll either need to delete +them or to modify `BOOT.CSV` to create new entries with different names. + +[[adding-other-operating-systems-to-the-grub-2-menu]] +==== Adding Other operating systems to the *GRUB2* menu + +The `grub2-mkconfig` command will add entries for all operating systems it can find. +For the command to work, you have to have installed the *os-prober* tool that is provided by the `os-prober` package. + +Unfortunately, problem sometimes can appear. See the link:http://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config[GRUB manual] to solve issues with booting secondary operating systems. + +[[setting-default-entry]] +==== Setting default entry + +Due to `grub2-mkconfig` (and *os-prober*) we cannot predict the order of +the entries in `/boot/grub2/grub.cfg`, so we set the default by +name/title instead. + +.Before you start + +. Open `/etc/default/grub` and make sure these lines exist in the file. ++ +---- +GRUB_DEFAULT=saved +GRUB_SAVEDEFAULT=false +---- + +. Apply the changes to `grub.cfg` by running. ++ +---- +$sudo grub2-mkconfig -o /boot/grub2/grub.cfg +---- + +.Procedure + +. List all possible menu entries. ++ +---- +$sudo grep -P "submenu|^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2 +---- + +. Set the desired default menu entry ++ +---- +$sudo grub2-set-default "" +---- + +. Verify the default menu entry ++ +---- +$sudo grub2-editenv list +---- + +.More information +If you understand the risks involved, you can manually modify the +`/boot/grub2/grub.cfg` file. In that case, set the number of the default operating system using the `set default` variable. + +For example: +---- +set default="5" +---- + + +[[additional-scenario]] +== Additional Scenarios + +[[restoring-bootloader-using-live-disk]] +=== Restoring the bootloader using the Live disk. + +Sometimes, especially after a secondary operating systems has been installed, the master boot record gets damaged which then prevents the original Linux system from booting. +If this happens, it is necessary to reinstall *GRUB2* to recreate the original settings. The process not only discovers all installed operating systems, but usually adds them to the *GRUB2* configuration files, so they will all become bootable by *GRUB2*. + +.Before you start + +. Get the Fedora Live ISO from link:https://download.fedoraproject.org/pub/fedora/linux/releases/27/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-27-1.6.iso[getfedora.org]. +. Prepare a bootable device using the downloaded ISO, either a CD or a USB. + +.Procedure + +. Boot the Fedora live system from the bootable device you have created. + +. Open the terminal. + +. Examine the partition layout and identify the `boot` and the `root` partition. ++ +---- +$ sudo fdisk -l +---- ++ +If you are using the default Fedora layout, there will be one `/dev/sda1` partition that holds the `/boot` directory and one `/dev/mapper/fedora-root` that holds the root file system. + +. Create the mount point for the root partition. ++ +---- +$ sudo mkdir -p /mnt/root +---- + +. Mount the root partition on the mount point. ++ +---- +$ sudo mount /dev/mapper/fedora-root /mnt/root +---- + +. Mount the boot partition in the `boot` directory of the filesystem that you have mounted in the previous step. ++ +---- +$ sudo mount /dev/sda1 /mnt/root/boot/ +---- + +. Mount system processes and devices into the root filesystem in `/mnt/root`. ++ +---- +$ sudo mount -o bind /dev /mnt/root/dev +$ sudo mount -o bind /proc /mnt/root/proc +$ sudo mount -o bind /sys /mnt/root/sys +$ sudo mount -o bind /run /mnt/root/run +---- + +. Change your filesystem into the one mounted under `/mnt/root`. ++ +---- +$ sudo chroot /mnt/root +---- + +. Reinstall *GRUB2* into the MBR of the primary hard disk. ++ +---- +$ sudo grub2-install --no-floppy --recheck /dev/sda +---- + +. Recreate the *GRUB2* configuration files. ++ +---- +$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg +---- + +. Exit this temporary root filesystem. ++ +---- +$ exit +---- + +. Your bootloader should be now restored. Reboot your computer to boot into your normal system. ++ +---- +$ sudo systemctl reboot +---- + +[[using-the-grub-2-boot-prompt]] +==== Using the GRUB2 boot prompt + +If improperly configured, *GRUB2* may fail to load and subsequently drop +to a boot prompt. To address this issue, proceed as follows: + +. Load the XFS and LVM modules ++ +---- +insmod xfs +insmod lvm +---- + +. List the drives which *GRUB2* sees: ++ +---- +grub2> ls +---- + +. Study the output for the partition table of the `/dev/sda` device. It may look similar to the following example on a dos partition table with three partitons. +will look something like this: ++ +---- +(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) +---- ++ +or similar to this output on a gpt partition table of the `/dev/sda` device with four +partitions. ++ +---- +(hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) +---- + +. Probe each partition of the drive and locate your `vmlinuz` and `initramfs` files. ++ +---- +ls (hd0,1)/ +---- ++ +The outcome of the previous command will list the files on `/dev/sda1`. If this partition contains the `/boot` directory, it will show the full name of `vmlinuz` and `initramfs`. + +. Set the root partition. ++ +---- +grub> set root=(hd0,3) +---- + +. Set the desired kernel. ++ +---- +grub> linux (hd0,1)/vmlinuz-3.0.0-1.fc16.i686 root=/dev/sda3 rhgb quiet selinux=0 +# NOTE : add other kernel args if you have need of them +# NOTE : change the numbers to match your system +---- + +. Set the desired `initrd`. ++ +---- +grub> initrd (hd0,1)/initramfs-3.0.0-1.fc16.i686.img +# NOTE : change the numbers to match your system +---- + +. Boot with the selected settings. ++ +---- +grub> boot +---- + +. When the system starts, open a terminal. + +. Enter the `grub2-mkconfig` command to re-create the `grub.cfg` file to enable *GRUB2* to boot your system. ++ +---- +grub2-mkconfig -o /boot/grub2/grub.cfg +---- + +. Enter the `grub2-install` command to install *GRUB2* to your hard disk to use of your config file. ++ +---- +grub2-install --boot-directory=/boot /dev/sda +# Note: your drive may have another device name. Check for it with mount command output. +---- + +[[booting-with-configfile-on-different-partition]] +=== Booting the system using a configuration file on a different partition. +It's also possible to boot into a _configfile_ that's located on another +partition. If the user is faced with such a scenario, as is often the +case with multi-boot systems containing Ubuntu and Fedora, the following +steps in the *GRUB2* rescue shell might become useful to know: + +.Procedure + +. Load necessary modules to read the partitions. ++ +---- +insmod part_msdos +insmod xfs +insmod lvm +---- + +. Set the root partition. ++ +---- +set root='hd0,msdos1' +---- + +. Set the path to the configuration file. ++ +---- +configfile /grub2/grub.cfg +---- + +.More information +The *hd0,msdos1* line shows the pertinent _boot_ partition, which holds the +`grub.cfg` file. + +[[absent-floppy-disk]] +=== Dealing with the "Absent Floppy Disk" Error + +It has been reported by some users that *GRUB2* may fail to install on a partition's boot sector if the computer's floppy controller is activated in BIOS without an actual floppy disk +drive being present. Such situations resulted in an _Absent Floppy Disk_ error. + +To workaround this issue, go into the rescue mode and install *GRUB2* with the `--no-floppy` option: + +---- +grub2-install --no-floppy +---- + +[[setting-a-password-for-interactive-edit-mode]] +=== Setting a password for interactive edit mode + +If you wish to password-protect the *GRUB2* interactive edit mode +without forcing users to enter a password to boot the computer, use this procedure. + +.Procedure + +. Create the `/etc/grub.d/01_users` file. ++ +---- +cat << EOF +set superusers="root" +export superusers +password root secret +EOF +---- + +. Apply your changes. ++ +---- +grub2-mkconfig -o /boot/grub2/grub.cfg +---- + +.More information + +You can encrypt the password by using *pbkdf2*. Use `grub2-mkpasswd-pbkdf2` +to encrypt the password, then replace the password line with: + +---- +password_pbkdf2 root grub.pbkdf2.sha512.10000.1B4BD9B60DE889A4C50AA9458C4044CBE129C9607B6231783F7E4E7191D8254C0732F4255178E2677BBE27D03186E44815EEFBAD82737D81C87F5D24313DDDE7.E9AEB53A46A16F30735E2558100D8340049A719474AEEE7E3F44C9C5201E2CA82221DCF2A12C39112A701292BF4AA071EB13E5EC8C8C84CC4B1A83304EA10F74 +---- + +More details can be found at +https://help.ubuntu.com/community/Grub2/Passwords[Ubuntu Help: GRUB2 +Passwords]. + +[NOTE] +==== +Starting from Fedora 21, the `--md5pass` kickstart option must +be set using output from the `grub2-mkpasswd-pbkdf2` command. +==== + +[[using-old-graphics-modes-in-bootloader]] +=== Using old graphics modes in bootloader + +Terminal device is chosen with GRUB_TERMINAL; additional quote from +http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration + +Valid terminal output names depend on the platform, but may include +`console` (PC BIOS and EFI consoles), `serial` (serial terminal), +`gfxterm` (graphics-mode output), `ofconsole` (Open Firmware console), +or `vga_text` (VGA text output, mainly useful with Coreboot). + +The default is to use the platform's native terminal output. + +The default in Fedora is `gfxterm` and to get the legacy graphics modes +you need to set GRUB_TERMINAL to the right variable from the description +above in `/etc/default/grub`. + +[[enabling-serial-console-in-grub]] +=== Enabling Serial Console in GRUB2 + +To enable Serial console in grub: + +. Add the following entry to `/etc/default/grub`. Adjust `baudrate`, `parity`, `bits`, and `flow` controls to fit your environment and cables. ++ +---- +GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8' +GRUB_TERMINAL=serial +GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" +---- + +. Re-generate the GRUB2 config file. ++ +`grub2-mkconfig -o /boot/grub2/grub.cfg` + +[[further-reading]] +== Further Reading + +* http://www.gnu.org/software/grub/manual/grub.html +* Features/Grub2 +* Anaconda/Features/Grub2Migration +''' + +See a typo, something missing or out of date, or anything else which can be +improved? Edit this document at https://pagure.io/fedora-docs/quick-docs. diff --git a/en-US/spotify.adoc b/en-US/spotify.adoc new file mode 100644 index 0000000..88abf0e --- /dev/null +++ b/en-US/spotify.adoc @@ -0,0 +1,91 @@ += Spotify + +https://www.spotify.com/[*Spotify*] is a cross-platform (available for +Ubuntu, macOS and Windows) proprietary music streaming service. It is a +freemium product (meaning a free version of it is available, but it has +advertisements. Paying for a Premium subscription will remove the +advertisements. + +[[installation]] +Installation +~~~~~~~~~~~~ + +While it is not officially supported on Fedora or any other RPM-based +distribution, it is possible to install on Fedora using various package methods. + +* Using the https://www.spotify.com/us/download/linux/[officially-supported] +http://snapcraft.io/[Snap]. +* Using a Flatpak hosted by http://flathub.org[Flathub]. +* Using unofficial repositories like the http://negativo17.org/spotify-client/[negativo17] or https://rpmfusion.org/[RPMFusion] repositories. + +[[snap]] +Snap +^^^^ +Snap is the officially recommended distribution method for Spotify. To install +it, first install `snapd`. + +.... +sudo dnf install snapd +sudo ln -s /var/lib/snapd/snap /snap +.... + +Then install `spotify`. + +.... +snap install spotify +.... + +Be sure to consult http://snapcraft.io for more information on that repository +and Snaps in general. + +[[flatpak]] +Flatpak +^^^^^^^ + +A Spotify flatpak is also available from http://flathub.org[Flathub]. + +.... +flatpak install --from https://flathub.org/repo/appstream/com.spotify.Client.flatpakref +.... + +[[negativo17.org-repository]] +Negativo17.org repository +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Add the Yum repository and install: + +.... +dnf config-manager --add-repo=http://negativo17.org/repos/fedora-spotify.repo +dnf install spotify +.... + +To do the same on CentOS/RHEL: + +.... +yum-config-manager --add-repo=http://negativo17.org/repos/epel-spotify.repo +yum install spotify +.... + +[[rpmfusion.org-repository]] +RPMFusion repository +^^^^^^^^^^^^^^^^^^^^ + +Install the repository package and `lpf`. Follow the steps in `lpf-gui` to build +and install a local `spotify` RPM. + +.... +sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm +sudo dnf install lpf-spotify-client +lpf-gui +.... + +To do the same on CentOS/RHEL: + +.... +sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm +sudo yum install lpf-spotify-client +lpf-gui +.... + +See a typo, something missing or out of date, or anything else which can be +improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.