https://wiki.archlinux.org/api.php?action=feedcontributions&user=Duquesnc&feedformat=atomArchWiki - User contributions [en]2024-03-28T15:41:44ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=GRUB&diff=263610GRUB2013-06-20T10:23:26Z<p>Duquesnc: /* Notes for current GRUB Legacy users */</p>
<hr />
<div>[[Category:Boot loaders]]<br />
[[ar:GRUB]]<br />
[[cs:GRUB2]]<br />
[[de:GRUB]]<br />
[[es:GRUB2]]<br />
[[fr:GRUB2]]<br />
[[id:GRUB2]]<br />
[[it:GRUB2]]<br />
[[ru:GRUB2]]<br />
[[tr:GRUB2]]<br />
[[zh-CN:GRUB2]]<br />
[[zh-TW:GRUB2]]<br />
{{Article summary start}}<br />
{{Article summary text|Covers various aspects of version 2 of the GRand Unified Bootloader (GRUB).}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Boot process overview}}}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|BURG}} - BURG is a brand-new boot loader based on GRUB v2. It can be built on a wider range of OS, and has a highly configurable menu system which works in both text and graphic mode. <br />
{{Article summary wiki|GRUB Legacy}} - previous Version, now obsolete.<br />
{{Article summary heading|Resources}}<br />
{{Article summary wiki|GRUB EFI Examples}}<br />
{{Article summary link|GNU GRUB - GNU Project|https://www.gnu.org/software/grub/}}<br />
{{Article summary end}}<br />
<br />
[https://www.gnu.org/software/grub/ GRUB] - not to be confused with [[GRUB Legacy]] - is the next generation of the GRand Unified Bootloader. GRUB is derived from [http://www.nongnu.org/pupa/ PUPA] which was a research project to develop the next generation of what is now GRUB Legacy. GRUB has been rewritten from scratch to clean up everything and provide modularity and portability [https://www.gnu.org/software/grub/grub-faq.html#q1].<br />
<br />
In brief, the ''bootloader'' is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the Linux kernel. The kernel, in turn, initializes the rest of the operating system.<br />
<br />
== Preface ==<br />
<br />
* The name ''GRUB'' officially refers to version ''2'' of the software, see [https://www.gnu.org/software/grub/]. If you are looking for the article on the legacy version, see [[GRUB Legacy]].<br />
* GRUB supports [[Btrfs]] as root (without a separate {{ic|/boot}} filesystem) compressed with either zlib or LZO<br />
<br />
=== Notes for current GRUB Legacy users ===<br />
<br />
* Upgrading from [[GRUB Legacy]] to GRUB is much the same as freshly installing GRUB, which is covered [[#Installation|below]]<br />
* There are differences in the commands of GRUB Legacy and GRUB. Familiarize yourself with [https://www.gnu.org/software/grub/manual/grub.html#Commands GRUB commands] before proceeding (e.g. "find" has been replaced with "search")<br />
* GRUB is now ''modular'' and no longer requires "stage 1.5". As a result, the bootloader itself is limited -- modules are loaded from the hard drive as needed to expand functionality (e.g. for [[LVM]] or RAID support)<br />
* Device naming has changed between GRUB Legacy and GRUB. Partitions are numbered from 1 instead of 0 while drives are still numbered from 0, and prefixed with partition-table type. For example, {{ic|/dev/sda1}} would be referred to as {{ic|(hd0,msdos1)}} (for MBR) or {{ic|(hd0,gpt1)}} (for GPT)<br />
* If you use systemd without systemd-sysvcompat, and have had {{ic|<nowiki>init=/usr/lib/systemd/systemd</nowiki>}} in your old grub menu.lst, the automatically generated grub.cfg file might not carry over this kernel parameter (giving you "ERROT: Root device mounted successfully, but /sbin/init does not exist" on boot). If so, edit the Arch Linux entry that grub shows you, add {{ic|<nowiki>init=/usr/lib/systemd/systemd</nowiki>}} to the kernel parameters, and then [[Grub#Additional_arguments|make it permanent]].<br />
* GRUB is noticably bigger than GRUB legacy (occupies ~13Mo in /boot). If you are booting from a separate /boot partition, and this partition is smaller than 32Mo, you will run into disk space issues, and pacman will refuse to install new kernels. If you don't want to re-partition your system, switch to [[Syslinux]] instead, which is smaller (occupies ~1.5Mo in /boot).<br />
<br />
==== Backup important data ====<br />
<br />
Although a GRUB installation should run smoothly, it is strongly recommended to keep the GRUB Legacy files before upgrading to GRUB v2.<br />
<br />
# mv /boot/grub /boot/grub-legacy<br />
<br />
Backup the MBR which contains the boot code and partition table (Replace {{ic|/dev/sd'''X'''}} with your actual disk path):<br />
<br />
# dd if=/dev/sdX of=/path/to/backup/mbr_backup bs=512 count=1<br />
<br />
Only 446 bytes of the MBR contain boot code, the next 64 contain the partition table. If you do not want to overwrite your partition table when restoring, it is strongly advised to backup only the MBR boot code:<br />
<br />
# dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1<br />
<br />
If unable to install GRUB2 correctly, see [[#Restore GRUB Legacy]].<br />
<br />
=== Preliminary requirements ===<br />
<br />
==== BIOS systems ====<br />
<br />
===== GUID Partition Table (GPT) specific instructions =====<br />
<br />
GRUB in [[GPT|BIOS-GPT]] configuration requires a [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html BIOS boot partition] to embed its {{ic|core.img}} in the absence of post-MBR gap in GPT partitioned systems (which is taken over by the GPT Primary Header and Primary Partition table). This partition is used by GRUB only in BIOS-GPT setups. No such partition type exists in case of MBR partitioning (at least not for GRUB). This partition is also not required if the system is UEFI based, as no embedding of bootsectors takes place in that case.<br />
<br />
For a BIOS-GPT configuration, create a 1007 KiB partition at the beginning of the disk using gdisk, cgdisk or GNU Parted with no filesystem. The size of 1007 KiB will allow for the following partition to be correctly alligned at 1024 KiB. If needed, the partition can also be located somewhere else on the disk, but it should be within the first 2 TiB region. Set the partition type to {{ic|ef02}} in (c)gdisk or {{ic|set <BOOT_PART_NUM> bios_grub on}} in GNU Parted.<br />
<br />
{{Note|<br />
* This partition should be created before {{ic|grub-install}} or {{ic|grub-setup}} is run<br />
* gdisk will only allow you to create this partition on the position which will waste the least amount of space (sector 34-2047) if you create it last, after all the other partitions. This is because gdisk will auto-align partitions to 2048-sector boundaries if possible<br />
}}<br />
<br />
===== Master Boot Record (MBR) specific instructions =====<br />
<br />
Usually the post-[[MBR]] gap (after the 512 byte MBR region and before the start of the 1st partition) in many MBR (or msdos disklabel) partitioned systems is 31 KiB when DOS compatibility cylinder alignment issues are satisfied in the partition table. However a post-MBR gap of about 1 to 2 MiB is recommended to provide sufficient room for embedding GRUB's {{ic|core.img}} ({{bug|24103}}). It is advisable to use a partitioner which supports 1 MiB partition alignment to obtain this space as well as satisfy other non-512 byte sector issues (which are unrelated to embedding of {{ic|core.img}}).<br />
<br />
==== UEFI systems ====<br />
<br />
{{Note|It is recommended to read and understand the [[Unified Extensible Firmware Interface|UEFI]], [[GUID Partition Table|GPT]] and [[UEFI Bootloaders]] pages.}}<br />
<br />
===== Create and Mount the UEFI System Partition =====<br />
<br />
Follow [[Unified Extensible Firmware Interface#EFI System Partition]] for instructions on creating a UEFI System Partition. Then mount the UEFI System Partition at {{ic|/boot/efi}}. If you have mounted the UEFI System Partition at some other mountpoint, replace {{ic|/boot/efi}} in the below instructions with that mountpoint:<br />
<br />
# mkdir -p /boot/efi<br />
# mount -t vfat <UEFI_SYSTEM_PARTITION> /boot/efi<br />
<br />
Create a {{ic|/boot/efi/EFI}} directory:<br />
<br />
# mkdir /boot/efi/EFI<br />
<br />
== Installation ==<br />
<br />
=== BIOS systems ===<br />
<br />
GRUB can be [[pacman|installed]] with the {{Pkg|grub-bios}} package from the [[official repositories]]. It will replace {{Pkg|grub-legacy}} or {{Pkg|grub}}, if it is installed.<br />
<br />
{{Note|Simply installing the package won't update the {{ic|/boot/grub/i386-pc/core.img}} file and the GRUB modules in {{ic|/boot/grub/i386-pc}}. You need to update them manually using {{ic|grub-install}} as explained below.}}<br />
<br />
==== Install boot files ====<br />
<br />
There are 3 ways to install GRUB boot files in BIOS booting:<br />
* [[#Install to GPT BIOS boot partition]] (recommended with [[GPT]])<br />
* [[#Install to 440-byte MBR boot code region]] (recommended with [[MBR]])<br />
* [[#Install to partition or partitionless disk]] (not recommended)<br />
* [[#Generate core.img alone]] (safest method, but requires another BIOS bootloader like [[GRUB Legacy]] or [[Syslinux]] to be installed to chainload {{ic|/boot/grub/i386-pc/core.img}})<br />
<br />
{{Note|See http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html for additional documentation.}}<br />
<br />
===== Install to GPT BIOS boot partition =====<br />
<br />
[[GUID Partition Table]] disks do not have a reserved "boot track". Therefore you must create a BIOS Boot Partition ({{ic|ef02}}) to hold the GRUB core image.<br />
<br />
Using GNU Parted, you can set this using a command such as the following:<br />
<br />
# parted /dev/disk set <partition-number> bios_grub on<br />
<br />
If you are using gdisk, set the partition type to {{ic|ef02}}. With partitioning programs that require setting the GUID directly, it should be {{ic|‘21686148-6449-6e6f-744e656564454649’}} (or, {{ic|[[wikipedia:BIOS_Boot_partition|Hah!IdontNeedEFI]]}}).<br />
<br />
{{Warning|Be very careful which partition you select when marking it as a BIOS Boot Partition. When GRUB finds a BIOS Boot Partition during installation, it will automatically overwrite part of it. Make sure that the partition does not contain any other data.}}<br />
<br />
To setup {{ic|grub-bios}} on a GPT disk, populate the {{ic|/boot/grub}} directory, generate the {{ic|/boot/grub/i386-pc/core.img}} file, and embed it in the BIOS Boot Partition, run:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=i386-pc --recheck --debug /dev/sda<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
where {{ic|/dev/sda}} is the destination of the installation.<br />
<br />
Continue with [[GRUB#Generate config file]] below.<br />
<br />
===== Install to 440-byte MBR boot code region =====<br />
<br />
To setup {{ic|grub-bios}} in the 440-byte Master Boot Record boot code region, populate the {{ic|/boot/grub}} directory, generate the {{ic|/boot/grub/i386-pc/core.img}} file, embed it in the 31 KiB (minimum size - varies depending on partition alignment) post-MBR gap, and generate the configuration file, run:<br />
<br />
# modprobe dm-mod<br />
# grub-install --recheck /dev/sdX<br />
<br />
where {{ic|/dev/sdX}} is the destination of the installation (in this case the MBR of the first SATA disk). If you use [[LVM]] for your {{ic|/boot}}, you can install GRUB on multiple physical disks.<br />
<br />
{{Warning|Make sure to check the {{ic|/boot}} directory if you use the latter. Sometimes the {{ic|boot-directory}} parameter creates another {{ic|/boot}} folder inside of {{ic|/boot}}. A wrong install would look like: {{ic|/boot/boot/grub/}}.}}<br />
<br />
Continue with [[GRUB#Generate config file]] below.<br />
<br />
===== Install to partition or partitionless disk =====<br />
<br />
{{Note|grub-bios does not encourage installation to a partition boot sector or a partitionless disk like GRUB Legacy or Syslinux does. This kind of setup is prone to breakage, especially during updates, and is not supported by Arch devs.}}<br />
<br />
To set up grub-bios to a partition boot sector, to a partitionless disk (also called superfloppy) or to a floppy disk, run (using for example {{ic|/dev/sdaX}} as the {{ic|/boot}} partition):<br />
<br />
# modprobe dm-mod <br />
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX<br />
# chattr -i /boot/grub/i386-pc/core.img<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
# chattr +i /boot/grub/i386-pc/core.img<br />
<br />
You need to use the {{ic|--force}} option to allow usage of blocklists and should not use {{ic|1=--grub-setup=/bin/true}} (which is similar to simply generating {{ic|core.img}}).<br />
<br />
{{ic|grub-install}} will give out warnings like which should give you the idea of what might go wrong with this approach:<br />
<br />
/sbin/grub-setup: warn: Attempting to install GRUB to a partitionless disk or to a partition. This is a BAD idea.<br />
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. <br />
However, blocklists are UNRELIABLE and their use is discouraged.<br />
<br />
Without {{ic|--force}} you may get the below error and {{ic|grub-setup}} will not setup its boot code in the partition boot sector:<br />
<br />
/sbin/grub-setup: error: will not proceed with blocklists<br />
<br />
With {{ic|--force}} you should get:<br />
<br />
Installation finished. No error reported.<br />
<br />
The reason why {{ic|grub-setup}} does not by default allow this is because in case of partition or a partitionless disk is that {{ic|grub-bios}} relies on embedded blocklists in the partition bootsector to locate the {{ic|/boot/grub/i386-pc/core.img}} file and the prefix dir {{ic|/boot/grub}}. The sector locations of {{ic|core.img}} may change whenever the filesystem in the partition is being altered (files copied, deleted etc.). For more info see https://bugzilla.redhat.com/show_bug.cgi?id=728742 and https://bugzilla.redhat.com/show_bug.cgi?id=730915.<br />
<br />
The workaround for this is to set the immutable flag on {{ic|/boot/grub/i386-pc/core.img}} (using chattr command as mentioned above) so that the sector locations of the {{ic|core.img}} file in the disk is not altered. The immutable flag on {{ic|/boot/grub/i386-pc/core.img}} needs to be set only if {{ic|grub-bios}} is installed to a partition boot sector or a partitionless disk, not in case of installation to MBR or simple generation of {{ic|core.img}} without embedding any bootsector (mentioned above).<br />
<br />
===== Generate core.img alone =====<br />
<br />
To populate the {{ic|/boot/grub}} directory and generate a {{ic|/boot/grub/i386-pc/core.img}} file '''without''' embedding any {{ic|grub-bios}} bootsector code in the MBR, post-MBR region, or the partition bootsector, add {{ic|1=--grub-setup=/bin/true}} to {{ic|grub-install}}:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
You can then chainload GRUB's {{ic|core.img}} from GRUB Legacy or syslinux as a Linux kernel or a multiboot kernel.<br />
<br />
==== Generate config file ====<br />
<br />
Finally, generate a configuration for GRUB (this is explained in greater detail in the Configuration section):<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{Note|The file path is {{ic|/boot/grub/grub.cfg}}, NOT {{ic|/boot/grub/i386-pc/grub.cfg}}.}}<br />
<br />
If GRUB complains about "no suitable mode found" while booting, go to [[#"No suitable mode found" error]].<br />
<br />
If {{ic|grub-mkconfig}} fails, convert your {{ic|/boot/grub/menu.lst}} file to {{ic|/boot/grub/grub.cfg}} using:<br />
<br />
# grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg<br />
<br />
For example:<br />
<br />
{{hc|/boot/grub/menu.lst|<nowiki><br />
default=0<br />
timeout=5<br />
<br />
title Arch Linux Stock Kernel<br />
root (hd0,0)<br />
kernel /vmlinuz-linux root=/dev/sda2 ro<br />
initrd /initramfs-linux.img<br />
<br />
title Arch Linux Stock Kernel Fallback<br />
root (hd0,0)<br />
kernel /vmlinuz-linux root=/dev/sda2 ro<br />
initrd /initramfs-linux-fallback.img<br />
</nowiki>}}<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
set default='0'; if [ x"$default" = xsaved ]; then load_env; set default="$saved_entry"; fi<br />
set timeout=5<br />
<br />
menuentry 'Arch Linux Stock Kernel' {<br />
set root='(hd0,1)'; set legacy_hdbias='0'<br />
legacy_kernel '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'<br />
legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'<br />
<br />
}<br />
<br />
menuentry 'Arch Linux Stock Kernel Fallback' {<br />
set root='(hd0,1)'; set legacy_hdbias='0'<br />
legacy_kernel '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'<br />
legacy_initrd '/initramfs-linux-fallback.img' '/initramfs-linux-fallback.img'<br />
}<br />
</nowiki>}}<br />
<br />
If you forgot to create a GRUB {{ic|/boot/grub/grub.cfg}} config file and simply rebooted into GRUB Command Shell, type:<br />
<br />
sh:grub> insmod legacycfg<br />
sh:grub> legacy_configfile ${prefix}/menu.lst<br />
<br />
Boot into Arch and re-create the proper GRUB {{ic|/boot/grub/grub.cfg}} config file.<br />
<br />
{{Note|This option works only in BIOS systems, not in UEFI systems.}}<br />
<br />
==== Multiboot ====<br />
This should work out of the box, but an extra utility needs to be installed: os-prober. Install it, then rerun grub-mkconfig -o /boot/grub/grub.cfg. If this fails, you can try manually adding an entry by following the instructions below.<br />
<br />
===== Microsoft Windows installed in BIOS-MBR mode =====<br />
<br />
{{Note|GRUB supports booting {{ic|bootmgr}} directly and chainload of partition boot sector is no longer required to boot Windows in a BIOS-MBR setup.}}<br />
<br />
{{Warning|It is the '''system partition''' that has {{ic|bootmgr}}, not your "real" Windows partition (usually C:). When showing all UUIDs with blkid, the system partition is the one with {{ic|LABEL&#61;"SYSTEM RESERVED"}} and is only about 100 MB in size (much like the boot partition for Arch). See [[Wikipedia:System partition and boot partition]] for more info.}}<br />
<br />
Throughout this section, it is assumed your Windows partition is /dev/sda1. A different partition will change every instance of hd0,msdos1. First, find the UUID of the NTFS filesystem of the Windows's SYSTEM PARTITION where the {{ic|bootmgr}} and its files reside. For example, if Windows {{ic|bootmgr}} exists at {{ic|/media/SYSTEM_RESERVED/bootmgr}}:<br />
<br />
For Windows Vista/7/8:<br />
<br />
# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr<br />
69B235F6749E84CE<br />
<br />
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr<br />
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1<br />
<br />
{{Note|For Windows XP, replace {{ic|bootmgr}} with {{ic|NTLDR}} in the above commands. And note that there may not be a separate SYSTEM_RESERVED partition; just probe the file NTLDR on your Windows partition.}}<br />
<br />
Then, add the below code to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} and regenerate {{ic|grub.cfg}} with {{ic|grub-mkconfig}} as explained above to boot Windows (XP, Vista, 7 or 8) installed in BIOS-MBR mode:<br />
<br />
For Windows Vista/7/8:<br />
<br />
menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {<br />
insmod part_msdos<br />
insmod ntfs<br />
insmod search_fs_uuid<br />
insmod ntldr <br />
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE<br />
ntldr /bootmgr<br />
}<br />
<br />
For Windows XP:<br />
<br />
menuentry "Microsoft Windows XP" {<br />
insmod part_msdos<br />
insmod ntfs<br />
insmod search_fs_uuid<br />
insmod ntldr <br />
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE<br />
ntldr /ntldr<br />
}<br />
<br />
{{ic|/etc/grub.d/40_custom}} can be used as a template to create {{ic|/etc/grub.d/nn_custom}}. Where {{ic|nn}} defines the precendence, indicating the order the script is executed. The order scripts are executed determine the placement in the grub boot menu.<br />
<br />
{{Note|{{ic|nn}} should be greater than 06 to ensure necessary scripts are executed first.}}<br />
<br />
=== UEFI systems ===<br />
<br />
{{Note|It is well know that different motherboard manufactures implement UEFI differently. Users experiencing problems getting Grub/EFI to work properly are encouraged to share detailed steps for hardware-specific cases where UEFI booting does not work as described below. In an effort to keep the parent [[GRUB]] article neat and tidy, see the [[GRUB EFI Examples]] page for these special cases.}}<br />
<br />
First [[Unified Extensible Firmware Interface#Detecting UEFI Firmware Arch|detect which UEFI firmware arch]] you have (either x86_64 or i386). Depending on the result, install the appropriate package:<br />
*For 64-bit aka x86_64 UEFI firmware, install {{Pkg|grub-efi-x86_64}}<br />
*For 32-bit aka i386 UEFI firmware, install {{Pkg|grub-efi-i386}}<br />
<br />
{{Note|Simply installing the package will not update the {{ic|core.efi}} file and the GRUB modules in the UEFI System Partition. You need to do this manually using {{ic|grub-install}} as explained below.}}<br />
<br />
==== Install boot files ====<br />
<br />
===== Install to UEFI system partition =====<br />
<br />
{{Note|<br />
* The below commands assume you are using {{ic|grub-efi-x86_64}} (for {{ic|grub-efi-i386}} replace {{ic|x86_64}} with {{ic|i386}} in the below commands)<br />
* To do this, you need to boot using UEFI and not the BIOS. If you booted by just copying the ISO file to the USB drive, you will need to follow [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO|this guide]] or grub-install will show errors<br />
}}<br />
<br />
The UEFI system partition will need to be mounted at {{ic|/boot/efi/}} for the GRUB install script to detect it:<br />
<br />
# mkdir -p /boot/efi<br />
# mount -t vfat /dev/sdXY /boot/efi<br />
<br />
Install GRUB UEFI application to {{ic|/boot/efi/EFI/arch_grub}} and its modules to {{ic|/boot/grub/x86_64-efi}} (recommended) using:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
{{Note|Without {{ic|--target}} or {{ic|--directory}} option, grub-install cannot determine for which firmware GRUB is being installed. In such cases {{ic|grub-install}} will show {{ic|source_dir doesn't exist. Please specify --target or --directory}} message.}}<br />
<br />
If you want to install GRUB modules and {{ic|grub.cfg}} at the directory {{ic|/boot/efi/EFI/grub}} and the {{ic|grubx64.efi}} application at {{ic|/boot/efi/EFI/arch_grub}} (ie. all the GRUB UEFI files inside the UEFISYS partition itself) use:<br />
<br />
# modprobe dm-mod <br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug<br />
# mkdir -p /boot/efi/EFI/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/efi/EFI/grub/locale/en.mo<br />
<br />
The {{ic|--efi-directory}} option mentions the mountpoint of UEFI SYSTEM PARTITION , {{ic|--bootloader-id}} mentions the name of the directory used to store the {{ic|grubx64.efi}} file and {{ic|--boot-directory}} mentions the directory wherein the actual modules will be installed (and into which {{ic|grub.cfg}} should be created).<br />
<br />
The actual paths are:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi<br />
<br />
<boot-directory>/grub/x86_64-efi/<all modules, grub.efi, core.efi, grub.cfg><br />
<br />
{{Note|the {{ic|--bootloader-id}} option does not change {{ic|<boot-directory>/grub}}, i.e. you cannot install the modules to {{ic|<boot-directory>/<bootloader-id>}}, the path is hard-coded to be {{ic|<boot-directory>/grub}}.}}<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == <boot-directory>/grub == /boot/efi/EFI/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=arch_grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub<br />
<boot-directory>/grub == /boot/efi/EFI/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=arch_grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub<br />
<boot-directory>/grub == /boot/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/grub<br />
<boot-directory>/grub == /boot/grub<br />
<br />
The {{ic|<nowiki><efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi</nowiki>}} is an exact copy of {{ic|<nowiki><boot-directory>/grub/x86_64-efi/core.efi</nowiki>}}.<br />
<br />
{{Note|<br />
* In GRUB 2.00, the {{ic|grub-install}} option {{ic|--efi-directory}} replaces {{ic|--root-directory}} and the latter is deprecated<br />
* The options {{ic|--efi-directory}} and {{ic|--bootloader-id}} are specific to GRUB UEFI<br />
}}<br />
<br />
In all the cases the UEFI SYSTEM PARTITION should be mounted for {{ic|grub-install}} to install {{ic|grubx64.efi}} in it, which will be launched by the firmware (using the {{ic|efibootmgr}} created boot entry in non-Mac systems).<br />
<br />
If you notice carefully, there is no <device_path> option (Eg: {{ic|/dev/sda}}) at the end of the {{ic|grub-install}} command unlike the case of setting up GRUB for BIOS systems. Any <device_path> provided will be ignored by the install script as UEFI bootloaders do not use MBR or Partition boot sectors at all.<br />
<br />
You may now be able to UEFI boot your system by creating a {{ic|grub.cfg}} file by following [[#Generate UEFI Config file]] and [[#Create GRUB entry in the Firmware Boot Manager]].<br />
<br />
==== Generate config file ====<br />
<br />
Finally, generate a configuration for GRUB (this is explained in greater detail in the Configuration section):<br />
<br />
# grub-mkconfig -o <boot-directory>/grub/grub.cfg<br />
<br />
{{Note|The file path is {{ic|<boot-directory>/grub/grub.cfg}}, NOT {{ic|<boot-directory>/grub/x86_64-efi/grub.cfg}}.}}<br />
<br />
If you used {{ic|<nowiki>--boot-directory=/boot</nowiki>}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If you used {{ic|<nowiki>--boot-directory=/boot/efi/EFI</nowiki>}}:<br />
<br />
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg<br />
<br />
This is independent of the value of {{ic|--bootloader-id}} option.<br />
<br />
If GRUB complains about "no suitable mode found" while booting, try [[#"No suitable mode found" error]].<br />
<br />
==== Create GRUB entry in the firmware boot manager ====<br />
<br />
{{ic|grub-install}} automatically tries to create a menu entry in the boot manager. If it doesn't, then see [[Beginners' Guide#GRUB]] for instructions to use {{ic|efibootmgr}} to create a menu entry. However, the problem is likely to be that you haven't booted your CD/USB in UEFI mode, as in [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO]].<br />
<br />
==== Create GRUB standalone UEFI application ====<br />
<br />
It is possible to create a {{ic|grubx64_standalone.efi}} application which has all the modules embeddded in a memdisk within the UEFI application, thus removing the need for having a separate directory populated with all the GRUB UEFI modules and other related files. This is done using the {{ic|grub-mkstandalone}} command which is included in {{Pkg|grub-common}}.<br />
<br />
The easiest way to do this would be with the install command already mentioned before, but specifying the modules to include. For example:<br />
<br />
# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \<br />
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" <any extra files you want to include><br />
<br />
The {{ic|grubx64_standalone.efi}} file expects {{ic|grub.cfg}} to be within its $prefix which is {{ic|(memdisk)/boot/grub}}. The memdisk is embedded within the efi app. The {{ic|grub-mkstandlone}} script allow passing files to be included in the memdisk image to be as the arguments to the script (in <any extra files you want to include>).<br />
<br />
If you have the {{ic|grub.cfg}} at {{ic|/home/user/Desktop/grub.cfg}}, then create a temporary {{ic|/home/user/Desktop/boot/grub/}} directory, copy the {{ic|/home/user/Desktop/grub.cfg}} to {{ic|/home/user/Desktop/boot/grub/grub.cfg}}, cd into {{ic|/home/user/Desktop/boot/grub/}} and run:<br />
<br />
# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \<br />
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" "boot/grub/grub.cfg"<br />
<br />
The reason to cd into {{ic|/home/user/Desktop/boot/grub/}} and to pass the file path as {{ic|boot/grub/grub.cfg}} (notice the lack of a leading slash - boot/ vs /boot/ ) is because {{ic|dir1/dir2/file}} is included as {{ic|(memdisk)/dir1/dir2/file}} by the {{ic|grub-mkstandalone}} script. <br />
<br />
If you pass {{ic|/home/user/Desktop/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/grub.cfg}}. If you pass {{ic|/home/user/Desktop/boot/grub/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/boot/grub/grub.cfg}}. That is the reason for cd'ing into {{ic|/home/user/Desktop/boot/grub/}} and passing {{ic|boot/grub/grub.cfg}}, to include the file as {{ic|(memdisk)/boot/grub/grub.cfg}}, which is what {{ic|grub.efi}} expects the file to be.<br />
<br />
You need to create an UEFI Boot Manager entry for {{ic|/boot/efi/EFI/arch_grub/grubx64_standalone.efi}} using {{ic|efibootmgr}}. Follow [[#Create GRUB entry in the Firmware Boot Manager]].<br />
<br />
==== Multiboot ====<br />
<br />
===== Microsoft Windows installed in UEFI-GPT mode =====<br />
<br />
Find the UUID of the FAT32 filesystem in the UEFI SYSTEM PARTITION where the Windows UEFI Bootloader files reside. For example, if Windows {{ic|bootmgfw.efi}} exists at {{ic|/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi}} (ignore the upper-lower case differences since that is immaterial in FAT filesystem):<br />
<br />
# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi<br />
1ce5-7f28<br />
<br />
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi<br />
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1<br />
<br />
Then, add this code to {{ic|/etc/grub.d/40_custom}} to chainload Windows x86_64 (Vista SP1+, 7 or 8) installed in UEFI-GPT mode:<br />
<br />
menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {<br />
insmod part_gpt<br />
insmod fat<br />
insmod search_fs_uuid<br />
insmod chain<br />
search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28<br />
chainloader /efi/Microsoft/Boot/bootmgfw.efi<br />
}<br />
<br />
Afterwards remake {{ic|/boot/grub/grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
== Configuration ==<br />
<br />
You can also choose to automatically generate or manually edit {{ic|grub.cfg}}.<br />
<br />
{{Note|<br />
* For EFI systems, if GRUB was installed with the {{ic|--boot-directory}} option set, the {{ic|grub.cfg}} file must be placed in the same directory as {{ic|grubx64.efi}}. Otherwise, the {{ic|grub.cfg}} file goes in {{ic|/boot/grub/}}, just like in GRUB BIOS<br />
* [http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html Here] is a quite complete description of how to configure GRUB<br />
}}<br />
<br />
=== Automatically generating using grub-mkconfig ===<br />
<br />
The GRUB {{ic|menu.lst}} equivalent configuration files are {{ic|/etc/default/grub}} and {{ic|/etc/grub.d/*}}. {{ic|grub-mkconfig}} uses these files to generate {{ic|grub.cfg}}. By default the script outputs to stdout. To generate a {{ic|grub.cfg}} file run the command:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{ic|/etc/grub.d/10_linux}} is set to automatically add menu items for Arch linux that work out of the box, to any generated configuration. Other operating systems may need to be added manually to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}}<br />
<br />
==== Additional arguments ====<br />
<br />
To pass custom additional arguments to the Linux image, you can set the {{ic|GRUB_CMDLINE_LINUX}} variable in {{ic|/etc/default/grub}}. <br />
<br />
For example, use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX"</nowiki>}} where {{ic|sda'''X'''}} is your swap partition to enable resume after hibernation.<br />
<br />
You can also use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}}, where {{ic|${swap_uuid} }} is the [[Persistent_block_device_naming|UUID]] of your swap partition.<br />
<br />
Multiple entries are separated by spaces within the double quotes. So, for users who want both resume and systemd it would look like this:<br />
{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/usr/lib/systemd/systemd"</nowiki>}}<br />
<br />
See [[Kernel parameters]] for more info.<br />
<br />
=== Manually creating grub.cfg ===<br />
<br />
{{Warning|Editing this file is strongly ''not'' recommended. The file is generated by the {{ic|grub-mkconfig}} command, and it is best to edit your {{ic|/etc/default/grub}} or one of the scripts in the {{ic|/etc/grub.d}} folder.}}<br />
<br />
A basic GRUB config file uses the following options:<br />
* {{ic|(hdX,Y)}} is the partition {{ic|Y}} on disk {{ic|X}}, partition numbers starting at 1, disk numbers starting at 0<br />
* {{ic|1=set default=N}} is the default boot entry that is chosen after timeout for user action<br />
* {{ic|1=set timeout=M}} is the time {{ic|M}} to wait in seconds for a user selection before default is booted<br />
* {{ic|<nowiki>menuentry "title" {entry options}</nowiki>}} is a boot entry titled {{ic|title}}<br />
* {{ic|1=set root=(hdX,Y)}} sets the boot partition, where the kernel and GRUB modules are stored (boot need not be a separate partition, and may simply be a directory under the "root" partition ({{ic|/}})<br />
<br />
An example configuration:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
# Config file for GRUB - The GNU GRand Unified Bootloader<br />
# /boot/grub/grub.cfg<br />
<br />
# DEVICE NAME CONVERSIONS<br />
#<br />
# Linux Grub<br />
# -------------------------<br />
# /dev/fd0 (fd0)<br />
# /dev/sda (hd0)<br />
# /dev/sdb2 (hd1,2)<br />
# /dev/sda3 (hd0,3)<br />
#<br />
<br />
# Timeout for menu<br />
set timeout=5<br />
<br />
# Set default boot entry as Entry 0<br />
set default=0<br />
<br />
# (0) Arch Linux<br />
menuentry "Arch Linux" {<br />
set root=(hd0,1)<br />
linux /vmlinuz-linux root=/dev/sda3 ro<br />
initrd /initramfs-linux.img<br />
}<br />
<br />
## (1) Windows<br />
#menuentry "Windows" {<br />
# set root=(hd0,3)<br />
# chainloader +1<br />
#}<br />
</nowiki>}}<br />
<br />
=== Dual-booting ===<br />
<br />
{{Note|If you want GRUB to automatically search for other systems, you may wish to install {{Pkg|os-prober}}.}}<br />
<br />
==== Using grub-mkconfig ====<br />
The best way to add other entries is editing the {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} . The entries in this file will be automatically added when running {{ic|grub-mkconfig}}.<br />
After adding the new lines, run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg <br />
to generate an updated {{ic|grub.cfg}}.<br />
<br />
===== With GNU/Linux =====<br />
<br />
Assuming that the other distro is on partition {{ic|sda2}}:<br />
<br />
menuentry "Other Linux" {<br />
set root=(hd0,2)<br />
linux /boot/vmlinuz (add other options here as required)<br />
initrd /boot/initrd.img (if the other kernel uses/needs one)<br />
}<br />
<br />
===== With FreeBSD =====<br />
<br />
Requires that FreeBSD is installed on a single partition with UFS. Assuming it is installed on {{ic|sda4}}:<br />
<br />
menuentry "FreeBSD" {<br />
set root=(hd0,4)<br />
chainloader +1<br />
}<br />
<br />
===== With Windows =====<br />
<br />
This assumes that your Windows partition is {{ic|sda3}}. Remember you need to point set root and chainloader to the system reserve partition that windows made when it installed, not the actual partition windows is on. This example works if your system reserve partition is {{ic|sda3}}.<br />
<br />
# (2) Windows XP<br />
menuentry "Windows XP" {<br />
set root="(hd0,3)"<br />
chainloader +1<br />
}<br />
<br />
If the Windows bootloader is on an entirely different hard drive than GRUB, it may be necessary to trick Windows into believing that it is the first hard drive. This was possible with {{ic|drivemap}}. Assuming GRUB is on {{ic|hd0}} and Windows is on {{ic|hd2}}, you need to add the following after {{ic|set root}}:<br />
<br />
drivemap -s hd0 hd2<br />
<br />
==== With Windows via EasyBCD and NeoGRUB ====<br />
<br />
Since EasyBCD's NeoGRUB currently does not understand the GRUB menu format, chainload to it by replacing the contents of your {{ic|C:\NST\menu.lst}} file with lines similar to the following:<br />
<br />
default 0<br />
timeout 1<br />
<br />
title Chainload into GRUB v2<br />
root (hd0,7)<br />
kernel /boot/grub/i386-pc/core.img<br />
<br />
=== Visual configuration ===<br />
<br />
In GRUB it is possible, by default, to change the look of the menu. Make sure to initialize, if not done already, GRUB graphical terminal, gfxterm, with proper video mode, gfxmode, in GRUB. This can be seen in the section [[#"No suitable mode found" error]]. This video mode is passed by GRUB to the linux kernel via 'gfxpayload' so any visual configurations need this mode in order to be in effect.<br />
<br />
==== Setting the framebuffer resolution ====<br />
<br />
GRUB can set the framebuffer for both GRUB itself and the kernel. The old {{ic|1=vga=}} way is deprecated. The preferred method is editing {{ic|/etc/default/grub}} as the following sample:<br />
<br />
GRUB_GFXMODE=1024x768x32<br />
GRUB_GFXPAYLOAD_LINUX=keep<br />
<br />
To generate the changes, run: <br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
The {{ic|gfxpayload}} property will make sure the kernel keeps the resolution.<br />
<br />
{{Note|<br />
* If this example does not work for you try to replace {{ic|1=gfxmode="1024x768x32"}} by {{ic|1=vbemode="0x105"}}. Remember to replace the specified resolution with one suitable for your screen<br />
* To show all the modes you can use {{ic|1=# hwinfo --framebuffer}} (hwinfo is available in [community]), while at GRUB prompt you can use the {{ic|1=vbeinfo}} command<br />
}}<br />
<br />
If this method does not work for you, the deprecated {{ic|1=vga=}} method will still work. Just<br />
add it next to the {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="}} line in {{ic|/etc/default/grub}}<br />
for eg: {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"}} will give you a {{ic|1024x768}} resolution.<br />
<br />
You can choose one of these resolutions: {{ic|640×480}}, {{ic|800×600}}, {{ic|1024×768}}, {{ic|1280×1024}}, {{ic|1600×1200}}, {{ic|1920×1200}}<br />
<br />
==== 915resolution hack ====<br />
<br />
Some times for Intel graphic adapters neither {{ic|1=# hwinfo --framebuffer}} nor {{ic|1=vbeinfo}} will show you the desired resolution. In this case you can use {{ic|915resolution}} hack. This hack will temporarily modify video BIOS and add needed resolution. See [http://915resolution.mango-lang.org/ 915resolution's home page]<br />
<br />
First you need to find a video mode which will be modified later. For that we need the GRUB command shell:<br />
{{hc|sh:grub> 915resolution -l|<br />
Intel 800/900 Series VBIOS Hack : version 0.5.3<br />
[...]<br />
'''Mode 30''' : 640x480, 8 bits/pixel<br />
[...]<br />
}}<br />
Next, we overwrite the {{ic|Mode 30}} with {{ic|1440x900}} resolution:<br />
{{hc|/etc/grub.d/00_header|<br />
[...]<br />
'''915resolution 30 1440 900 # Inserted line'''<br />
set gfxmode&#61;${GRUB_GFXMODE}<br />
[...]<br />
}}<br />
Lastly we need to set {{ic|GRUB_GFXMODE}} as described earlier, regenerate GRUB configuration file and reboot to test changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
# reboot<br />
<br />
==== Background image and bitmap fonts ====<br />
<br />
GRUB comes with support for background images and bitmap fonts in {{ic|pf2}} format. The unifont font is included in the {{Pkg|grub-common}} package under the filename {{ic|unicode.pf2}}, or, as only ASCII characters under the name {{ic|ascii.pf2}}.<br />
<br />
Image formats supported include tga, png and jpeg, providing the correct modules are loaded. The maximum supported resolution depends on your hardware.<br />
<br />
Make sure you have set up the proper [[#Setting the framebuffer resolution|framebuffer resolution]].<br />
<br />
Edit {{ic|/etc/default/grub}} like this:<br />
GRUB_BACKGROUND="/boot/grub/myimage"<br />
#GRUB_THEME="/path/to/gfxtheme"<br />
GRUB_FONT="/path/to/font.pf2"<br />
<br />
{{Note|If you have installed GRUB on a separate partition, {{ic|/boot/grub/myimage}} becomes {{ic|/grub/myimage}}.}}<br />
<br />
To generate the changes and add the information into {{ic|grub.cfg}}, run: <br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If adding the splash image was successful, the user will see {{ic|"Found background image..."}} in the terminal as the command is executed. <br />
If this phrase is not seen, the image information was probably not incorporated into the {{ic|grub.cfg}} file.<br />
<br />
If the image is not displayed, check:<br />
* The path and the filename in {{ic|/etc/default/grub}} are correct<br />
* The image is of the proper size and format (tga, png, 8-bit jpg)<br />
* The image was saved in the RGB mode, and is not indexed<br />
* The console mode is not enabled in {{ic|/etc/default/grub}}<br />
* The command {{ic|grub-mkconfig}} must be executed to place the background image information into the {{ic|/boot/grub/grub.cfg}} file<br />
<br />
==== Theme ====<br />
<br />
Here is an example for configuring Starfield theme which was included in GRUB package.<br />
<br />
Edit {{ic|/etc/default/grub}}<br />
GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"<br />
<br />
Generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If configuring the theme was successful, you'll see {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}} in the terminal.<br />
Your splash image will usually not be displayed when using a theme.<br />
<br />
==== Menu colors ====<br />
<br />
You can set the menu colors in GRUB. The available colors for GRUB can be found in [https://www.gnu.org/software/grub/manual/html_node/Theme-file-format.html the GRUB Manual].<br />
Here is an example:<br />
<br />
Edit {{ic|/etc/default/grub}}:<br />
GRUB_COLOR_NORMAL="light-blue/black"<br />
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"<br />
<br />
Generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Hidden menu ====<br />
<br />
One of the unique features of GRUB is hiding/skipping the menu and showing it by holding {{keypress|Esc}} when needed. You can also adjust whether you want to see the timeout counter.<br />
<br />
Edit {{ic|/etc/default/grub}} as you wish. Here is an example where the comments from the beginning of the two lines have been removed to enable the feature, the timeout has been set to five seconds and to be shown to the user:<br />
GRUB_HIDDEN_TIMEOUT=5<br />
GRUB_HIDDEN_TIMEOUT_QUIET=false<br />
<br />
and run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Disable framebuffer ====<br />
<br />
Users who use NVIDIA proprietary driver might wish to disable GRUB's framebuffer as it can cause problems with the binary driver.<br />
<br />
To disable framebuffer, edit {{ic|/etc/default/grub}} and uncomment the following line:<br />
GRUB_TERMINAL_OUTPUT=console<br />
<br />
and run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Another option if you want to keep the framebuffer in GRUB is to revert to text mode just before starting the kernel. To do that modify the variable in {{ic|/etc/default/grub}}:<br />
GRUB_GFXPAYLOAD_LINUX=text<br />
<br />
and rebuild the configuration as before.<br />
<br />
=== Other Options ===<br />
<br />
==== LVM ====<br />
<br />
If you use [[LVM]] for your {{ic|/boot}}, add the following before menuentry lines:<br />
<br />
insmod lvm<br />
<br />
and specify your root in the menuentry as:<br />
<br />
set root=lvm/''lvm_group_name''-''lvm_logical_boot_partition_name''<br />
<br />
Example:<br />
<br />
# (0) Arch Linux<br />
menuentry "Arch Linux" {<br />
insmod lvm<br />
set root=lvm/VolumeGroup-lv_boot<br />
# you can only set following two lines<br />
linux /vmlinuz-linux root=/dev/mapper/VolumeGroup-root ro<br />
initrd /initramfs-linux.img<br />
}<br />
<br />
==== RAID ====<br />
<br />
GRUB provides convenient handling of RAID volumes. You need to add {{ic|insmod mdraid}} which allows you to address the volume natively. For example, {{ic|/dev/md0}} becomes:<br />
set root=(md0)<br />
<br />
whereas a partitioned RAID volume (e.g. {{ic|/dev/md0p1}}) becomes:<br />
set root=(md0,1)<br />
<br />
==== Persistent block device naming ====<br />
One naming scheme for [[Persistent block device naming]] is the use of globally unique UUIDs to detect partitions instead of the "old" {{ic|/dev/sd*}}. Advantages are covered up in the above linked article. <br />
<br />
Persistent naming via filesystem UUIDs are used by default in GRUB. <br />
<br />
{{Note|The {{ic|/boot/grub.cfg}} file needs regeneration with the new UUID in {{ic|/etc/default/grub}} every time a relevant filesystem is resized or recreated. Remember this when modifying partitions & filesystems with a Live-CD.}}<br />
<br />
Whether to use UUIDs is controlled by an option in {{ic|/etc/default/grub}}:<br />
<br />
# GRUB_DISABLE_LINUX_UUID=true<br />
<br />
Either way, do not forget to generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Using Labels ====<br />
<br />
It is possible to use labels, human-readable strings attached to filesystems, by using the {{ic|--label}} option to {{ic|search}}. First of all, label your existing partition:<br />
# tune2fs -L <LABEL> <PARTITION><br />
<br />
Then, add an entry using labels. An example of this:<br />
<br />
menuentry "Arch Linux, session texte" {<br />
search --label --set=root archroot<br />
linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro<br />
initrd /boot/initramfs-linux.img<br />
}<br />
<br />
==== Recall previous entry ====<br />
<br />
GRUB can remember the last entry you booted from and use this as the default entry to boot from next time. This is useful if you have multiple kernels (i.e., the current Arch one and the LTS kernel as a fallback option) or operating systems. To do this, edit {{ic|/etc/default/grub}} and change the value of {{ic|GRUB_DEFAULT}}:<br />
<br />
GRUB_DEFAULT=saved<br />
<br />
This ensures that GRUB will default to the saved entry. To enable saving the selected entry, add the following line to {{ic|/etc/default/grub}}:<br />
<br />
GRUB_SAVEDEFAULT=true<br />
<br />
{{Note|Manually added menu items, e.g. Windows in {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}}, will need {{ic|savedefault}} added. Remember to regenerate([[#Generate config file]]) your configuration file.}}<br />
<br />
==== Changing the default menu entry ====<br />
<br />
To change the default selected entry, edit {{ic|/etc/default/grub}} and change the value of {{ic|GRUB_DEFAULT}}:<br />
<br />
Using numbers :<br />
GRUB_DEFAULT=0<br />
Grub identifies entries in generated menu counted from zero. That means 0 for the first entry which is the default value, 1 for the second and so on.<br />
<br />
Or using menu titles :<br />
GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'<br />
<br />
{{Note|Remember to regenerate([[#Generate config file]]) your configuration file.}}<br />
<br />
==== Security ====<br />
<br />
If you want to secure GRUB so it is not possible for anyone to change boot parameters or use the command line, you can add a user/password combination to GRUB's configuration files. To do this, run the command {{ic|grub-mkpasswd-pbkdf2}}. Enter a password and confirm it:<br />
<br />
{{hc|grub-mkpasswd-pbkdf2|<br />
[...]<br />
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A<br />
}}<br />
Then, add the following to {{ic|/etc/grub.d/00_header}}:<br />
{{hc|/etc/grub.d/00_header|<br />
cat << EOF<br />
<br />
set superusers<nowiki>=</nowiki>"'''username'''"<br />
password_pbkdf2 '''username''' '''<password>'''<br />
<br />
EOF<br />
}}<br />
where {{ic|<password>}} is the string generated by {{ic|grub-mkpasswd_pbkdf2}}.<br />
<br />
Regenerate your configuration file. Your GRUB command line, boot parameters and all boot entries are now protected.<br />
<br />
This can be relaxed and further customized with more users as described in the "Security" part of [https://www.gnu.org/software/grub/manual/grub.html#Security the GRUB manual].<br />
<br />
==== Root encryption ====<br />
<br />
To let GRUB automatically add the kernel parameters for root encryption,<br />
add {{ic|1=cryptdevice=/dev/yourdevice:label}} to {{ic|GRUB_CMDLINE_LINUX}} in {{ic|/etc/default/grub}}.<br />
<br />
{{Tip|If you're upgrading from a working GRUB Legacy configuration, check {{ic|/boot/grub/menu.lst.pacsave}} for the correct device/label to add. Look for them after the text {{ic|kernel /vmlinuz-linux}}.}}<br />
<br />
Example with root mapped to {{ic|/dev/mapper/root}}:<br />
<br />
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"<br />
<br />
Also, disable the usage of UUIDs for the rootfs:<br />
<br />
GRUB_DISABLE_LINUX_UUID=true<br />
<br />
Regenerate the configuration.<br />
<br />
==== Boot non-default entry only once ====<br />
<br />
The command {{ic|grub-reboot}} is very helpful to boot another entry than the default only once. GRUB loads the entry passed in the first command line argument, when the system is rebooted the next time. Most importantly GRUB returns to loading the default entry for all future booting. Changing the configuration file or selecting an entry in the GRUB menu is not necessary.<br />
{{Note|This requires {{ic|1=GRUB_DEFAULT=saved}} in {{ic|/etc/default/grub}} (and then regenerating {{ic|grub.cfg}}) or, in case of hand-made {{ic|grub.cfg}}, the line {{ic|1=set default="${saved_entry}"}}.}}<br />
<br />
=== Booting an ISO directly from GRUB ===<br />
<br />
Edit {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} to add an entry for the target ISO. When finished, update the GRUB menu as with the usual {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} (as root).<br />
<br />
==== Arch ISO ====<br />
<br />
{{Note|The following examples assume the ISO is in {{ic|/archives}} on {{ic|hd0,6}}.}}<br />
{{Tip|For thumbdrives, use something like {{ic|(hd1,$partition)}} and either {{ic|/dev/sdb'''Y'''}} for the {{ic|img_dev}} parameter or [[Persistent_block_device_naming|a persistent name]], e.g. {{ic|img_dev&#61;/dev/disk/by-label/CORSAIR}}.}}<br />
<br />
===== x86_64 =====<br />
<br />
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {<br />
set isofile="/archives/archlinux-2013.05.01-dual.iso"<br />
set partition="6"<br />
loopback loop (hd0,$partition)/$isofile<br />
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop<br />
initrd (loop)/arch/boot/x86_64/archiso.img<br />
}<br />
<br />
===== i686 =====<br />
<br />
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {<br />
set isofile="/archives/archlinux-2013.05.01-dual.iso"<br />
set partition="6"<br />
loopback loop (hd0,$partition)/$isofile<br />
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop<br />
initrd (loop)/arch/boot/i686/archiso.img<br />
}<br />
<br />
==== Ubuntu ISO ====<br />
<br />
{{Note|The example assumes that the iso is in {{ic|/archives}} on {{ic|hd0,6}}. Users must adjust the location and hdd/partition in the lines below to match their systems.}}<br />
<br />
menuentry "ubuntu-13.04-desktop-amd64.iso" {<br />
set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"<br />
loopback loop (hd0,6)/$isofile<br />
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --<br />
initrd (loop)/casper/initrd.lz<br />
}<br />
<br />
menuentry "ubuntu-12.04-desktop-amd64.iso" {<br />
set isofile="/archives/ubuntu-12.04-desktop-amd64.iso"<br />
loopback loop (hd0,6)/$isofile<br />
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --<br />
initrd (loop)/casper/initrd.lz<br />
}<br />
<br />
==== Other ISOs ====<br />
<br />
Other working configurations from [http://askubuntu.com/questions/141940/how-to-boot-live-iso-images link Source].<br />
<br />
== Using the command shell ==<br />
<br />
Since the MBR is too small to store all GRUB modules, only the menu and a few basic commands reside there. The majority of GRUB functionality remains in modules in {{ic|/boot/grub}}, which are inserted as needed. In error conditions (e.g. if the partition layout changes) GRUB may fail to boot. When this happens, a command shell may appear.<br />
<br />
GRUB offers multiple shells/prompts. If there is a problem reading the menu but the bootloader is able to find the disk, you will likely be dropped to the "normal" shell:<br />
sh:grub><br />
<br />
If there is a more serious problem (e.g. GRUB cannot find required files), you may instead be dropped to the "rescue" shell:<br />
grub rescue><br />
<br />
The rescue shell is a restricted subset of the normal shell, offering much less functionality. If dumped to the rescue shell, first try inserting the "normal" module, then starting the "normal" shell:<br />
grub rescue> set prefix=(hdX,Y)/boot/grub<br />
grub rescue> insmod (hdX,Y)/boot/grub/i386-pc/normal.mod<br />
rescue:grub> normal<br />
<br />
=== Pager support ===<br />
<br />
GRUB supports pager for reading commands that provide long output (like the {{ic|help}} command). This works only in normal shell mode and not in rescue mode. To enable pager, in GRUB command shell type:<br />
sh:grub> set pager=1<br />
<br />
== GUI configuration tools ==<br />
<br />
Following package may be installed:<br />
* {{App|grub-customizer|Customize the bootloader (GRUB or BURG)|https://launchpad.net/grub-customizer|{{AUR|grub-customizer}}}}<br />
* {{App|grub2-editor|KDE4 control module for configuring the GRUB bootloader|http://kde-apps.org/content/show.php?content&#61;139643|{{AUR|grub2-editor}}}}<br />
* {{App|kcm-grub2|This Kcm module manages the most common settings of GRUB|http://kde-apps.org/content/show.php?content&#61;137886|{{AUR|kcm-grub2}}}}<br />
* {{App|startupmanager|GUI app for changing the settings of GRUB Legacy, GRUB, Usplash and Splashy|http://sourceforge.net/projects/startup-manager/|{{AUR|startupmanager}}}}<br />
<br />
== parttool for hide/unhide ==<br />
<br />
If you have a Windows 9x paradigm with hidden {{ic|C:\}} disks GRUB can hide/unhide it using {{ic|parttool}}. For example, to boot the third {{ic|C:\}} disk of three Windows 9x installations on the CLI enter the CLI and:<br />
parttool hd0,1 hidden+ boot-<br />
parttool hd0,2 hidden+ boot-<br />
parttool hd0,3 hidden- boot+<br />
set root=hd0,3<br />
chainloader +1<br />
boot<br />
<br />
== Using the rescue console ==<br />
<br />
See [[#Using the command shell]] first. If unable to activate the standard shell, one possible solution is to boot using a live CD or some other rescue disk to correct configuration errors and reinstall GRUB. However, such a boot disk is not always available (nor necessary); the rescue console is surprisingly robust.<br />
<br />
The available commands in GRUB rescue include {{ic|insmod}}, {{ic|ls}}, {{ic|set}}, and {{ic|unset}}. This example uses {{ic|set}} and {{ic|insmod}}. {{ic|set}} modifies variables and {{ic|insmod}} inserts new modules to add functionality.<br />
<br />
Before starting, the user must know the location of their {{ic|/boot}} partition (be it a separate partition, or a subdirectory under their root):<br />
grub rescue> set prefix=(hdX,Y)/boot/grub<br />
<br />
where X is the physical drive number and Y is the partition number.<br />
<br />
To expand console capabilities, insert the {{ic|linux}} module:<br />
grub rescue> insmod (hdX,Y)/boot/grub/linux.mod<br />
<br />
{{Note|With a separate boot partition, omit {{ic|/boot}} from the path, (i.e. type {{ic|1=set prefix=(hdX,Y)/grub}} and {{ic|insmod (hdX,Y)/grub/linux.mod}}).}}<br />
<br />
This introduces the {{ic|linux}} and {{ic|initrd}} commands, which should be familiar (see [[#Configuration]]).<br />
<br />
An example, booting Arch Linux:<br />
set root=(hd0,5)<br />
linux /boot/vmlinuz-linux root=/dev/sda5<br />
initrd /boot/initramfs-linux.img<br />
boot<br />
<br />
With a separate boot partition, again change the lines accordingly:<br />
set root=(hd0,5)<br />
linux /vmlinuz-linux root=/dev/sda6<br />
initrd /initramfs-linux.img<br />
boot<br />
<br />
After successfully booting the Arch Linux installation, users can correct {{ic|grub.cfg}} as needed and then reinstall GRUB.<br />
<br />
To reinstall GRUB and fix the problem completely, changing {{ic|/dev/sda}} if needed. See [[#Bootloader installation]] for details.<br />
<br />
== Combining the use of UUIDs and basic scripting ==<br />
<br />
If you like the idea of using UUIDs to avoid unreliable BIOS mappings or are struggling with GRUB's syntax, here is an example boot menu item that uses UUIDs and a small script to direct GRUB to the proper disk partitions for your system. All you need to do is replace the UUIDs in the sample with the correct UUIDs for your system. The example applies to a system with a boot and root partition. You will obviously need to modify the GRUB configuration if you have additional partitions:<br />
<br />
menuentry "Arch Linux 64" {<br />
# Set the UUIDs for your boot and root partition respectively<br />
set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07<br />
set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a<br />
<br />
# (Note: This may be the same as your boot partition)<br />
<br />
# Get the boot/root devices and set them in the root and grub_boot variables<br />
search --fs-uuid --set=root $the_root_uuid<br />
search --fs-uuid --set=grub_boot $the_boot_uuid<br />
<br />
# Check to see if boot and root are equal.<br />
# If they are, then append /boot to $grub_boot (Since $grub_boot is actually the root partition)<br />
if [ $the_boot_uuid == $the_root_uuid] ; then<br />
set grub_boot=$grub_boot/boot<br />
fi<br />
<br />
# $grub_boot now points to the correct location, so the following will properly find the kernel and initrd<br />
linux ($grub_boot)/vmlinuz-linux root=/dev/disk/by-uuid/$uuid_os_root ro<br />
initrd ($grub_boot)/initramfs-linux.img<br />
}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Intel BIOS not booting GPT ===<br />
<br />
Some Intel BIOS's require at least one bootable MBR partition to be present at boot, causing GPT-partitioned boot setups to be unbootable.<br />
<br />
This can be circumvented by using (for instance) fdisk to mark one of the GPT partitions (preferably the 1007 KiB partition you've created for GRUB already) bootable in the MBR. This can be achieved, using fdisk, by the following commands: Start fdisk against the disk you're installing, for instance {{ic|fdisk /dev/sda}}, then press {{keypress|a}} and select the partition you wish to mark as bootable (probably #1) by pressing the corresponding number, finally press {{keypress|w}} to write the changes to the MBR.<br />
<br />
{{Note|The bootable-marking must be done in {{ic|fdisk}} or similar, not in GParted or others, as they will not set the bootable flag in the MBR.}}<br />
<br />
More information is available [http://www.rodsbooks.com/gdisk/bios.html here]<br />
<br />
=== Enable debug messages ===<br />
<br />
Add:<br />
<br />
set pager=1<br />
set debug=all<br />
<br />
to {{ic|grub.cfg}}.<br />
<br />
=== "No suitable mode found" error ===<br />
<br />
If you get this error when booting any menuentry:<br />
<br />
error: no suitable mode found<br />
Booting however<br />
<br />
Then you need to initialize GRUB graphical terminal ({{ic|gfxterm}}) with proper video mode ({{ic|gfxmode}}) in GRUB. This video mode is passed by GRUB to the linux kernel via 'gfxpayload'. In case of UEFI systems, if the GRUB video mode is not initialized, no kernel boot messages will be shown in the terminal (atleast until KMS kicks in).<br />
<br />
Copy {{ic|/usr/share/grub/unicode.pf2}} to ${GRUB_PREFIX_DIR} ({{ic|/boot/grub/}} in case of BIOS and UEFI systems). If GRUB UEFI was installed with {{ic|1=--boot-directory=/boot/efi/EFI}} set, then the directory is {{ic|/boot/efi/EFI/grub/}}:<br />
<br />
# cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}<br />
<br />
If {{ic|/usr/share/grub/unicode.pf2}} does not exist, install {{Pkg|bdf-unifont}}, create the {{ic|unifont.pf2}} file and then copy it to {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}:<br />
<br />
# grub-mkfont -o unicode.pf2 /usr/share/fonts/misc/unifont.bdf<br />
<br />
Then, in the {{ic|grub.cfg}} file, add the following lines to enable GRUB to pass the video mode correctly to the kernel, without of which you will only get a black screen (no output) but booting (actually) proceeds successfully without any system hang.<br />
<br />
BIOS systems:<br />
<br />
insmod vbe<br />
<br />
UEFI systems:<br />
<br />
insmod efi_gop<br />
insmod efi_uga<br />
<br />
After that add the following code (common to both BIOS and UEFI):<br />
<br />
insmod font<br />
<br />
if loadfont ${prefix}/fonts/unicode.pf2<br />
then<br />
insmod gfxterm<br />
set gfxmode=auto<br />
set gfxpayload=keep<br />
terminal_output gfxterm<br />
fi<br />
<br />
As you can see for gfxterm (graphical terminal) to function properly, {{ic|unicode.pf2}} font file should exist in {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}.<br />
<br />
=== msdos-style error message ===<br />
<br />
grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible!<br />
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.<br />
However, blocklists are UNRELIABLE and its use is discouraged.<br />
grub-setup: error: If you really want blocklists, use --force.<br />
<br />
This error may occur when you try installing GRUB in a VMware container. Read more about it [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 here]. It happens when the first partition starts just after the MBR (block 63), without the usual space of 1 MiB (2048 blocks) before the first partition. Read [[#Master Boot Record (MBR) specific instructions]]<br />
<br />
=== GRUB UEFI drops to shell ===<br />
<br />
If GRUB loads but drops you into the rescue shell with no errors, it may be because of a missing or misplaced {{ic|grub.cfg}}. This will happen if GRUB UEFI was installed with {{ic|--boot-directory}} and {{ic|grub.cfg}} is missing OR if the partition number of the boot partition changed (which is hard-coded into the {{ic|grubx64.efi}} file).<br />
<br />
=== GRUB UEFI not loaded ===<br />
<br />
An example of a working EFI:<br />
{{hc|# efibootmgr -v|<br />
BootCurrent: 0000<br />
Timeout: 3 seconds<br />
BootOrder: 0000,0001,0002<br />
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\efi\grub\grub.efi)<br />
Boot0001* Shell HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EfiShell.efi)<br />
Boot0002* Festplatte BIOS(2,0,00)P0: SAMSUNG HD204UI<br />
}}<br />
<br />
If the screen only goes black for a second and the next boot option is tried afterwards, according to [https://bbs.archlinux.org/viewtopic.php?pid=981560#p981560 this post], moving GRUB to the partition root can help. The boot option has to be deleted and recreated afterwards. The entry for GRUB should look like this then:<br />
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grub.efi)<br />
<br />
=== Invalid signature ===<br />
<br />
If trying to boot Windows results in an "invalid signature" error, e.g. after reconfiguring partitions or adding additional hard drives, (re)move GRUB's device configuration and let it reconfigure:<br />
# mv /boot/grub/device.map /boot/grub/device.map-old<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
{{ic|grub-mkconfig}} should now mention all found boot options, including Windows. If it works, remove {{ic|/boot/grub/device.map-old}}.<br />
<br />
=== Boot freezes ===<br />
<br />
If booting gets stuck without any error message after GRUB loading the kernel and the initial ramdisk, try removing the {{ic|add_efi_memmap}} kernel parameter.<br />
<br />
=== Restore GRUB Legacy ===<br />
<br />
* Move GRUB v2 files out of the way:<br />
<br />
# mv /boot/grub /boot/grub.nonfunctional<br />
<br />
* Copy GRUB Legacy back to {{ic|/boot}}:<br />
<br />
# cp -af /boot/grub-legacy /boot/grub<br />
<br />
* Replace MBR and next 62 sectors of sda with backed up copy<br />
<br />
{{Warning|This command also restores the partition table, so be careful of overwriting a modified partition table with the old one. It '''will''' mess up your system.}}<br />
<br />
# dd if=/path/to/backup/first-sectors of=/dev/sdX bs=512 count=1<br />
<br />
A safer way is to restore only the MBR boot code use:<br />
<br />
# dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1<br />
<br />
=== Arch not found from other OS ===<br />
Some have reported that other distributions have trouble finding Arch Linux automatically with os-prober. If this problem arises, it has been reported that detection can be improved with the presence of /etc/lsb-release. This file and updating tool is available with the package {{ic|lsb-release}} in the [[community]] repository.<br />
<br />
== References ==<br />
<br />
# Official GRUB Manual - https://www.gnu.org/software/grub/manual/grub.html<br />
# Ubuntu wiki page for GRUB - https://help.ubuntu.com/community/Grub2<br />
# GRUB wiki page describing steps to compile for UEFI systems - https://help.ubuntu.com/community/UEFIBooting<br />
# Wikipedia's page on [[Wikipedia:BIOS Boot partition|BIOS Boot partition]]<br />
<br />
== See also ==<br />
<br />
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_bios.sh A Linux Bash Shell script to compile and install GRUB for BIOS from BZR Source]<br />
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_uefi.sh A Linux Bash Shell script to compile and install GRUB for UEFI from BZR Source]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=GRUB&diff=263609GRUB2013-06-20T10:22:26Z<p>Duquesnc: /* Notes for current GRUB Legacy users */</p>
<hr />
<div>[[Category:Boot loaders]]<br />
[[ar:GRUB]]<br />
[[cs:GRUB2]]<br />
[[de:GRUB]]<br />
[[es:GRUB2]]<br />
[[fr:GRUB2]]<br />
[[id:GRUB2]]<br />
[[it:GRUB2]]<br />
[[ru:GRUB2]]<br />
[[tr:GRUB2]]<br />
[[zh-CN:GRUB2]]<br />
[[zh-TW:GRUB2]]<br />
{{Article summary start}}<br />
{{Article summary text|Covers various aspects of version 2 of the GRand Unified Bootloader (GRUB).}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Boot process overview}}}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|BURG}} - BURG is a brand-new boot loader based on GRUB v2. It can be built on a wider range of OS, and has a highly configurable menu system which works in both text and graphic mode. <br />
{{Article summary wiki|GRUB Legacy}} - previous Version, now obsolete.<br />
{{Article summary heading|Resources}}<br />
{{Article summary wiki|GRUB EFI Examples}}<br />
{{Article summary link|GNU GRUB - GNU Project|https://www.gnu.org/software/grub/}}<br />
{{Article summary end}}<br />
<br />
[https://www.gnu.org/software/grub/ GRUB] - not to be confused with [[GRUB Legacy]] - is the next generation of the GRand Unified Bootloader. GRUB is derived from [http://www.nongnu.org/pupa/ PUPA] which was a research project to develop the next generation of what is now GRUB Legacy. GRUB has been rewritten from scratch to clean up everything and provide modularity and portability [https://www.gnu.org/software/grub/grub-faq.html#q1].<br />
<br />
In brief, the ''bootloader'' is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the Linux kernel. The kernel, in turn, initializes the rest of the operating system.<br />
<br />
== Preface ==<br />
<br />
* The name ''GRUB'' officially refers to version ''2'' of the software, see [https://www.gnu.org/software/grub/]. If you are looking for the article on the legacy version, see [[GRUB Legacy]].<br />
* GRUB supports [[Btrfs]] as root (without a separate {{ic|/boot}} filesystem) compressed with either zlib or LZO<br />
<br />
=== Notes for current GRUB Legacy users ===<br />
<br />
* Upgrading from [[GRUB Legacy]] to GRUB is much the same as freshly installing GRUB, which is covered [[#Installation|below]]<br />
* There are differences in the commands of GRUB Legacy and GRUB. Familiarize yourself with [https://www.gnu.org/software/grub/manual/grub.html#Commands GRUB commands] before proceeding (e.g. "find" has been replaced with "search")<br />
* GRUB is now ''modular'' and no longer requires "stage 1.5". As a result, the bootloader itself is limited -- modules are loaded from the hard drive as needed to expand functionality (e.g. for [[LVM]] or RAID support)<br />
* Device naming has changed between GRUB Legacy and GRUB. Partitions are numbered from 1 instead of 0 while drives are still numbered from 0, and prefixed with partition-table type. For example, {{ic|/dev/sda1}} would be referred to as {{ic|(hd0,msdos1)}} (for MBR) or {{ic|(hd0,gpt1)}} (for GPT)<br />
* If you use systemd without systemd-sysvcompat, and have had {{ic|<nowiki>init=/usr/lib/systemd/systemd</nowiki>}} in your old grub menu.lst, the automatically generated grub.cfg file might not carry over this kernel parameter (giving you "ERROT: Root device mounted successfully, but /sbin/init does not exist" on boot). If so, edit the Arch Linux entry that grub shows you, add {{ic|<nowiki>init=/usr/lib/systemd/systemd</nowiki>}} to the kernel parameters, and then [[Grub#Additional_arguments|make it permanent]].<br />
* GRUB is noticably bigger than GRUB legacy (about 13Mo). If you are booting from a separate /boot partition, and this partition is smaller than 32Mo, you will run into disk space issues, and pacman will refuse to install new kernels. If you don't want to re-partition your system, switch to [[Syslinux]] instead, which is smaller (about 1.5Mo).<br />
<br />
==== Backup important data ====<br />
<br />
Although a GRUB installation should run smoothly, it is strongly recommended to keep the GRUB Legacy files before upgrading to GRUB v2.<br />
<br />
# mv /boot/grub /boot/grub-legacy<br />
<br />
Backup the MBR which contains the boot code and partition table (Replace {{ic|/dev/sd'''X'''}} with your actual disk path):<br />
<br />
# dd if=/dev/sdX of=/path/to/backup/mbr_backup bs=512 count=1<br />
<br />
Only 446 bytes of the MBR contain boot code, the next 64 contain the partition table. If you do not want to overwrite your partition table when restoring, it is strongly advised to backup only the MBR boot code:<br />
<br />
# dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1<br />
<br />
If unable to install GRUB2 correctly, see [[#Restore GRUB Legacy]].<br />
<br />
=== Preliminary requirements ===<br />
<br />
==== BIOS systems ====<br />
<br />
===== GUID Partition Table (GPT) specific instructions =====<br />
<br />
GRUB in [[GPT|BIOS-GPT]] configuration requires a [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html BIOS boot partition] to embed its {{ic|core.img}} in the absence of post-MBR gap in GPT partitioned systems (which is taken over by the GPT Primary Header and Primary Partition table). This partition is used by GRUB only in BIOS-GPT setups. No such partition type exists in case of MBR partitioning (at least not for GRUB). This partition is also not required if the system is UEFI based, as no embedding of bootsectors takes place in that case.<br />
<br />
For a BIOS-GPT configuration, create a 1007 KiB partition at the beginning of the disk using gdisk, cgdisk or GNU Parted with no filesystem. The size of 1007 KiB will allow for the following partition to be correctly alligned at 1024 KiB. If needed, the partition can also be located somewhere else on the disk, but it should be within the first 2 TiB region. Set the partition type to {{ic|ef02}} in (c)gdisk or {{ic|set <BOOT_PART_NUM> bios_grub on}} in GNU Parted.<br />
<br />
{{Note|<br />
* This partition should be created before {{ic|grub-install}} or {{ic|grub-setup}} is run<br />
* gdisk will only allow you to create this partition on the position which will waste the least amount of space (sector 34-2047) if you create it last, after all the other partitions. This is because gdisk will auto-align partitions to 2048-sector boundaries if possible<br />
}}<br />
<br />
===== Master Boot Record (MBR) specific instructions =====<br />
<br />
Usually the post-[[MBR]] gap (after the 512 byte MBR region and before the start of the 1st partition) in many MBR (or msdos disklabel) partitioned systems is 31 KiB when DOS compatibility cylinder alignment issues are satisfied in the partition table. However a post-MBR gap of about 1 to 2 MiB is recommended to provide sufficient room for embedding GRUB's {{ic|core.img}} ({{bug|24103}}). It is advisable to use a partitioner which supports 1 MiB partition alignment to obtain this space as well as satisfy other non-512 byte sector issues (which are unrelated to embedding of {{ic|core.img}}).<br />
<br />
==== UEFI systems ====<br />
<br />
{{Note|It is recommended to read and understand the [[Unified Extensible Firmware Interface|UEFI]], [[GUID Partition Table|GPT]] and [[UEFI Bootloaders]] pages.}}<br />
<br />
===== Create and Mount the UEFI System Partition =====<br />
<br />
Follow [[Unified Extensible Firmware Interface#EFI System Partition]] for instructions on creating a UEFI System Partition. Then mount the UEFI System Partition at {{ic|/boot/efi}}. If you have mounted the UEFI System Partition at some other mountpoint, replace {{ic|/boot/efi}} in the below instructions with that mountpoint:<br />
<br />
# mkdir -p /boot/efi<br />
# mount -t vfat <UEFI_SYSTEM_PARTITION> /boot/efi<br />
<br />
Create a {{ic|/boot/efi/EFI}} directory:<br />
<br />
# mkdir /boot/efi/EFI<br />
<br />
== Installation ==<br />
<br />
=== BIOS systems ===<br />
<br />
GRUB can be [[pacman|installed]] with the {{Pkg|grub-bios}} package from the [[official repositories]]. It will replace {{Pkg|grub-legacy}} or {{Pkg|grub}}, if it is installed.<br />
<br />
{{Note|Simply installing the package won't update the {{ic|/boot/grub/i386-pc/core.img}} file and the GRUB modules in {{ic|/boot/grub/i386-pc}}. You need to update them manually using {{ic|grub-install}} as explained below.}}<br />
<br />
==== Install boot files ====<br />
<br />
There are 3 ways to install GRUB boot files in BIOS booting:<br />
* [[#Install to GPT BIOS boot partition]] (recommended with [[GPT]])<br />
* [[#Install to 440-byte MBR boot code region]] (recommended with [[MBR]])<br />
* [[#Install to partition or partitionless disk]] (not recommended)<br />
* [[#Generate core.img alone]] (safest method, but requires another BIOS bootloader like [[GRUB Legacy]] or [[Syslinux]] to be installed to chainload {{ic|/boot/grub/i386-pc/core.img}})<br />
<br />
{{Note|See http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html for additional documentation.}}<br />
<br />
===== Install to GPT BIOS boot partition =====<br />
<br />
[[GUID Partition Table]] disks do not have a reserved "boot track". Therefore you must create a BIOS Boot Partition ({{ic|ef02}}) to hold the GRUB core image.<br />
<br />
Using GNU Parted, you can set this using a command such as the following:<br />
<br />
# parted /dev/disk set <partition-number> bios_grub on<br />
<br />
If you are using gdisk, set the partition type to {{ic|ef02}}. With partitioning programs that require setting the GUID directly, it should be {{ic|‘21686148-6449-6e6f-744e656564454649’}} (or, {{ic|[[wikipedia:BIOS_Boot_partition|Hah!IdontNeedEFI]]}}).<br />
<br />
{{Warning|Be very careful which partition you select when marking it as a BIOS Boot Partition. When GRUB finds a BIOS Boot Partition during installation, it will automatically overwrite part of it. Make sure that the partition does not contain any other data.}}<br />
<br />
To setup {{ic|grub-bios}} on a GPT disk, populate the {{ic|/boot/grub}} directory, generate the {{ic|/boot/grub/i386-pc/core.img}} file, and embed it in the BIOS Boot Partition, run:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=i386-pc --recheck --debug /dev/sda<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
where {{ic|/dev/sda}} is the destination of the installation.<br />
<br />
Continue with [[GRUB#Generate config file]] below.<br />
<br />
===== Install to 440-byte MBR boot code region =====<br />
<br />
To setup {{ic|grub-bios}} in the 440-byte Master Boot Record boot code region, populate the {{ic|/boot/grub}} directory, generate the {{ic|/boot/grub/i386-pc/core.img}} file, embed it in the 31 KiB (minimum size - varies depending on partition alignment) post-MBR gap, and generate the configuration file, run:<br />
<br />
# modprobe dm-mod<br />
# grub-install --recheck /dev/sdX<br />
<br />
where {{ic|/dev/sdX}} is the destination of the installation (in this case the MBR of the first SATA disk). If you use [[LVM]] for your {{ic|/boot}}, you can install GRUB on multiple physical disks.<br />
<br />
{{Warning|Make sure to check the {{ic|/boot}} directory if you use the latter. Sometimes the {{ic|boot-directory}} parameter creates another {{ic|/boot}} folder inside of {{ic|/boot}}. A wrong install would look like: {{ic|/boot/boot/grub/}}.}}<br />
<br />
Continue with [[GRUB#Generate config file]] below.<br />
<br />
===== Install to partition or partitionless disk =====<br />
<br />
{{Note|grub-bios does not encourage installation to a partition boot sector or a partitionless disk like GRUB Legacy or Syslinux does. This kind of setup is prone to breakage, especially during updates, and is not supported by Arch devs.}}<br />
<br />
To set up grub-bios to a partition boot sector, to a partitionless disk (also called superfloppy) or to a floppy disk, run (using for example {{ic|/dev/sdaX}} as the {{ic|/boot}} partition):<br />
<br />
# modprobe dm-mod <br />
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX<br />
# chattr -i /boot/grub/i386-pc/core.img<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
# chattr +i /boot/grub/i386-pc/core.img<br />
<br />
You need to use the {{ic|--force}} option to allow usage of blocklists and should not use {{ic|1=--grub-setup=/bin/true}} (which is similar to simply generating {{ic|core.img}}).<br />
<br />
{{ic|grub-install}} will give out warnings like which should give you the idea of what might go wrong with this approach:<br />
<br />
/sbin/grub-setup: warn: Attempting to install GRUB to a partitionless disk or to a partition. This is a BAD idea.<br />
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. <br />
However, blocklists are UNRELIABLE and their use is discouraged.<br />
<br />
Without {{ic|--force}} you may get the below error and {{ic|grub-setup}} will not setup its boot code in the partition boot sector:<br />
<br />
/sbin/grub-setup: error: will not proceed with blocklists<br />
<br />
With {{ic|--force}} you should get:<br />
<br />
Installation finished. No error reported.<br />
<br />
The reason why {{ic|grub-setup}} does not by default allow this is because in case of partition or a partitionless disk is that {{ic|grub-bios}} relies on embedded blocklists in the partition bootsector to locate the {{ic|/boot/grub/i386-pc/core.img}} file and the prefix dir {{ic|/boot/grub}}. The sector locations of {{ic|core.img}} may change whenever the filesystem in the partition is being altered (files copied, deleted etc.). For more info see https://bugzilla.redhat.com/show_bug.cgi?id=728742 and https://bugzilla.redhat.com/show_bug.cgi?id=730915.<br />
<br />
The workaround for this is to set the immutable flag on {{ic|/boot/grub/i386-pc/core.img}} (using chattr command as mentioned above) so that the sector locations of the {{ic|core.img}} file in the disk is not altered. The immutable flag on {{ic|/boot/grub/i386-pc/core.img}} needs to be set only if {{ic|grub-bios}} is installed to a partition boot sector or a partitionless disk, not in case of installation to MBR or simple generation of {{ic|core.img}} without embedding any bootsector (mentioned above).<br />
<br />
===== Generate core.img alone =====<br />
<br />
To populate the {{ic|/boot/grub}} directory and generate a {{ic|/boot/grub/i386-pc/core.img}} file '''without''' embedding any {{ic|grub-bios}} bootsector code in the MBR, post-MBR region, or the partition bootsector, add {{ic|1=--grub-setup=/bin/true}} to {{ic|grub-install}}:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
You can then chainload GRUB's {{ic|core.img}} from GRUB Legacy or syslinux as a Linux kernel or a multiboot kernel.<br />
<br />
==== Generate config file ====<br />
<br />
Finally, generate a configuration for GRUB (this is explained in greater detail in the Configuration section):<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{Note|The file path is {{ic|/boot/grub/grub.cfg}}, NOT {{ic|/boot/grub/i386-pc/grub.cfg}}.}}<br />
<br />
If GRUB complains about "no suitable mode found" while booting, go to [[#"No suitable mode found" error]].<br />
<br />
If {{ic|grub-mkconfig}} fails, convert your {{ic|/boot/grub/menu.lst}} file to {{ic|/boot/grub/grub.cfg}} using:<br />
<br />
# grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg<br />
<br />
For example:<br />
<br />
{{hc|/boot/grub/menu.lst|<nowiki><br />
default=0<br />
timeout=5<br />
<br />
title Arch Linux Stock Kernel<br />
root (hd0,0)<br />
kernel /vmlinuz-linux root=/dev/sda2 ro<br />
initrd /initramfs-linux.img<br />
<br />
title Arch Linux Stock Kernel Fallback<br />
root (hd0,0)<br />
kernel /vmlinuz-linux root=/dev/sda2 ro<br />
initrd /initramfs-linux-fallback.img<br />
</nowiki>}}<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
set default='0'; if [ x"$default" = xsaved ]; then load_env; set default="$saved_entry"; fi<br />
set timeout=5<br />
<br />
menuentry 'Arch Linux Stock Kernel' {<br />
set root='(hd0,1)'; set legacy_hdbias='0'<br />
legacy_kernel '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'<br />
legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'<br />
<br />
}<br />
<br />
menuentry 'Arch Linux Stock Kernel Fallback' {<br />
set root='(hd0,1)'; set legacy_hdbias='0'<br />
legacy_kernel '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'<br />
legacy_initrd '/initramfs-linux-fallback.img' '/initramfs-linux-fallback.img'<br />
}<br />
</nowiki>}}<br />
<br />
If you forgot to create a GRUB {{ic|/boot/grub/grub.cfg}} config file and simply rebooted into GRUB Command Shell, type:<br />
<br />
sh:grub> insmod legacycfg<br />
sh:grub> legacy_configfile ${prefix}/menu.lst<br />
<br />
Boot into Arch and re-create the proper GRUB {{ic|/boot/grub/grub.cfg}} config file.<br />
<br />
{{Note|This option works only in BIOS systems, not in UEFI systems.}}<br />
<br />
==== Multiboot ====<br />
This should work out of the box, but an extra utility needs to be installed: os-prober. Install it, then rerun grub-mkconfig -o /boot/grub/grub.cfg. If this fails, you can try manually adding an entry by following the instructions below.<br />
<br />
===== Microsoft Windows installed in BIOS-MBR mode =====<br />
<br />
{{Note|GRUB supports booting {{ic|bootmgr}} directly and chainload of partition boot sector is no longer required to boot Windows in a BIOS-MBR setup.}}<br />
<br />
{{Warning|It is the '''system partition''' that has {{ic|bootmgr}}, not your "real" Windows partition (usually C:). When showing all UUIDs with blkid, the system partition is the one with {{ic|LABEL&#61;"SYSTEM RESERVED"}} and is only about 100 MB in size (much like the boot partition for Arch). See [[Wikipedia:System partition and boot partition]] for more info.}}<br />
<br />
Throughout this section, it is assumed your Windows partition is /dev/sda1. A different partition will change every instance of hd0,msdos1. First, find the UUID of the NTFS filesystem of the Windows's SYSTEM PARTITION where the {{ic|bootmgr}} and its files reside. For example, if Windows {{ic|bootmgr}} exists at {{ic|/media/SYSTEM_RESERVED/bootmgr}}:<br />
<br />
For Windows Vista/7/8:<br />
<br />
# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr<br />
69B235F6749E84CE<br />
<br />
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr<br />
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1<br />
<br />
{{Note|For Windows XP, replace {{ic|bootmgr}} with {{ic|NTLDR}} in the above commands. And note that there may not be a separate SYSTEM_RESERVED partition; just probe the file NTLDR on your Windows partition.}}<br />
<br />
Then, add the below code to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} and regenerate {{ic|grub.cfg}} with {{ic|grub-mkconfig}} as explained above to boot Windows (XP, Vista, 7 or 8) installed in BIOS-MBR mode:<br />
<br />
For Windows Vista/7/8:<br />
<br />
menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {<br />
insmod part_msdos<br />
insmod ntfs<br />
insmod search_fs_uuid<br />
insmod ntldr <br />
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE<br />
ntldr /bootmgr<br />
}<br />
<br />
For Windows XP:<br />
<br />
menuentry "Microsoft Windows XP" {<br />
insmod part_msdos<br />
insmod ntfs<br />
insmod search_fs_uuid<br />
insmod ntldr <br />
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE<br />
ntldr /ntldr<br />
}<br />
<br />
{{ic|/etc/grub.d/40_custom}} can be used as a template to create {{ic|/etc/grub.d/nn_custom}}. Where {{ic|nn}} defines the precendence, indicating the order the script is executed. The order scripts are executed determine the placement in the grub boot menu.<br />
<br />
{{Note|{{ic|nn}} should be greater than 06 to ensure necessary scripts are executed first.}}<br />
<br />
=== UEFI systems ===<br />
<br />
{{Note|It is well know that different motherboard manufactures implement UEFI differently. Users experiencing problems getting Grub/EFI to work properly are encouraged to share detailed steps for hardware-specific cases where UEFI booting does not work as described below. In an effort to keep the parent [[GRUB]] article neat and tidy, see the [[GRUB EFI Examples]] page for these special cases.}}<br />
<br />
First [[Unified Extensible Firmware Interface#Detecting UEFI Firmware Arch|detect which UEFI firmware arch]] you have (either x86_64 or i386). Depending on the result, install the appropriate package:<br />
*For 64-bit aka x86_64 UEFI firmware, install {{Pkg|grub-efi-x86_64}}<br />
*For 32-bit aka i386 UEFI firmware, install {{Pkg|grub-efi-i386}}<br />
<br />
{{Note|Simply installing the package will not update the {{ic|core.efi}} file and the GRUB modules in the UEFI System Partition. You need to do this manually using {{ic|grub-install}} as explained below.}}<br />
<br />
==== Install boot files ====<br />
<br />
===== Install to UEFI system partition =====<br />
<br />
{{Note|<br />
* The below commands assume you are using {{ic|grub-efi-x86_64}} (for {{ic|grub-efi-i386}} replace {{ic|x86_64}} with {{ic|i386}} in the below commands)<br />
* To do this, you need to boot using UEFI and not the BIOS. If you booted by just copying the ISO file to the USB drive, you will need to follow [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO|this guide]] or grub-install will show errors<br />
}}<br />
<br />
The UEFI system partition will need to be mounted at {{ic|/boot/efi/}} for the GRUB install script to detect it:<br />
<br />
# mkdir -p /boot/efi<br />
# mount -t vfat /dev/sdXY /boot/efi<br />
<br />
Install GRUB UEFI application to {{ic|/boot/efi/EFI/arch_grub}} and its modules to {{ic|/boot/grub/x86_64-efi}} (recommended) using:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
{{Note|Without {{ic|--target}} or {{ic|--directory}} option, grub-install cannot determine for which firmware GRUB is being installed. In such cases {{ic|grub-install}} will show {{ic|source_dir doesn't exist. Please specify --target or --directory}} message.}}<br />
<br />
If you want to install GRUB modules and {{ic|grub.cfg}} at the directory {{ic|/boot/efi/EFI/grub}} and the {{ic|grubx64.efi}} application at {{ic|/boot/efi/EFI/arch_grub}} (ie. all the GRUB UEFI files inside the UEFISYS partition itself) use:<br />
<br />
# modprobe dm-mod <br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug<br />
# mkdir -p /boot/efi/EFI/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/efi/EFI/grub/locale/en.mo<br />
<br />
The {{ic|--efi-directory}} option mentions the mountpoint of UEFI SYSTEM PARTITION , {{ic|--bootloader-id}} mentions the name of the directory used to store the {{ic|grubx64.efi}} file and {{ic|--boot-directory}} mentions the directory wherein the actual modules will be installed (and into which {{ic|grub.cfg}} should be created).<br />
<br />
The actual paths are:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi<br />
<br />
<boot-directory>/grub/x86_64-efi/<all modules, grub.efi, core.efi, grub.cfg><br />
<br />
{{Note|the {{ic|--bootloader-id}} option does not change {{ic|<boot-directory>/grub}}, i.e. you cannot install the modules to {{ic|<boot-directory>/<bootloader-id>}}, the path is hard-coded to be {{ic|<boot-directory>/grub}}.}}<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == <boot-directory>/grub == /boot/efi/EFI/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=arch_grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub<br />
<boot-directory>/grub == /boot/efi/EFI/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=arch_grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub<br />
<boot-directory>/grub == /boot/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/grub<br />
<boot-directory>/grub == /boot/grub<br />
<br />
The {{ic|<nowiki><efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi</nowiki>}} is an exact copy of {{ic|<nowiki><boot-directory>/grub/x86_64-efi/core.efi</nowiki>}}.<br />
<br />
{{Note|<br />
* In GRUB 2.00, the {{ic|grub-install}} option {{ic|--efi-directory}} replaces {{ic|--root-directory}} and the latter is deprecated<br />
* The options {{ic|--efi-directory}} and {{ic|--bootloader-id}} are specific to GRUB UEFI<br />
}}<br />
<br />
In all the cases the UEFI SYSTEM PARTITION should be mounted for {{ic|grub-install}} to install {{ic|grubx64.efi}} in it, which will be launched by the firmware (using the {{ic|efibootmgr}} created boot entry in non-Mac systems).<br />
<br />
If you notice carefully, there is no <device_path> option (Eg: {{ic|/dev/sda}}) at the end of the {{ic|grub-install}} command unlike the case of setting up GRUB for BIOS systems. Any <device_path> provided will be ignored by the install script as UEFI bootloaders do not use MBR or Partition boot sectors at all.<br />
<br />
You may now be able to UEFI boot your system by creating a {{ic|grub.cfg}} file by following [[#Generate UEFI Config file]] and [[#Create GRUB entry in the Firmware Boot Manager]].<br />
<br />
==== Generate config file ====<br />
<br />
Finally, generate a configuration for GRUB (this is explained in greater detail in the Configuration section):<br />
<br />
# grub-mkconfig -o <boot-directory>/grub/grub.cfg<br />
<br />
{{Note|The file path is {{ic|<boot-directory>/grub/grub.cfg}}, NOT {{ic|<boot-directory>/grub/x86_64-efi/grub.cfg}}.}}<br />
<br />
If you used {{ic|<nowiki>--boot-directory=/boot</nowiki>}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If you used {{ic|<nowiki>--boot-directory=/boot/efi/EFI</nowiki>}}:<br />
<br />
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg<br />
<br />
This is independent of the value of {{ic|--bootloader-id}} option.<br />
<br />
If GRUB complains about "no suitable mode found" while booting, try [[#"No suitable mode found" error]].<br />
<br />
==== Create GRUB entry in the firmware boot manager ====<br />
<br />
{{ic|grub-install}} automatically tries to create a menu entry in the boot manager. If it doesn't, then see [[Beginners' Guide#GRUB]] for instructions to use {{ic|efibootmgr}} to create a menu entry. However, the problem is likely to be that you haven't booted your CD/USB in UEFI mode, as in [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO]].<br />
<br />
==== Create GRUB standalone UEFI application ====<br />
<br />
It is possible to create a {{ic|grubx64_standalone.efi}} application which has all the modules embeddded in a memdisk within the UEFI application, thus removing the need for having a separate directory populated with all the GRUB UEFI modules and other related files. This is done using the {{ic|grub-mkstandalone}} command which is included in {{Pkg|grub-common}}.<br />
<br />
The easiest way to do this would be with the install command already mentioned before, but specifying the modules to include. For example:<br />
<br />
# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \<br />
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" <any extra files you want to include><br />
<br />
The {{ic|grubx64_standalone.efi}} file expects {{ic|grub.cfg}} to be within its $prefix which is {{ic|(memdisk)/boot/grub}}. The memdisk is embedded within the efi app. The {{ic|grub-mkstandlone}} script allow passing files to be included in the memdisk image to be as the arguments to the script (in <any extra files you want to include>).<br />
<br />
If you have the {{ic|grub.cfg}} at {{ic|/home/user/Desktop/grub.cfg}}, then create a temporary {{ic|/home/user/Desktop/boot/grub/}} directory, copy the {{ic|/home/user/Desktop/grub.cfg}} to {{ic|/home/user/Desktop/boot/grub/grub.cfg}}, cd into {{ic|/home/user/Desktop/boot/grub/}} and run:<br />
<br />
# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \<br />
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" "boot/grub/grub.cfg"<br />
<br />
The reason to cd into {{ic|/home/user/Desktop/boot/grub/}} and to pass the file path as {{ic|boot/grub/grub.cfg}} (notice the lack of a leading slash - boot/ vs /boot/ ) is because {{ic|dir1/dir2/file}} is included as {{ic|(memdisk)/dir1/dir2/file}} by the {{ic|grub-mkstandalone}} script. <br />
<br />
If you pass {{ic|/home/user/Desktop/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/grub.cfg}}. If you pass {{ic|/home/user/Desktop/boot/grub/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/boot/grub/grub.cfg}}. That is the reason for cd'ing into {{ic|/home/user/Desktop/boot/grub/}} and passing {{ic|boot/grub/grub.cfg}}, to include the file as {{ic|(memdisk)/boot/grub/grub.cfg}}, which is what {{ic|grub.efi}} expects the file to be.<br />
<br />
You need to create an UEFI Boot Manager entry for {{ic|/boot/efi/EFI/arch_grub/grubx64_standalone.efi}} using {{ic|efibootmgr}}. Follow [[#Create GRUB entry in the Firmware Boot Manager]].<br />
<br />
==== Multiboot ====<br />
<br />
===== Microsoft Windows installed in UEFI-GPT mode =====<br />
<br />
Find the UUID of the FAT32 filesystem in the UEFI SYSTEM PARTITION where the Windows UEFI Bootloader files reside. For example, if Windows {{ic|bootmgfw.efi}} exists at {{ic|/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi}} (ignore the upper-lower case differences since that is immaterial in FAT filesystem):<br />
<br />
# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi<br />
1ce5-7f28<br />
<br />
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi<br />
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1<br />
<br />
Then, add this code to {{ic|/etc/grub.d/40_custom}} to chainload Windows x86_64 (Vista SP1+, 7 or 8) installed in UEFI-GPT mode:<br />
<br />
menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {<br />
insmod part_gpt<br />
insmod fat<br />
insmod search_fs_uuid<br />
insmod chain<br />
search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28<br />
chainloader /efi/Microsoft/Boot/bootmgfw.efi<br />
}<br />
<br />
Afterwards remake {{ic|/boot/grub/grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
== Configuration ==<br />
<br />
You can also choose to automatically generate or manually edit {{ic|grub.cfg}}.<br />
<br />
{{Note|<br />
* For EFI systems, if GRUB was installed with the {{ic|--boot-directory}} option set, the {{ic|grub.cfg}} file must be placed in the same directory as {{ic|grubx64.efi}}. Otherwise, the {{ic|grub.cfg}} file goes in {{ic|/boot/grub/}}, just like in GRUB BIOS<br />
* [http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html Here] is a quite complete description of how to configure GRUB<br />
}}<br />
<br />
=== Automatically generating using grub-mkconfig ===<br />
<br />
The GRUB {{ic|menu.lst}} equivalent configuration files are {{ic|/etc/default/grub}} and {{ic|/etc/grub.d/*}}. {{ic|grub-mkconfig}} uses these files to generate {{ic|grub.cfg}}. By default the script outputs to stdout. To generate a {{ic|grub.cfg}} file run the command:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{ic|/etc/grub.d/10_linux}} is set to automatically add menu items for Arch linux that work out of the box, to any generated configuration. Other operating systems may need to be added manually to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}}<br />
<br />
==== Additional arguments ====<br />
<br />
To pass custom additional arguments to the Linux image, you can set the {{ic|GRUB_CMDLINE_LINUX}} variable in {{ic|/etc/default/grub}}. <br />
<br />
For example, use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX"</nowiki>}} where {{ic|sda'''X'''}} is your swap partition to enable resume after hibernation.<br />
<br />
You can also use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}}, where {{ic|${swap_uuid} }} is the [[Persistent_block_device_naming|UUID]] of your swap partition.<br />
<br />
Multiple entries are separated by spaces within the double quotes. So, for users who want both resume and systemd it would look like this:<br />
{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/usr/lib/systemd/systemd"</nowiki>}}<br />
<br />
See [[Kernel parameters]] for more info.<br />
<br />
=== Manually creating grub.cfg ===<br />
<br />
{{Warning|Editing this file is strongly ''not'' recommended. The file is generated by the {{ic|grub-mkconfig}} command, and it is best to edit your {{ic|/etc/default/grub}} or one of the scripts in the {{ic|/etc/grub.d}} folder.}}<br />
<br />
A basic GRUB config file uses the following options:<br />
* {{ic|(hdX,Y)}} is the partition {{ic|Y}} on disk {{ic|X}}, partition numbers starting at 1, disk numbers starting at 0<br />
* {{ic|1=set default=N}} is the default boot entry that is chosen after timeout for user action<br />
* {{ic|1=set timeout=M}} is the time {{ic|M}} to wait in seconds for a user selection before default is booted<br />
* {{ic|<nowiki>menuentry "title" {entry options}</nowiki>}} is a boot entry titled {{ic|title}}<br />
* {{ic|1=set root=(hdX,Y)}} sets the boot partition, where the kernel and GRUB modules are stored (boot need not be a separate partition, and may simply be a directory under the "root" partition ({{ic|/}})<br />
<br />
An example configuration:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
# Config file for GRUB - The GNU GRand Unified Bootloader<br />
# /boot/grub/grub.cfg<br />
<br />
# DEVICE NAME CONVERSIONS<br />
#<br />
# Linux Grub<br />
# -------------------------<br />
# /dev/fd0 (fd0)<br />
# /dev/sda (hd0)<br />
# /dev/sdb2 (hd1,2)<br />
# /dev/sda3 (hd0,3)<br />
#<br />
<br />
# Timeout for menu<br />
set timeout=5<br />
<br />
# Set default boot entry as Entry 0<br />
set default=0<br />
<br />
# (0) Arch Linux<br />
menuentry "Arch Linux" {<br />
set root=(hd0,1)<br />
linux /vmlinuz-linux root=/dev/sda3 ro<br />
initrd /initramfs-linux.img<br />
}<br />
<br />
## (1) Windows<br />
#menuentry "Windows" {<br />
# set root=(hd0,3)<br />
# chainloader +1<br />
#}<br />
</nowiki>}}<br />
<br />
=== Dual-booting ===<br />
<br />
{{Note|If you want GRUB to automatically search for other systems, you may wish to install {{Pkg|os-prober}}.}}<br />
<br />
==== Using grub-mkconfig ====<br />
The best way to add other entries is editing the {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} . The entries in this file will be automatically added when running {{ic|grub-mkconfig}}.<br />
After adding the new lines, run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg <br />
to generate an updated {{ic|grub.cfg}}.<br />
<br />
===== With GNU/Linux =====<br />
<br />
Assuming that the other distro is on partition {{ic|sda2}}:<br />
<br />
menuentry "Other Linux" {<br />
set root=(hd0,2)<br />
linux /boot/vmlinuz (add other options here as required)<br />
initrd /boot/initrd.img (if the other kernel uses/needs one)<br />
}<br />
<br />
===== With FreeBSD =====<br />
<br />
Requires that FreeBSD is installed on a single partition with UFS. Assuming it is installed on {{ic|sda4}}:<br />
<br />
menuentry "FreeBSD" {<br />
set root=(hd0,4)<br />
chainloader +1<br />
}<br />
<br />
===== With Windows =====<br />
<br />
This assumes that your Windows partition is {{ic|sda3}}. Remember you need to point set root and chainloader to the system reserve partition that windows made when it installed, not the actual partition windows is on. This example works if your system reserve partition is {{ic|sda3}}.<br />
<br />
# (2) Windows XP<br />
menuentry "Windows XP" {<br />
set root="(hd0,3)"<br />
chainloader +1<br />
}<br />
<br />
If the Windows bootloader is on an entirely different hard drive than GRUB, it may be necessary to trick Windows into believing that it is the first hard drive. This was possible with {{ic|drivemap}}. Assuming GRUB is on {{ic|hd0}} and Windows is on {{ic|hd2}}, you need to add the following after {{ic|set root}}:<br />
<br />
drivemap -s hd0 hd2<br />
<br />
==== With Windows via EasyBCD and NeoGRUB ====<br />
<br />
Since EasyBCD's NeoGRUB currently does not understand the GRUB menu format, chainload to it by replacing the contents of your {{ic|C:\NST\menu.lst}} file with lines similar to the following:<br />
<br />
default 0<br />
timeout 1<br />
<br />
title Chainload into GRUB v2<br />
root (hd0,7)<br />
kernel /boot/grub/i386-pc/core.img<br />
<br />
=== Visual configuration ===<br />
<br />
In GRUB it is possible, by default, to change the look of the menu. Make sure to initialize, if not done already, GRUB graphical terminal, gfxterm, with proper video mode, gfxmode, in GRUB. This can be seen in the section [[#"No suitable mode found" error]]. This video mode is passed by GRUB to the linux kernel via 'gfxpayload' so any visual configurations need this mode in order to be in effect.<br />
<br />
==== Setting the framebuffer resolution ====<br />
<br />
GRUB can set the framebuffer for both GRUB itself and the kernel. The old {{ic|1=vga=}} way is deprecated. The preferred method is editing {{ic|/etc/default/grub}} as the following sample:<br />
<br />
GRUB_GFXMODE=1024x768x32<br />
GRUB_GFXPAYLOAD_LINUX=keep<br />
<br />
To generate the changes, run: <br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
The {{ic|gfxpayload}} property will make sure the kernel keeps the resolution.<br />
<br />
{{Note|<br />
* If this example does not work for you try to replace {{ic|1=gfxmode="1024x768x32"}} by {{ic|1=vbemode="0x105"}}. Remember to replace the specified resolution with one suitable for your screen<br />
* To show all the modes you can use {{ic|1=# hwinfo --framebuffer}} (hwinfo is available in [community]), while at GRUB prompt you can use the {{ic|1=vbeinfo}} command<br />
}}<br />
<br />
If this method does not work for you, the deprecated {{ic|1=vga=}} method will still work. Just<br />
add it next to the {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="}} line in {{ic|/etc/default/grub}}<br />
for eg: {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"}} will give you a {{ic|1024x768}} resolution.<br />
<br />
You can choose one of these resolutions: {{ic|640×480}}, {{ic|800×600}}, {{ic|1024×768}}, {{ic|1280×1024}}, {{ic|1600×1200}}, {{ic|1920×1200}}<br />
<br />
==== 915resolution hack ====<br />
<br />
Some times for Intel graphic adapters neither {{ic|1=# hwinfo --framebuffer}} nor {{ic|1=vbeinfo}} will show you the desired resolution. In this case you can use {{ic|915resolution}} hack. This hack will temporarily modify video BIOS and add needed resolution. See [http://915resolution.mango-lang.org/ 915resolution's home page]<br />
<br />
First you need to find a video mode which will be modified later. For that we need the GRUB command shell:<br />
{{hc|sh:grub> 915resolution -l|<br />
Intel 800/900 Series VBIOS Hack : version 0.5.3<br />
[...]<br />
'''Mode 30''' : 640x480, 8 bits/pixel<br />
[...]<br />
}}<br />
Next, we overwrite the {{ic|Mode 30}} with {{ic|1440x900}} resolution:<br />
{{hc|/etc/grub.d/00_header|<br />
[...]<br />
'''915resolution 30 1440 900 # Inserted line'''<br />
set gfxmode&#61;${GRUB_GFXMODE}<br />
[...]<br />
}}<br />
Lastly we need to set {{ic|GRUB_GFXMODE}} as described earlier, regenerate GRUB configuration file and reboot to test changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
# reboot<br />
<br />
==== Background image and bitmap fonts ====<br />
<br />
GRUB comes with support for background images and bitmap fonts in {{ic|pf2}} format. The unifont font is included in the {{Pkg|grub-common}} package under the filename {{ic|unicode.pf2}}, or, as only ASCII characters under the name {{ic|ascii.pf2}}.<br />
<br />
Image formats supported include tga, png and jpeg, providing the correct modules are loaded. The maximum supported resolution depends on your hardware.<br />
<br />
Make sure you have set up the proper [[#Setting the framebuffer resolution|framebuffer resolution]].<br />
<br />
Edit {{ic|/etc/default/grub}} like this:<br />
GRUB_BACKGROUND="/boot/grub/myimage"<br />
#GRUB_THEME="/path/to/gfxtheme"<br />
GRUB_FONT="/path/to/font.pf2"<br />
<br />
{{Note|If you have installed GRUB on a separate partition, {{ic|/boot/grub/myimage}} becomes {{ic|/grub/myimage}}.}}<br />
<br />
To generate the changes and add the information into {{ic|grub.cfg}}, run: <br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If adding the splash image was successful, the user will see {{ic|"Found background image..."}} in the terminal as the command is executed. <br />
If this phrase is not seen, the image information was probably not incorporated into the {{ic|grub.cfg}} file.<br />
<br />
If the image is not displayed, check:<br />
* The path and the filename in {{ic|/etc/default/grub}} are correct<br />
* The image is of the proper size and format (tga, png, 8-bit jpg)<br />
* The image was saved in the RGB mode, and is not indexed<br />
* The console mode is not enabled in {{ic|/etc/default/grub}}<br />
* The command {{ic|grub-mkconfig}} must be executed to place the background image information into the {{ic|/boot/grub/grub.cfg}} file<br />
<br />
==== Theme ====<br />
<br />
Here is an example for configuring Starfield theme which was included in GRUB package.<br />
<br />
Edit {{ic|/etc/default/grub}}<br />
GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"<br />
<br />
Generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If configuring the theme was successful, you'll see {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}} in the terminal.<br />
Your splash image will usually not be displayed when using a theme.<br />
<br />
==== Menu colors ====<br />
<br />
You can set the menu colors in GRUB. The available colors for GRUB can be found in [https://www.gnu.org/software/grub/manual/html_node/Theme-file-format.html the GRUB Manual].<br />
Here is an example:<br />
<br />
Edit {{ic|/etc/default/grub}}:<br />
GRUB_COLOR_NORMAL="light-blue/black"<br />
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"<br />
<br />
Generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Hidden menu ====<br />
<br />
One of the unique features of GRUB is hiding/skipping the menu and showing it by holding {{keypress|Esc}} when needed. You can also adjust whether you want to see the timeout counter.<br />
<br />
Edit {{ic|/etc/default/grub}} as you wish. Here is an example where the comments from the beginning of the two lines have been removed to enable the feature, the timeout has been set to five seconds and to be shown to the user:<br />
GRUB_HIDDEN_TIMEOUT=5<br />
GRUB_HIDDEN_TIMEOUT_QUIET=false<br />
<br />
and run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Disable framebuffer ====<br />
<br />
Users who use NVIDIA proprietary driver might wish to disable GRUB's framebuffer as it can cause problems with the binary driver.<br />
<br />
To disable framebuffer, edit {{ic|/etc/default/grub}} and uncomment the following line:<br />
GRUB_TERMINAL_OUTPUT=console<br />
<br />
and run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Another option if you want to keep the framebuffer in GRUB is to revert to text mode just before starting the kernel. To do that modify the variable in {{ic|/etc/default/grub}}:<br />
GRUB_GFXPAYLOAD_LINUX=text<br />
<br />
and rebuild the configuration as before.<br />
<br />
=== Other Options ===<br />
<br />
==== LVM ====<br />
<br />
If you use [[LVM]] for your {{ic|/boot}}, add the following before menuentry lines:<br />
<br />
insmod lvm<br />
<br />
and specify your root in the menuentry as:<br />
<br />
set root=lvm/''lvm_group_name''-''lvm_logical_boot_partition_name''<br />
<br />
Example:<br />
<br />
# (0) Arch Linux<br />
menuentry "Arch Linux" {<br />
insmod lvm<br />
set root=lvm/VolumeGroup-lv_boot<br />
# you can only set following two lines<br />
linux /vmlinuz-linux root=/dev/mapper/VolumeGroup-root ro<br />
initrd /initramfs-linux.img<br />
}<br />
<br />
==== RAID ====<br />
<br />
GRUB provides convenient handling of RAID volumes. You need to add {{ic|insmod mdraid}} which allows you to address the volume natively. For example, {{ic|/dev/md0}} becomes:<br />
set root=(md0)<br />
<br />
whereas a partitioned RAID volume (e.g. {{ic|/dev/md0p1}}) becomes:<br />
set root=(md0,1)<br />
<br />
==== Persistent block device naming ====<br />
One naming scheme for [[Persistent block device naming]] is the use of globally unique UUIDs to detect partitions instead of the "old" {{ic|/dev/sd*}}. Advantages are covered up in the above linked article. <br />
<br />
Persistent naming via filesystem UUIDs are used by default in GRUB. <br />
<br />
{{Note|The {{ic|/boot/grub.cfg}} file needs regeneration with the new UUID in {{ic|/etc/default/grub}} every time a relevant filesystem is resized or recreated. Remember this when modifying partitions & filesystems with a Live-CD.}}<br />
<br />
Whether to use UUIDs is controlled by an option in {{ic|/etc/default/grub}}:<br />
<br />
# GRUB_DISABLE_LINUX_UUID=true<br />
<br />
Either way, do not forget to generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Using Labels ====<br />
<br />
It is possible to use labels, human-readable strings attached to filesystems, by using the {{ic|--label}} option to {{ic|search}}. First of all, label your existing partition:<br />
# tune2fs -L <LABEL> <PARTITION><br />
<br />
Then, add an entry using labels. An example of this:<br />
<br />
menuentry "Arch Linux, session texte" {<br />
search --label --set=root archroot<br />
linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro<br />
initrd /boot/initramfs-linux.img<br />
}<br />
<br />
==== Recall previous entry ====<br />
<br />
GRUB can remember the last entry you booted from and use this as the default entry to boot from next time. This is useful if you have multiple kernels (i.e., the current Arch one and the LTS kernel as a fallback option) or operating systems. To do this, edit {{ic|/etc/default/grub}} and change the value of {{ic|GRUB_DEFAULT}}:<br />
<br />
GRUB_DEFAULT=saved<br />
<br />
This ensures that GRUB will default to the saved entry. To enable saving the selected entry, add the following line to {{ic|/etc/default/grub}}:<br />
<br />
GRUB_SAVEDEFAULT=true<br />
<br />
{{Note|Manually added menu items, e.g. Windows in {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}}, will need {{ic|savedefault}} added. Remember to regenerate([[#Generate config file]]) your configuration file.}}<br />
<br />
==== Changing the default menu entry ====<br />
<br />
To change the default selected entry, edit {{ic|/etc/default/grub}} and change the value of {{ic|GRUB_DEFAULT}}:<br />
<br />
Using numbers :<br />
GRUB_DEFAULT=0<br />
Grub identifies entries in generated menu counted from zero. That means 0 for the first entry which is the default value, 1 for the second and so on.<br />
<br />
Or using menu titles :<br />
GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'<br />
<br />
{{Note|Remember to regenerate([[#Generate config file]]) your configuration file.}}<br />
<br />
==== Security ====<br />
<br />
If you want to secure GRUB so it is not possible for anyone to change boot parameters or use the command line, you can add a user/password combination to GRUB's configuration files. To do this, run the command {{ic|grub-mkpasswd-pbkdf2}}. Enter a password and confirm it:<br />
<br />
{{hc|grub-mkpasswd-pbkdf2|<br />
[...]<br />
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A<br />
}}<br />
Then, add the following to {{ic|/etc/grub.d/00_header}}:<br />
{{hc|/etc/grub.d/00_header|<br />
cat << EOF<br />
<br />
set superusers<nowiki>=</nowiki>"'''username'''"<br />
password_pbkdf2 '''username''' '''<password>'''<br />
<br />
EOF<br />
}}<br />
where {{ic|<password>}} is the string generated by {{ic|grub-mkpasswd_pbkdf2}}.<br />
<br />
Regenerate your configuration file. Your GRUB command line, boot parameters and all boot entries are now protected.<br />
<br />
This can be relaxed and further customized with more users as described in the "Security" part of [https://www.gnu.org/software/grub/manual/grub.html#Security the GRUB manual].<br />
<br />
==== Root encryption ====<br />
<br />
To let GRUB automatically add the kernel parameters for root encryption,<br />
add {{ic|1=cryptdevice=/dev/yourdevice:label}} to {{ic|GRUB_CMDLINE_LINUX}} in {{ic|/etc/default/grub}}.<br />
<br />
{{Tip|If you're upgrading from a working GRUB Legacy configuration, check {{ic|/boot/grub/menu.lst.pacsave}} for the correct device/label to add. Look for them after the text {{ic|kernel /vmlinuz-linux}}.}}<br />
<br />
Example with root mapped to {{ic|/dev/mapper/root}}:<br />
<br />
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"<br />
<br />
Also, disable the usage of UUIDs for the rootfs:<br />
<br />
GRUB_DISABLE_LINUX_UUID=true<br />
<br />
Regenerate the configuration.<br />
<br />
==== Boot non-default entry only once ====<br />
<br />
The command {{ic|grub-reboot}} is very helpful to boot another entry than the default only once. GRUB loads the entry passed in the first command line argument, when the system is rebooted the next time. Most importantly GRUB returns to loading the default entry for all future booting. Changing the configuration file or selecting an entry in the GRUB menu is not necessary.<br />
{{Note|This requires {{ic|1=GRUB_DEFAULT=saved}} in {{ic|/etc/default/grub}} (and then regenerating {{ic|grub.cfg}}) or, in case of hand-made {{ic|grub.cfg}}, the line {{ic|1=set default="${saved_entry}"}}.}}<br />
<br />
=== Booting an ISO directly from GRUB ===<br />
<br />
Edit {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} to add an entry for the target ISO. When finished, update the GRUB menu as with the usual {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} (as root).<br />
<br />
==== Arch ISO ====<br />
<br />
{{Note|The following examples assume the ISO is in {{ic|/archives}} on {{ic|hd0,6}}.}}<br />
{{Tip|For thumbdrives, use something like {{ic|(hd1,$partition)}} and either {{ic|/dev/sdb'''Y'''}} for the {{ic|img_dev}} parameter or [[Persistent_block_device_naming|a persistent name]], e.g. {{ic|img_dev&#61;/dev/disk/by-label/CORSAIR}}.}}<br />
<br />
===== x86_64 =====<br />
<br />
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {<br />
set isofile="/archives/archlinux-2013.05.01-dual.iso"<br />
set partition="6"<br />
loopback loop (hd0,$partition)/$isofile<br />
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop<br />
initrd (loop)/arch/boot/x86_64/archiso.img<br />
}<br />
<br />
===== i686 =====<br />
<br />
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {<br />
set isofile="/archives/archlinux-2013.05.01-dual.iso"<br />
set partition="6"<br />
loopback loop (hd0,$partition)/$isofile<br />
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop<br />
initrd (loop)/arch/boot/i686/archiso.img<br />
}<br />
<br />
==== Ubuntu ISO ====<br />
<br />
{{Note|The example assumes that the iso is in {{ic|/archives}} on {{ic|hd0,6}}. Users must adjust the location and hdd/partition in the lines below to match their systems.}}<br />
<br />
menuentry "ubuntu-13.04-desktop-amd64.iso" {<br />
set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"<br />
loopback loop (hd0,6)/$isofile<br />
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --<br />
initrd (loop)/casper/initrd.lz<br />
}<br />
<br />
menuentry "ubuntu-12.04-desktop-amd64.iso" {<br />
set isofile="/archives/ubuntu-12.04-desktop-amd64.iso"<br />
loopback loop (hd0,6)/$isofile<br />
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --<br />
initrd (loop)/casper/initrd.lz<br />
}<br />
<br />
==== Other ISOs ====<br />
<br />
Other working configurations from [http://askubuntu.com/questions/141940/how-to-boot-live-iso-images link Source].<br />
<br />
== Using the command shell ==<br />
<br />
Since the MBR is too small to store all GRUB modules, only the menu and a few basic commands reside there. The majority of GRUB functionality remains in modules in {{ic|/boot/grub}}, which are inserted as needed. In error conditions (e.g. if the partition layout changes) GRUB may fail to boot. When this happens, a command shell may appear.<br />
<br />
GRUB offers multiple shells/prompts. If there is a problem reading the menu but the bootloader is able to find the disk, you will likely be dropped to the "normal" shell:<br />
sh:grub><br />
<br />
If there is a more serious problem (e.g. GRUB cannot find required files), you may instead be dropped to the "rescue" shell:<br />
grub rescue><br />
<br />
The rescue shell is a restricted subset of the normal shell, offering much less functionality. If dumped to the rescue shell, first try inserting the "normal" module, then starting the "normal" shell:<br />
grub rescue> set prefix=(hdX,Y)/boot/grub<br />
grub rescue> insmod (hdX,Y)/boot/grub/i386-pc/normal.mod<br />
rescue:grub> normal<br />
<br />
=== Pager support ===<br />
<br />
GRUB supports pager for reading commands that provide long output (like the {{ic|help}} command). This works only in normal shell mode and not in rescue mode. To enable pager, in GRUB command shell type:<br />
sh:grub> set pager=1<br />
<br />
== GUI configuration tools ==<br />
<br />
Following package may be installed:<br />
* {{App|grub-customizer|Customize the bootloader (GRUB or BURG)|https://launchpad.net/grub-customizer|{{AUR|grub-customizer}}}}<br />
* {{App|grub2-editor|KDE4 control module for configuring the GRUB bootloader|http://kde-apps.org/content/show.php?content&#61;139643|{{AUR|grub2-editor}}}}<br />
* {{App|kcm-grub2|This Kcm module manages the most common settings of GRUB|http://kde-apps.org/content/show.php?content&#61;137886|{{AUR|kcm-grub2}}}}<br />
* {{App|startupmanager|GUI app for changing the settings of GRUB Legacy, GRUB, Usplash and Splashy|http://sourceforge.net/projects/startup-manager/|{{AUR|startupmanager}}}}<br />
<br />
== parttool for hide/unhide ==<br />
<br />
If you have a Windows 9x paradigm with hidden {{ic|C:\}} disks GRUB can hide/unhide it using {{ic|parttool}}. For example, to boot the third {{ic|C:\}} disk of three Windows 9x installations on the CLI enter the CLI and:<br />
parttool hd0,1 hidden+ boot-<br />
parttool hd0,2 hidden+ boot-<br />
parttool hd0,3 hidden- boot+<br />
set root=hd0,3<br />
chainloader +1<br />
boot<br />
<br />
== Using the rescue console ==<br />
<br />
See [[#Using the command shell]] first. If unable to activate the standard shell, one possible solution is to boot using a live CD or some other rescue disk to correct configuration errors and reinstall GRUB. However, such a boot disk is not always available (nor necessary); the rescue console is surprisingly robust.<br />
<br />
The available commands in GRUB rescue include {{ic|insmod}}, {{ic|ls}}, {{ic|set}}, and {{ic|unset}}. This example uses {{ic|set}} and {{ic|insmod}}. {{ic|set}} modifies variables and {{ic|insmod}} inserts new modules to add functionality.<br />
<br />
Before starting, the user must know the location of their {{ic|/boot}} partition (be it a separate partition, or a subdirectory under their root):<br />
grub rescue> set prefix=(hdX,Y)/boot/grub<br />
<br />
where X is the physical drive number and Y is the partition number.<br />
<br />
To expand console capabilities, insert the {{ic|linux}} module:<br />
grub rescue> insmod (hdX,Y)/boot/grub/linux.mod<br />
<br />
{{Note|With a separate boot partition, omit {{ic|/boot}} from the path, (i.e. type {{ic|1=set prefix=(hdX,Y)/grub}} and {{ic|insmod (hdX,Y)/grub/linux.mod}}).}}<br />
<br />
This introduces the {{ic|linux}} and {{ic|initrd}} commands, which should be familiar (see [[#Configuration]]).<br />
<br />
An example, booting Arch Linux:<br />
set root=(hd0,5)<br />
linux /boot/vmlinuz-linux root=/dev/sda5<br />
initrd /boot/initramfs-linux.img<br />
boot<br />
<br />
With a separate boot partition, again change the lines accordingly:<br />
set root=(hd0,5)<br />
linux /vmlinuz-linux root=/dev/sda6<br />
initrd /initramfs-linux.img<br />
boot<br />
<br />
After successfully booting the Arch Linux installation, users can correct {{ic|grub.cfg}} as needed and then reinstall GRUB.<br />
<br />
To reinstall GRUB and fix the problem completely, changing {{ic|/dev/sda}} if needed. See [[#Bootloader installation]] for details.<br />
<br />
== Combining the use of UUIDs and basic scripting ==<br />
<br />
If you like the idea of using UUIDs to avoid unreliable BIOS mappings or are struggling with GRUB's syntax, here is an example boot menu item that uses UUIDs and a small script to direct GRUB to the proper disk partitions for your system. All you need to do is replace the UUIDs in the sample with the correct UUIDs for your system. The example applies to a system with a boot and root partition. You will obviously need to modify the GRUB configuration if you have additional partitions:<br />
<br />
menuentry "Arch Linux 64" {<br />
# Set the UUIDs for your boot and root partition respectively<br />
set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07<br />
set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a<br />
<br />
# (Note: This may be the same as your boot partition)<br />
<br />
# Get the boot/root devices and set them in the root and grub_boot variables<br />
search --fs-uuid --set=root $the_root_uuid<br />
search --fs-uuid --set=grub_boot $the_boot_uuid<br />
<br />
# Check to see if boot and root are equal.<br />
# If they are, then append /boot to $grub_boot (Since $grub_boot is actually the root partition)<br />
if [ $the_boot_uuid == $the_root_uuid] ; then<br />
set grub_boot=$grub_boot/boot<br />
fi<br />
<br />
# $grub_boot now points to the correct location, so the following will properly find the kernel and initrd<br />
linux ($grub_boot)/vmlinuz-linux root=/dev/disk/by-uuid/$uuid_os_root ro<br />
initrd ($grub_boot)/initramfs-linux.img<br />
}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Intel BIOS not booting GPT ===<br />
<br />
Some Intel BIOS's require at least one bootable MBR partition to be present at boot, causing GPT-partitioned boot setups to be unbootable.<br />
<br />
This can be circumvented by using (for instance) fdisk to mark one of the GPT partitions (preferably the 1007 KiB partition you've created for GRUB already) bootable in the MBR. This can be achieved, using fdisk, by the following commands: Start fdisk against the disk you're installing, for instance {{ic|fdisk /dev/sda}}, then press {{keypress|a}} and select the partition you wish to mark as bootable (probably #1) by pressing the corresponding number, finally press {{keypress|w}} to write the changes to the MBR.<br />
<br />
{{Note|The bootable-marking must be done in {{ic|fdisk}} or similar, not in GParted or others, as they will not set the bootable flag in the MBR.}}<br />
<br />
More information is available [http://www.rodsbooks.com/gdisk/bios.html here]<br />
<br />
=== Enable debug messages ===<br />
<br />
Add:<br />
<br />
set pager=1<br />
set debug=all<br />
<br />
to {{ic|grub.cfg}}.<br />
<br />
=== "No suitable mode found" error ===<br />
<br />
If you get this error when booting any menuentry:<br />
<br />
error: no suitable mode found<br />
Booting however<br />
<br />
Then you need to initialize GRUB graphical terminal ({{ic|gfxterm}}) with proper video mode ({{ic|gfxmode}}) in GRUB. This video mode is passed by GRUB to the linux kernel via 'gfxpayload'. In case of UEFI systems, if the GRUB video mode is not initialized, no kernel boot messages will be shown in the terminal (atleast until KMS kicks in).<br />
<br />
Copy {{ic|/usr/share/grub/unicode.pf2}} to ${GRUB_PREFIX_DIR} ({{ic|/boot/grub/}} in case of BIOS and UEFI systems). If GRUB UEFI was installed with {{ic|1=--boot-directory=/boot/efi/EFI}} set, then the directory is {{ic|/boot/efi/EFI/grub/}}:<br />
<br />
# cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}<br />
<br />
If {{ic|/usr/share/grub/unicode.pf2}} does not exist, install {{Pkg|bdf-unifont}}, create the {{ic|unifont.pf2}} file and then copy it to {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}:<br />
<br />
# grub-mkfont -o unicode.pf2 /usr/share/fonts/misc/unifont.bdf<br />
<br />
Then, in the {{ic|grub.cfg}} file, add the following lines to enable GRUB to pass the video mode correctly to the kernel, without of which you will only get a black screen (no output) but booting (actually) proceeds successfully without any system hang.<br />
<br />
BIOS systems:<br />
<br />
insmod vbe<br />
<br />
UEFI systems:<br />
<br />
insmod efi_gop<br />
insmod efi_uga<br />
<br />
After that add the following code (common to both BIOS and UEFI):<br />
<br />
insmod font<br />
<br />
if loadfont ${prefix}/fonts/unicode.pf2<br />
then<br />
insmod gfxterm<br />
set gfxmode=auto<br />
set gfxpayload=keep<br />
terminal_output gfxterm<br />
fi<br />
<br />
As you can see for gfxterm (graphical terminal) to function properly, {{ic|unicode.pf2}} font file should exist in {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}.<br />
<br />
=== msdos-style error message ===<br />
<br />
grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible!<br />
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.<br />
However, blocklists are UNRELIABLE and its use is discouraged.<br />
grub-setup: error: If you really want blocklists, use --force.<br />
<br />
This error may occur when you try installing GRUB in a VMware container. Read more about it [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 here]. It happens when the first partition starts just after the MBR (block 63), without the usual space of 1 MiB (2048 blocks) before the first partition. Read [[#Master Boot Record (MBR) specific instructions]]<br />
<br />
=== GRUB UEFI drops to shell ===<br />
<br />
If GRUB loads but drops you into the rescue shell with no errors, it may be because of a missing or misplaced {{ic|grub.cfg}}. This will happen if GRUB UEFI was installed with {{ic|--boot-directory}} and {{ic|grub.cfg}} is missing OR if the partition number of the boot partition changed (which is hard-coded into the {{ic|grubx64.efi}} file).<br />
<br />
=== GRUB UEFI not loaded ===<br />
<br />
An example of a working EFI:<br />
{{hc|# efibootmgr -v|<br />
BootCurrent: 0000<br />
Timeout: 3 seconds<br />
BootOrder: 0000,0001,0002<br />
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\efi\grub\grub.efi)<br />
Boot0001* Shell HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EfiShell.efi)<br />
Boot0002* Festplatte BIOS(2,0,00)P0: SAMSUNG HD204UI<br />
}}<br />
<br />
If the screen only goes black for a second and the next boot option is tried afterwards, according to [https://bbs.archlinux.org/viewtopic.php?pid=981560#p981560 this post], moving GRUB to the partition root can help. The boot option has to be deleted and recreated afterwards. The entry for GRUB should look like this then:<br />
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grub.efi)<br />
<br />
=== Invalid signature ===<br />
<br />
If trying to boot Windows results in an "invalid signature" error, e.g. after reconfiguring partitions or adding additional hard drives, (re)move GRUB's device configuration and let it reconfigure:<br />
# mv /boot/grub/device.map /boot/grub/device.map-old<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
{{ic|grub-mkconfig}} should now mention all found boot options, including Windows. If it works, remove {{ic|/boot/grub/device.map-old}}.<br />
<br />
=== Boot freezes ===<br />
<br />
If booting gets stuck without any error message after GRUB loading the kernel and the initial ramdisk, try removing the {{ic|add_efi_memmap}} kernel parameter.<br />
<br />
=== Restore GRUB Legacy ===<br />
<br />
* Move GRUB v2 files out of the way:<br />
<br />
# mv /boot/grub /boot/grub.nonfunctional<br />
<br />
* Copy GRUB Legacy back to {{ic|/boot}}:<br />
<br />
# cp -af /boot/grub-legacy /boot/grub<br />
<br />
* Replace MBR and next 62 sectors of sda with backed up copy<br />
<br />
{{Warning|This command also restores the partition table, so be careful of overwriting a modified partition table with the old one. It '''will''' mess up your system.}}<br />
<br />
# dd if=/path/to/backup/first-sectors of=/dev/sdX bs=512 count=1<br />
<br />
A safer way is to restore only the MBR boot code use:<br />
<br />
# dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1<br />
<br />
=== Arch not found from other OS ===<br />
Some have reported that other distributions have trouble finding Arch Linux automatically with os-prober. If this problem arises, it has been reported that detection can be improved with the presence of /etc/lsb-release. This file and updating tool is available with the package {{ic|lsb-release}} in the [[community]] repository.<br />
<br />
== References ==<br />
<br />
# Official GRUB Manual - https://www.gnu.org/software/grub/manual/grub.html<br />
# Ubuntu wiki page for GRUB - https://help.ubuntu.com/community/Grub2<br />
# GRUB wiki page describing steps to compile for UEFI systems - https://help.ubuntu.com/community/UEFIBooting<br />
# Wikipedia's page on [[Wikipedia:BIOS Boot partition|BIOS Boot partition]]<br />
<br />
== See also ==<br />
<br />
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_bios.sh A Linux Bash Shell script to compile and install GRUB for BIOS from BZR Source]<br />
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_uefi.sh A Linux Bash Shell script to compile and install GRUB for UEFI from BZR Source]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Syslinux&diff=263605Syslinux2013-06-20T10:18:31Z<p>Duquesnc: /* Automatic Install */</p>
<hr />
<div>[[Category:Boot loaders]]<br />
[[es:Syslinux]]<br />
[[fr:Syslinux]]<br />
[[it:Syslinux]]<br />
[[tr:Syslinux]]<br />
[[zh-CN:Syslinux]]<br />
{{Article summary start}}<br />
{{Article summary text|Describes installing and configuring Syslinux, a collection of bootloaders.}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Boot process overview}}}}<br />
{{Article summary end}}<br />
<br />
{{Merge|Network_Installation_Guide#Pxelinux|No mention of PXE capability in this article}}<br />
<br />
[[Wikipedia:SYSLINUX|Syslinux]] is a collection of boot loaders capable of booting from hard drives, CDs, and over the network via PXE. It supports the [[Wikipedia:File Allocation Table|FAT]], [[Wikipedia:ext2|ext2]], [[Ext3|ext3]], [[Ext4|ext4]], and [[Btrfs]] file systems.<br />
<br />
== Syslinux boot process ==<br />
<br />
# '''Load MBR'''. At boot, the computer loads the [[MBR]] ({{ic|/usr/lib/syslinux/mbr.bin}}). <br />
# '''Search active partition'''. The MBR looks for the partition that is marked as active (boot flag). <br />
# '''Execute volume boot record'''. Once found, the volume boot record (VBR) will be executed. In the case of ext2/3/4 and FAT12/16/32, the starting sector of {{ic|ldlinux.sys}} is hard-coded into the VBR.<br />
# '''Execute ldlinux.sys'''. The VBR will execute ({{ic|ldlinux.sys}}). Therefore, if the location of {{ic|ldlinux.sys}} changes, Syslinux will no longer boot. (In the case of Btrfs, the above method will not work since files move around resulting in the sector location of {{ic|ldlinux.sys}} changing. Therefore, the entire Syslinux code needs to be stored outside the filesystem. The code is stored in the sectors following the VBR.) <br />
# '''Search configuration file'''. Once Syslinux is fully loaded, it looks for a configuration file, either {{ic|extlinux.conf}} or {{ic|syslinux.cfg}}. <br />
# '''Load configuration'''. If one is found, the configuration file is loaded. If no configuration file is found, you will be given a Syslinux prompt.<br />
<br />
== Installation ==<br />
<br />
[[pacman|Install]] {{Pkg|syslinux}} from the [[official repositories]]. If your boot partition is FAT, you will also need {{Pkg|mtools}}.<br />
{{Note|<br />
* Since Syslinux 4, Extlinux and Syslinux are the same thing.<br />
* Syslinux UEFI support is present in version 6.00-preXX and is currently of alpha quality. See [[UEFI_Bootloaders#SYSLINUX]] for more info.<br />
}}<br />
<br />
=== Automatic Install ===<br />
<br />
The {{ic|syslinux-install_update}} script will install Syslinux, copy/symlink {{ic|*.c32}} modules to {{ic|/boot/syslinux}}, set the boot flag and install the boot code in the MBR. It can handle [[Master Boot Record|MBR]] and [[GUID Partition Table|GPT]] disks along with software RAID.<br />
<br />
:1. If you use a separate boot partition make sure that it is mounted. Check with {{ic|lsblk}}; if you don't see a {{ic|/boot}} mountpoint, mount it before you go any further.<br />
<br />
:2. Run {{ic|syslinux-install_update}} with flags: {{ic|-i}} (install the files), {{ic|-a}} (mark the partition ''active'' with the ''boot'' flag), {{ic|-m}} (install the ''MBR'' boot code):<br />
# syslinux-install_update -i -a -m<br />
<br />
:3. Edit {{ic|/boot/syslinux/syslinux.cfg}}. Make sure that:<br />
* Your root partition is correctly set. You can check what partition is currently mounted on / by typing "mount" (it should work as a user).<br />
* That systemd-sysvcompat is installed (or add init=/usr/lib/systemd/systemd to your boot flags)<br />
<br />
{{Note|For this to work with [[GUID Partition Table|GPT]], the {{pkg|gptfdisk}} package is needed as the backend for setting the boot flag.}}<br />
<br />
=== Manual install ===<br />
<br />
{{Note|<br />
* If you are unsure of which partition table you are using (MBR or GPT), you are likely using the MBR partition table. Most of the time GPT will create a special MBR-style partition (type {{ic|0xEE}}) using the whole disk which will be displayed with the following command:<br />
# fdisk -l /dev/sda<br />
<br />
or alternatively:<br />
# sgdisk -p /dev/sda<br />
<br />
will show "GPT: not present" if it is not a GPT disk.<br />
* If you are trying to rescue an installed system with a live CD, be sure to [[Change_Root|chroot]] into it before executing these commands. If you do not chroot first, you must prepend all file paths (not {{ic|/dev/}} paths) with the mount point.<br />
}}<br />
<br />
Your boot partition, on which you plan to install Syslinux, must contain a FAT, ext2, ext3, ext4, or Btrfs file system. You should install it on a mounted directory—not a {{ic|/dev/sdXY}} device. You do not have to install it on the root directory of a file system, e.g., with device {{ic|/dev/sda1}} mounted on {{ic|/boot}}. You can install Syslinux in the {{ic|syslinux}} directory:<br />
# mkdir /boot/syslinux<br />
# extlinux --install /boot/syslinux<br />
This is assuming the target partition is ext[234]. If it is FAT, the syslinux command must be used instead.<br />
<br />
==== MBR partition table ====<br />
<br />
{{Box||See the main article: [[Master Boot Record]]|#E5E5FF|#FCFCFC}}<br />
<br />
Next you need to mark your boot partition active in your partition table. Applications capable of doing this include {{ic|fdisk}}, {{ic|cfdisk}}, {{ic|sfdisk}}, {{ic|parted/gparted}}. It should look like this:<br />
{{hc|# fdisk -l /dev/sda|<br />
[...]<br />
Device Boot Start End Blocks Id System<br />
/dev/sda1 * 2048 104447 51200 83 Linux<br />
/dev/sda2 104448 625142447 312519000 83 Linux<br />
}}<br />
<br />
Install the MBR:<br />
# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr.bin of=/dev/sda<br />
<br />
An alternate MBR which Syslinux provides is: {{ic|altmbr.bin}}. This MBR does ''not'' scan for bootable partitions; instead, the last byte of the MBR is set to a value indicating which partition to boot from. Here is an example of how {{ic|altmbr.bin}} can be copied into position:<br />
# printf '\x5' | cat /usr/lib/syslinux/altmbr.bin - | \<br />
dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sda<br />
<br />
In this case, a single byte of value 5 is appended to the contents of {{ic|altmbr.bin}} and the resulting 440 bytes are written to the MBR on device {{ic|sda}}. Syslinux was installed on the first logical partition ({{ic|/dev/sda5}}) of the disk.<br />
<br />
==== GUID partition table aka GPT ====<br />
<br />
{{Box||See the main article: [[GUID Partition Table]]|#E5E5FF|#FCFCFC}}<br />
<br />
Bit 2 of the attributes for the {{ic|/boot}} partition needs to be set.<br />
# sgdisk /dev/sda --attributes=1:set:2<br />
<br />
This would toggle the attribute ''legacy BIOS bootable'' on partition 1. To check:<br />
{{hc|<nowiki># sgdisk /dev/sda --attributes=1:show</nowiki>|<br />
1:2:1 (legacy BIOS bootable)<br />
}}<br />
<br />
Install the MBR:<br />
# dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/gptmbr.bin of=/dev/sda<br />
<br />
If this doesn't work you can also try:<br />
# syslinux-install_update -i -m<br />
<br />
==== Rebooting ====<br />
<br />
When you reboot your system now, you will have a Syslinux prompt. To automatically boot your system or get a boot menu, you still need to create a configuration file.<br />
<br />
== Configuration ==<br />
<br />
The Syslinux configuration file, {{ic|syslinux.cfg}}, should be created in the same directory where you installed Syslinux. In our case, {{ic|/boot/syslinux/}}.<br />
<br />
The bootloader will look for either {{ic|syslinux.cfg}} (preferred) or {{ic|extlinux.conf}}<br />
<br />
{{Tip|<br />
* Instead of {{ic|LINUX}}, the keyword {{ic|KERNEL}} can also be used. {{ic|KERNEL}} tries to detect the type of the file, while {{ic|LINUX}} always expects a Linux kernel. <br />
* {{ic|TIMEOUT}} value is in units of '''1/10''' of a second.<br />
}}<br />
<br />
=== Examples ===<br />
<br />
==== Basic configuration ====<br />
<br />
This is a simple configuration file that will show a {{ic|boot:}} prompt and automatically boot after 5 seconds.<br />
<br />
{{Note|The partition in question needs to be whatever you have as {{ic|/}} (root), not {{ic|/boot}}.}}<br />
<br />
Configuration:<br />
{{hc|/boot/syslinux/syslinux.cfg|<nowiki><br />
PROMPT 1<br />
TIMEOUT 50<br />
DEFAULT arch<br />
<br />
LABEL arch<br />
LINUX ../vmlinuz-linux<br />
APPEND root=/dev/sda2 ro<br />
INITRD ../initramfs-linux.img<br />
<br />
LABEL archfallback<br />
LINUX ../vmlinuz-linux<br />
APPEND root=/dev/sda2 ro<br />
INITRD ../initramfs-linux-fallback.img</nowiki><br />
}}<br />
<br />
If you want to boot directly without seeing a prompt, set {{ic|PROMPT}} to {{ic|0}}.<br />
<br />
If you want to use [[UUID]] for persistent device naming instead of device names, change the {{ic|APPEND}} line to your equivalent {{ic|UUID}} of the root partition:<br />
APPEND root='''UUID='''978e3e81-8048-4ae1-8a06-aa727458e8ff ro<br />
<br />
If you use encryption [[LUKS]] change the {{ic|APPEND}} line to use your encrypted volume:<br />
APPEND root=/dev/mapper/''group''-''name'' cryptdevice=/dev/sda2:''name'' ro<br />
<br />
If you are using software [[Wikipedia:RAID|RAID]] using [http://neil.brown.name/blog/mdadm mdadm], change the {{ic|APPEND}} line to accommodate your RAID arrays. As an example the following accommodates three RAID 1 array's and sets the appropriate one as root:<br />
APPEND root=/dev/md1 ro md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4<br />
<br />
==== Text Boot menu ====<br />
<br />
Syslinux also allows you to use a boot menu. To use it, copy the {{ic|menu}} COM32 module to your Syslinux directory:<br />
# cp /usr/lib/syslinux/menu.c32 /boot/syslinux/<br />
<br />
If {{ic|/boot}} is in the same partition as {{ic|/usr}}, a symlink will also work:<br />
# ln -s /usr/lib/syslinux/menu.c32 /boot/syslinux/<br />
<br />
Configuration:<br />
{{hc|/boot/syslinux/syslinux.cfg|<nowiki><br />
UI menu.c32<br />
PROMPT 0<br />
<br />
MENU TITLE Boot Menu<br />
TIMEOUT 50<br />
DEFAULT arch<br />
<br />
LABEL arch<br />
MENU LABEL Arch Linux<br />
LINUX ../vmlinuz-linux<br />
APPEND root=/dev/sda2 ro<br />
INITRD ../initramfs-linux.img<br />
<br />
LABEL archfallback<br />
MENU LABEL Arch Linux Fallback<br />
LINUX ../vmlinuz-linux<br />
APPEND root=/dev/sda2 ro<br />
INITRD ../initramfs-linux-fallback.img</nowiki><br />
}}<br />
<br />
For more details about the menu system, see [http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob;f=doc/menu.txt the Syslinux documentation].<br />
<br />
==== Graphical boot menu ====<br />
<br />
Syslinux also allows you to use a graphical boot menu. To use it, copy the {{ic|vesamenu}} COM32 module to your Syslinux folder:<br />
# cp /usr/lib/syslinux/vesamenu.c32 /boot/syslinux/<br />
<br />
If {{ic|/boot}} is the same partition as {{ic|/}}, a symlink will also work:<br />
# ln -s /usr/lib/syslinux/vesamenu.c32 /boot/syslinux/<br />
<br />
[https://projects.archlinux.org/archiso.git/tree/configs/releng/syslinux This config] uses the same menu design as the Arch Install CD. The background file can be found there too. To make sure that your system can boot with this config, check that it is pointing to the correct partition.<br />
<br />
Configuration:<br />
{{hc|/boot/syslinux/syslinux.cfg|<nowiki><br />
UI vesamenu.c32<br />
DEFAULT arch<br />
PROMPT 0<br />
MENU TITLE Boot Menu<br />
MENU BACKGROUND splash.png<br />
TIMEOUT 50<br />
<br />
MENU WIDTH 78<br />
MENU MARGIN 4<br />
MENU ROWS 5<br />
MENU VSHIFT 10<br />
MENU TIMEOUTROW 13<br />
MENU TABMSGROW 11<br />
MENU CMDLINEROW 11<br />
MENU HELPMSGROW 16<br />
MENU HELPMSGENDROW 29<br />
<br />
# Refer to http://www.syslinux.org/wiki/index.php/Comboot/menu.c32<br />
<br />
MENU COLOR border 30;44 #40ffffff #a0000000 std<br />
MENU COLOR title 1;36;44 #9033ccff #a0000000 std<br />
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all<br />
MENU COLOR unsel 37;44 #50ffffff #a0000000 std<br />
MENU COLOR help 37;40 #c0ffffff #a0000000 std<br />
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std<br />
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std<br />
MENU COLOR msg07 37;40 #90ffffff #a0000000 std<br />
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std<br />
<br />
<br />
LABEL arch<br />
MENU LABEL Arch Linux<br />
LINUX ../vmlinuz-linux<br />
APPEND root=/dev/sda2 ro<br />
INITRD ../initramfs-linux.img<br />
<br />
<br />
LABEL archfallback<br />
MENU LABEL Arch Linux Fallback<br />
LINUX ../vmlinuz-linux<br />
APPEND root=/dev/sda2 ro<br />
INITRD ../initramfs-linux-fallback.img</nowiki><br />
}}<br />
<br />
Since Syslinux 3.84, {{ic|vesamenu.c32}} supports the {{ic|MENU RESOLUTION $WIDTH $HEIGHT}} directive.<br />
To use it, insert {{ic|MENU RESOLUTION 1440 900}} into your config for a 1440x900 resolution.<br />
The background picture has to have exactly the right resolution, however, as Syslinux will otherwise refuse to load the menu.<br />
<br />
=== Auto boot ===<br />
<br />
If you don't want to see the Syslinux menu at all, comment out all {{ic|UI}} commands and make sure there is a {{ic|DEFAULT}} set in your {{ic|syslinux.cfg}}.<br />
<br />
=== Chainloading ===<br />
<br />
If you want to chainload other operating systems (such as Windows) or boot loaders, copy (or symlink) the {{ic|chain.c32}} module to the Syslinux directory (for details, see the instructions in the previous section). Then create a section in the configuration file:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
...<br />
LABEL windows<br />
MENU LABEL Windows<br />
COM32 chain.c32<br />
APPEND hd0 3<br />
...<br />
}}<br />
<br />
{{ic|hd0 3}} is the third partition on the first BIOS drive - drives are counted from zero, but partitions are counted from one. <br />
<br />
If you are unsure about which drive your BIOS thinks is "first", you can instead use the MBR identifier, or if you are using GPT, the filesystem labels. To use the MBR identifier, run the command<br />
{{hc|# fdisk -l /dev/sdb|<nowiki><br />
Disk /dev/sdb: 128.0 GB, 128035676160 bytes <br />
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors<br />
Units = sectors of 1 * 512 = 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disk identifier: 0xf00f1fd3<br />
<br />
Device Boot Start End Blocks Id System<br />
/dev/sdb1 2048 4196351 2097152 7 HPFS/NTFS/exFAT<br />
/dev/sdb2 4196352 250066943 122935296 7 HPFS/NTFS/exFAT</nowiki><br />
}}<br />
<br />
replacing {{ic|/dev/sdb}} with the drive you wish to chainload. Using the hexadecimal number under Disk identifier: {{ic|0xf00f1fd3}} in this case, the syntax in {{ic|syslinux.cfg}} is<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
...<br />
LABEL windows<br />
MENU LABEL Windows<br />
COM32 chain.c32<br />
APPEND mbr:0xf00f1fd3<br />
...<br />
}}<br />
<br />
For more details about chainloading, see [http://www.syslinux.org/wiki/index.php/Comboot/chain.c32 the Syslinux wiki].<br />
<br />
If you have [[GRUB]] installed on the same partition, you can chainload it by using: <br />
{{hc|/boot/syslinux/syslinux.cfg|<nowiki><br />
...<br />
LABEL grub2<br />
MENU LABEL Grub2<br />
COM32 chain.c32<br />
append file=../grub/boot.img<br />
...</nowiki><br />
}}<br />
<br />
This may be required for booting from ISO images.<br />
<br />
=== Chainloading other Linux systems ===<br />
<br />
Chainloading another bootloader such as Windows' is pretty obvious, as there is a definite bootloader to chain to. But with Syslinux, it is only able to load files residing on the same partition as the configuration file. Thus, if you have another version of Linux on a separate partition, without a shared {{ic|/boot}}, it becomes necessary to employ Extlinux. Essentially, Extlinux can be installed on the partition superblock and be called as a separate bootloader from the MBR installed by Syslinux. Extlinux is part of the Syslinux project and is included with the {{Pkg|syslinux}} package.<br />
<br />
The following instructions assume you have Syslinux installed already. These instructions will also assume that the typical Arch Linux configuration path of {{ic|/boot/syslinux}} is being used and the chainloaded {{ic|/}} is on {{ic|/dev/sda3}}. <br />
<br />
From a booted Linux (likely the partition that Syslinux is set up to boot), mount the other root partition to your desired mount point. In this example this will be {{ic|/mnt}}. Also, if a separate {{ic|/boot}} partition is used on the second operating system, that will also need to be mounted. The example assumes this is {{ic|/dev/sda2}}.<br />
# mount /dev/sda3 /mnt<br />
# mount /dev/sda2 /mnt/boot (only necessary for separate /boot)<br />
Install Extlinux and copy necessary {{ic|*.c32}} files<br />
# extlinux -i /mnt/boot/syslinux<br />
# cp /usr/lib/syslinux/{chain,menu}.c32 /mnt/boot/syslinux<br />
<br />
Create {{ic|/mnt/boot/syslinux/syslinux.cfg}}. Below is an example:<br />
{{hc|/boot/syslinux/syslinux.cfg '''on /dev/sda3'''|<nowiki><br />
timeout 10<br />
<br />
ui menu.c32<br />
<br />
<br />
label Other Linux<br />
linux /boot/vmlinuz-linux<br />
initrd /boot/initramfs-linux.img<br />
append root=/dev/sda3 ro quiet<br />
<br />
<br />
label MAIN<br />
com32 chain.c32<br />
append hd0 0</nowiki><br />
}}<br />
<br />
taken from [[User:Djgera|Djgera's user wiki page]].<br />
<br />
=== Using memtest ===<br />
<br />
Install {{Pkg|memtest86+}} from the [[official repositories]].<br />
<br />
Use this {{ic|LABEL}} section to launch [[Wikipedia:Memtest86|memtest]]:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
...<br />
LABEL memtest<br />
MENU LABEL Memtest86+<br />
LINUX ../memtest86+/memtest.bin<br />
...<br />
}}<br />
<br />
=== HDT ===<br />
<br />
[http://hdt-project.org/ HDT (Hardware Detection Tool)] displays hardware information. Like before, the {{ic|.c32}} file has to be copied or symlinked from {{ic|/boot/syslinux/}}.<br />
For PCI info, either copy or symlink {{ic|/usr/share/hwdata/pci.ids}} to {{ic|/boot/syslinux/pci.ids}} and add the following to your configuration file:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
LABEL hdt<br />
MENU LABEL Hardware Info<br />
COM32 hdt.c32<br />
}}<br />
<br />
=== Reboot and power off ===<br />
<br />
Use the following sections to reboot or power off your machine:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
LABEL reboot<br />
MENU LABEL Reboot<br />
COM32 reboot.c32<br />
<br />
LABEL poweroff<br />
MENU LABEL Power Off<br />
COMBOOT poweroff.com<br />
}}<br />
<br />
=== Clear menu ===<br />
<br />
To clear the screen when exiting the menu, add the following line:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
MENU CLEAR<br />
}}<br />
<br />
=== Keyboard remapping ===<br />
<br />
If you often have to edit your boot parameters, you might want to remap your keyboard layout. This allows you to enter "=", "/" and other characters easily on a non-US keyboard.<br />
<br />
First you have to create a compatible keymap (for example a German one):<br />
# cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ./<br />
# cp /usr/share/kbd/keymaps/i386/qwertz/de.map.gz ./<br />
# gunzip {de,us}.map.gz<br />
# mv de.{,k}map<br />
# mv us.{,k}map<br />
# keytab-lilo de > de.ktl<br />
<br />
The last command has to be run as root, otherwise it won't work.<br />
<br />
Copy {{ic|de.ktl}} as root to {{ic|/boot/syslinux/}} and set ownership to root:<br />
# chown root:root /boot/syslinux/de.ktl<br />
<br />
Now edit {{ic|syslinux.conf}} and add:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
KBDMAP de.ktl<br />
}}<br />
<br />
=== Hiding the menu ===<br />
<br />
Use the option:<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
MENU HIDDEN<br />
}}<br />
to hide the menu while displaying only the timeout. Press any key to bring up the menu.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Using the Syslinux prompt===<br />
<br />
You can type in the {{ic|LABEL}} name of the entry that you want to boot (as per your {{ic|syslinux.cfg}}). If you used the example configurations, just type:<br />
boot: arch<br />
<br />
If you get an error that the configuration file could not be loaded, you can pass your needed boot parameters, e.g.:<br />
boot: ../vmlinuz-linux root=/dev/sda2 ro initrd=../initramfs-linux.img<br />
<br />
If you do not have access to {{ic|boot:}} in [[Ramdisk|ramfs]], and therefore temporarily unable to boot kernel again,<br />
:1. Create a temporary directory, in order to mount your root partition (if it does not exist already):<br />
# mkdir -p /new_root<br />
:2. Mount {{ic|/}} under {{ic|/new_root}} (in case {{ic|/boot/}} is on the same partition, otherwise you will need to mount them both):<br />
{{Note|Busybox cannot mount {{ic|/boot}} if it is on its own ext2 partition.}}<br />
# mount /dev/sd[a-z][1-9] /new_root<br />
<br />
:3. Use {{ic|vim}} and edit {{ic|syslinux.cfg}} again to suit your needs and save file.<br />
:4. Reboot.<br />
<br />
==== Fsck fails on root partition ====<br />
<br />
In the case of a badly corrupted root partition (in which the journal is damaged), open the Syslinux emergency shell, mount the root file system:<br />
<br />
# mount /dev/''root partition'' /new_root<br />
And grab the tune2fs binary from the root partition (it is not included in Syslinux):<br />
# cp /new_root/sbin/tune2fs /sbin/<br />
<br />
Follow the instructions at [https://wiki.archlinux.org/index.php/Fsck#ext2fs_:_no_external_journal ext2fs: no external journal] to create a new journal for the root partition.<br />
<br />
=== No Default or UI found on some computers ===<br />
<br />
Certain motherboard manufacturers have less compatibility for booting from USB devices than others. While an ext4 formatted USB drive may boot on a more recent computer, some computers may hang if the boot partition containing the ''kernel'' and ''initrd'' are not on a FAT16 partition. To prevent an older machine from loading {{ic|ldlinux}} and failing to read {{ic|syslinux.cfg}}, use {{ic|cfdisk}} to create a FAT16 partition (<=2GB) and format using {{Pkg|dosfstools}}:<br />
# mkfs.msdos -F 16 /dev/sda1<br />
<br />
then install and configure Syslinux.<br />
<br />
=== Missing operating system ===<br />
<br />
If you get this message, check if the partition that contains {{ic|/boot}} has the boot flag enabled. If the flag is enabled, then perhaps this partition starts at sector 1 rather than sector 63 or 2048. Check this with {{ic|fdisk -l}}. If it starts at sector 1, you can move the partition(s) with {{ic|gparted}} from a rescue disk. Or, if you have a separate boot partition, you can back up {{ic|/boot}} with <br />
# cp -a /boot /boot.bak<br />
and then boot up with the Arch install disk. Next, use {{ic|cfdisk}} to delete the {{ic|/boot}} partition, and recreate it. This time it should begin at the proper sector, '''63'''. Now mount your partitions and {{ic|chroot}} into your mounted system, as described in the beginners guide. Restore {{ic|/boot}} with the command<br />
# cp -a /boot.bak/* /boot<br />
Check if {{ic|/etc/fstab}} is correct, run:<br />
# syslinux-install_update -iam<br />
and reboot.<br />
<br />
=== Windows boots up, ignoring Syslinux ===<br />
<br />
'''Solution:''' Make sure the partition that contains {{ic|/boot}} has the boot flag enabled. Also, make sure the boot flag is not enabled on the Windows partition. See the installation section above.<br />
<br />
The MBR that comes with Syslinux looks for the first active partition that has the boot flag set. The Windows partition was likely found first and had the boot flag set. If you wanted, you could use the MBR that Windows or MS-DOS {{ic|fdisk}} provides.<br />
<br />
=== Menu entries do nothing ===<br />
<br />
You select a menu entry and it does nothing, it just ''"refreshes"'' the menu. This usually means that you have an error in your {{ic|syslinux.cfg}} file. Hit {{Keypress|Tab}} to edit your boot parameters. Alternatively, press {{Keypress|Esc}} and type in the {{ic|LABEL}} of your boot entry (e.g. ''arch'').<br />
<br />
=== Cannot remove ldlinux.sys ===<br />
<br />
The {{ic|ldlinux.sys}} file has the immutable attribute set, which prevents it from being deleted or overwritten. This is because the sector location of the file must not change or else Syslinux has to be reinstalled. To remove it, run:<br />
# chattr -i /boot/syslinux/ldlinux.sys<br />
# rm /boot/syslinux/ldlinux.sys<br />
<br />
=== White block in upper left corner when using vesamenu ===<br />
<br />
Problem:<br />
''As of linux-3.0, the modesetting driver tries to keep the current contents of the screen after changing the resolution (at least it does so with my Intel, when having Syslinux in text mode). It seems that this goes wrong when combined with the vesamenu module in Syslinux (the white block is actually an attempt to keep the Syslinux menu, but the driver fails to capture the picture from vesa graphics mode).''<br />
<br />
If you have a custom resolution and a {{ic|vesamenu}} with early modesetting, try to append the following in {{ic|syslinux.cfg}} to remove the white block and continue in graphics mode:<br />
APPEND root=/dev/sda6 ro 5 '''vga=current''' quiet splash<br />
<br />
== See also ==<br />
<br />
* [http://www.syslinux.org Official website]<br />
* [http://www.josephn.net/scrapbook/pxelinux_stuff PXELinux configuration]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=GRUB&diff=263601GRUB2013-06-20T10:11:50Z<p>Duquesnc: /* Notes for current GRUB Legacy users */</p>
<hr />
<div>[[Category:Boot loaders]]<br />
[[ar:GRUB]]<br />
[[cs:GRUB2]]<br />
[[de:GRUB]]<br />
[[es:GRUB2]]<br />
[[fr:GRUB2]]<br />
[[id:GRUB2]]<br />
[[it:GRUB2]]<br />
[[ru:GRUB2]]<br />
[[tr:GRUB2]]<br />
[[zh-CN:GRUB2]]<br />
[[zh-TW:GRUB2]]<br />
{{Article summary start}}<br />
{{Article summary text|Covers various aspects of version 2 of the GRand Unified Bootloader (GRUB).}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Boot process overview}}}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|BURG}} - BURG is a brand-new boot loader based on GRUB v2. It can be built on a wider range of OS, and has a highly configurable menu system which works in both text and graphic mode. <br />
{{Article summary wiki|GRUB Legacy}} - previous Version, now obsolete.<br />
{{Article summary heading|Resources}}<br />
{{Article summary wiki|GRUB EFI Examples}}<br />
{{Article summary link|GNU GRUB - GNU Project|https://www.gnu.org/software/grub/}}<br />
{{Article summary end}}<br />
<br />
[https://www.gnu.org/software/grub/ GRUB] - not to be confused with [[GRUB Legacy]] - is the next generation of the GRand Unified Bootloader. GRUB is derived from [http://www.nongnu.org/pupa/ PUPA] which was a research project to develop the next generation of what is now GRUB Legacy. GRUB has been rewritten from scratch to clean up everything and provide modularity and portability [https://www.gnu.org/software/grub/grub-faq.html#q1].<br />
<br />
In brief, the ''bootloader'' is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the Linux kernel. The kernel, in turn, initializes the rest of the operating system.<br />
<br />
== Preface ==<br />
<br />
* The name ''GRUB'' officially refers to version ''2'' of the software, see [https://www.gnu.org/software/grub/]. If you are looking for the article on the legacy version, see [[GRUB Legacy]].<br />
* GRUB supports [[Btrfs]] as root (without a separate {{ic|/boot}} filesystem) compressed with either zlib or LZO<br />
<br />
=== Notes for current GRUB Legacy users ===<br />
<br />
* Upgrading from [[GRUB Legacy]] to GRUB is much the same as freshly installing GRUB, which is covered [[#Installation|below]]<br />
* There are differences in the commands of GRUB Legacy and GRUB. Familiarize yourself with [https://www.gnu.org/software/grub/manual/grub.html#Commands GRUB commands] before proceeding (e.g. "find" has been replaced with "search")<br />
* GRUB is now ''modular'' and no longer requires "stage 1.5". As a result, the bootloader itself is limited -- modules are loaded from the hard drive as needed to expand functionality (e.g. for [[LVM]] or RAID support)<br />
* Device naming has changed between GRUB Legacy and GRUB. Partitions are numbered from 1 instead of 0 while drives are still numbered from 0, and prefixed with partition-table type. For example, {{ic|/dev/sda1}} would be referred to as {{ic|(hd0,msdos1)}} (for MBR) or {{ic|(hd0,gpt1)}} (for GPT)<br />
* If you use systemd without systemd-sysvcompat, and have had {{ic|<nowiki>init=/usr/lib/systemd/systemd</nowiki>}} in your old grub menu.lst, the automatically generated grub.cfg file might not carry over this kernel parameter (giving you "ERROT: Root device mounted successfully, but /sbin/init does not exist" on boot). If so, edit the Arch Linux entry that grub shows you, add {{ic|<nowiki>init=/usr/lib/systemd/systemd</nowiki>}} to the kernel parameters, and then [[Grub#Additional_arguments|make it permanent]].<br />
* GRUB is noticably bigger than GRUB legacy (the whole /boot/grub directory is about 13Mo). If you are booting from a separate /boot partition, and this partition is smaller than 32Mo, you will run into disk space issues, and pacman will refuse to install new kernels. If you don't want to re-partition your system, switch to [[Syslinux]] instead.<br />
<br />
==== Backup important data ====<br />
<br />
Although a GRUB installation should run smoothly, it is strongly recommended to keep the GRUB Legacy files before upgrading to GRUB v2.<br />
<br />
# mv /boot/grub /boot/grub-legacy<br />
<br />
Backup the MBR which contains the boot code and partition table (Replace {{ic|/dev/sd'''X'''}} with your actual disk path):<br />
<br />
# dd if=/dev/sdX of=/path/to/backup/mbr_backup bs=512 count=1<br />
<br />
Only 446 bytes of the MBR contain boot code, the next 64 contain the partition table. If you do not want to overwrite your partition table when restoring, it is strongly advised to backup only the MBR boot code:<br />
<br />
# dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1<br />
<br />
If unable to install GRUB2 correctly, see [[#Restore GRUB Legacy]].<br />
<br />
=== Preliminary requirements ===<br />
<br />
==== BIOS systems ====<br />
<br />
===== GUID Partition Table (GPT) specific instructions =====<br />
<br />
GRUB in [[GPT|BIOS-GPT]] configuration requires a [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html BIOS boot partition] to embed its {{ic|core.img}} in the absence of post-MBR gap in GPT partitioned systems (which is taken over by the GPT Primary Header and Primary Partition table). This partition is used by GRUB only in BIOS-GPT setups. No such partition type exists in case of MBR partitioning (at least not for GRUB). This partition is also not required if the system is UEFI based, as no embedding of bootsectors takes place in that case.<br />
<br />
For a BIOS-GPT configuration, create a 1007 KiB partition at the beginning of the disk using gdisk, cgdisk or GNU Parted with no filesystem. The size of 1007 KiB will allow for the following partition to be correctly alligned at 1024 KiB. If needed, the partition can also be located somewhere else on the disk, but it should be within the first 2 TiB region. Set the partition type to {{ic|ef02}} in (c)gdisk or {{ic|set <BOOT_PART_NUM> bios_grub on}} in GNU Parted.<br />
<br />
{{Note|<br />
* This partition should be created before {{ic|grub-install}} or {{ic|grub-setup}} is run<br />
* gdisk will only allow you to create this partition on the position which will waste the least amount of space (sector 34-2047) if you create it last, after all the other partitions. This is because gdisk will auto-align partitions to 2048-sector boundaries if possible<br />
}}<br />
<br />
===== Master Boot Record (MBR) specific instructions =====<br />
<br />
Usually the post-[[MBR]] gap (after the 512 byte MBR region and before the start of the 1st partition) in many MBR (or msdos disklabel) partitioned systems is 31 KiB when DOS compatibility cylinder alignment issues are satisfied in the partition table. However a post-MBR gap of about 1 to 2 MiB is recommended to provide sufficient room for embedding GRUB's {{ic|core.img}} ({{bug|24103}}). It is advisable to use a partitioner which supports 1 MiB partition alignment to obtain this space as well as satisfy other non-512 byte sector issues (which are unrelated to embedding of {{ic|core.img}}).<br />
<br />
==== UEFI systems ====<br />
<br />
{{Note|It is recommended to read and understand the [[Unified Extensible Firmware Interface|UEFI]], [[GUID Partition Table|GPT]] and [[UEFI Bootloaders]] pages.}}<br />
<br />
===== Create and Mount the UEFI System Partition =====<br />
<br />
Follow [[Unified Extensible Firmware Interface#EFI System Partition]] for instructions on creating a UEFI System Partition. Then mount the UEFI System Partition at {{ic|/boot/efi}}. If you have mounted the UEFI System Partition at some other mountpoint, replace {{ic|/boot/efi}} in the below instructions with that mountpoint:<br />
<br />
# mkdir -p /boot/efi<br />
# mount -t vfat <UEFI_SYSTEM_PARTITION> /boot/efi<br />
<br />
Create a {{ic|/boot/efi/EFI}} directory:<br />
<br />
# mkdir /boot/efi/EFI<br />
<br />
== Installation ==<br />
<br />
=== BIOS systems ===<br />
<br />
GRUB can be [[pacman|installed]] with the {{Pkg|grub-bios}} package from the [[official repositories]]. It will replace {{Pkg|grub-legacy}} or {{Pkg|grub}}, if it is installed.<br />
<br />
{{Note|Simply installing the package won't update the {{ic|/boot/grub/i386-pc/core.img}} file and the GRUB modules in {{ic|/boot/grub/i386-pc}}. You need to update them manually using {{ic|grub-install}} as explained below.}}<br />
<br />
==== Install boot files ====<br />
<br />
There are 3 ways to install GRUB boot files in BIOS booting:<br />
* [[#Install to GPT BIOS boot partition]] (recommended with [[GPT]])<br />
* [[#Install to 440-byte MBR boot code region]] (recommended with [[MBR]])<br />
* [[#Install to partition or partitionless disk]] (not recommended)<br />
* [[#Generate core.img alone]] (safest method, but requires another BIOS bootloader like [[GRUB Legacy]] or [[Syslinux]] to be installed to chainload {{ic|/boot/grub/i386-pc/core.img}})<br />
<br />
{{Note|See http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html for additional documentation.}}<br />
<br />
===== Install to GPT BIOS boot partition =====<br />
<br />
[[GUID Partition Table]] disks do not have a reserved "boot track". Therefore you must create a BIOS Boot Partition ({{ic|ef02}}) to hold the GRUB core image.<br />
<br />
Using GNU Parted, you can set this using a command such as the following:<br />
<br />
# parted /dev/disk set <partition-number> bios_grub on<br />
<br />
If you are using gdisk, set the partition type to {{ic|ef02}}. With partitioning programs that require setting the GUID directly, it should be {{ic|‘21686148-6449-6e6f-744e656564454649’}} (or, {{ic|[[wikipedia:BIOS_Boot_partition|Hah!IdontNeedEFI]]}}).<br />
<br />
{{Warning|Be very careful which partition you select when marking it as a BIOS Boot Partition. When GRUB finds a BIOS Boot Partition during installation, it will automatically overwrite part of it. Make sure that the partition does not contain any other data.}}<br />
<br />
To setup {{ic|grub-bios}} on a GPT disk, populate the {{ic|/boot/grub}} directory, generate the {{ic|/boot/grub/i386-pc/core.img}} file, and embed it in the BIOS Boot Partition, run:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=i386-pc --recheck --debug /dev/sda<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
where {{ic|/dev/sda}} is the destination of the installation.<br />
<br />
Continue with [[GRUB#Generate config file]] below.<br />
<br />
===== Install to 440-byte MBR boot code region =====<br />
<br />
To setup {{ic|grub-bios}} in the 440-byte Master Boot Record boot code region, populate the {{ic|/boot/grub}} directory, generate the {{ic|/boot/grub/i386-pc/core.img}} file, embed it in the 31 KiB (minimum size - varies depending on partition alignment) post-MBR gap, and generate the configuration file, run:<br />
<br />
# modprobe dm-mod<br />
# grub-install --recheck /dev/sdX<br />
<br />
where {{ic|/dev/sdX}} is the destination of the installation (in this case the MBR of the first SATA disk). If you use [[LVM]] for your {{ic|/boot}}, you can install GRUB on multiple physical disks.<br />
<br />
{{Warning|Make sure to check the {{ic|/boot}} directory if you use the latter. Sometimes the {{ic|boot-directory}} parameter creates another {{ic|/boot}} folder inside of {{ic|/boot}}. A wrong install would look like: {{ic|/boot/boot/grub/}}.}}<br />
<br />
Continue with [[GRUB#Generate config file]] below.<br />
<br />
===== Install to partition or partitionless disk =====<br />
<br />
{{Note|grub-bios does not encourage installation to a partition boot sector or a partitionless disk like GRUB Legacy or Syslinux does. This kind of setup is prone to breakage, especially during updates, and is not supported by Arch devs.}}<br />
<br />
To set up grub-bios to a partition boot sector, to a partitionless disk (also called superfloppy) or to a floppy disk, run (using for example {{ic|/dev/sdaX}} as the {{ic|/boot}} partition):<br />
<br />
# modprobe dm-mod <br />
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX<br />
# chattr -i /boot/grub/i386-pc/core.img<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
# chattr +i /boot/grub/i386-pc/core.img<br />
<br />
You need to use the {{ic|--force}} option to allow usage of blocklists and should not use {{ic|1=--grub-setup=/bin/true}} (which is similar to simply generating {{ic|core.img}}).<br />
<br />
{{ic|grub-install}} will give out warnings like which should give you the idea of what might go wrong with this approach:<br />
<br />
/sbin/grub-setup: warn: Attempting to install GRUB to a partitionless disk or to a partition. This is a BAD idea.<br />
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. <br />
However, blocklists are UNRELIABLE and their use is discouraged.<br />
<br />
Without {{ic|--force}} you may get the below error and {{ic|grub-setup}} will not setup its boot code in the partition boot sector:<br />
<br />
/sbin/grub-setup: error: will not proceed with blocklists<br />
<br />
With {{ic|--force}} you should get:<br />
<br />
Installation finished. No error reported.<br />
<br />
The reason why {{ic|grub-setup}} does not by default allow this is because in case of partition or a partitionless disk is that {{ic|grub-bios}} relies on embedded blocklists in the partition bootsector to locate the {{ic|/boot/grub/i386-pc/core.img}} file and the prefix dir {{ic|/boot/grub}}. The sector locations of {{ic|core.img}} may change whenever the filesystem in the partition is being altered (files copied, deleted etc.). For more info see https://bugzilla.redhat.com/show_bug.cgi?id=728742 and https://bugzilla.redhat.com/show_bug.cgi?id=730915.<br />
<br />
The workaround for this is to set the immutable flag on {{ic|/boot/grub/i386-pc/core.img}} (using chattr command as mentioned above) so that the sector locations of the {{ic|core.img}} file in the disk is not altered. The immutable flag on {{ic|/boot/grub/i386-pc/core.img}} needs to be set only if {{ic|grub-bios}} is installed to a partition boot sector or a partitionless disk, not in case of installation to MBR or simple generation of {{ic|core.img}} without embedding any bootsector (mentioned above).<br />
<br />
===== Generate core.img alone =====<br />
<br />
To populate the {{ic|/boot/grub}} directory and generate a {{ic|/boot/grub/i386-pc/core.img}} file '''without''' embedding any {{ic|grub-bios}} bootsector code in the MBR, post-MBR region, or the partition bootsector, add {{ic|1=--grub-setup=/bin/true}} to {{ic|grub-install}}:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
You can then chainload GRUB's {{ic|core.img}} from GRUB Legacy or syslinux as a Linux kernel or a multiboot kernel.<br />
<br />
==== Generate config file ====<br />
<br />
Finally, generate a configuration for GRUB (this is explained in greater detail in the Configuration section):<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{Note|The file path is {{ic|/boot/grub/grub.cfg}}, NOT {{ic|/boot/grub/i386-pc/grub.cfg}}.}}<br />
<br />
If GRUB complains about "no suitable mode found" while booting, go to [[#"No suitable mode found" error]].<br />
<br />
If {{ic|grub-mkconfig}} fails, convert your {{ic|/boot/grub/menu.lst}} file to {{ic|/boot/grub/grub.cfg}} using:<br />
<br />
# grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg<br />
<br />
For example:<br />
<br />
{{hc|/boot/grub/menu.lst|<nowiki><br />
default=0<br />
timeout=5<br />
<br />
title Arch Linux Stock Kernel<br />
root (hd0,0)<br />
kernel /vmlinuz-linux root=/dev/sda2 ro<br />
initrd /initramfs-linux.img<br />
<br />
title Arch Linux Stock Kernel Fallback<br />
root (hd0,0)<br />
kernel /vmlinuz-linux root=/dev/sda2 ro<br />
initrd /initramfs-linux-fallback.img<br />
</nowiki>}}<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
set default='0'; if [ x"$default" = xsaved ]; then load_env; set default="$saved_entry"; fi<br />
set timeout=5<br />
<br />
menuentry 'Arch Linux Stock Kernel' {<br />
set root='(hd0,1)'; set legacy_hdbias='0'<br />
legacy_kernel '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'<br />
legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'<br />
<br />
}<br />
<br />
menuentry 'Arch Linux Stock Kernel Fallback' {<br />
set root='(hd0,1)'; set legacy_hdbias='0'<br />
legacy_kernel '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'<br />
legacy_initrd '/initramfs-linux-fallback.img' '/initramfs-linux-fallback.img'<br />
}<br />
</nowiki>}}<br />
<br />
If you forgot to create a GRUB {{ic|/boot/grub/grub.cfg}} config file and simply rebooted into GRUB Command Shell, type:<br />
<br />
sh:grub> insmod legacycfg<br />
sh:grub> legacy_configfile ${prefix}/menu.lst<br />
<br />
Boot into Arch and re-create the proper GRUB {{ic|/boot/grub/grub.cfg}} config file.<br />
<br />
{{Note|This option works only in BIOS systems, not in UEFI systems.}}<br />
<br />
==== Multiboot ====<br />
This should work out of the box, but an extra utility needs to be installed: os-prober. Install it, then rerun grub-mkconfig -o /boot/grub/grub.cfg. If this fails, you can try manually adding an entry by following the instructions below.<br />
<br />
===== Microsoft Windows installed in BIOS-MBR mode =====<br />
<br />
{{Note|GRUB supports booting {{ic|bootmgr}} directly and chainload of partition boot sector is no longer required to boot Windows in a BIOS-MBR setup.}}<br />
<br />
{{Warning|It is the '''system partition''' that has {{ic|bootmgr}}, not your "real" Windows partition (usually C:). When showing all UUIDs with blkid, the system partition is the one with {{ic|LABEL&#61;"SYSTEM RESERVED"}} and is only about 100 MB in size (much like the boot partition for Arch). See [[Wikipedia:System partition and boot partition]] for more info.}}<br />
<br />
Throughout this section, it is assumed your Windows partition is /dev/sda1. A different partition will change every instance of hd0,msdos1. First, find the UUID of the NTFS filesystem of the Windows's SYSTEM PARTITION where the {{ic|bootmgr}} and its files reside. For example, if Windows {{ic|bootmgr}} exists at {{ic|/media/SYSTEM_RESERVED/bootmgr}}:<br />
<br />
For Windows Vista/7/8:<br />
<br />
# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr<br />
69B235F6749E84CE<br />
<br />
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr<br />
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1<br />
<br />
{{Note|For Windows XP, replace {{ic|bootmgr}} with {{ic|NTLDR}} in the above commands. And note that there may not be a separate SYSTEM_RESERVED partition; just probe the file NTLDR on your Windows partition.}}<br />
<br />
Then, add the below code to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} and regenerate {{ic|grub.cfg}} with {{ic|grub-mkconfig}} as explained above to boot Windows (XP, Vista, 7 or 8) installed in BIOS-MBR mode:<br />
<br />
For Windows Vista/7/8:<br />
<br />
menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {<br />
insmod part_msdos<br />
insmod ntfs<br />
insmod search_fs_uuid<br />
insmod ntldr <br />
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE<br />
ntldr /bootmgr<br />
}<br />
<br />
For Windows XP:<br />
<br />
menuentry "Microsoft Windows XP" {<br />
insmod part_msdos<br />
insmod ntfs<br />
insmod search_fs_uuid<br />
insmod ntldr <br />
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE<br />
ntldr /ntldr<br />
}<br />
<br />
{{ic|/etc/grub.d/40_custom}} can be used as a template to create {{ic|/etc/grub.d/nn_custom}}. Where {{ic|nn}} defines the precendence, indicating the order the script is executed. The order scripts are executed determine the placement in the grub boot menu.<br />
<br />
{{Note|{{ic|nn}} should be greater than 06 to ensure necessary scripts are executed first.}}<br />
<br />
=== UEFI systems ===<br />
<br />
{{Note|It is well know that different motherboard manufactures implement UEFI differently. Users experiencing problems getting Grub/EFI to work properly are encouraged to share detailed steps for hardware-specific cases where UEFI booting does not work as described below. In an effort to keep the parent [[GRUB]] article neat and tidy, see the [[GRUB EFI Examples]] page for these special cases.}}<br />
<br />
First [[Unified Extensible Firmware Interface#Detecting UEFI Firmware Arch|detect which UEFI firmware arch]] you have (either x86_64 or i386). Depending on the result, install the appropriate package:<br />
*For 64-bit aka x86_64 UEFI firmware, install {{Pkg|grub-efi-x86_64}}<br />
*For 32-bit aka i386 UEFI firmware, install {{Pkg|grub-efi-i386}}<br />
<br />
{{Note|Simply installing the package will not update the {{ic|core.efi}} file and the GRUB modules in the UEFI System Partition. You need to do this manually using {{ic|grub-install}} as explained below.}}<br />
<br />
==== Install boot files ====<br />
<br />
===== Install to UEFI system partition =====<br />
<br />
{{Note|<br />
* The below commands assume you are using {{ic|grub-efi-x86_64}} (for {{ic|grub-efi-i386}} replace {{ic|x86_64}} with {{ic|i386}} in the below commands)<br />
* To do this, you need to boot using UEFI and not the BIOS. If you booted by just copying the ISO file to the USB drive, you will need to follow [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO|this guide]] or grub-install will show errors<br />
}}<br />
<br />
The UEFI system partition will need to be mounted at {{ic|/boot/efi/}} for the GRUB install script to detect it:<br />
<br />
# mkdir -p /boot/efi<br />
# mount -t vfat /dev/sdXY /boot/efi<br />
<br />
Install GRUB UEFI application to {{ic|/boot/efi/EFI/arch_grub}} and its modules to {{ic|/boot/grub/x86_64-efi}} (recommended) using:<br />
<br />
# modprobe dm-mod<br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug<br />
# mkdir -p /boot/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo<br />
<br />
{{Note|Without {{ic|--target}} or {{ic|--directory}} option, grub-install cannot determine for which firmware GRUB is being installed. In such cases {{ic|grub-install}} will show {{ic|source_dir doesn't exist. Please specify --target or --directory}} message.}}<br />
<br />
If you want to install GRUB modules and {{ic|grub.cfg}} at the directory {{ic|/boot/efi/EFI/grub}} and the {{ic|grubx64.efi}} application at {{ic|/boot/efi/EFI/arch_grub}} (ie. all the GRUB UEFI files inside the UEFISYS partition itself) use:<br />
<br />
# modprobe dm-mod <br />
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug<br />
# mkdir -p /boot/efi/EFI/grub/locale<br />
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/efi/EFI/grub/locale/en.mo<br />
<br />
The {{ic|--efi-directory}} option mentions the mountpoint of UEFI SYSTEM PARTITION , {{ic|--bootloader-id}} mentions the name of the directory used to store the {{ic|grubx64.efi}} file and {{ic|--boot-directory}} mentions the directory wherein the actual modules will be installed (and into which {{ic|grub.cfg}} should be created).<br />
<br />
The actual paths are:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi<br />
<br />
<boot-directory>/grub/x86_64-efi/<all modules, grub.efi, core.efi, grub.cfg><br />
<br />
{{Note|the {{ic|--bootloader-id}} option does not change {{ic|<boot-directory>/grub}}, i.e. you cannot install the modules to {{ic|<boot-directory>/<bootloader-id>}}, the path is hard-coded to be {{ic|<boot-directory>/grub}}.}}<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == <boot-directory>/grub == /boot/efi/EFI/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=arch_grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub<br />
<boot-directory>/grub == /boot/efi/EFI/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=arch_grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/arch_grub<br />
<boot-directory>/grub == /boot/grub<br />
<br />
In {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub</nowiki>}}:<br />
<br />
<efi-directory>/<EFI or efi>/<bootloader-id> == /boot/efi/EFI/grub<br />
<boot-directory>/grub == /boot/grub<br />
<br />
The {{ic|<nowiki><efi-directory>/<EFI or efi>/<bootloader-id>/grubx64.efi</nowiki>}} is an exact copy of {{ic|<nowiki><boot-directory>/grub/x86_64-efi/core.efi</nowiki>}}.<br />
<br />
{{Note|<br />
* In GRUB 2.00, the {{ic|grub-install}} option {{ic|--efi-directory}} replaces {{ic|--root-directory}} and the latter is deprecated<br />
* The options {{ic|--efi-directory}} and {{ic|--bootloader-id}} are specific to GRUB UEFI<br />
}}<br />
<br />
In all the cases the UEFI SYSTEM PARTITION should be mounted for {{ic|grub-install}} to install {{ic|grubx64.efi}} in it, which will be launched by the firmware (using the {{ic|efibootmgr}} created boot entry in non-Mac systems).<br />
<br />
If you notice carefully, there is no <device_path> option (Eg: {{ic|/dev/sda}}) at the end of the {{ic|grub-install}} command unlike the case of setting up GRUB for BIOS systems. Any <device_path> provided will be ignored by the install script as UEFI bootloaders do not use MBR or Partition boot sectors at all.<br />
<br />
You may now be able to UEFI boot your system by creating a {{ic|grub.cfg}} file by following [[#Generate UEFI Config file]] and [[#Create GRUB entry in the Firmware Boot Manager]].<br />
<br />
==== Generate config file ====<br />
<br />
Finally, generate a configuration for GRUB (this is explained in greater detail in the Configuration section):<br />
<br />
# grub-mkconfig -o <boot-directory>/grub/grub.cfg<br />
<br />
{{Note|The file path is {{ic|<boot-directory>/grub/grub.cfg}}, NOT {{ic|<boot-directory>/grub/x86_64-efi/grub.cfg}}.}}<br />
<br />
If you used {{ic|<nowiki>--boot-directory=/boot</nowiki>}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If you used {{ic|<nowiki>--boot-directory=/boot/efi/EFI</nowiki>}}:<br />
<br />
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg<br />
<br />
This is independent of the value of {{ic|--bootloader-id}} option.<br />
<br />
If GRUB complains about "no suitable mode found" while booting, try [[#"No suitable mode found" error]].<br />
<br />
==== Create GRUB entry in the firmware boot manager ====<br />
<br />
{{ic|grub-install}} automatically tries to create a menu entry in the boot manager. If it doesn't, then see [[Beginners' Guide#GRUB]] for instructions to use {{ic|efibootmgr}} to create a menu entry. However, the problem is likely to be that you haven't booted your CD/USB in UEFI mode, as in [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO]].<br />
<br />
==== Create GRUB standalone UEFI application ====<br />
<br />
It is possible to create a {{ic|grubx64_standalone.efi}} application which has all the modules embeddded in a memdisk within the UEFI application, thus removing the need for having a separate directory populated with all the GRUB UEFI modules and other related files. This is done using the {{ic|grub-mkstandalone}} command which is included in {{Pkg|grub-common}}.<br />
<br />
The easiest way to do this would be with the install command already mentioned before, but specifying the modules to include. For example:<br />
<br />
# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \<br />
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" <any extra files you want to include><br />
<br />
The {{ic|grubx64_standalone.efi}} file expects {{ic|grub.cfg}} to be within its $prefix which is {{ic|(memdisk)/boot/grub}}. The memdisk is embedded within the efi app. The {{ic|grub-mkstandlone}} script allow passing files to be included in the memdisk image to be as the arguments to the script (in <any extra files you want to include>).<br />
<br />
If you have the {{ic|grub.cfg}} at {{ic|/home/user/Desktop/grub.cfg}}, then create a temporary {{ic|/home/user/Desktop/boot/grub/}} directory, copy the {{ic|/home/user/Desktop/grub.cfg}} to {{ic|/home/user/Desktop/boot/grub/grub.cfg}}, cd into {{ic|/home/user/Desktop/boot/grub/}} and run:<br />
<br />
# grub-mkstandalone --directory="/usr/lib/grub/x86_64-efi/" --format="x86_64-efi" --compression="xz" \<br />
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" "boot/grub/grub.cfg"<br />
<br />
The reason to cd into {{ic|/home/user/Desktop/boot/grub/}} and to pass the file path as {{ic|boot/grub/grub.cfg}} (notice the lack of a leading slash - boot/ vs /boot/ ) is because {{ic|dir1/dir2/file}} is included as {{ic|(memdisk)/dir1/dir2/file}} by the {{ic|grub-mkstandalone}} script. <br />
<br />
If you pass {{ic|/home/user/Desktop/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/grub.cfg}}. If you pass {{ic|/home/user/Desktop/boot/grub/grub.cfg}} the file will be included as {{ic|(memdisk)/home/user/Desktop/boot/grub/grub.cfg}}. That is the reason for cd'ing into {{ic|/home/user/Desktop/boot/grub/}} and passing {{ic|boot/grub/grub.cfg}}, to include the file as {{ic|(memdisk)/boot/grub/grub.cfg}}, which is what {{ic|grub.efi}} expects the file to be.<br />
<br />
You need to create an UEFI Boot Manager entry for {{ic|/boot/efi/EFI/arch_grub/grubx64_standalone.efi}} using {{ic|efibootmgr}}. Follow [[#Create GRUB entry in the Firmware Boot Manager]].<br />
<br />
==== Multiboot ====<br />
<br />
===== Microsoft Windows installed in UEFI-GPT mode =====<br />
<br />
Find the UUID of the FAT32 filesystem in the UEFI SYSTEM PARTITION where the Windows UEFI Bootloader files reside. For example, if Windows {{ic|bootmgfw.efi}} exists at {{ic|/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi}} (ignore the upper-lower case differences since that is immaterial in FAT filesystem):<br />
<br />
# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi<br />
1ce5-7f28<br />
<br />
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi<br />
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1<br />
<br />
Then, add this code to {{ic|/etc/grub.d/40_custom}} to chainload Windows x86_64 (Vista SP1+, 7 or 8) installed in UEFI-GPT mode:<br />
<br />
menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {<br />
insmod part_gpt<br />
insmod fat<br />
insmod search_fs_uuid<br />
insmod chain<br />
search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28<br />
chainloader /efi/Microsoft/Boot/bootmgfw.efi<br />
}<br />
<br />
Afterwards remake {{ic|/boot/grub/grub.cfg}}:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
== Configuration ==<br />
<br />
You can also choose to automatically generate or manually edit {{ic|grub.cfg}}.<br />
<br />
{{Note|<br />
* For EFI systems, if GRUB was installed with the {{ic|--boot-directory}} option set, the {{ic|grub.cfg}} file must be placed in the same directory as {{ic|grubx64.efi}}. Otherwise, the {{ic|grub.cfg}} file goes in {{ic|/boot/grub/}}, just like in GRUB BIOS<br />
* [http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html Here] is a quite complete description of how to configure GRUB<br />
}}<br />
<br />
=== Automatically generating using grub-mkconfig ===<br />
<br />
The GRUB {{ic|menu.lst}} equivalent configuration files are {{ic|/etc/default/grub}} and {{ic|/etc/grub.d/*}}. {{ic|grub-mkconfig}} uses these files to generate {{ic|grub.cfg}}. By default the script outputs to stdout. To generate a {{ic|grub.cfg}} file run the command:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{ic|/etc/grub.d/10_linux}} is set to automatically add menu items for Arch linux that work out of the box, to any generated configuration. Other operating systems may need to be added manually to {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}}<br />
<br />
==== Additional arguments ====<br />
<br />
To pass custom additional arguments to the Linux image, you can set the {{ic|GRUB_CMDLINE_LINUX}} variable in {{ic|/etc/default/grub}}. <br />
<br />
For example, use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX"</nowiki>}} where {{ic|sda'''X'''}} is your swap partition to enable resume after hibernation.<br />
<br />
You can also use {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}}, where {{ic|${swap_uuid} }} is the [[Persistent_block_device_naming|UUID]] of your swap partition.<br />
<br />
Multiple entries are separated by spaces within the double quotes. So, for users who want both resume and systemd it would look like this:<br />
{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/usr/lib/systemd/systemd"</nowiki>}}<br />
<br />
See [[Kernel parameters]] for more info.<br />
<br />
=== Manually creating grub.cfg ===<br />
<br />
{{Warning|Editing this file is strongly ''not'' recommended. The file is generated by the {{ic|grub-mkconfig}} command, and it is best to edit your {{ic|/etc/default/grub}} or one of the scripts in the {{ic|/etc/grub.d}} folder.}}<br />
<br />
A basic GRUB config file uses the following options:<br />
* {{ic|(hdX,Y)}} is the partition {{ic|Y}} on disk {{ic|X}}, partition numbers starting at 1, disk numbers starting at 0<br />
* {{ic|1=set default=N}} is the default boot entry that is chosen after timeout for user action<br />
* {{ic|1=set timeout=M}} is the time {{ic|M}} to wait in seconds for a user selection before default is booted<br />
* {{ic|<nowiki>menuentry "title" {entry options}</nowiki>}} is a boot entry titled {{ic|title}}<br />
* {{ic|1=set root=(hdX,Y)}} sets the boot partition, where the kernel and GRUB modules are stored (boot need not be a separate partition, and may simply be a directory under the "root" partition ({{ic|/}})<br />
<br />
An example configuration:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
# Config file for GRUB - The GNU GRand Unified Bootloader<br />
# /boot/grub/grub.cfg<br />
<br />
# DEVICE NAME CONVERSIONS<br />
#<br />
# Linux Grub<br />
# -------------------------<br />
# /dev/fd0 (fd0)<br />
# /dev/sda (hd0)<br />
# /dev/sdb2 (hd1,2)<br />
# /dev/sda3 (hd0,3)<br />
#<br />
<br />
# Timeout for menu<br />
set timeout=5<br />
<br />
# Set default boot entry as Entry 0<br />
set default=0<br />
<br />
# (0) Arch Linux<br />
menuentry "Arch Linux" {<br />
set root=(hd0,1)<br />
linux /vmlinuz-linux root=/dev/sda3 ro<br />
initrd /initramfs-linux.img<br />
}<br />
<br />
## (1) Windows<br />
#menuentry "Windows" {<br />
# set root=(hd0,3)<br />
# chainloader +1<br />
#}<br />
</nowiki>}}<br />
<br />
=== Dual-booting ===<br />
<br />
{{Note|If you want GRUB to automatically search for other systems, you may wish to install {{Pkg|os-prober}}.}}<br />
<br />
==== Using grub-mkconfig ====<br />
The best way to add other entries is editing the {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} . The entries in this file will be automatically added when running {{ic|grub-mkconfig}}.<br />
After adding the new lines, run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg <br />
to generate an updated {{ic|grub.cfg}}.<br />
<br />
===== With GNU/Linux =====<br />
<br />
Assuming that the other distro is on partition {{ic|sda2}}:<br />
<br />
menuentry "Other Linux" {<br />
set root=(hd0,2)<br />
linux /boot/vmlinuz (add other options here as required)<br />
initrd /boot/initrd.img (if the other kernel uses/needs one)<br />
}<br />
<br />
===== With FreeBSD =====<br />
<br />
Requires that FreeBSD is installed on a single partition with UFS. Assuming it is installed on {{ic|sda4}}:<br />
<br />
menuentry "FreeBSD" {<br />
set root=(hd0,4)<br />
chainloader +1<br />
}<br />
<br />
===== With Windows =====<br />
<br />
This assumes that your Windows partition is {{ic|sda3}}. Remember you need to point set root and chainloader to the system reserve partition that windows made when it installed, not the actual partition windows is on. This example works if your system reserve partition is {{ic|sda3}}.<br />
<br />
# (2) Windows XP<br />
menuentry "Windows XP" {<br />
set root="(hd0,3)"<br />
chainloader +1<br />
}<br />
<br />
If the Windows bootloader is on an entirely different hard drive than GRUB, it may be necessary to trick Windows into believing that it is the first hard drive. This was possible with {{ic|drivemap}}. Assuming GRUB is on {{ic|hd0}} and Windows is on {{ic|hd2}}, you need to add the following after {{ic|set root}}:<br />
<br />
drivemap -s hd0 hd2<br />
<br />
==== With Windows via EasyBCD and NeoGRUB ====<br />
<br />
Since EasyBCD's NeoGRUB currently does not understand the GRUB menu format, chainload to it by replacing the contents of your {{ic|C:\NST\menu.lst}} file with lines similar to the following:<br />
<br />
default 0<br />
timeout 1<br />
<br />
title Chainload into GRUB v2<br />
root (hd0,7)<br />
kernel /boot/grub/i386-pc/core.img<br />
<br />
=== Visual configuration ===<br />
<br />
In GRUB it is possible, by default, to change the look of the menu. Make sure to initialize, if not done already, GRUB graphical terminal, gfxterm, with proper video mode, gfxmode, in GRUB. This can be seen in the section [[#"No suitable mode found" error]]. This video mode is passed by GRUB to the linux kernel via 'gfxpayload' so any visual configurations need this mode in order to be in effect.<br />
<br />
==== Setting the framebuffer resolution ====<br />
<br />
GRUB can set the framebuffer for both GRUB itself and the kernel. The old {{ic|1=vga=}} way is deprecated. The preferred method is editing {{ic|/etc/default/grub}} as the following sample:<br />
<br />
GRUB_GFXMODE=1024x768x32<br />
GRUB_GFXPAYLOAD_LINUX=keep<br />
<br />
To generate the changes, run: <br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
The {{ic|gfxpayload}} property will make sure the kernel keeps the resolution.<br />
<br />
{{Note|<br />
* If this example does not work for you try to replace {{ic|1=gfxmode="1024x768x32"}} by {{ic|1=vbemode="0x105"}}. Remember to replace the specified resolution with one suitable for your screen<br />
* To show all the modes you can use {{ic|1=# hwinfo --framebuffer}} (hwinfo is available in [community]), while at GRUB prompt you can use the {{ic|1=vbeinfo}} command<br />
}}<br />
<br />
If this method does not work for you, the deprecated {{ic|1=vga=}} method will still work. Just<br />
add it next to the {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="}} line in {{ic|/etc/default/grub}}<br />
for eg: {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"}} will give you a {{ic|1024x768}} resolution.<br />
<br />
You can choose one of these resolutions: {{ic|640×480}}, {{ic|800×600}}, {{ic|1024×768}}, {{ic|1280×1024}}, {{ic|1600×1200}}, {{ic|1920×1200}}<br />
<br />
==== 915resolution hack ====<br />
<br />
Some times for Intel graphic adapters neither {{ic|1=# hwinfo --framebuffer}} nor {{ic|1=vbeinfo}} will show you the desired resolution. In this case you can use {{ic|915resolution}} hack. This hack will temporarily modify video BIOS and add needed resolution. See [http://915resolution.mango-lang.org/ 915resolution's home page]<br />
<br />
First you need to find a video mode which will be modified later. For that we need the GRUB command shell:<br />
{{hc|sh:grub> 915resolution -l|<br />
Intel 800/900 Series VBIOS Hack : version 0.5.3<br />
[...]<br />
'''Mode 30''' : 640x480, 8 bits/pixel<br />
[...]<br />
}}<br />
Next, we overwrite the {{ic|Mode 30}} with {{ic|1440x900}} resolution:<br />
{{hc|/etc/grub.d/00_header|<br />
[...]<br />
'''915resolution 30 1440 900 # Inserted line'''<br />
set gfxmode&#61;${GRUB_GFXMODE}<br />
[...]<br />
}}<br />
Lastly we need to set {{ic|GRUB_GFXMODE}} as described earlier, regenerate GRUB configuration file and reboot to test changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
# reboot<br />
<br />
==== Background image and bitmap fonts ====<br />
<br />
GRUB comes with support for background images and bitmap fonts in {{ic|pf2}} format. The unifont font is included in the {{Pkg|grub-common}} package under the filename {{ic|unicode.pf2}}, or, as only ASCII characters under the name {{ic|ascii.pf2}}.<br />
<br />
Image formats supported include tga, png and jpeg, providing the correct modules are loaded. The maximum supported resolution depends on your hardware.<br />
<br />
Make sure you have set up the proper [[#Setting the framebuffer resolution|framebuffer resolution]].<br />
<br />
Edit {{ic|/etc/default/grub}} like this:<br />
GRUB_BACKGROUND="/boot/grub/myimage"<br />
#GRUB_THEME="/path/to/gfxtheme"<br />
GRUB_FONT="/path/to/font.pf2"<br />
<br />
{{Note|If you have installed GRUB on a separate partition, {{ic|/boot/grub/myimage}} becomes {{ic|/grub/myimage}}.}}<br />
<br />
To generate the changes and add the information into {{ic|grub.cfg}}, run: <br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If adding the splash image was successful, the user will see {{ic|"Found background image..."}} in the terminal as the command is executed. <br />
If this phrase is not seen, the image information was probably not incorporated into the {{ic|grub.cfg}} file.<br />
<br />
If the image is not displayed, check:<br />
* The path and the filename in {{ic|/etc/default/grub}} are correct<br />
* The image is of the proper size and format (tga, png, 8-bit jpg)<br />
* The image was saved in the RGB mode, and is not indexed<br />
* The console mode is not enabled in {{ic|/etc/default/grub}}<br />
* The command {{ic|grub-mkconfig}} must be executed to place the background image information into the {{ic|/boot/grub/grub.cfg}} file<br />
<br />
==== Theme ====<br />
<br />
Here is an example for configuring Starfield theme which was included in GRUB package.<br />
<br />
Edit {{ic|/etc/default/grub}}<br />
GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"<br />
<br />
Generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
If configuring the theme was successful, you'll see {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}} in the terminal.<br />
Your splash image will usually not be displayed when using a theme.<br />
<br />
==== Menu colors ====<br />
<br />
You can set the menu colors in GRUB. The available colors for GRUB can be found in [https://www.gnu.org/software/grub/manual/html_node/Theme-file-format.html the GRUB Manual].<br />
Here is an example:<br />
<br />
Edit {{ic|/etc/default/grub}}:<br />
GRUB_COLOR_NORMAL="light-blue/black"<br />
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"<br />
<br />
Generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Hidden menu ====<br />
<br />
One of the unique features of GRUB is hiding/skipping the menu and showing it by holding {{keypress|Esc}} when needed. You can also adjust whether you want to see the timeout counter.<br />
<br />
Edit {{ic|/etc/default/grub}} as you wish. Here is an example where the comments from the beginning of the two lines have been removed to enable the feature, the timeout has been set to five seconds and to be shown to the user:<br />
GRUB_HIDDEN_TIMEOUT=5<br />
GRUB_HIDDEN_TIMEOUT_QUIET=false<br />
<br />
and run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Disable framebuffer ====<br />
<br />
Users who use NVIDIA proprietary driver might wish to disable GRUB's framebuffer as it can cause problems with the binary driver.<br />
<br />
To disable framebuffer, edit {{ic|/etc/default/grub}} and uncomment the following line:<br />
GRUB_TERMINAL_OUTPUT=console<br />
<br />
and run:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Another option if you want to keep the framebuffer in GRUB is to revert to text mode just before starting the kernel. To do that modify the variable in {{ic|/etc/default/grub}}:<br />
GRUB_GFXPAYLOAD_LINUX=text<br />
<br />
and rebuild the configuration as before.<br />
<br />
=== Other Options ===<br />
<br />
==== LVM ====<br />
<br />
If you use [[LVM]] for your {{ic|/boot}}, add the following before menuentry lines:<br />
<br />
insmod lvm<br />
<br />
and specify your root in the menuentry as:<br />
<br />
set root=lvm/''lvm_group_name''-''lvm_logical_boot_partition_name''<br />
<br />
Example:<br />
<br />
# (0) Arch Linux<br />
menuentry "Arch Linux" {<br />
insmod lvm<br />
set root=lvm/VolumeGroup-lv_boot<br />
# you can only set following two lines<br />
linux /vmlinuz-linux root=/dev/mapper/VolumeGroup-root ro<br />
initrd /initramfs-linux.img<br />
}<br />
<br />
==== RAID ====<br />
<br />
GRUB provides convenient handling of RAID volumes. You need to add {{ic|insmod mdraid}} which allows you to address the volume natively. For example, {{ic|/dev/md0}} becomes:<br />
set root=(md0)<br />
<br />
whereas a partitioned RAID volume (e.g. {{ic|/dev/md0p1}}) becomes:<br />
set root=(md0,1)<br />
<br />
==== Persistent block device naming ====<br />
One naming scheme for [[Persistent block device naming]] is the use of globally unique UUIDs to detect partitions instead of the "old" {{ic|/dev/sd*}}. Advantages are covered up in the above linked article. <br />
<br />
Persistent naming via filesystem UUIDs are used by default in GRUB. <br />
<br />
{{Note|The {{ic|/boot/grub.cfg}} file needs regeneration with the new UUID in {{ic|/etc/default/grub}} every time a relevant filesystem is resized or recreated. Remember this when modifying partitions & filesystems with a Live-CD.}}<br />
<br />
Whether to use UUIDs is controlled by an option in {{ic|/etc/default/grub}}:<br />
<br />
# GRUB_DISABLE_LINUX_UUID=true<br />
<br />
Either way, do not forget to generate the changes:<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
==== Using Labels ====<br />
<br />
It is possible to use labels, human-readable strings attached to filesystems, by using the {{ic|--label}} option to {{ic|search}}. First of all, label your existing partition:<br />
# tune2fs -L <LABEL> <PARTITION><br />
<br />
Then, add an entry using labels. An example of this:<br />
<br />
menuentry "Arch Linux, session texte" {<br />
search --label --set=root archroot<br />
linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro<br />
initrd /boot/initramfs-linux.img<br />
}<br />
<br />
==== Recall previous entry ====<br />
<br />
GRUB can remember the last entry you booted from and use this as the default entry to boot from next time. This is useful if you have multiple kernels (i.e., the current Arch one and the LTS kernel as a fallback option) or operating systems. To do this, edit {{ic|/etc/default/grub}} and change the value of {{ic|GRUB_DEFAULT}}:<br />
<br />
GRUB_DEFAULT=saved<br />
<br />
This ensures that GRUB will default to the saved entry. To enable saving the selected entry, add the following line to {{ic|/etc/default/grub}}:<br />
<br />
GRUB_SAVEDEFAULT=true<br />
<br />
{{Note|Manually added menu items, e.g. Windows in {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}}, will need {{ic|savedefault}} added. Remember to regenerate([[#Generate config file]]) your configuration file.}}<br />
<br />
==== Changing the default menu entry ====<br />
<br />
To change the default selected entry, edit {{ic|/etc/default/grub}} and change the value of {{ic|GRUB_DEFAULT}}:<br />
<br />
Using numbers :<br />
GRUB_DEFAULT=0<br />
Grub identifies entries in generated menu counted from zero. That means 0 for the first entry which is the default value, 1 for the second and so on.<br />
<br />
Or using menu titles :<br />
GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'<br />
<br />
{{Note|Remember to regenerate([[#Generate config file]]) your configuration file.}}<br />
<br />
==== Security ====<br />
<br />
If you want to secure GRUB so it is not possible for anyone to change boot parameters or use the command line, you can add a user/password combination to GRUB's configuration files. To do this, run the command {{ic|grub-mkpasswd-pbkdf2}}. Enter a password and confirm it:<br />
<br />
{{hc|grub-mkpasswd-pbkdf2|<br />
[...]<br />
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A<br />
}}<br />
Then, add the following to {{ic|/etc/grub.d/00_header}}:<br />
{{hc|/etc/grub.d/00_header|<br />
cat << EOF<br />
<br />
set superusers<nowiki>=</nowiki>"'''username'''"<br />
password_pbkdf2 '''username''' '''<password>'''<br />
<br />
EOF<br />
}}<br />
where {{ic|<password>}} is the string generated by {{ic|grub-mkpasswd_pbkdf2}}.<br />
<br />
Regenerate your configuration file. Your GRUB command line, boot parameters and all boot entries are now protected.<br />
<br />
This can be relaxed and further customized with more users as described in the "Security" part of [https://www.gnu.org/software/grub/manual/grub.html#Security the GRUB manual].<br />
<br />
==== Root encryption ====<br />
<br />
To let GRUB automatically add the kernel parameters for root encryption,<br />
add {{ic|1=cryptdevice=/dev/yourdevice:label}} to {{ic|GRUB_CMDLINE_LINUX}} in {{ic|/etc/default/grub}}.<br />
<br />
{{Tip|If you're upgrading from a working GRUB Legacy configuration, check {{ic|/boot/grub/menu.lst.pacsave}} for the correct device/label to add. Look for them after the text {{ic|kernel /vmlinuz-linux}}.}}<br />
<br />
Example with root mapped to {{ic|/dev/mapper/root}}:<br />
<br />
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"<br />
<br />
Also, disable the usage of UUIDs for the rootfs:<br />
<br />
GRUB_DISABLE_LINUX_UUID=true<br />
<br />
Regenerate the configuration.<br />
<br />
==== Boot non-default entry only once ====<br />
<br />
The command {{ic|grub-reboot}} is very helpful to boot another entry than the default only once. GRUB loads the entry passed in the first command line argument, when the system is rebooted the next time. Most importantly GRUB returns to loading the default entry for all future booting. Changing the configuration file or selecting an entry in the GRUB menu is not necessary.<br />
{{Note|This requires {{ic|1=GRUB_DEFAULT=saved}} in {{ic|/etc/default/grub}} (and then regenerating {{ic|grub.cfg}}) or, in case of hand-made {{ic|grub.cfg}}, the line {{ic|1=set default="${saved_entry}"}}.}}<br />
<br />
=== Booting an ISO directly from GRUB ===<br />
<br />
Edit {{ic|/etc/grub.d/40_custom}} or {{ic|/boot/grub/custom.cfg}} to add an entry for the target ISO. When finished, update the GRUB menu as with the usual {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} (as root).<br />
<br />
==== Arch ISO ====<br />
<br />
{{Note|The following examples assume the ISO is in {{ic|/archives}} on {{ic|hd0,6}}.}}<br />
{{Tip|For thumbdrives, use something like {{ic|(hd1,$partition)}} and either {{ic|/dev/sdb'''Y'''}} for the {{ic|img_dev}} parameter or [[Persistent_block_device_naming|a persistent name]], e.g. {{ic|img_dev&#61;/dev/disk/by-label/CORSAIR}}.}}<br />
<br />
===== x86_64 =====<br />
<br />
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {<br />
set isofile="/archives/archlinux-2013.05.01-dual.iso"<br />
set partition="6"<br />
loopback loop (hd0,$partition)/$isofile<br />
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop<br />
initrd (loop)/arch/boot/x86_64/archiso.img<br />
}<br />
<br />
===== i686 =====<br />
<br />
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {<br />
set isofile="/archives/archlinux-2013.05.01-dual.iso"<br />
set partition="6"<br />
loopback loop (hd0,$partition)/$isofile<br />
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop<br />
initrd (loop)/arch/boot/i686/archiso.img<br />
}<br />
<br />
==== Ubuntu ISO ====<br />
<br />
{{Note|The example assumes that the iso is in {{ic|/archives}} on {{ic|hd0,6}}. Users must adjust the location and hdd/partition in the lines below to match their systems.}}<br />
<br />
menuentry "ubuntu-13.04-desktop-amd64.iso" {<br />
set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"<br />
loopback loop (hd0,6)/$isofile<br />
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --<br />
initrd (loop)/casper/initrd.lz<br />
}<br />
<br />
menuentry "ubuntu-12.04-desktop-amd64.iso" {<br />
set isofile="/archives/ubuntu-12.04-desktop-amd64.iso"<br />
loopback loop (hd0,6)/$isofile<br />
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --<br />
initrd (loop)/casper/initrd.lz<br />
}<br />
<br />
==== Other ISOs ====<br />
<br />
Other working configurations from [http://askubuntu.com/questions/141940/how-to-boot-live-iso-images link Source].<br />
<br />
== Using the command shell ==<br />
<br />
Since the MBR is too small to store all GRUB modules, only the menu and a few basic commands reside there. The majority of GRUB functionality remains in modules in {{ic|/boot/grub}}, which are inserted as needed. In error conditions (e.g. if the partition layout changes) GRUB may fail to boot. When this happens, a command shell may appear.<br />
<br />
GRUB offers multiple shells/prompts. If there is a problem reading the menu but the bootloader is able to find the disk, you will likely be dropped to the "normal" shell:<br />
sh:grub><br />
<br />
If there is a more serious problem (e.g. GRUB cannot find required files), you may instead be dropped to the "rescue" shell:<br />
grub rescue><br />
<br />
The rescue shell is a restricted subset of the normal shell, offering much less functionality. If dumped to the rescue shell, first try inserting the "normal" module, then starting the "normal" shell:<br />
grub rescue> set prefix=(hdX,Y)/boot/grub<br />
grub rescue> insmod (hdX,Y)/boot/grub/i386-pc/normal.mod<br />
rescue:grub> normal<br />
<br />
=== Pager support ===<br />
<br />
GRUB supports pager for reading commands that provide long output (like the {{ic|help}} command). This works only in normal shell mode and not in rescue mode. To enable pager, in GRUB command shell type:<br />
sh:grub> set pager=1<br />
<br />
== GUI configuration tools ==<br />
<br />
Following package may be installed:<br />
* {{App|grub-customizer|Customize the bootloader (GRUB or BURG)|https://launchpad.net/grub-customizer|{{AUR|grub-customizer}}}}<br />
* {{App|grub2-editor|KDE4 control module for configuring the GRUB bootloader|http://kde-apps.org/content/show.php?content&#61;139643|{{AUR|grub2-editor}}}}<br />
* {{App|kcm-grub2|This Kcm module manages the most common settings of GRUB|http://kde-apps.org/content/show.php?content&#61;137886|{{AUR|kcm-grub2}}}}<br />
* {{App|startupmanager|GUI app for changing the settings of GRUB Legacy, GRUB, Usplash and Splashy|http://sourceforge.net/projects/startup-manager/|{{AUR|startupmanager}}}}<br />
<br />
== parttool for hide/unhide ==<br />
<br />
If you have a Windows 9x paradigm with hidden {{ic|C:\}} disks GRUB can hide/unhide it using {{ic|parttool}}. For example, to boot the third {{ic|C:\}} disk of three Windows 9x installations on the CLI enter the CLI and:<br />
parttool hd0,1 hidden+ boot-<br />
parttool hd0,2 hidden+ boot-<br />
parttool hd0,3 hidden- boot+<br />
set root=hd0,3<br />
chainloader +1<br />
boot<br />
<br />
== Using the rescue console ==<br />
<br />
See [[#Using the command shell]] first. If unable to activate the standard shell, one possible solution is to boot using a live CD or some other rescue disk to correct configuration errors and reinstall GRUB. However, such a boot disk is not always available (nor necessary); the rescue console is surprisingly robust.<br />
<br />
The available commands in GRUB rescue include {{ic|insmod}}, {{ic|ls}}, {{ic|set}}, and {{ic|unset}}. This example uses {{ic|set}} and {{ic|insmod}}. {{ic|set}} modifies variables and {{ic|insmod}} inserts new modules to add functionality.<br />
<br />
Before starting, the user must know the location of their {{ic|/boot}} partition (be it a separate partition, or a subdirectory under their root):<br />
grub rescue> set prefix=(hdX,Y)/boot/grub<br />
<br />
where X is the physical drive number and Y is the partition number.<br />
<br />
To expand console capabilities, insert the {{ic|linux}} module:<br />
grub rescue> insmod (hdX,Y)/boot/grub/linux.mod<br />
<br />
{{Note|With a separate boot partition, omit {{ic|/boot}} from the path, (i.e. type {{ic|1=set prefix=(hdX,Y)/grub}} and {{ic|insmod (hdX,Y)/grub/linux.mod}}).}}<br />
<br />
This introduces the {{ic|linux}} and {{ic|initrd}} commands, which should be familiar (see [[#Configuration]]).<br />
<br />
An example, booting Arch Linux:<br />
set root=(hd0,5)<br />
linux /boot/vmlinuz-linux root=/dev/sda5<br />
initrd /boot/initramfs-linux.img<br />
boot<br />
<br />
With a separate boot partition, again change the lines accordingly:<br />
set root=(hd0,5)<br />
linux /vmlinuz-linux root=/dev/sda6<br />
initrd /initramfs-linux.img<br />
boot<br />
<br />
After successfully booting the Arch Linux installation, users can correct {{ic|grub.cfg}} as needed and then reinstall GRUB.<br />
<br />
To reinstall GRUB and fix the problem completely, changing {{ic|/dev/sda}} if needed. See [[#Bootloader installation]] for details.<br />
<br />
== Combining the use of UUIDs and basic scripting ==<br />
<br />
If you like the idea of using UUIDs to avoid unreliable BIOS mappings or are struggling with GRUB's syntax, here is an example boot menu item that uses UUIDs and a small script to direct GRUB to the proper disk partitions for your system. All you need to do is replace the UUIDs in the sample with the correct UUIDs for your system. The example applies to a system with a boot and root partition. You will obviously need to modify the GRUB configuration if you have additional partitions:<br />
<br />
menuentry "Arch Linux 64" {<br />
# Set the UUIDs for your boot and root partition respectively<br />
set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07<br />
set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a<br />
<br />
# (Note: This may be the same as your boot partition)<br />
<br />
# Get the boot/root devices and set them in the root and grub_boot variables<br />
search --fs-uuid --set=root $the_root_uuid<br />
search --fs-uuid --set=grub_boot $the_boot_uuid<br />
<br />
# Check to see if boot and root are equal.<br />
# If they are, then append /boot to $grub_boot (Since $grub_boot is actually the root partition)<br />
if [ $the_boot_uuid == $the_root_uuid] ; then<br />
set grub_boot=$grub_boot/boot<br />
fi<br />
<br />
# $grub_boot now points to the correct location, so the following will properly find the kernel and initrd<br />
linux ($grub_boot)/vmlinuz-linux root=/dev/disk/by-uuid/$uuid_os_root ro<br />
initrd ($grub_boot)/initramfs-linux.img<br />
}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Intel BIOS not booting GPT ===<br />
<br />
Some Intel BIOS's require at least one bootable MBR partition to be present at boot, causing GPT-partitioned boot setups to be unbootable.<br />
<br />
This can be circumvented by using (for instance) fdisk to mark one of the GPT partitions (preferably the 1007 KiB partition you've created for GRUB already) bootable in the MBR. This can be achieved, using fdisk, by the following commands: Start fdisk against the disk you're installing, for instance {{ic|fdisk /dev/sda}}, then press {{keypress|a}} and select the partition you wish to mark as bootable (probably #1) by pressing the corresponding number, finally press {{keypress|w}} to write the changes to the MBR.<br />
<br />
{{Note|The bootable-marking must be done in {{ic|fdisk}} or similar, not in GParted or others, as they will not set the bootable flag in the MBR.}}<br />
<br />
More information is available [http://www.rodsbooks.com/gdisk/bios.html here]<br />
<br />
=== Enable debug messages ===<br />
<br />
Add:<br />
<br />
set pager=1<br />
set debug=all<br />
<br />
to {{ic|grub.cfg}}.<br />
<br />
=== "No suitable mode found" error ===<br />
<br />
If you get this error when booting any menuentry:<br />
<br />
error: no suitable mode found<br />
Booting however<br />
<br />
Then you need to initialize GRUB graphical terminal ({{ic|gfxterm}}) with proper video mode ({{ic|gfxmode}}) in GRUB. This video mode is passed by GRUB to the linux kernel via 'gfxpayload'. In case of UEFI systems, if the GRUB video mode is not initialized, no kernel boot messages will be shown in the terminal (atleast until KMS kicks in).<br />
<br />
Copy {{ic|/usr/share/grub/unicode.pf2}} to ${GRUB_PREFIX_DIR} ({{ic|/boot/grub/}} in case of BIOS and UEFI systems). If GRUB UEFI was installed with {{ic|1=--boot-directory=/boot/efi/EFI}} set, then the directory is {{ic|/boot/efi/EFI/grub/}}:<br />
<br />
# cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}<br />
<br />
If {{ic|/usr/share/grub/unicode.pf2}} does not exist, install {{Pkg|bdf-unifont}}, create the {{ic|unifont.pf2}} file and then copy it to {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}:<br />
<br />
# grub-mkfont -o unicode.pf2 /usr/share/fonts/misc/unifont.bdf<br />
<br />
Then, in the {{ic|grub.cfg}} file, add the following lines to enable GRUB to pass the video mode correctly to the kernel, without of which you will only get a black screen (no output) but booting (actually) proceeds successfully without any system hang.<br />
<br />
BIOS systems:<br />
<br />
insmod vbe<br />
<br />
UEFI systems:<br />
<br />
insmod efi_gop<br />
insmod efi_uga<br />
<br />
After that add the following code (common to both BIOS and UEFI):<br />
<br />
insmod font<br />
<br />
if loadfont ${prefix}/fonts/unicode.pf2<br />
then<br />
insmod gfxterm<br />
set gfxmode=auto<br />
set gfxpayload=keep<br />
terminal_output gfxterm<br />
fi<br />
<br />
As you can see for gfxterm (graphical terminal) to function properly, {{ic|unicode.pf2}} font file should exist in {{ic|${GRUB_PREFIX_DIR<nowiki>}</nowiki>}}.<br />
<br />
=== msdos-style error message ===<br />
<br />
grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible!<br />
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.<br />
However, blocklists are UNRELIABLE and its use is discouraged.<br />
grub-setup: error: If you really want blocklists, use --force.<br />
<br />
This error may occur when you try installing GRUB in a VMware container. Read more about it [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 here]. It happens when the first partition starts just after the MBR (block 63), without the usual space of 1 MiB (2048 blocks) before the first partition. Read [[#Master Boot Record (MBR) specific instructions]]<br />
<br />
=== GRUB UEFI drops to shell ===<br />
<br />
If GRUB loads but drops you into the rescue shell with no errors, it may be because of a missing or misplaced {{ic|grub.cfg}}. This will happen if GRUB UEFI was installed with {{ic|--boot-directory}} and {{ic|grub.cfg}} is missing OR if the partition number of the boot partition changed (which is hard-coded into the {{ic|grubx64.efi}} file).<br />
<br />
=== GRUB UEFI not loaded ===<br />
<br />
An example of a working EFI:<br />
{{hc|# efibootmgr -v|<br />
BootCurrent: 0000<br />
Timeout: 3 seconds<br />
BootOrder: 0000,0001,0002<br />
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\efi\grub\grub.efi)<br />
Boot0001* Shell HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EfiShell.efi)<br />
Boot0002* Festplatte BIOS(2,0,00)P0: SAMSUNG HD204UI<br />
}}<br />
<br />
If the screen only goes black for a second and the next boot option is tried afterwards, according to [https://bbs.archlinux.org/viewtopic.php?pid=981560#p981560 this post], moving GRUB to the partition root can help. The boot option has to be deleted and recreated afterwards. The entry for GRUB should look like this then:<br />
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grub.efi)<br />
<br />
=== Invalid signature ===<br />
<br />
If trying to boot Windows results in an "invalid signature" error, e.g. after reconfiguring partitions or adding additional hard drives, (re)move GRUB's device configuration and let it reconfigure:<br />
# mv /boot/grub/device.map /boot/grub/device.map-old<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
{{ic|grub-mkconfig}} should now mention all found boot options, including Windows. If it works, remove {{ic|/boot/grub/device.map-old}}.<br />
<br />
=== Boot freezes ===<br />
<br />
If booting gets stuck without any error message after GRUB loading the kernel and the initial ramdisk, try removing the {{ic|add_efi_memmap}} kernel parameter.<br />
<br />
=== Restore GRUB Legacy ===<br />
<br />
* Move GRUB v2 files out of the way:<br />
<br />
# mv /boot/grub /boot/grub.nonfunctional<br />
<br />
* Copy GRUB Legacy back to {{ic|/boot}}:<br />
<br />
# cp -af /boot/grub-legacy /boot/grub<br />
<br />
* Replace MBR and next 62 sectors of sda with backed up copy<br />
<br />
{{Warning|This command also restores the partition table, so be careful of overwriting a modified partition table with the old one. It '''will''' mess up your system.}}<br />
<br />
# dd if=/path/to/backup/first-sectors of=/dev/sdX bs=512 count=1<br />
<br />
A safer way is to restore only the MBR boot code use:<br />
<br />
# dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1<br />
<br />
=== Arch not found from other OS ===<br />
Some have reported that other distributions have trouble finding Arch Linux automatically with os-prober. If this problem arises, it has been reported that detection can be improved with the presence of /etc/lsb-release. This file and updating tool is available with the package {{ic|lsb-release}} in the [[community]] repository.<br />
<br />
== References ==<br />
<br />
# Official GRUB Manual - https://www.gnu.org/software/grub/manual/grub.html<br />
# Ubuntu wiki page for GRUB - https://help.ubuntu.com/community/Grub2<br />
# GRUB wiki page describing steps to compile for UEFI systems - https://help.ubuntu.com/community/UEFIBooting<br />
# Wikipedia's page on [[Wikipedia:BIOS Boot partition|BIOS Boot partition]]<br />
<br />
== See also ==<br />
<br />
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_bios.sh A Linux Bash Shell script to compile and install GRUB for BIOS from BZR Source]<br />
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_uefi.sh A Linux Bash Shell script to compile and install GRUB for UEFI from BZR Source]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Msmtp&diff=184855Msmtp2012-02-15T10:34:48Z<p>Duquesnc: emphasizing how to send mails with the mail command</p>
<hr />
<div>{{DISPLAYTITLE:msmtp}}<br />
[[Category:Email Client (English)]]<br />
<br />
[http://msmtp.sourceforge.net/ msmtp] is a very simple and easy to use smtp client with excellent [[sendmail]] compatibility.<br />
<br />
An alternative lightweight MTA that also handles local mail is {{AUR|dma}}, available in the [[AUR]].<br />
<br />
==Installing==<br />
{{Pkg|msmtp}} is in the ''extra'' repository.<br />
# pacman -S msmtp<br />
<br />
==Quick start==<br />
The following is an example of a msmtp configuration file for several accounts. If msmtp throws errors when using this file, search for double byte '\xc2\xa0' characters that may have been erroneously inserted.<br />
{{hc|~/.msmtprc|<br />
# Accounts will inherit settings from this section<br />
defaults<br />
auth on<br />
tls on<br />
tls_trust_file /usr/share/ca-certificates/mozilla/Thawte_Premium_Server_CA.crt<br />
<br />
# A first gmail address<br />
account gmail<br />
host smtp.gmail.com<br />
port 587<br />
from username@gmail.com<br />
user username@gmail.com<br />
password password<br />
<br />
# A second gmail address<br />
account gmail2 : gmail<br />
from username2@gmail.com<br />
user username2@gmail.com<br />
password password2<br />
# It looks like Google's in the process of becoming its own certificate<br />
# authority. For some users, they seem to have switched to a "Google<br />
# Certificate Authority" certificate, which is rooted in Equifax.<br />
#tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt<br />
<br />
# A freemail service<br />
account freemail<br />
host smtp.freemail.example<br />
from joe_smith@freemail.example<br />
user joe.smith<br />
password secret<br />
<br />
# A provider's service<br />
account provider<br />
host smtp.provider.example<br />
<br />
# Set a default account<br />
account default : gmail<br />
}}<br />
<br />
msmtp will refuse to start if ''user'' configuration file is readable and writeable to anyone else but the owner:<br />
$ chmod 600 ~/.msmtprc<br />
<br />
This does not apply to system configuration file (in Arch, this is /etc/msmtprc; copy the example over from /usr/share/doc/msmtp/ ).<br />
<br />
==Using the mail command==<br />
To send mails using the 'mail' command you have to install {{Pkg|mailx}} (some applications require it, e.g. smartd):<br />
<br />
$ pacman -S mailx<br />
<br />
Edit /etc/mail.rc to set sendmail<br />
{{hc|/etc/mail.rc|2=set sendmail=/usr/bin/msmtp}}<br />
<br />
You need to have a .msmtprc file in the home of every users who want to send mail (for example if you want to send mails as root), or alternatively you can use a system wide /etc/msmtprc<br />
<br />
==Test msmtp==<br />
The {{Ic|-a}} flag specifies the account to use as sender; {{Ic|<username>@domain.com}} is the recipient.<br />
<br />
Save (with the addresses you want to use)<br />
To: <username>@domain.com<br />
From: username@gmail.com<br />
Subject: A test<br />
<br />
Yadda, yadda, yadda.<br />
<br />
as, say, "test.mail".<br />
<br />
Then execute<br />
<br />
$ cat test.mail | msmtp -a default <username>@domain.com<br />
<br />
Do ''not'' merely use "echo 'Yadda, yadda, yadda.'" instead of "cat test.mail". This causes at least Gmail and Yahoo to deliver the mail incorrectly.<br />
<br />
==Miscellaneous==<br />
<br />
===Practical password management===<br />
The {{Ic|password}} directive may be omitted. In that case, if the account in question has {{Ic|auth}} set to a legitimate value other than {{Ic|off}}, invoking msmtp from an interactive shell will ask for the password before sending mail. msmtp will not prompt if it has been called by another type of application, such as [[Mutt]].<br />
<br />
If this is not desired, an alternative is to place passwords in {{ic|~/.netrc}}, a file that can act as a common pool for msmtp, [[OfflineIMAP]], and associated tools.<br />
<br />
===Using msmtp offline===<br />
{{note|The msmtp source distribution includes msmtpq and msmtpQ in the ./scripts directory, which are updated versions of the msmtpqueue bundle.}}<br />
<br />
Although msmtp is great, it requires that you be online to use it. This isn't ideal for people on laptops with intermittent connections to the Internet or dialup users. Several scripts have been written to remedy this fact, collectively called msmtpqueue.<br />
<br />
The scripts can be downloaded from [http://sourceforge.net/project/showfiles.php?group_id=86651&package_id=96024 SourceForge], the most recent of which is msmtpqueue-0.5.tar.gz.<br />
<br />
Once the scripts have been downloaded extract them using:<br />
$ tar xf msmtpqueue-0.5.tar.gz<br />
<br />
After that, copy the scripts to a convenient location on your computer ({{ic|/usr/local/bin}} is a good choice):<br />
$ cp msmtpqueue-0.5/*.sh /usr/local/bin/<br />
<br />
Finally, change your MUA to use msmtp-enqueue.sh instead of msmtp when sending e-mail. Queued messages will be stored in {{ic|~/.msmtpqueue}}.<br />
<br />
When you want to send any mail that you've created and queued up run:<br />
$ /usr/local/bin/msmtp-runqueue.sh<br />
<br />
Adding {{ic|/usr/local/bin}} to your PATH can save you some keystrokes if you're doing it manually. The README file that comes with the scripts has some handy information, reading it is recommended.<br />
<br />
===Vim syntax highlighting===<br />
The msmtp source distribution includes a {{ic|msmtprc}} highlighting script for [[Vim]]. Install it from {{ic|./scripts/vim/msmtp.vim}}.<br />
<br />
===Send mail with PHP using msmtp===<br />
Look for ''sendmail_path'' option in your {{ic|php.ini}} and edit like this:<br />
{{bc|1=<br />
sendmail_path = "/usr/bin/msmtp -C /path/to/your/config -t"<br />
}}<br />
<br />
Note that you '''can not''' use a user configuration file (ie: one under ~/) if you plan on using msmtp as a sendmail replacement with php or something similar.<br />
In that case just create /etc/msmtprc, and remove your user configuration (or not if you plan on using it for something else). Also make sure it's readable by whatever you're using it with (php, django, etc...)<br />
<br />
From the msmtp manual: ''Accounts defined in the user configuration file override accounts from the system configuration file. The user configuration file must have no more permissions than user read/write''<br />
<br />
So it's impossible to have a conf file under ~/ and have it still be readable by the php user.<br />
<br />
To test it place this file in your php enabled server or using php-cli.<br />
{{bc|<br />
<?php<br />
mail("your@email.com", "Test email from PHP", "msmtp as sendmail for PHP");<br />
?><br />
}}<br />
<br />
==Troubleshooting==<br />
<br />
===Issues with TLS===<br />
If you see the following message:<br />
msmtp: TLS certificate verification failed: the certificate hasn't got a known issuer<br />
it probably means your tls_trust_file is not right.<br />
<br />
Just follow the [http://msmtp.sourceforge.net/doc/msmtp.html#Transport-Layer-Security fine manual]. It explains you how to find out the server certificate issuer of a given smtp server. Then you can explore the {{ic|/usr/share/ca-certificates/}} directory to find out if by any chance, the certificate you need is there. If not, you will have to get the certificate on your own.<br />
<br />
If you are trying to send mail through GMail and are receiving this error, have a look at [http://www.mail-archive.com/msmtp-users@lists.sourceforge.net/msg00141.html this] thread or just use the second GMail example above.<br />
<br />
If you are completely desperate, but are 100% sure you are communicating with the right server, you can always temporarily disable the cert check:<br />
$ msmtp --tls-certcheck off</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Dell_XPS_14z&diff=181527Dell XPS 14z2012-02-01T09:22:40Z<p>Duquesnc: /* laptop-mode issues */ thread solved, unrelated to hardware</p>
<hr />
<div>[[Category: Dell (English)]]<br />
<br />
== Hardware state ==<br />
{| cellpadding="2" style="border: 1px solid darkgray;"<br />
! width="160" style="border-bottom: 2px solid;" | Device<br />
! width="120" style="border-bottom: 2px solid" | Status<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Network<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Wireless<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Sound<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Bluetooth<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Touchpad<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Graphics<br />
! style="background: #FF7F00; border-bottom: 1px solid" | Modify<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | USB 3.0<br />
! style="background: #FFFFFF; border-bottom: 1px solid" | Not tested<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Webcam<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|}<br />
<br />
== System Settings ==<br />
{{Hc|lspci|<br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)<br />
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)<br />
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)<br />
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b4)<br />
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM67 Express Chipset Family LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: nVidia Corporation Device 1050 (rev ff)<br />
07:00.0 Ethernet controller: Atheros Communications AR8151 v2.0 Gigabit Ethernet (rev c0)<br />
08:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)<br />
09:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5116 PCI Express Card Reader (rev 01)<br />
0f:00.0 USB controller: Texas Instruments Device 8241 (rev 02)<br />
}}<br />
<br />
== System Setup ==<br />
=== Graphics ===<br />
==== Nvidia card ====<br />
Initially, both the Intel integrated graphics and the Nvidia card will be<br />
active, consuming a lot of power, so you probably want to install<br />
[[bumblebee|bumblebee and bbswitch]]. With this laptop, the packages<br />
nvidia, bumblebee-git and bbswitch-git are working fine.<br />
<br />
==== Intel card ====<br />
From the [[Dell_XPS_15z|xps 15z]], wiki page, it is reported that using the Intel card without any modifications can result in poor video performance. A quick fix that does not make things worse for the 14z is to edit {{Ic|/boot/grub/menu.lst}}, and append the following to the {{Ic|kernel}} section<br />
kernel /boot/vmlinuz... '''i915.semaphores=1'''<br />
<br />
=== Power management ===<br />
Classical power saving tricks should apply for this laptop. See the dedicated pages of [[Acpid|acpid]], [[Laptop_Mode_Tools|laptop-mode]] and [[Cpufreq|cpufreq]].<br />
<br />
First try to install {{Pkg|pm-utils}}.<br />
<br />
and see if the following command works successfully:<br />
# pm-suspend<br />
<br />
Normally it should.<br />
<br />
=== Special trick for acpid ===<br />
If you wish to use acpid for handling the event for plugging/unplugging the ac adapter, you should know that the script does not handle it properly. For some reason, acpi_listen does not report a second argument in AC|ACAD|ADP0 but ACPI0003:00. In {{Ic|/etc/acpi/handler.sh}}, you can modify these lines:<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0)<br />
...<br />
in<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0|ACPI0003:00)<br />
...<br />
If this does not solve your problem, you should be able to see what event is triggered by plugging/unplugging the laptop using acpi_listen.<br />
<br />
=== Other ===<br />
USB 3.0 has not been tested but should be working. The USB 3.0 driver in the Linux kernel is located in:<br />
<br />
Device Drivers -> USB Support -> xHCI HCD (USB 3.0) support (EXPERIMENTAL)<br />
SYMBOL: USB_XHCI_HCD</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Laptop_Mode_Tools&diff=181526Laptop Mode Tools2012-02-01T09:21:41Z<p>Duquesnc: /* Hard disks */ = sign</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:Power management (English)]]<br />
[[fr:Laptop Mode Tools]]<br />
{{i18n|Laptop Mode Tools}}<br />
{{Expansion}}<br />
{{Article summary start}}<br />
{{Article summary text|Overview of the Laptop Mode Tools power management suite for notebooks.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|acpid}}<br />
{{Article summary wiki|cpufrequtils}}<br />
{{Article summary wiki|pm-utils}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary link|Laptop Mode Tools|http://samwel.tk/laptop_mode/}}<br />
{{Article summary link|Mailing List Archives|http://mailman.samwel.tk/pipermail/laptop-mode/ }}<br />
{{Article summary link|Less Watts - Official Site|http://www.lesswatts.org/index.php}}<br />
{{Article summary link|Laptop - ArchWiki|http://wiki.archlinux.org/index.php/Laptop|lll}}<br />
<br />
<br />
{{Article summary end}}<br />
<br />
==Preface==<br />
The Linux kernel, starting from version 2.6.6, contains a feature called ''laptop mode''. This feature is also present in the Linux 2.4 series starting from version 2.4.23. When enabled, the kernel allows the hard drive to spin down more often, resulting in significant power savings. Laptop Mode Tools (LMT) evolved from a simple program that controlled the hard drives to a centralized power saving solution providing a wide selection of options and can perform a number of varying power saving functions across separate subsystems simultaneously. Combined with [[acpid]], [[CPU Frequency Scaling|CPU frequency scaling]], and [[pm-utils]], LMT provides most users with a complete notebook power management suite.<br />
<!--<br />
=== Relationship to ACPID ===<br />
=== Relationship to cpufrequtils ===<br />
=== Relationship to pm-utils ===<br />
--><br />
<br />
==Installation==<br />
{{Pkg|laptop-mode-tools}} can be [[pacman|installed]] from the [[Official Repositories|official repositories]].<br />
<br />
==Configuration==<br />
Add {{Ic|laptop-mode}} to the {{Ic|DAEMONS}} array in {{Filename|/etc/rc.conf}}:<br />
DAEMONS=(...laptop-mode...)<br />
<br />
Configuration is handled through the primary configuration file {{Filename|/etc/laptop-mode/laptop-mode.conf}} and through the configuration of dozens of feature-specific files in {{Filename|/etc/laptop-mode/conf.d/*}}. Recent versions of LMT are able to automatically enable commonly used {{Filename|conf.d/*}} settings by way of the {{Ic|ENABLE_AUTO_MODULES}} variable in {{Filename|/etc/laptop-mode/laptop-mode.conf}}.<br />
<br />
===Disks===<br />
====Hard disks====<br />
For this you need to have hdparm and/or sdparm installed. See [[Hdparm]].<br />
<br />
Spinning down the hard drive through {{Ic|hdparm -S}} values saves power and makes everything a lot more quiet. By using the readahead function you can allow the drives to spin down more often even though you are using the computer. LMT can also establish {{Ic|hdparm -B}} values. The maximum hard drive power saving is 1 and the minimum is 254. Set this value to 254 when on AC and 1 when on battery. If you find that normal activity hangs often while waiting for the disk to spin up, it might be a good idea to set it to a higher value (eg. 128) which will make it spin down less often. {{Ic|hdparm -S}} and {{Ic|hdparm -B}} values are configured in {{Filename|/etc/laptop-mode/laptop-mode.conf}}.<br />
<br />
With the CONTROL_MOUNT_OPTIONS variable (default on), laptop-mode-tools automatically remounts your partitions, appending 'commit=600,noatime' in the mount options. This keeps the journaling program jbd2 from accessing your disc every few seconds, instead the disc journal gets updated every 10 minutes (BEWARE: with this setting you could lose up to 10 minutes of work). Also be sure not to use the {{Ic|atime}} mount option, use {{Ic|noatime}} or {{Ic|relatime}} instead.<br />
<br />
{{Note|1=CONTROL_MOUNT_OPTIONS should not be turned on with nilfs2 partitions (see this thread on the forum https://bbs.archlinux.org/viewtopic.php?id=134656)}}<br />
<br />
===Processor===<br />
====CPU frequency====<br />
For this you need to have a CPU frequency driver installed. See [[CPU Frequency Scaling]].<br />
<br />
# cpufreq.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
CONTROL_CPU_FREQUENCY=1<br />
BATT_CPU_MAXFREQ=fastest<br />
BATT_CPU_MINFREQ=slowest<br />
BATT_CPU_GOVERNOR=ondemand<br />
BATT_CPU_IGNORE_NICE_LOAD=1<br />
LM_AC_CPU_MAXFREQ=fastest<br />
LM_AC_CPU_MINFREQ=slowest<br />
LM_AC_CPU_GOVERNOR=ondemand<br />
LM_AC_CPU_IGNORE_NICE_LOAD=1<br />
NOLM_AC_CPU_MAXFREQ=fastest<br />
NOLM_AC_CPU_MINFREQ=slowest<br />
NOLM_AC_CPU_GOVERNOR=ondemand<br />
NOLM_AC_CPU_IGNORE_NICE_LOAD=0<br />
CONTROL_CPU_THROTTLING=0<br />
<br />
* See [[CPU Frequency Scaling]] for details on how to setup the needed kernel modules.<br />
<br />
===Device and bus===<br />
====Intel SATA====<br />
* Enable the Intel SATA AHCI controller Aggressive Link Power Management feature to set the disk link into a very low power mode in the absence of disk IO.<br />
# intel-sata-powermgmt.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_INTEL_SATA_POWER=1<br />
BATT_ACTIVATE_SATA_POWER=1<br />
LM_AC_ACTIVATE_SATA_POWER=1<br />
NOLM_AC_ACTIVATE_SATA_POWER=0<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/intel-sata-powermgmt.conf}} file for additional configuration details.}}<br />
<br />
====USB autosuspend====<br />
# usb-autosuspend.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_USB_AUTOSUSPEND=1<br />
BATT_SUSPEND_USB=1<br />
LM_AC_SUSPEND_USB=1<br />
NOLM_AC_SUSPEND_USB=0<br />
AUTOSUSPEND_TIMEOUT=2<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/usb-autosuspend.conf}} file for additional configuration details.}}<br />
<br />
===Display and graphics===<br />
====LCD brightness====<br />
* Available brightness values for certain laptops can can be obtained by running following two commands:<br />
$ cat /proc/acpi/video/VID/LCD/brightness<br />
<br />
For [http://en.wikipedia.org/wiki/ThinkPad ThinkPad] notebooks, minimum brightness values can be obtained by running one of the following two commands:<br />
$ cat /sys/class/backlight/acpi_video0/brightness<br />
<br />
$ cat /sys/class/backlight/thinkpad_screen/brightness<br />
<br />
* For [http://en.wikipedia.org/wiki/ThinkPad ThinkPad] notebooks, maximum brightness values can be obtained by running one of the following two commands:<br />
$ cat /sys/class/backlight/acpi_video0/max_brightness<br />
<br />
$ cat /sys/class/backlight/thinkpad_screen/max_brightness<br />
<br />
# lcd-brightness.conf<br />
# ThinkPad T40/T42 Example<br />
#<br />
DEBUG=0<br />
CONTROL_BRIGHTNESS=1<br />
BATT_BRIGHTNESS_COMMAND="echo 0"<br />
LM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
BRIGHTNESS_OUTPUT="/sys/class/backlight/thinkpad_screen/brightness"<br />
<br />
# lcd-brightness.conf<br />
# ThinkPad T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_BRIGHTNESS=1<br />
BATT_BRIGHTNESS_COMMAND="echo 0"<br />
LM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/lcd-brightness.conf}} file for additional configuration details.}}<br />
<br />
====Terminal blanking====<br />
<br />
# terminal-blanking.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_TERMINAL=1<br />
TERMINALS="/dev/tty1"<br />
BATT_TERMINAL_BLANK_MINUTES=1<br />
BATT_TERMINAL_POWERDOWN_MINUTES=2<br />
LM_AC_TERMINAL_BLANK_MINUTES=10<br />
LM_AC_TERMINAL_POWERDOWN_MINUTES=10<br />
NOLM_AC_TERMINAL_BLANK_MINUTES=10<br />
NOLM_AC_TERMINAL_POWERDOWN_MINUTES=10<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/terminal-blanking.conf}} file for additional configuration details.}}<br />
<br />
===Networking===<br />
====Ethernet====<br />
# ethernet.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_ETHERNET=1<br />
LM_AC_THROTTLE_ETHERNET=0<br />
NOLM_AC_THROTTLE_ETHERNET=0<br />
DISABLE_WAKEUP_ON_LAN=1<br />
DISABLE_ETHERNET_ON_BATTERY=1<br />
ETHERNET_DEVICES="eth0"<br />
<br />
====Wireless LAN====<br />
Wireless interface power management settings are hardware-dependent, and thus a bit trickier to configure. Depending on the wireless chipset, the settings are managed in one of the following three files:<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-power.conf}} for a generic method of saving power (using "iwconfig wlan0 power on/off"). This applies to most chipsets (that is, anything but Intel chipsets listed below).<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-ipw-power.conf}} for Intel chipsets driven by the old ipw driver. This apply to IPW3945, IPW2200 and IPW2100. It currently (as of LMT 1.55-1) uses iwpriv for IPW3945, and a combination of iwconfig and iwpriv settings for IPW2100 and IPW220. See {{Filename|/usr/share/laptop-mode-tools/modules/wireless-ipw-power}} for details. (note that the ipw3945 is not used anymore, see below)<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-iwl-power.conf}} for Intel chipsets driven by modules iwl4965, iwl3945 and iwlagn (this latter supports chipsets 4965, 5100, 5300, 5350, 5150, 1000, and 6000)<br />
Note that activating the three of them should not be much of a problem, since LMT detects the module used by the interface and acts accordingly.<br />
<br />
The supported modules for each configuration file, indicated above, are taken directly from LMT. However, this seems to be a bit out-of-date, since the current 2.6.34 kernel does not provide the ipw3945 and iwl4965 modules anymore (3945 chipset uses iwl3945 instead, and 4965 uses the generic module iwlagn). This is only brought here for information, as this does not (or should not) affect the way LMT works.<br />
<br />
There is a known issue with some chipsets running with the iwlagn module (namely, the 5300 chipset, and maybe others). On those chipsets, the following settings of {{Filename|/etc/laptop-mode/conf.d/wireless-iwl-power.conf}} :<br />
IWL_AC_POWER<br />
IWL_BATT_POWER<br />
are ignored, because the {{Filename|/sys/class/net/wlan*/device/power_level}} file does not exist. Instead, the standard method (with "iwconfig wlan0 power on/off") is automatically used.<br />
<br />
===Audio===<br />
====AC97====<br />
<br />
# ac97-powersave.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_AC97_POWER=1<br />
<br />
====Intel HDA====<br />
<br />
# intel-hda-powersave.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_INTEL_HDA_POWER=1<br />
BATT_INTEL_HDA_POWERSAVE=1<br />
LM_AC_INTEL_HDA_POWERSAVE=1<br />
NOLM_AC_INTEL_HDA_POWERSAVE=0<br />
INTEL_HDA_DEVICE_TIMEOUT=10<br />
INTEL_HDA_DEVICE_CONTROLLER=0<br />
<br />
==Tips and tricks==<br />
===Aliases===<br />
===lm-profiler===<br />
===Disabling===<br />
<br />
==Troubleshooting==<br />
===Laptop-mode-tools is not picking up events===<br />
You need to install and enable [[acpid]]. Add {{Ic|acpid}} to your DAEMONS list in {{filename|/etc/rc.conf}}:<br />
DAEMONS=(... acpid ...)<br />
<br />
If that does not help, go through the laptop-mode configuration files and make sure that the service you want to enable is set to 1. Many services (including cpufreq control) are by default set to "auto", which may not enable them.<br />
<br />
I have experienced issues with bluetooth not working if i boot up with battery, and i fixed it with disabling runtime-pm.<br />
<br />
===Laptop-mode-tools does not disable on AC===<br />
It is possible if you have both laptop-mode-tools and pm-utils installed, they can conflict with each other, causing laptop-mode to not properly set its state.<br />
<br />
This can be fixed by disabling scripts with duplicate functionality in pm-utils. The main cause of this is the laptop-mode script located in /usr/lib/pm-utils/power.d. The script can be blacklisted by creating a file in /etc/pm/config.d as follows:<br />
<br />
HOOK_BLACKLIST="laptop-mode"<br />
<br />
You can also add any other scripts found in /usr/lib/pm-utils/power.d to this list to disable them. I recommend going through and disabling any hook that has equivalent functionality in LMT.</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Laptop_Mode_Tools&diff=181525Laptop Mode Tools2012-02-01T09:20:26Z<p>Duquesnc: /* Hard disks */ cosmetic</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:Power management (English)]]<br />
[[fr:Laptop Mode Tools]]<br />
{{i18n|Laptop Mode Tools}}<br />
{{Expansion}}<br />
{{Article summary start}}<br />
{{Article summary text|Overview of the Laptop Mode Tools power management suite for notebooks.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|acpid}}<br />
{{Article summary wiki|cpufrequtils}}<br />
{{Article summary wiki|pm-utils}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary link|Laptop Mode Tools|http://samwel.tk/laptop_mode/}}<br />
{{Article summary link|Mailing List Archives|http://mailman.samwel.tk/pipermail/laptop-mode/ }}<br />
{{Article summary link|Less Watts - Official Site|http://www.lesswatts.org/index.php}}<br />
{{Article summary link|Laptop - ArchWiki|http://wiki.archlinux.org/index.php/Laptop|lll}}<br />
<br />
<br />
{{Article summary end}}<br />
<br />
==Preface==<br />
The Linux kernel, starting from version 2.6.6, contains a feature called ''laptop mode''. This feature is also present in the Linux 2.4 series starting from version 2.4.23. When enabled, the kernel allows the hard drive to spin down more often, resulting in significant power savings. Laptop Mode Tools (LMT) evolved from a simple program that controlled the hard drives to a centralized power saving solution providing a wide selection of options and can perform a number of varying power saving functions across separate subsystems simultaneously. Combined with [[acpid]], [[CPU Frequency Scaling|CPU frequency scaling]], and [[pm-utils]], LMT provides most users with a complete notebook power management suite.<br />
<!--<br />
=== Relationship to ACPID ===<br />
=== Relationship to cpufrequtils ===<br />
=== Relationship to pm-utils ===<br />
--><br />
<br />
==Installation==<br />
{{Pkg|laptop-mode-tools}} can be [[pacman|installed]] from the [[Official Repositories|official repositories]].<br />
<br />
==Configuration==<br />
Add {{Ic|laptop-mode}} to the {{Ic|DAEMONS}} array in {{Filename|/etc/rc.conf}}:<br />
DAEMONS=(...laptop-mode...)<br />
<br />
Configuration is handled through the primary configuration file {{Filename|/etc/laptop-mode/laptop-mode.conf}} and through the configuration of dozens of feature-specific files in {{Filename|/etc/laptop-mode/conf.d/*}}. Recent versions of LMT are able to automatically enable commonly used {{Filename|conf.d/*}} settings by way of the {{Ic|ENABLE_AUTO_MODULES}} variable in {{Filename|/etc/laptop-mode/laptop-mode.conf}}.<br />
<br />
===Disks===<br />
====Hard disks====<br />
For this you need to have hdparm and/or sdparm installed. See [[Hdparm]].<br />
<br />
Spinning down the hard drive through {{Ic|hdparm -S}} values saves power and makes everything a lot more quiet. By using the readahead function you can allow the drives to spin down more often even though you are using the computer. LMT can also establish {{Ic|hdparm -B}} values. The maximum hard drive power saving is 1 and the minimum is 254. Set this value to 254 when on AC and 1 when on battery. If you find that normal activity hangs often while waiting for the disk to spin up, it might be a good idea to set it to a higher value (eg. 128) which will make it spin down less often. {{Ic|hdparm -S}} and {{Ic|hdparm -B}} values are configured in {{Filename|/etc/laptop-mode/laptop-mode.conf}}.<br />
<br />
With the CONTROL_MOUNT_OPTIONS variable (default on), laptop-mode-tools automatically remounts your partitions, appending 'commit=600,noatime' in the mount options. This keeps the journaling program jbd2 from accessing your disc every few seconds, instead the disc journal gets updated every 10 minutes (BEWARE: with this setting you could lose up to 10 minutes of work). Also be sure not to use the {{Ic|atime}} mount option, use {{Ic|noatime}} or {{Ic|relatime}} instead.<br />
<br />
{{Note|CONTROL_MOUNT_OPTIONS should not be turned on with nilfs2 partitions (see this thread on the forum https://bbs.archlinux.org/viewtopic.php?id=134656)}}<br />
<br />
===Processor===<br />
====CPU frequency====<br />
For this you need to have a CPU frequency driver installed. See [[CPU Frequency Scaling]].<br />
<br />
# cpufreq.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
CONTROL_CPU_FREQUENCY=1<br />
BATT_CPU_MAXFREQ=fastest<br />
BATT_CPU_MINFREQ=slowest<br />
BATT_CPU_GOVERNOR=ondemand<br />
BATT_CPU_IGNORE_NICE_LOAD=1<br />
LM_AC_CPU_MAXFREQ=fastest<br />
LM_AC_CPU_MINFREQ=slowest<br />
LM_AC_CPU_GOVERNOR=ondemand<br />
LM_AC_CPU_IGNORE_NICE_LOAD=1<br />
NOLM_AC_CPU_MAXFREQ=fastest<br />
NOLM_AC_CPU_MINFREQ=slowest<br />
NOLM_AC_CPU_GOVERNOR=ondemand<br />
NOLM_AC_CPU_IGNORE_NICE_LOAD=0<br />
CONTROL_CPU_THROTTLING=0<br />
<br />
* See [[CPU Frequency Scaling]] for details on how to setup the needed kernel modules.<br />
<br />
===Device and bus===<br />
====Intel SATA====<br />
* Enable the Intel SATA AHCI controller Aggressive Link Power Management feature to set the disk link into a very low power mode in the absence of disk IO.<br />
# intel-sata-powermgmt.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_INTEL_SATA_POWER=1<br />
BATT_ACTIVATE_SATA_POWER=1<br />
LM_AC_ACTIVATE_SATA_POWER=1<br />
NOLM_AC_ACTIVATE_SATA_POWER=0<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/intel-sata-powermgmt.conf}} file for additional configuration details.}}<br />
<br />
====USB autosuspend====<br />
# usb-autosuspend.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_USB_AUTOSUSPEND=1<br />
BATT_SUSPEND_USB=1<br />
LM_AC_SUSPEND_USB=1<br />
NOLM_AC_SUSPEND_USB=0<br />
AUTOSUSPEND_TIMEOUT=2<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/usb-autosuspend.conf}} file for additional configuration details.}}<br />
<br />
===Display and graphics===<br />
====LCD brightness====<br />
* Available brightness values for certain laptops can can be obtained by running following two commands:<br />
$ cat /proc/acpi/video/VID/LCD/brightness<br />
<br />
For [http://en.wikipedia.org/wiki/ThinkPad ThinkPad] notebooks, minimum brightness values can be obtained by running one of the following two commands:<br />
$ cat /sys/class/backlight/acpi_video0/brightness<br />
<br />
$ cat /sys/class/backlight/thinkpad_screen/brightness<br />
<br />
* For [http://en.wikipedia.org/wiki/ThinkPad ThinkPad] notebooks, maximum brightness values can be obtained by running one of the following two commands:<br />
$ cat /sys/class/backlight/acpi_video0/max_brightness<br />
<br />
$ cat /sys/class/backlight/thinkpad_screen/max_brightness<br />
<br />
# lcd-brightness.conf<br />
# ThinkPad T40/T42 Example<br />
#<br />
DEBUG=0<br />
CONTROL_BRIGHTNESS=1<br />
BATT_BRIGHTNESS_COMMAND="echo 0"<br />
LM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
BRIGHTNESS_OUTPUT="/sys/class/backlight/thinkpad_screen/brightness"<br />
<br />
# lcd-brightness.conf<br />
# ThinkPad T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_BRIGHTNESS=1<br />
BATT_BRIGHTNESS_COMMAND="echo 0"<br />
LM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/lcd-brightness.conf}} file for additional configuration details.}}<br />
<br />
====Terminal blanking====<br />
<br />
# terminal-blanking.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_TERMINAL=1<br />
TERMINALS="/dev/tty1"<br />
BATT_TERMINAL_BLANK_MINUTES=1<br />
BATT_TERMINAL_POWERDOWN_MINUTES=2<br />
LM_AC_TERMINAL_BLANK_MINUTES=10<br />
LM_AC_TERMINAL_POWERDOWN_MINUTES=10<br />
NOLM_AC_TERMINAL_BLANK_MINUTES=10<br />
NOLM_AC_TERMINAL_POWERDOWN_MINUTES=10<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/terminal-blanking.conf}} file for additional configuration details.}}<br />
<br />
===Networking===<br />
====Ethernet====<br />
# ethernet.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_ETHERNET=1<br />
LM_AC_THROTTLE_ETHERNET=0<br />
NOLM_AC_THROTTLE_ETHERNET=0<br />
DISABLE_WAKEUP_ON_LAN=1<br />
DISABLE_ETHERNET_ON_BATTERY=1<br />
ETHERNET_DEVICES="eth0"<br />
<br />
====Wireless LAN====<br />
Wireless interface power management settings are hardware-dependent, and thus a bit trickier to configure. Depending on the wireless chipset, the settings are managed in one of the following three files:<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-power.conf}} for a generic method of saving power (using "iwconfig wlan0 power on/off"). This applies to most chipsets (that is, anything but Intel chipsets listed below).<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-ipw-power.conf}} for Intel chipsets driven by the old ipw driver. This apply to IPW3945, IPW2200 and IPW2100. It currently (as of LMT 1.55-1) uses iwpriv for IPW3945, and a combination of iwconfig and iwpriv settings for IPW2100 and IPW220. See {{Filename|/usr/share/laptop-mode-tools/modules/wireless-ipw-power}} for details. (note that the ipw3945 is not used anymore, see below)<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-iwl-power.conf}} for Intel chipsets driven by modules iwl4965, iwl3945 and iwlagn (this latter supports chipsets 4965, 5100, 5300, 5350, 5150, 1000, and 6000)<br />
Note that activating the three of them should not be much of a problem, since LMT detects the module used by the interface and acts accordingly.<br />
<br />
The supported modules for each configuration file, indicated above, are taken directly from LMT. However, this seems to be a bit out-of-date, since the current 2.6.34 kernel does not provide the ipw3945 and iwl4965 modules anymore (3945 chipset uses iwl3945 instead, and 4965 uses the generic module iwlagn). This is only brought here for information, as this does not (or should not) affect the way LMT works.<br />
<br />
There is a known issue with some chipsets running with the iwlagn module (namely, the 5300 chipset, and maybe others). On those chipsets, the following settings of {{Filename|/etc/laptop-mode/conf.d/wireless-iwl-power.conf}} :<br />
IWL_AC_POWER<br />
IWL_BATT_POWER<br />
are ignored, because the {{Filename|/sys/class/net/wlan*/device/power_level}} file does not exist. Instead, the standard method (with "iwconfig wlan0 power on/off") is automatically used.<br />
<br />
===Audio===<br />
====AC97====<br />
<br />
# ac97-powersave.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_AC97_POWER=1<br />
<br />
====Intel HDA====<br />
<br />
# intel-hda-powersave.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_INTEL_HDA_POWER=1<br />
BATT_INTEL_HDA_POWERSAVE=1<br />
LM_AC_INTEL_HDA_POWERSAVE=1<br />
NOLM_AC_INTEL_HDA_POWERSAVE=0<br />
INTEL_HDA_DEVICE_TIMEOUT=10<br />
INTEL_HDA_DEVICE_CONTROLLER=0<br />
<br />
==Tips and tricks==<br />
===Aliases===<br />
===lm-profiler===<br />
===Disabling===<br />
<br />
==Troubleshooting==<br />
===Laptop-mode-tools is not picking up events===<br />
You need to install and enable [[acpid]]. Add {{Ic|acpid}} to your DAEMONS list in {{filename|/etc/rc.conf}}:<br />
DAEMONS=(... acpid ...)<br />
<br />
If that does not help, go through the laptop-mode configuration files and make sure that the service you want to enable is set to 1. Many services (including cpufreq control) are by default set to "auto", which may not enable them.<br />
<br />
I have experienced issues with bluetooth not working if i boot up with battery, and i fixed it with disabling runtime-pm.<br />
<br />
===Laptop-mode-tools does not disable on AC===<br />
It is possible if you have both laptop-mode-tools and pm-utils installed, they can conflict with each other, causing laptop-mode to not properly set its state.<br />
<br />
This can be fixed by disabling scripts with duplicate functionality in pm-utils. The main cause of this is the laptop-mode script located in /usr/lib/pm-utils/power.d. The script can be blacklisted by creating a file in /etc/pm/config.d as follows:<br />
<br />
HOOK_BLACKLIST="laptop-mode"<br />
<br />
You can also add any other scripts found in /usr/lib/pm-utils/power.d to this list to disable them. I recommend going through and disabling any hook that has equivalent functionality in LMT.</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Laptop_Mode_Tools&diff=181524Laptop Mode Tools2012-02-01T09:18:37Z<p>Duquesnc: /* Hard disks */ do not advise to mount with a commit value, LMT takes care of that + adding a warning about nilfs</p>
<hr />
<div>[[Category:Laptops (English)]]<br />
[[Category:Power management (English)]]<br />
[[fr:Laptop Mode Tools]]<br />
{{i18n|Laptop Mode Tools}}<br />
{{Expansion}}<br />
{{Article summary start}}<br />
{{Article summary text|Overview of the Laptop Mode Tools power management suite for notebooks.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|acpid}}<br />
{{Article summary wiki|cpufrequtils}}<br />
{{Article summary wiki|pm-utils}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary link|Laptop Mode Tools|http://samwel.tk/laptop_mode/}}<br />
{{Article summary link|Mailing List Archives|http://mailman.samwel.tk/pipermail/laptop-mode/ }}<br />
{{Article summary link|Less Watts - Official Site|http://www.lesswatts.org/index.php}}<br />
{{Article summary link|Laptop - ArchWiki|http://wiki.archlinux.org/index.php/Laptop|lll}}<br />
<br />
<br />
{{Article summary end}}<br />
<br />
==Preface==<br />
The Linux kernel, starting from version 2.6.6, contains a feature called ''laptop mode''. This feature is also present in the Linux 2.4 series starting from version 2.4.23. When enabled, the kernel allows the hard drive to spin down more often, resulting in significant power savings. Laptop Mode Tools (LMT) evolved from a simple program that controlled the hard drives to a centralized power saving solution providing a wide selection of options and can perform a number of varying power saving functions across separate subsystems simultaneously. Combined with [[acpid]], [[CPU Frequency Scaling|CPU frequency scaling]], and [[pm-utils]], LMT provides most users with a complete notebook power management suite.<br />
<!--<br />
=== Relationship to ACPID ===<br />
=== Relationship to cpufrequtils ===<br />
=== Relationship to pm-utils ===<br />
--><br />
<br />
==Installation==<br />
{{Pkg|laptop-mode-tools}} can be [[pacman|installed]] from the [[Official Repositories|official repositories]].<br />
<br />
==Configuration==<br />
Add {{Ic|laptop-mode}} to the {{Ic|DAEMONS}} array in {{Filename|/etc/rc.conf}}:<br />
DAEMONS=(...laptop-mode...)<br />
<br />
Configuration is handled through the primary configuration file {{Filename|/etc/laptop-mode/laptop-mode.conf}} and through the configuration of dozens of feature-specific files in {{Filename|/etc/laptop-mode/conf.d/*}}. Recent versions of LMT are able to automatically enable commonly used {{Filename|conf.d/*}} settings by way of the {{Ic|ENABLE_AUTO_MODULES}} variable in {{Filename|/etc/laptop-mode/laptop-mode.conf}}.<br />
<br />
===Disks===<br />
====Hard disks====<br />
For this you need to have hdparm and/or sdparm installed. See [[Hdparm]].<br />
<br />
Spinning down the hard drive through {{Ic|hdparm -S}} values saves power and makes everything a lot more quiet. By using the readahead function you can allow the drives to spin down more often even though you are using the computer. LMT can also establish {{Ic|hdparm -B}} values. The maximum hard drive power saving is 1 and the minimum is 254. Set this value to 254 when on AC and 1 when on battery. If you find that normal activity hangs often while waiting for the disk to spin up, it might be a good idea to set it to a higher value (eg. 128) which will make it spin down less often. {{Ic|hdparm -S}} and {{Ic|hdparm -B}} values are configured in {{Filename|/etc/laptop-mode/laptop-mode.conf}}.<br />
<br />
With the CONTROL_MOUNT_OPTIONS variable (default on), laptop-mode-tools automatically remounts your partitions, appending 'commit=600,noatime' in the mount options. This keeps the journaling program jbd2 from accessing your disc every few seconds, instead the disc journal gets updated every 10 minutes (BEWARE: with this setting you could lose up to 10 minutes of work). Also be sure not to use the {{Ic|atime}} mount option, use {{Ic|noatime}} or {{Ic|relatime}} instead.<br />
<br />
Beware that this option should not be turned on with nilfs2 partitions (see this thread on the forum https://bbs.archlinux.org/viewtopic.php?id=134656)<br />
<br />
===Processor===<br />
====CPU frequency====<br />
For this you need to have a CPU frequency driver installed. See [[CPU Frequency Scaling]].<br />
<br />
# cpufreq.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
CONTROL_CPU_FREQUENCY=1<br />
BATT_CPU_MAXFREQ=fastest<br />
BATT_CPU_MINFREQ=slowest<br />
BATT_CPU_GOVERNOR=ondemand<br />
BATT_CPU_IGNORE_NICE_LOAD=1<br />
LM_AC_CPU_MAXFREQ=fastest<br />
LM_AC_CPU_MINFREQ=slowest<br />
LM_AC_CPU_GOVERNOR=ondemand<br />
LM_AC_CPU_IGNORE_NICE_LOAD=1<br />
NOLM_AC_CPU_MAXFREQ=fastest<br />
NOLM_AC_CPU_MINFREQ=slowest<br />
NOLM_AC_CPU_GOVERNOR=ondemand<br />
NOLM_AC_CPU_IGNORE_NICE_LOAD=0<br />
CONTROL_CPU_THROTTLING=0<br />
<br />
* See [[CPU Frequency Scaling]] for details on how to setup the needed kernel modules.<br />
<br />
===Device and bus===<br />
====Intel SATA====<br />
* Enable the Intel SATA AHCI controller Aggressive Link Power Management feature to set the disk link into a very low power mode in the absence of disk IO.<br />
# intel-sata-powermgmt.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_INTEL_SATA_POWER=1<br />
BATT_ACTIVATE_SATA_POWER=1<br />
LM_AC_ACTIVATE_SATA_POWER=1<br />
NOLM_AC_ACTIVATE_SATA_POWER=0<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/intel-sata-powermgmt.conf}} file for additional configuration details.}}<br />
<br />
====USB autosuspend====<br />
# usb-autosuspend.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_USB_AUTOSUSPEND=1<br />
BATT_SUSPEND_USB=1<br />
LM_AC_SUSPEND_USB=1<br />
NOLM_AC_SUSPEND_USB=0<br />
AUTOSUSPEND_TIMEOUT=2<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/usb-autosuspend.conf}} file for additional configuration details.}}<br />
<br />
===Display and graphics===<br />
====LCD brightness====<br />
* Available brightness values for certain laptops can can be obtained by running following two commands:<br />
$ cat /proc/acpi/video/VID/LCD/brightness<br />
<br />
For [http://en.wikipedia.org/wiki/ThinkPad ThinkPad] notebooks, minimum brightness values can be obtained by running one of the following two commands:<br />
$ cat /sys/class/backlight/acpi_video0/brightness<br />
<br />
$ cat /sys/class/backlight/thinkpad_screen/brightness<br />
<br />
* For [http://en.wikipedia.org/wiki/ThinkPad ThinkPad] notebooks, maximum brightness values can be obtained by running one of the following two commands:<br />
$ cat /sys/class/backlight/acpi_video0/max_brightness<br />
<br />
$ cat /sys/class/backlight/thinkpad_screen/max_brightness<br />
<br />
# lcd-brightness.conf<br />
# ThinkPad T40/T42 Example<br />
#<br />
DEBUG=0<br />
CONTROL_BRIGHTNESS=1<br />
BATT_BRIGHTNESS_COMMAND="echo 0"<br />
LM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
BRIGHTNESS_OUTPUT="/sys/class/backlight/thinkpad_screen/brightness"<br />
<br />
# lcd-brightness.conf<br />
# ThinkPad T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_BRIGHTNESS=1<br />
BATT_BRIGHTNESS_COMMAND="echo 0"<br />
LM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
NOLM_AC_BRIGHTNESS_COMMAND="echo 7"<br />
BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/lcd-brightness.conf}} file for additional configuration details.}}<br />
<br />
====Terminal blanking====<br />
<br />
# terminal-blanking.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_TERMINAL=1<br />
TERMINALS="/dev/tty1"<br />
BATT_TERMINAL_BLANK_MINUTES=1<br />
BATT_TERMINAL_POWERDOWN_MINUTES=2<br />
LM_AC_TERMINAL_BLANK_MINUTES=10<br />
LM_AC_TERMINAL_POWERDOWN_MINUTES=10<br />
NOLM_AC_TERMINAL_BLANK_MINUTES=10<br />
NOLM_AC_TERMINAL_POWERDOWN_MINUTES=10<br />
<br />
{{Note|Review the well-documented {{Filename|/etc/laptop-mode/conf.d/terminal-blanking.conf}} file for additional configuration details.}}<br />
<br />
===Networking===<br />
====Ethernet====<br />
# ethernet.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_ETHERNET=1<br />
LM_AC_THROTTLE_ETHERNET=0<br />
NOLM_AC_THROTTLE_ETHERNET=0<br />
DISABLE_WAKEUP_ON_LAN=1<br />
DISABLE_ETHERNET_ON_BATTERY=1<br />
ETHERNET_DEVICES="eth0"<br />
<br />
====Wireless LAN====<br />
Wireless interface power management settings are hardware-dependent, and thus a bit trickier to configure. Depending on the wireless chipset, the settings are managed in one of the following three files:<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-power.conf}} for a generic method of saving power (using "iwconfig wlan0 power on/off"). This applies to most chipsets (that is, anything but Intel chipsets listed below).<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-ipw-power.conf}} for Intel chipsets driven by the old ipw driver. This apply to IPW3945, IPW2200 and IPW2100. It currently (as of LMT 1.55-1) uses iwpriv for IPW3945, and a combination of iwconfig and iwpriv settings for IPW2100 and IPW220. See {{Filename|/usr/share/laptop-mode-tools/modules/wireless-ipw-power}} for details. (note that the ipw3945 is not used anymore, see below)<br />
#{{Filename|/etc/laptop-mode/conf.d/wireless-iwl-power.conf}} for Intel chipsets driven by modules iwl4965, iwl3945 and iwlagn (this latter supports chipsets 4965, 5100, 5300, 5350, 5150, 1000, and 6000)<br />
Note that activating the three of them should not be much of a problem, since LMT detects the module used by the interface and acts accordingly.<br />
<br />
The supported modules for each configuration file, indicated above, are taken directly from LMT. However, this seems to be a bit out-of-date, since the current 2.6.34 kernel does not provide the ipw3945 and iwl4965 modules anymore (3945 chipset uses iwl3945 instead, and 4965 uses the generic module iwlagn). This is only brought here for information, as this does not (or should not) affect the way LMT works.<br />
<br />
There is a known issue with some chipsets running with the iwlagn module (namely, the 5300 chipset, and maybe others). On those chipsets, the following settings of {{Filename|/etc/laptop-mode/conf.d/wireless-iwl-power.conf}} :<br />
IWL_AC_POWER<br />
IWL_BATT_POWER<br />
are ignored, because the {{Filename|/sys/class/net/wlan*/device/power_level}} file does not exist. Instead, the standard method (with "iwconfig wlan0 power on/off") is automatically used.<br />
<br />
===Audio===<br />
====AC97====<br />
<br />
# ac97-powersave.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_AC97_POWER=1<br />
<br />
====Intel HDA====<br />
<br />
# intel-hda-powersave.conf<br />
# ThinkPad T40/T42/T60 Example<br />
#<br />
DEBUG=0<br />
CONTROL_INTEL_HDA_POWER=1<br />
BATT_INTEL_HDA_POWERSAVE=1<br />
LM_AC_INTEL_HDA_POWERSAVE=1<br />
NOLM_AC_INTEL_HDA_POWERSAVE=0<br />
INTEL_HDA_DEVICE_TIMEOUT=10<br />
INTEL_HDA_DEVICE_CONTROLLER=0<br />
<br />
==Tips and tricks==<br />
===Aliases===<br />
===lm-profiler===<br />
===Disabling===<br />
<br />
==Troubleshooting==<br />
===Laptop-mode-tools is not picking up events===<br />
You need to install and enable [[acpid]]. Add {{Ic|acpid}} to your DAEMONS list in {{filename|/etc/rc.conf}}:<br />
DAEMONS=(... acpid ...)<br />
<br />
If that does not help, go through the laptop-mode configuration files and make sure that the service you want to enable is set to 1. Many services (including cpufreq control) are by default set to "auto", which may not enable them.<br />
<br />
I have experienced issues with bluetooth not working if i boot up with battery, and i fixed it with disabling runtime-pm.<br />
<br />
===Laptop-mode-tools does not disable on AC===<br />
It is possible if you have both laptop-mode-tools and pm-utils installed, they can conflict with each other, causing laptop-mode to not properly set its state.<br />
<br />
This can be fixed by disabling scripts with duplicate functionality in pm-utils. The main cause of this is the laptop-mode script located in /usr/lib/pm-utils/power.d. The script can be blacklisted by creating a file in /etc/pm/config.d as follows:<br />
<br />
HOOK_BLACKLIST="laptop-mode"<br />
<br />
You can also add any other scripts found in /usr/lib/pm-utils/power.d to this list to disable them. I recommend going through and disabling any hook that has equivalent functionality in LMT.</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Dell_XPS_14z&diff=181077Dell XPS 14z2012-01-29T18:52:42Z<p>Duquesnc: /* Power management */</p>
<hr />
<div>[[Category: Dell (English)]]<br />
<br />
{| cellpadding="2" style="border: 1px solid darkgray;"<br />
! width="160" style="border-bottom: 2px solid;" | Device<br />
! width="120" style="border-bottom: 2px solid" | Status<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Network<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Wireless<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Sound<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Bluetooth<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Touchpad<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Graphics<br />
! style="background: #FF7F00; border-bottom: 1px solid" | Modify<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | USB 3.0<br />
! style="background: #FFFFFF; border-bottom: 1px solid" | Not tested<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Webcam<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|}<br />
<br />
= System Settings =<br />
<br />
lspci<br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)<br />
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)<br />
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)<br />
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b4)<br />
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM67 Express Chipset Family LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: nVidia Corporation Device 1050 (rev ff)<br />
07:00.0 Ethernet controller: Atheros Communications AR8151 v2.0 Gigabit Ethernet (rev c0)<br />
08:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)<br />
09:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5116 PCI Express Card Reader (rev 01)<br />
0f:00.0 USB controller: Texas Instruments Device 8241 (rev 02)<br />
<br />
= System Setup =<br />
<br />
== Graphics ==<br />
<br />
=== Nvidia card ===<br />
Initially, both the Intel integrated graphics and the Nvidia card will be<br />
active, consuming a lot of power, so you probably want to install<br />
[[bumblebee|bumblebee and bbswitch]]. With this laptop, the packages<br />
nvidia, bumblebee-git and bbswitch-git are working fine.<br />
<br />
=== Intel card ===<br />
From the [[Dell_XPS_15z|xps 15z]], wiki page, it is reported that using<br />
the Intel card without any modifications can result in poor video<br />
performance. A quick fix that does not make things worse for the 14z is to edit<br />
/boot/grub/menu.lst, and append the following to the kernel section<br />
kernel /boot/vmlinuz... '''i915.semaphores=1'''<br />
<br />
== Power management ==<br />
Classical power saving tricks should apply for this laptop. See the dedicated<br />
pages of [[Acpid|acpid]], [[Laptop_Mode_Tools|<br />
laptop-mode]] and [[Cpufreq|cpufreq]].<br />
<br />
=== Special trick for acpid ===<br />
If you wish to use acpid for handling the event for plugging/unplugging the ac adapter, you should know that the script does not handle it properly. For some reason, acpi_listen does not report a second argument in AC|ACAD|ADP0 but ACPI0003:00. In /etc/acpi/handler.sh, you can modify these lines:<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0)<br />
...<br />
in<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0|ACPI0003:00)<br />
...<br />
If this does not solve your problem, you should be able to see what event is triggered by plugging/unplugging the laptop using acpi_listen.<br />
<br />
=== laptop-mode issues ===<br />
laptop-mode-tools does not seem to work properly, and no fix has been found yet. See https://bbs.archlinux.org/viewtopic.php?id=134656</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Dell_XPS_14z&diff=181057Dell XPS 14z2012-01-29T16:11:54Z<p>Duquesnc: /* Intel card */</p>
<hr />
<div>[[Category: Dell (English)]]<br />
<br />
{| cellpadding="2" style="border: 1px solid darkgray;"<br />
! width="160" style="border-bottom: 2px solid;" | Device<br />
! width="120" style="border-bottom: 2px solid" | Status<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Network<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Wireless<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Sound<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Bluetooth<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Touchpad<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Graphics<br />
! style="background: #FF7F00; border-bottom: 1px solid" | Modify<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | USB 3.0<br />
! style="background: #FFFFFF; border-bottom: 1px solid" | Not tested<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Webcam<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|}<br />
<br />
= System Settings =<br />
<br />
lspci<br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)<br />
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)<br />
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)<br />
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b4)<br />
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM67 Express Chipset Family LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: nVidia Corporation Device 1050 (rev ff)<br />
07:00.0 Ethernet controller: Atheros Communications AR8151 v2.0 Gigabit Ethernet (rev c0)<br />
08:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)<br />
09:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5116 PCI Express Card Reader (rev 01)<br />
0f:00.0 USB controller: Texas Instruments Device 8241 (rev 02)<br />
<br />
= System Setup =<br />
<br />
== Graphics ==<br />
<br />
=== Nvidia card ===<br />
Initially, both the Intel integrated graphics and the Nvidia card will be<br />
active, consuming a lot of power, so you probably want to install<br />
[[bumblebee|bumblebee and bbswitch]]. With this laptop, the packages<br />
nvidia, bumblebee-git and bbswitch-git are working fine.<br />
<br />
=== Intel card ===<br />
From the [[Dell_XPS_15z|xps 15z]], wiki page, it is reported that using<br />
the Intel card without any modifications can result in poor video<br />
performance. A quick fix that does not make things worse for the 14z is to edit<br />
/boot/grub/menu.lst, and append the following to the kernel section<br />
kernel /boot/vmlinuz... '''i915.semaphores=1'''<br />
<br />
== Power management ==<br />
Classical power saving tricks should apply for this laptop. See the dedicated<br />
pages of [[Acpid|acpid]], [[Laptop_Mode_Tools|<br />
laptop-mode]] and [[Cpufreq|cpufreq]].<br />
<br />
=== Special trick for acpid ===<br />
If you wish to use acpid for handling the event for plugging/unplugging the ac adapter, you should know that the script does not handle it properly. For some reason, acpi_listen does not report a second argument in AC|ACAD|ADP0 but ACPI0003:00. In /etc/acpi/handler.sh, you can modify these lines:<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0)<br />
...<br />
in<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0|ACPI0003:00)<br />
...<br />
If this does not solve your problem, you should be able to see what event is triggered by plugging/unplugging the laptop using acpi_listen.</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Dell_XPS_14z&diff=181056Dell XPS 14z2012-01-29T16:11:04Z<p>Duquesnc: /* Power management */ adding acpid trick</p>
<hr />
<div>[[Category: Dell (English)]]<br />
<br />
{| cellpadding="2" style="border: 1px solid darkgray;"<br />
! width="160" style="border-bottom: 2px solid;" | Device<br />
! width="120" style="border-bottom: 2px solid" | Status<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Network<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Wireless<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Sound<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Bluetooth<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Touchpad<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Graphics<br />
! style="background: #FF7F00; border-bottom: 1px solid" | Modify<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | USB 3.0<br />
! style="background: #FFFFFF; border-bottom: 1px solid" | Not tested<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Webcam<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|}<br />
<br />
= System Settings =<br />
<br />
lspci<br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)<br />
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)<br />
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)<br />
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b4)<br />
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM67 Express Chipset Family LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: nVidia Corporation Device 1050 (rev ff)<br />
07:00.0 Ethernet controller: Atheros Communications AR8151 v2.0 Gigabit Ethernet (rev c0)<br />
08:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)<br />
09:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5116 PCI Express Card Reader (rev 01)<br />
0f:00.0 USB controller: Texas Instruments Device 8241 (rev 02)<br />
<br />
= System Setup =<br />
<br />
== Graphics ==<br />
<br />
=== Nvidia card ===<br />
Initially, both the Intel integrated graphics and the Nvidia card will be<br />
active, consuming a lot of power, so you probably want to install<br />
[[bumblebee|bumblebee and bbswitch]]. With this laptop, the packages<br />
nvidia, bumblebee-git and bbswitch-git are working fine.<br />
<br />
=== Intel card ===<br />
From the [[Dell_XPS_15z|xps 15z]], wiki page, it is reported that using<br />
the Intel card without any modifications can result in poor video<br />
performance. A quick fix that also works for the 14z is to edit<br />
/boot/grub/menu.lst, and append the following to the kernel section<br />
kernel /boot/vmlinuz... '''i915.semaphores=1'''<br />
<br />
== Power management ==<br />
Classical power saving tricks should apply for this laptop. See the dedicated<br />
pages of [[Acpid|acpid]], [[Laptop_Mode_Tools|<br />
laptop-mode]] and [[Cpufreq|cpufreq]].<br />
<br />
=== Special trick for acpid ===<br />
If you wish to use acpid for handling the event for plugging/unplugging the ac adapter, you should know that the script does not handle it properly. For some reason, acpi_listen does not report a second argument in AC|ACAD|ADP0 but ACPI0003:00. In /etc/acpi/handler.sh, you can modify these lines:<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0)<br />
...<br />
in<br />
ac_adapter)<br />
case "$2" in<br />
AC|ACAD|ADP0|ACPI0003:00)<br />
...<br />
If this does not solve your problem, you should be able to see what event is triggered by plugging/unplugging the laptop using acpi_listen.</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Dell_XPS_14z&diff=181055Dell XPS 14z2012-01-29T15:55:58Z<p>Duquesnc: /* Power management */</p>
<hr />
<div>[[Category: Dell (English)]]<br />
<br />
{| cellpadding="2" style="border: 1px solid darkgray;"<br />
! width="160" style="border-bottom: 2px solid;" | Device<br />
! width="120" style="border-bottom: 2px solid" | Status<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Network<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Wireless<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Sound<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Bluetooth<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Touchpad<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Graphics<br />
! style="background: #FF7F00; border-bottom: 1px solid" | Modify<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | USB 3.0<br />
! style="background: #FFFFFF; border-bottom: 1px solid" | Not tested<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Webcam<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|}<br />
<br />
= System Settings =<br />
<br />
lspci<br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)<br />
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)<br />
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)<br />
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b4)<br />
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM67 Express Chipset Family LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: nVidia Corporation Device 1050 (rev ff)<br />
07:00.0 Ethernet controller: Atheros Communications AR8151 v2.0 Gigabit Ethernet (rev c0)<br />
08:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)<br />
09:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5116 PCI Express Card Reader (rev 01)<br />
0f:00.0 USB controller: Texas Instruments Device 8241 (rev 02)<br />
<br />
= System Setup =<br />
<br />
== Graphics ==<br />
<br />
=== Nvidia card ===<br />
Initially, both the Intel integrated graphics and the Nvidia card will be<br />
active, consuming a lot of power, so you probably want to install<br />
[[bumblebee|bumblebee and bbswitch]]. With this laptop, the packages<br />
nvidia, bumblebee-git and bbswitch-git are working fine.<br />
<br />
=== Intel card ===<br />
From the [[Dell_XPS_15z|xps 15z]], wiki page, it is reported that using<br />
the Intel card without any modifications can result in poor video<br />
performance. A quick fix that also works for the 14z is to edit<br />
/boot/grub/menu.lst, and append the following to the kernel section<br />
kernel /boot/vmlinuz... '''i915.semaphores=1'''<br />
<br />
== Power management ==<br />
Classical power saving tricks apply for this laptop. See the dedicated<br />
pages of [[Acpid|acpid]] [[Laptop_Mode_Tools|<br />
laptop-mode]] and [[Cpufreq|cpufreq]].</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Dell_XPS_14z&diff=180860Dell XPS 14z2012-01-28T11:51:11Z<p>Duquesnc: Created page with "Category: Dell (English) {| cellpadding="2" style="border: 1px solid darkgray;" ! width="160" style="border-bottom: 2px solid;" | Device ! width="120" style="border-botto..."</p>
<hr />
<div>[[Category: Dell (English)]]<br />
<br />
{| cellpadding="2" style="border: 1px solid darkgray;"<br />
! width="160" style="border-bottom: 2px solid;" | Device<br />
! width="120" style="border-bottom: 2px solid" | Status<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Network<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Wireless<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Sound<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Bluetooth<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Touchpad<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Graphics<br />
! style="background: #FF7F00; border-bottom: 1px solid" | Modify<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | USB 3.0<br />
! style="background: #FFFFFF; border-bottom: 1px solid" | Not tested<br />
|-<br />
! style="border-bottom: 1px solid; border-right: 1px solid" | Webcam<br />
! style="background: green; border-bottom: 1px solid" | Works<br />
|}<br />
<br />
= System Settings =<br />
<br />
lspci<br />
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)<br />
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)<br />
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)<br />
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)<br />
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)<br />
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)<br />
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b4)<br />
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b4)<br />
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b4)<br />
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)<br />
00:1f.0 ISA bridge: Intel Corporation HM67 Express Chipset Family LPC Controller (rev 04)<br />
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)<br />
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)<br />
01:00.0 VGA compatible controller: nVidia Corporation Device 1050 (rev ff)<br />
07:00.0 Ethernet controller: Atheros Communications AR8151 v2.0 Gigabit Ethernet (rev c0)<br />
08:00.0 Network controller: Intel Corporation Centrino Advanced-N 6230 (rev 34)<br />
09:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5116 PCI Express Card Reader (rev 01)<br />
0f:00.0 USB controller: Texas Instruments Device 8241 (rev 02)<br />
<br />
= System Setup =<br />
<br />
== Graphics ==<br />
<br />
=== Nvidia card ===<br />
Initially, both the Intel integrated graphics and the Nvidia card will be<br />
active, consuming a lot of power, so you probably want to install<br />
[[bumblebee|bumblebee and bbswitch]]. With this laptop, the packages<br />
nvidia, bumblebee-git and bbswitch-git are working fine.<br />
<br />
=== Intel card ===<br />
From the [[Dell_XPS_15z|xps 15z]], wiki page, it is reported that using<br />
the Intel card without any modifications can result in poor video<br />
performance. A quick fix that also works for the 14z is to edit<br />
/boot/grub/menu.lst, and append the following to the kernel section<br />
kernel /boot/vmlinuz... '''i915.semaphores=1'''<br />
<br />
== Power management ==<br />
Classical power saving tricks apply for this laptop. See the dedicated<br />
pages of [[Laptop-init-script|laptop-init-script]], [[Laptop_Mode_Tools|<br />
laptop-mode]] and [[Cpufreq|cpufreq]].</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Steam&diff=179992Steam2012-01-24T08:28:35Z<p>Duquesnc: Adding a hint for bumblebee users (this fixed the isssues I had)</p>
<hr />
<div>Steam is a content delivery system made by Valve Software. It is most known as the platform needed to play Half-Life 1 and Half-Life 2 based games (Counter-Strike, Day of Defeat, etc), but now offers many other games from other developers. For more information, please see [http://www.steampowered.com/ SteamPowered.com]<br />
<br />
This article will describe how install and run it on Arch Linux using [[Wine]].<br />
<br />
== Preparation ==<br />
<br />
Install [[Wine]] from the [[Official Repositories|official repositories]]. The package is named {{Package Official|wine}}.<br />
<br />
Additionally, if you are using the NVIDIA graphics drivers and are using x86_64, you will need {{Package Official|lib32-nvidia-utils}} from [multilib]:<br />
<br />
Install needed Microsoft fonts from the [[AUR]]: {{Package AUR|ttf-tahoma}}, {{Package AUR|ttf-ms-fonts}}.<br />
<br />
If you have an old Wine prefix ({{Filename|~/.wine}}), you should remove it and let Wine create a new one to avoid problems (you can transfer over anything you want to keep to the new Wine prefix).<br />
<br />
Now, run the Wine configuration program once to create an initial {{Filename|~/.wine}}, and select the right sound driver.<br />
<br />
{{Note|Steam currently will not play sound with Wine's OSS driver.}}<br />
<br />
$ winecfg<br />
<br />
On x86_64, you may want to create a [[Wine#Using_WINEARCH|32-bit Wine prefix]] to avoid problems with Wine's implementation of [[Wikipedia:WoW64|WoW64]]:<br />
<br />
$ WINEARCH=win32 winecfg<br />
<br />
==Installation==<br />
<br />
Download and run the Steam installer from [http://steampowered.com/v/index.php?area=getsteamnow steampowered.com]. It is no longer an .exe file so you have to start it with this command: <br />
$ msiexec /i SteamInstall.msi<br />
<br />
==Starting Steam==<br />
<br />
On x86:<br />
$ wine ~/.wine/drive_c/Program\ Files/Steam/Steam.exe<br />
<br />
On x86_64 (with steam installed to a clean wine prefix):<br />
$ wine ~/.wine/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe<br />
<br />
Alternatively, you may use this method:<br />
<br />
$ wine "C:\\Program Files\\Steam\\steam.exe" <br />
<br />
You should consider making an alias to easily start steam (and put it in your shell's rc file), example:<br />
alias steam='wine ~/.wine/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe >/dev/null 2>&1 &'<br />
<br />
Note: If you are using an nvidia card through bumblebee, you should prefix those commands with 'optirun'.<br />
<br />
==Tips==<br />
<br />
===Performance===<br />
<br />
Consider disabling wine debugging output by adding this to your shell rc file:<br />
export WINEDEBUG=-all<br />
or, just add it to your steam alias to only disable it for steam:<br />
alias steam='WINEDEBUG=-all wine ~/.wine/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe >/dev/null 2>&1 &'<br />
<br />
=== Application Launch Options ===<br />
Go to "Properties" -> "Set Launch Options"<br />
<pre>-console -dxlevel 90 -width 1280 -height 1024<br />
</pre><br />
* console<br />Activate the console in the application to change detailed applications settings.<br />
* dxlevel<br />Set the application's DirectX level, e.g. 90 for DirectX Version 9.0. It is recommended to use the video card's DirectX version to prevent crashes. See the official Valve Software Wiki http://developer.valvesoftware.com/wiki/DirectX_Versions for details.<br />
* width and height<br />Set the screen resolution. In some cases the graphic settings are not saved in the application and the applications always starts in the default resolution.<br />
Please refer to http://developer.valvesoftware.com/wiki/Launch_options for a complete list of launch options.<br />
<br />
=== Using a Pre-Existing Steam Install ===<br />
<br />
If you have a shared drive with Windows, or already have a Steam installation somewhere else, you can simply symlink the Steam directory to {{Filename|~/.wine/drive_c/Program Files/Steam/}} . However, be sure to do '''all''' the previous steps in this wiki. Confirm Steam launches and logs into your account, ''then'' do this:<br />
<br />
cd ~/.wine/drive_c/Program\ Files/ <br />
mv Steam/ Steam.backup/ (or you can just delete the directory)<br />
ln -s /mnt/windows_partition/Program\ Files/Steam/<br />
<br />
{{Note|If you have trouble starting Steam after symlinking the entire Steam folder, try linking only the {{Filename|steamapps}} subdirectory in your existing wine steam folder instead.}}<br />
<br />
===Running Steam in a second X Server===<br />
<br />
Assuming you are using the script above to start Steam, make a new script, called {{Filename|x.steam.sh}}. You should run this when you want to start Steam in a new X server, and {{Filename|steam.sh}} if you want Steam to start in the current X server. <br />
<br />
If due to misconfiguration a black screen is shown, you could always close down the second X server by pressing {{Keypress|Ctrl}} + {{Keypress|Alt}} + {{Keypress|Backspace}}.<br />
<br />
<pre><br />
#!/bin/bash <br />
<br />
DISPLAY=:1.0<br />
<br />
xinit $HOME/steam.sh $* -- :1<br />
</pre><br />
<br />
Now you can use {{Keypress|Ctrl}} + {{Keypress|Alt}} + {{Keypress|F7}} to get to your first X server with your normal desktop, and {{Keypress|Ctrl}} + {{Keypress|Alt}} + {{Keypress|F8}} to go back to your game. <br />
<br />
Because the second X server is ''only'' running the game and the first X server with all your programs is backgrounded, performance should increase. In addition, it is much more convenient to switch X servers while in game to access other resources, rather than having to exit the game completely or {{Keypress|Alt}}-{{Keypress|Tab}} out. Finally, it is useful for when Steam or WINE goes haywire and leaves a bunch of processes in memory after Steam crashes. Simply {{Keypress|Ctrl}} + {{Keypress|Alt}} + {{Keypress|Backspace}} on the second X server to kill that X and all processes on that desktop will terminate as well. <br />
<br />
'''If you cannot switch between X servers with the''' {{Keypress|Ctrl}} '''+''' {{Keypress|Alt}} '''keys''': Make sure your keyboard is set correctly in your {{Filename|xorg.conf}}. There may be help in [http://bbs.archlinux.org/viewtopic.php?t=18115 this thread].<br />
<br />
'''If you get errors that look like "Xlib: connection to ":1.0" refused by server" when starting the second X''': You will need to adjust your X permissions. See section 9 of [http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+extra+XServer this page]{{Linkrot|2011|09|05}} for help.<br />
<br />
'''If you lose the ability to use the keyboard while using Steam''': This is an odd bug that does not happen with other games. A solution is to use a WM in the second X as well. Thankfully, you do not need to run a large WM. Openbox and icewm have been confirmed to fix this bug (evilwm, pekwm, lwm ''do not'' work), but the icewm taskbar shows up on the bottom of the game. I would use openbox for now. <br />
<br />
pacman -S openbox<br />
<br />
Then add {{Ic|openbox &}} to the top of your {{Filename|steam.sh}} file. Note you can run other programs (ex. Teamspeak &) or set X settings (ex. xset, xmodmap) before the WINE call as well.<br />
<br />
===Steam Links in Firefox, Chrome, Etc===<br />
To make steam:// urls in your linux browser connect with steam in wine, there are several things you can do. One involves making steam url-handler keys in gconf, another involves making protocol files for kde, others involve tinkering with desktop files or the Local State file for chromium. These seem to only work in firefox or under certain desktop configurations. One way to do it that works more globally is using mimeo, a tool made by Xyne (an Arch TU) which follows. For another working and less invasive (but firefox-only) way, see the first post [http://ubuntuforums.org/showthread.php?t=433548 here] .<br />
<br />
* Make {{Filename | /usr/bin/steam}} with your favorite editor and paste:<br />
<br />
<pre><br />
#!/bin/sh<br />
#<br />
# Steam wrapper script<br />
#<br />
exec wine "c:\\program files\\steam\\steam.exe" "$@"<br />
</pre><br />
<br />
* Make it executable.<br />
<br />
# chmod +x /usr/bin/steam<br />
<br />
* Install {{Package AUR|mimeo}} and {{Package AUR|xdg-utils-mimeo}} from AUR. You will need to replace the existing xdg-utils if installed. In XFCE, you will also need xorg-utils.<br />
<br />
* Make {{Filename | $HOME/.config/mimeo.conf}} with your favorite editor and paste:<br />
<br />
<pre><br />
/usr/bin/steam %u<br />
^steam://<br />
</pre><br />
<br />
* Lastly, open {{Filename | /usr/bin/xdg-open}} in your favorite editor. Go to the detectDE() section and change it to look as follows:<br />
<br />
<pre><br />
detectDE()<br />
{<br />
#if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;<br />
#elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;<br />
#elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;<br />
#elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;<br />
#elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde;<br />
#else DE=""<br />
#fi<br />
DE=""<br />
}<br />
</pre><br />
<br />
* Restart the browser and you should be good to go. In chromium, you can't enter a steam:// link in the url box like you can with firefox. The forum link above has a steam://open/friends link to try if needed.<br />
<br />
{{Note|If you have any problems with file associations after doing this, simply revert to regular xdg-utils and undo your changes to {{Filename | /usr/bin/xdg-open}}.}}<br />
{{Note|To those on other distributions that stumble upon this page, see the link a little ways above for how you should do it with firefox. No clear way to get it working on chromium on other distros yet. If someone finds a way, please edit this document.}}<br />
<br />
[[Category:Gaming (English)]]<br />
[[Category:Wine (English)]]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Tmux&diff=149119Tmux2011-07-16T12:42:56Z<p>Duquesnc: /* Tips & tricks! */</p>
<hr />
<div>{{i18n|Tmux}}<br />
[[Category:Utilities (English)]]<br />
Tmux is a "terminal multiplexer: it enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached." [http://tmux.sourceforge.net/]<br />
<br />
Tmux is notable as a BSD-licensed alternative to [[Screen Tips|GNU Screen]]. Although similar, there are many differences between the programs, as noted on the [http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/FAQ tmux FAQ page]. Most notably, tmux is currently under active development, in contrast to screen, which hasn't had a stable release since August 8, 2008.<br />
<br />
==Install==<br />
A stable version of tmux may be installed using [[pacman]]:<br />
# pacman -S tmux<br />
Alternatively, [https://aur.archlinux.org/packages.php?ID=35618 tmux-git] is available from the [[AUR]].<br />
<br />
==Configure==<br />
A user-specific configuration file should be located at {{filename|~/.tmux.conf}}, while a global configuration file should be located at {{filename|/etc/tmux.conf}}. Default configuration files can be found in <tt>/usr/share/tmux/</tt>. <br />
<br />
===Key bindings===<br />
{| style="float:right;border:1px #cccccc solid;margin:5px;padding:5px;width:200px;"<br />
|+ ''Prefix all commands with'' <tt>Ctrl-b</tt><br />
!Cmd<br />
!Action<br />
|-<br />
|c<br />
|Create a new window<br />
|-<br />
|n<br />
|Change to next window<br />
|-<br />
|p<br />
|Change to previous window<br />
|-<br />
|"<br />
|Split pane horizontally<br />
|-<br />
|%<br />
|Split pane vertically<br />
|-<br />
|,<br />
|Rename current window<br />
|-<br />
|o<br />
|Move to next pane<br />
|}<br />
<br />
By default, command key bindings are prefixed by Ctrl-b. For example, to vertically split a window type <tt>Ctrl-b %</tt>.<br />
<br />
After splitting a window into multiple panes, you can resize a pane by the hitting prefix key (i.e. <tt>Ctrl-b</tt>) and, while continuing to hold Ctrl, press Left/Right/Up/Down. Swapping panes is achieved in the same manner, but by hitting ''o'' instead of a directional key.<br />
<br />
{{Tip|To mimic screen key bindings copy {{filename|/usr/share/tmux/screen-keys.conf}} to either of the configuration locations.}}<br />
<br />
Key bindings may be changed with the bind and unbind commands in {{filename|tmux.conf}}. For example, you can change the prefix key (i.e. <tt>Ctrl-b</tt>) to <tt>Ctrl-a</tt> by adding the following commands in your configuration file:<br />
unbind C-b<br />
set -g prefix C-a<br />
<br />
Additional ways to move between windows include:<br />
Ctrl-b l (Move to the previously selected window)<br />
Ctrl-b w (List all windows / window numbers)<br />
Ctrl-b <window number> (Move to the specified window number, the default bindings are from 0 – 9)<br />
Ctrl-b q (Show pane numbers, when the numbers show up type the key to goto that pane)<br />
<br />
What if you have 10+ windows open? Tmux has a find-window option & keybinding. <br />
Ctrl-b f <window name> (Search for window name)<br />
Ctrl-b w (Select from interactive list of windows)<br />
<br />
===Browsing URL's===<br />
To browse URL's inside tmux you must have urlview installed and configured:<br />
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e 'cat /tmp/tmux-buffer | urlview'"<br />
<br />
=== Setting the correct term===<br />
If you are using a 256 colour terminal, you will need to set the correct term in tmux. You can do this in either the {{filename|tmux.conf}}:<br />
<br />
set -g default-terminal "screen-256color" <br />
<br />
or in your {{filename|.bashrc}} with a test like:<br />
<br />
# for tmux: export 256color<br />
[ -n "$TMUX" ] && export TERM=screen-256color<br />
<br />
==Session initialization==<br />
You can have tmux open a session with preloaded windows by including those details in your .tmux.conf<br />
<br />
new -n WindowName Command<br />
neww -n WindowName Command<br />
neww -n WindowName Command<br />
<br />
To start a session with split windows (multiple panes), include the splitw command below the neww you would like to split; thus:<br />
<br />
new -s SessionName -n WindowName Command<br />
neww -n foo/bar foo<br />
splitw -v -p 50 -t 0 bar<br />
selectw -t 1 <br />
selectp -t 0<br />
<br />
would open 2 windows, the second of which would be named foo/bar and would be split vertically in half (50%) with foo running above bar. Focus would be in window 2 (foo/bar), top pane (foo).<br />
<br />
{{Note|Numbering for sessions, windows and panes starts at zero, unless you have specified a base-index of 1 in your {{filename|.conf}} }}<br />
<br />
To manage multiple sessions, source separate session files from your conf file:<br />
<br />
# initialize sessions<br />
bind F source-file ~/.tmux/foo<br />
bind B source-file ~/.tmux/bar<br />
<br />
==Scrolling issues==<br />
If you have issues scrolling with Shift-PageUp/Shift-PageDown in your terminal, try this:<br />
<br />
set -g terminal-overrides 'xterm*:smcup@:rmcup@'<br />
<br />
==Split window and remain current directory==<br />
Create a excutable file as follows, for example ~/mbin/split-tmux:<br />
#!/usr/bin/env bash<br />
PWD=`pwd`<br />
tmux split-window $1<br />
tmux send-keys " cd $PWD;clear"<br />
tmux send-keys "Enter"<br />
<br />
and change the configure from:<br />
bind v split-window -h<br />
bind n split-window -v<br />
to<br />
bind v send-keys " ~/mbin/split-tmux -h" \; send-keys "Enter"<br />
bind n send-keys " ~/mbin/split-tmux -v" \; send-keys "Enter"<br />
(However, this trick doesn't work when you are using vim.)<br />
<br />
==Tips & tricks!==<br />
To start tmux when you login to a standard terminal, simply add the following line of bash code to your .bashrc before your aliases..<br />
&#91;&#91; $TERM != "screen" &#93;&#93; && tmux && exit<br />
<br />
Example .bashrc:<br />
#<br />
# ~/.bashrc<br />
#<br />
<br />
# If not running interactively, don't do anything<br />
&#91;&#91; $- != *i* &#93;&#93; && return<br />
&#91;&#91; $TERM != "screen" &#93;&#93; && tmux && exit<br />
<br />
# Irrelevant from here on, but does show that things here are working from within tmux..<br />
alias svile="sudo vile"<br />
alias updatedb="sudo updatedb"<br />
alias nopaste="curl -F 'sprunge=<-' http://sprunge.us"<br />
pacman() {<br />
case $1 in<br />
-S | -S[^sih]* | -R* | -U*)<br />
/usr/bin/sudo /usr/bin/pacman-color "$@" ;;<br />
*) /usr/bin/pacman-color "$@" ;;<br />
esac<br />
}<br />
<br />
{{note|At first you may read screen as if we were using screen and not tmux, but tmux also uses screen for the TERM enviroment variable..}}<br />
<br />
This snippet does the same thing, but also checks tmux is installed before trying to launch it. It also tries to reattach you to an existing tmux session at logout, so that you can shut down every tmux session quickly from the same terminal at logout.<br />
# TMUX<br />
if which tmux 2>&1 >/dev/null; then<br />
# if no session is started, start a new session<br />
if test -z ${TMUX}; then<br />
tmux<br />
fi<br />
# when quitting tmux, try to attach<br />
while test -z ${TMUX}; do<br />
tmux attach || break<br />
done<br />
fi<br />
<br />
==See also==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=84157&p=1 Tmux topic on Arch forums]<br />
* [[Screen|GNU Screen]]<br />
* [http://www.openbsd.org/faq/faq7.html#tmux Tmux tutorial from OpenBSD FAQ]<br />
* [http://www.dayid.org/os/notes/tm.html Tmux/Screen cheat sheet]<br />
* [http://www.jeffstory.org/wordpress/?p=132 Tmux tutorial]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Tmux&diff=121803Tmux2010-11-19T15:48:36Z<p>Duquesnc: typo</p>
<hr />
<div>{{i18n|Tmux}}<br />
[[Category:Utilities (English)]]<br />
Tmux is a terminal multiplexer coming from the BSD world : it enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached. It uses the ncurses lib.<br />
<br />
It's a lot like [http://www.gnu.org/software/screen/ screen], but different. (Who said better ?)<br />
You can find more info on the [http://tmux.sourceforge.net/ official website].<br />
<br />
<br />
==Install==<br />
<br />
# pacman -S tmux<br />
<br />
==Configure==<br />
<br />
Configuration files can be found in /usr/share/tmux/.<br />
By default, the escape keys are C-b (where C- is the control key)<br />
<br />
In order to have an «I want it to behave like screen» configuration, issue this command:<br />
<br />
$ cp /usr/share/tmux/screen-keys.conf ~/.tmux.conf<br />
<br />
For a system wide configuration, place tmux.conf in /etc/.<br />
More info can be found in the man page of tmux<br />
<br />
$ man tmux<br />
<br />
Here is a very simple configuration for example:<br />
<br />
# command prefix (like screen)<br />
set -g prefix C-a<br />
bind C-a send-prefix<br />
<br />
# basic settings<br />
set-window-option -g mode-keys vi # vi key<br />
set-option -g status-keys vi<br />
set-window-option -g utf8 on # utf8 support<br />
set-window-option -g mode-mouse off # disable mouse<br />
<br />
# copy mode to escape key<br />
unbind [<br />
bind Escape copy-mode<br />
<br />
# move tmux copy buffer into x clipboard<br />
bind-key C-y save-buffer /tmp/tmux-buffer \; run-shell "cat /tmp/tmux-buffer | xclip"<br />
<br />
# splitting and cycling<br />
set-option -g mouse-select-pane off<br />
unbind %<br />
bind + split-window -h # horizontal split<br />
unbind '"'<br />
bind _ split-window -v # vertical split<br />
bind C-j previous-window<br />
bind C-k next-window<br />
<br />
# window title<br />
set-option -g set-titles on<br />
set-option -g set-titles-string '#S:#I.#P #W' # window number,program name,active (or not)<br />
set-window-option -g automatic-rename on # auto name<br />
<br />
# messages<br />
#set-window-option -g mode-bg magenta<br />
#set-window-option -g mode-fg black<br />
#set-option -g message-bg magenta<br />
#set-option -g message-fg black<br />
<br />
# No visual activity<br />
set -g visual-activity off<br />
set -g visual-bell off<br />
<br />
#next tab<br />
bind-key -n C-right next<br />
<br />
#previous tab<br />
bind-key -n C-left prev<br />
<br />
# status bar<br />
set-option -g status-utf8 on<br />
set-option -g status-justify right<br />
set-option -g status-bg black<br />
set-option -g status-fg cyan<br />
set-option -g status-interval 5<br />
set-option -g status-left-length 30<br />
set-option -g status-left '#[fg=magenta]» #[fg=blue,bold]#T#[default]'<br />
set-option -g status-right '#[fg=cyan]»» #[fg=blue,bold]###S #[fg=magenta]%R %m-%d#(acpi | cut -d ',' -f 2)#[default]'<br />
set-option -g visual-activity on<br />
set-window-option -g monitor-activity on<br />
set-window-option -g window-status-current-fg white<br />
<br />
# clock<br />
set-window-option -g clock-mode-colour cyan<br />
set-window-option -g clock-mode-style 24<br />
<br />
To resize a split, just use this:<br />
ctrl+a, release a (but keep ctrl) and press right/left/up/... key<br />
<br />
To swap split:<br />
ctrl+a, release a (but keep ctrl) and press o<br />
<br />
To browse URL's that show up inside tmux (you must also have urlview installed and configured):<br />
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e 'cat /tmp/tmux-buffer | urlview'"<br />
<br />
==Basic Window Handling With Default Configuration==<br />
<br />
''' *NOTE*''' <br />
You can change keybinding Ctrl-b to Ctrl-a by creating a ~/.tmux.conf and putting the following into it. <br />
set -g prefix Ctrl-a.<br />
<br />
There is not a tmux.conf file setup as default.<br />
<br />
<br />
Start up tmux with the tmux command. You should be greeted with a terminal window with the default status bar.<br />
<br />
Ctrl-b c to create windows <br />
Ctrl-b ,. will prompt you to rename the current window – type anything you want and hit enter<br />
<br />
Multiple ways to switch windows:<br />
<br />
Ctrl-b n (Move to the next window)<br />
Ctrl-b p (Move to the previous window)<br />
Ctrl-b l (Move to the previously selected window)<br />
Ctrl-b w (List all windows / window numbers)<br />
Ctrl-b <window number> (Move to the specified window number, the default bindings are from 0 – 9)<br />
<br />
What if you have 10+ windows open? Tmux has a find-window option & keybinding. <br />
Type Ctrl-b f and type in the window name you want <br />
(it actually searches for the window so you can type in only part of the name of the window you’re looking for).<br />
<br />
<br />
Basic Pane Handling With Default Configuration<br />
<br />
Ctrl-b % (Split the window vertically)<br />
Ctrl-b : “split-window” (Split window horizontally)<br />
Ctrl-b o (Goto next pane)<br />
Ctrl-b q (Show pane numbers, when the numbers show up type the key to goto that pane)<br />
Ctrl-b { (Move the current pane left)<br />
Ctrl-b } (Move the current pane right)<br />
<br />
==Session initialization==<br />
You can have tmux open a session with preloaded windows by including those details in your .tmux.conf<br />
<br />
new -n WindowName Command<br />
neww -n WindowName Command<br />
neww -n WindowName Command<br />
<br />
To start a session with split windows (multiple panes), include the splitw command below the neww you would like to split; thus:<br />
<br />
new -n WindowName Command<br />
neww -n foo/bar foo<br />
splitw -v -p 50 -t 0 bar<br />
<br />
would open 2 windows, the second of which would be named foo/bar and would be split vertically in half (50%) with foo running above bar.<br />
<br />
==Scrolling issues==<br />
If you have issues scrolling with Shift-PageUp/Shift-PageDown in your terminal, try this:<br />
<br />
set -g terminal-overrides 'xterm*:smcup@:rmcup@'<br />
<br />
==See also==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=84157&p=1 Tmux topic on Arch forums]<br />
* [[Screen|GNU Screen]]<br />
* [http://www.openbsd.org/faq/faq7.html#tmux Tmux tutorial from OpenBSD FAQ]<br />
* [http://www.dayid.org/os/notes/tm.html Tmux/Screen cheat sheet]<br />
* [http://www.jeffstory.org/wordpress/?p=132 Tmux tutorial]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Tmux&diff=121802Tmux2010-11-19T15:46:20Z<p>Duquesnc: Added scrolling issues troubleshooting</p>
<hr />
<div>{{i18n|Tmux}}<br />
[[Category:Utilities (English)]]<br />
Tmux is a terminal multiplexer coming from the BSD world : it enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached. It uses the ncurses lib.<br />
<br />
It's a lot like [http://www.gnu.org/software/screen/ screen], but different. (Who said better ?)<br />
You can find more info on the [http://tmux.sourceforge.net/ official website].<br />
<br />
<br />
==Install==<br />
<br />
# pacman -S tmux<br />
<br />
==Configure==<br />
<br />
Configuration files can be found in /usr/share/tmux/.<br />
By default, the escape keys are C-b (where C- is the control key)<br />
<br />
In order to have an «I want it to behave like screen» configuration, issue this command:<br />
<br />
$ cp /usr/share/tmux/screen-keys.conf ~/.tmux.conf<br />
<br />
For a system wide configuration, place tmux.conf in /etc/.<br />
More info can be found in the man page of tmux<br />
<br />
$ man tmux<br />
<br />
Here is a very simple configuration for example:<br />
<br />
# command prefix (like screen)<br />
set -g prefix C-a<br />
bind C-a send-prefix<br />
<br />
# basic settings<br />
set-window-option -g mode-keys vi # vi key<br />
set-option -g status-keys vi<br />
set-window-option -g utf8 on # utf8 support<br />
set-window-option -g mode-mouse off # disable mouse<br />
<br />
# copy mode to escape key<br />
unbind [<br />
bind Escape copy-mode<br />
<br />
# move tmux copy buffer into x clipboard<br />
bind-key C-y save-buffer /tmp/tmux-buffer \; run-shell "cat /tmp/tmux-buffer | xclip"<br />
<br />
# splitting and cycling<br />
set-option -g mouse-select-pane off<br />
unbind %<br />
bind + split-window -h # horizontal split<br />
unbind '"'<br />
bind _ split-window -v # vertical split<br />
bind C-j previous-window<br />
bind C-k next-window<br />
<br />
# window title<br />
set-option -g set-titles on<br />
set-option -g set-titles-string '#S:#I.#P #W' # window number,program name,active (or not)<br />
set-window-option -g automatic-rename on # auto name<br />
<br />
# messages<br />
#set-window-option -g mode-bg magenta<br />
#set-window-option -g mode-fg black<br />
#set-option -g message-bg magenta<br />
#set-option -g message-fg black<br />
<br />
# No visual activity<br />
set -g visual-activity off<br />
set -g visual-bell off<br />
<br />
#next tab<br />
bind-key -n C-right next<br />
<br />
#previous tab<br />
bind-key -n C-left prev<br />
<br />
# status bar<br />
set-option -g status-utf8 on<br />
set-option -g status-justify right<br />
set-option -g status-bg black<br />
set-option -g status-fg cyan<br />
set-option -g status-interval 5<br />
set-option -g status-left-length 30<br />
set-option -g status-left '#[fg=magenta]» #[fg=blue,bold]#T#[default]'<br />
set-option -g status-right '#[fg=cyan]»» #[fg=blue,bold]###S #[fg=magenta]%R %m-%d#(acpi | cut -d ',' -f 2)#[default]'<br />
set-option -g visual-activity on<br />
set-window-option -g monitor-activity on<br />
set-window-option -g window-status-current-fg white<br />
<br />
# clock<br />
set-window-option -g clock-mode-colour cyan<br />
set-window-option -g clock-mode-style 24<br />
<br />
To resize a split, just use this:<br />
ctrl+a, release a (but keep ctrl) and press right/left/up/... key<br />
<br />
To swap split:<br />
ctrl+a, release a (but keep ctrl) and press o<br />
<br />
To browse URL's that show up inside tmux (you must also have urlview installed and configured):<br />
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e 'cat /tmp/tmux-buffer | urlview'"<br />
<br />
==Basic Window Handling With Default Configuration==<br />
<br />
''' *NOTE*''' <br />
You can change keybinding Ctrl-b to Ctrl-a by creating a ~/.tmux.conf and putting the following into it. <br />
set -g prefix Ctrl-a.<br />
<br />
There is not a tmux.conf file setup as default.<br />
<br />
<br />
Start up tmux with the tmux command. You should be greeted with a terminal window with the default status bar.<br />
<br />
Ctrl-b c to create windows <br />
Ctrl-b ,. will prompt you to rename the current window – type anything you want and hit enter<br />
<br />
Multiple ways to switch windows:<br />
<br />
Ctrl-b n (Move to the next window)<br />
Ctrl-b p (Move to the previous window)<br />
Ctrl-b l (Move to the previously selected window)<br />
Ctrl-b w (List all windows / window numbers)<br />
Ctrl-b <window number> (Move to the specified window number, the default bindings are from 0 – 9)<br />
<br />
What if you have 10+ windows open? Tmux has a find-window option & keybinding. <br />
Type Ctrl-b f and type in the window name you want <br />
(it actually searches for the window so you can type in only part of the name of the window you’re looking for).<br />
<br />
<br />
Basic Pane Handling With Default Configuration<br />
<br />
Ctrl-b % (Split the window vertically)<br />
Ctrl-b : “split-window” (Split window horizontally)<br />
Ctrl-b o (Goto next pane)<br />
Ctrl-b q (Show pane numbers, when the numbers show up type the key to goto that pane)<br />
Ctrl-b { (Move the current pane left)<br />
Ctrl-b } (Move the current pane right)<br />
<br />
==Session initialization==<br />
You can have tmux open a session with preloaded windows by including those details in your .tmux.conf<br />
<br />
new -n WindowName Command<br />
neww -n WindowName Command<br />
neww -n WindowName Command<br />
<br />
To start a session with split windows (multiple panes), include the splitw command below the neww you would like to split; thus:<br />
<br />
new -n WindowName Command<br />
neww -n foo/bar foo<br />
splitw -v -p 50 -t 0 bar<br />
<br />
would open 2 windows, the second of which would be named foo/bar and would be split vertically in half (50%) with foo running above bar.<br />
<br />
==Scrolling issues==<br />
If you have issue scrolling with Shift-PageUp/Shift-PageDown in your terminal, try this:<br />
<br />
set -g terminal-overrides 'xterm*:smcup@:rmcup@'<br />
<br />
==See also==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=84157&p=1 Tmux topic on Arch forums]<br />
* [[Screen|GNU Screen]]<br />
* [http://www.openbsd.org/faq/faq7.html#tmux Tmux tutorial from OpenBSD FAQ]<br />
* [http://www.dayid.org/os/notes/tm.html Tmux/Screen cheat sheet]<br />
* [http://www.jeffstory.org/wordpress/?p=132 Tmux tutorial]</div>Duquesnchttps://wiki.archlinux.org/index.php?title=Awesome_(window_manager)&diff=65420Awesome (window manager)2009-03-21T10:45:29Z<p>Duquesnc: /* Using awesome */</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|Česky|Awesome (Česky)}}<br />
{{i18n_entry|English|Awesome3}}<br />
{{i18n_entry|简体中文|Awesome_(简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
= Introduction =<br />
From the awesome website:<br />
<br />
''[http://awesome.naquadah.org/ awesome] is a highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license.<br />
<br />
It is primarly targeted at power users, developers and any people dealing with every day computing tasks and who want to have fine-grained control on its graphical environment.''<br />
<br />
= Installation =<br />
<br />
Awesome is available in the standard repositories (community):<br />
# pacman -S awesome<br />
<br />
== Install latest awesome3 and wicked==<br />
Wicked is a lua library for awesome3 to provide more widgets, like MPD Widgets, CPU usage, memory usage, etc. You can require() it from within rc.lua, and set up all your widgets from inside the same config file, without having to run a separate program with separate config files. <br />
<br />
Both binary packages (only i686 at the moment, sorry) are available in the [awesome] repositories. You can edit /etc/pacman.conf,just add:<br />
[awesome]<br />
Server = <nowiki>http://www.camazotz.de/awesome/</nowiki><br />
To install them, simply:<br />
# pacman -S awesome3 wicked-awesome3<br />
<br />
== Awesome-git and wicked-git ==<br />
Git-based development versions are available from AUR, see [http://aur.archlinux.org/packages.php?ID=13916 awesome-git], [http://aur.archlinux.org/packages.php?ID=17232 wicked-git].<br />
<br />
There are several ways to install it.<br />
The easiest is to use "yaourt" (also available in the AUR). If you have yaourt installed, simply:<br />
# yaourt -S awesome-git wicked-git<br />
<br />
However, there's a [deelab] repository for installing awesome-git and wicked-git. Just add the followings into /etc/pacman.conf:<br />
[deelab]<br />
#awesome-git<br />
Server = <nowiki>http://www.deelab.org/arch/i686</nowiki><br />
<br />
= Getting Started =<br />
<br />
==Using awesome==<br />
To run awesome without a login manager, simply add '''<tt>exec awesome</tt>''' to the startup script of your choice (e.g. ~/.xinitrc.)<br />
<br />
If you have problems with some devices (like mounting usbkeys, reading dvds) be sure to read documentation about hal and policykit. When you don't use a login manager, nothing is automated. In some cases, using '''<tt>exec ck-launch-session awesome</tt>''' can solve your problems.<br />
<br />
To start awesome from a login manager, see [[Adding a login manager (KDM, GDM, or XDM) to automatically boot on startup | this article]]. <br />
<br />
'''[[SLIM]]''' is a popular lightweight login manager and comes highly recommended. You should do like this:<br />
<br />
1) Edit /etc/slim.conf for start awesome session, add awesome to sessions line. For example: <br />
sessions awesome,wmii,xmonad<br />
2) Edit ~/.xinitrc file <br />
DEFAULT_SESSION=awesome<br />
case $1 in<br />
awesome) exec awesome ;;<br />
wmii) exec wmii ;;<br />
xmonad) exec xmonad ;;<br />
*) exec $DEFAULT_SESSION ;;<br />
esac<br />
<br />
= Configuration =<br />
Awesome includes some good default settings right out of the box, but sooner or later you'll want to change something. The lua based configuration file is at <tt>~/.config/awesome/rc.lua</tt>.<br />
<br />
== Creating the configuration file ==<br />
Whenever compiled, awesome will attempt to use whatever custom settings are contained in ~/.config/awesome/rc.lua. This file is not created by default, so we must copy the template file first:<br />
$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua<br />
<br />
For more information about configuring awesome, check out the [http://awesome.naquadah.org/wiki/index.php?title=Awesome_3_configuration configuration page at awesome wiki] <br />
<br />
<br />
== More configuration resources ==<br />
{{Box Note | The syntax of awesome configuration changes regularly, so you will likely have to modify any file you download.}}<br />
<br />
Some good examples of rc.lua would be as follows:<br />
<br />
* http://git.glacicle.com/other/configs.git/.config/awesome/rc_30.lua<br />
* http://www.calmar.ws/dotfiles/dotfiledir/dot_awesomerc.lua<br />
* http://tux-atome.fr/rhaamo_config-files.git?a=tree;f=configs/awesome3/dot_config/awesome - Awesome 3, no wicked required and no beautiful.<br />
* http://github.com/wolgri/wolgri.config/tree/master/.config/awesome/rc.lua<br />
* http://oxmoz.no-ip.org/awesome/rc.lua<br />
* http://www.ugolnik.info/downloads/awesome/rc.lua (screen) - Awesome 3 with small titlebar and statusbar.<br />
* http://github.com/BaSh/config/tree/master/.config/awesome/rc.lua<br />
* http://silenceisdefeat.org/~koniu/awesome/rc.lua (screen)<br />
* http://dmaus.gmxhome.de/awesome/rc.lua (main file)<br />
** http://dmaus.gmxhome.de/awesome/thinkpad.include (notebook specific configuration) <br />
* https://trac.poildetroll.net/trac/akoya/browser/config/awesome/rc.lua<br />
* http://svn.grumblesmurf.org/mercurial/awesome-config/file/tip<br />
* http://github.com/stxza/arch-linux-configs/tree/master/.config/awesome (All) [http://balancest.deviantart.com/gallery/ (screen gallery)]<br />
* User Configuration Files http://awesome.naquadah.org/wiki/index.php?title=User_Configuration_Files<br />
<br />
= Themes =<br />
<br />
Beautiful is a lua library that allows you to theme awesome using an external file, it becomes very easy to dynamically change your whole awesome colours and wallpaper without changing your rc.lua. <br />
<br />
The default theme is at /usr/share/awesome/themes/default. Copy it to ~/.awesome/themes/default and change theme_path in rc.lua. <br />
<br />
More details [http://awesome.naquadah.org/wiki/index.php?title=Beautiful here]<br />
<br />
A few sample [http://awesome.naquadah.org/wiki/index.php?title=Beautiful_themes themes]<br />
<br />
== Setting up your wallpaper ==<br />
<br />
Beautiful can handle your wallpaper, thus you don't need to set it up in your .xinitrc or .xsession files. This allows you to have a specific wallpaper for each theme. If you take a look at the default theme file you'll see a wallpaper_cmd key, the given command is executed when beautiful.init("path_to_theme_file") is run. You can put here you own command or remove/comment the key if you don't want Beautiful to interfere with your wallpaper business.<br />
<br />
For instance, if you use fbsetbg to set your wallpaper, you can write:<br />
<br />
wallpaper_cmd = fbsetbg -f .config/awesome/themes/awesome-wallpaper.png<br />
<br />
<br />
= Tips & Tricks =<br />
Feel free to add any tips or tricks that you would like to pass on to other awesome users.<br />
==Expose effect like compiz==<br />
<br />
Revelation brings up a view of all your open clients; left-clicking a client pops to the first tag that client is visible on and raises/focuses the client. In addition, the Enter key pops to the currently focused client, and Escape aborts. <br />
<br />
http://awesome.naquadah.org/wiki/index.php?title=Revelation<br />
<br />
==Hide / show statusbars in awesome 3.0?==<br />
<br />
Lua code:<br />
<br />
mystatusbar.screen = nil<br />
<br />
To map Modkey-b to hide/show default statusbar on active screen (as default in awesome 2.3), add to your awesome/rc.lua:<br />
<br />
keybinding.new({ modkey }, "b", function () <br />
if mystatusbar[mouse.screen].screen == nil then <br />
mystatusbar[mouse.screen].screen = mouse.screen<br />
else<br />
mystatusbar[mouse.screen].screen = nil<br />
end<br />
end):add()<br />
<br />
Do not forget replace mystatusbar with the name of your statusbar<br />
<br />
==Dynamic tagging using Eminent==<br />
<br />
TODO...<br />
[http://awesome.naquadah.org/wiki/index.php?title=Eminent]<br />
<br />
Note: Eminent is a bit old and outdated. We have a new library in the works, Shifty. It hasn't been included with the main source yet, but is very promising. I'd recommend waiting for that and then writing this section for it. [http://garoth.com/awesome/shifty.ogv Shifty Video (.ogv)]<br />
<br />
Note2: There is actually yet another implementation of this feature. I'm hoping it merges with Shifty, and I'm poking the developers in that direction.<br />
<br />
==Space Invaders== <br />
TODO<br />
[http://awesome.naquadah.org/wiki/index.php?title=Space_Invaders]<br />
<br />
==Naughty for popup notification==<br />
TODO<br />
[http://awesome.naquadah.org/wiki/index.php?title=Naughty]<br />
<br />
==Popup Menus==<br />
Todo....<br />
[http://awesome.naquadah.org/wiki/index.php?title=Awful.menu]<br />
<br />
==Widgets using wicked==<br />
Wicked is a lua library for awesome3 to provide more widgets.<br />
<br />
Make sure that you've installed wicked. See the Installation section above.<br />
<br />
Configuring wicked is easy, just add the following line to the top of your rc.lua and you're ready to go. <br />
require("wicked")<br />
Then add the following lines in the end of your rc.lua:<br />
-- Widgets using wicked<br />
memwidget = widget({<br />
type = 'textbox',<br />
name = 'memwidget',<br />
align = "right"<br />
})<br />
wicked.register(memwidget, wicked.widgets.mem,<br />
' <span color="white">Memory:</span> $1% ($2Mb/$3Mb) || ')<br />
--date<br />
datewidget = widget({<br />
type = 'textbox',<br />
name = 'datewidget',<br />
})<br />
wicked.register(datewidget, wicked.widgets.date,<br />
' <span color="white">Date:</span> %c')<br />
-- file system<br />
fswidget = widget({<br />
type = 'textbox',<br />
name = 'fswidget',<br />
align = "right"<br />
})<br />
wicked.register(fswidget, wicked.widgets.fs,<br />
' <span color="white">FS:</span> /root ${/ usep}% used, /home ${/home usep}% used || ', 30)<br />
-- cpu<br />
cpuwidget = widget({<br />
type = 'textbox',<br />
name = 'cpuwidget',<br />
align = "right"<br />
})<br />
wicked.register(cpuwidget, wicked.widgets.cpu,<br />
' <span color="white">CPU:</span> $1% || ')<br />
-- net<br />
netwidget = widget({<br />
type = 'textbox',<br />
name = 'netwidget',<br />
align = "right"<br />
})<br />
wicked.register(netwidget, wicked.widgets.net,<br />
' <span color="white">NET</span>: ${eth0 down}/${eth0 up} [ ${eth0 rx}/${eth0 tx} ]',<br />
nil, nil, 3)<br />
-- statebar in the bottom<br />
mystatebar = wibox( {position = "bottom", fg = beautiful.fg_normal, bg = beautiful.bg_normal} )<br />
mystatebar.widgets = {<br />
datewidget,<br />
fswidget,<br />
cpuwidget,<br />
memwidget,<br />
netwidget,<br />
}<br />
mystatebar.screen = 1<br />
and restart awesome to check the effection.<br />
<br />
More details see the [http://awesome.naquadah.org/wiki/index.php?title=Wicked Wicked].<br />
<br />
== Transparency ==<br />
Awesome has support for (2D) transparency through xcompmgr. Note that you'll probably want the git version of xcompmgr, which is [http://aur.archlinux.org/packages.php?ID=16554 available in AUR]. <br />
<br />
Add this to your ~/.xinitrc<br />
xcompmgr &<br />
See ''man xcompmgr'' or [[xcompmgr]] for more options.<br />
<br />
you can set this window transparency dynamically in the rc.lua <br />
add<br />
<br />
c.opacity = 1<br />
<br />
to the awful.hooks.focus.register hook (to restore Visibility)<br />
add<br />
<br />
c.opacity = 0.4<br />
<br />
to the awful.hooks.unfocus.register hook (to make the Window transparent. Adjust value as comfortable)<br />
<br />
As of Awesome 3.1, there is now built-in pseudo transparency for wiboxes. To enable, just add 2 more hexadecimals to the colors in your theme file (~/.config/awesome/themes/default usually), like shown here:<br />
<br />
bg_normal = #000000AA<br />
<br />
where "AA" is the transparency value.<br />
<br />
== Autorun programs ==<br />
Just add the following codes in the rc.lua, and replace the applications in the autorunApps section with anything you like. Example:<br />
-- Autorun programs<br />
autorun = true<br />
autorunApps = <br />
{ <br />
"swiftfox",<br />
"mutt",<br />
"consonance",<br />
"linux-fetion",<br />
"weechat-curses",<br />
}<br />
if autorun then<br />
for app = 1, #autorunApps do<br />
awful.util.spawn(autorunApps[app])<br />
end<br />
end<br />
<br />
= Troubleshooting =<br />
<br />
==Mod4 key==<br />
<br />
Alias the Win key. Somehow, my Mod4 key isn't mapped by default. If that's your case too, you can check the keycode of your Mod4 key with<br />
<br />
$ xev<br />
<br />
It should be 115 for the left one. Then add this to your ~/.xinitrc<br />
<br />
xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"<br />
exec awesome<br />
<br />
<br />
<br />
==Mod4 key vs. IBM ThinkPad users==<br />
<br />
IBM ThinkPads do not come equipped with a Window key (although Lenovo have changed this tradition on their ThinkPads). As of writing, the Alt key is not used in command combinations by the default rc.lua (refer to the Awesome wiki for a table of commands), which allows it be used as a replacement for the Super/Mod4/Win key. To do this, edit your rc.lua and replace:<br />
<br />
modkey = "Mod4"<br />
<br />
by:<br />
<br />
modkey = "Mod1"<br />
<br />
Note: Awesome does a have a few commands that make use of Mod4 plus a single letter. Changing Mod4 to Mod1/Alt could cause overlaps for some key combinations. The small amount of instances where this happens can be changed in the rc.lua file.<br />
<br />
<br />
==Cairo Memory Leak==<br />
If you experiencing [http://awesome.naquadah.org/bugs/index.php?do=details&task_id=396 memory leaks] then try [http://aur.archlinux.org/packages.php?ID=9566 cairo-git] in AUR. [http://bbs.archlinux.org/viewtopic.php?pid=462021 Forum Thread]<br />
<br />
Update: The recent Cairo 1.8.6 release is also fine to use it seems as the fix from git should be in there.<br />
<br />
= Additional Resources =<br />
* http://www.lua.org/pil/ - Programming in Lua (first edition)<br />
* http://awesome.naquadah.org/ - The official awesome website<br />
* http://awesome.naquadah.org/wiki/index.php/Main_Page - the awesome wiki<br />
* http://www.penguinsightings.org/desktop/awesome/ - A review</div>Duquesnc