https://wiki.archlinux.org/api.php?action=feedcontributions&user=IllRepute&feedformat=atomArchWiki - User contributions [en]2024-03-29T15:26:55ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Unified_Extensible_Firmware_Interface&diff=230707Unified Extensible Firmware Interface2012-10-22T20:24:07Z<p>IllRepute: /* Booting an OS using UEFI */</p>
<hr />
<div>[[Category:Boot process]]<br />
[[it:Unified Extensible Firmware Interface]]<br />
[[ru:Unified Extensible Firmware Interface]]<br />
[[zh-CN:Unified Extensible Firmware Interface]]<br />
{{Article summary start}}<br />
{{Article summary text|An overview of the Unified Extensible Firmware Interface.}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Boot process overview}}}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|GUID Partition Table}}<br />
{{Article summary wiki|Master Boot Record}}<br />
{{Article summary wiki|Arch Boot Process}}<br />
{{Article summary end}}<br />
<br />
'''Unified Extensible Firmware Interface''' (or UEFI for short) is a new type of firmware that was initially designed by Intel (known as EFI then) mainly for its Itanium based systems. It introduces new ways of booting an OS that is distinct from the commonly used "MBR boot code" method followed for BIOS systems. It started as Intel's EFI in versions 1.x and then a group of companies called the UEFI Forum took over its development from which it was called Unified EFI starting with version 2.0 . As of 23 May 2012, UEFI Specification 2.3.1 is the most recent version.<br />
<br />
{{Note|Unless specified as EFI 1.x , EFI and UEFI terms are used interchangeably to denote UEFI 2.x firmware. Also unless stated explicitely, these instructions are general and not Mac specific. Some of them may not work or may be different in Macs. Apple's EFI implementation is neither a EFI 1.x version nor UEFI 2.x version but mixes up both. This kind of firmware does not fall under any one UEFI Specification version and therefore it is not a standard UEFI firmware.}}<br />
<br />
== Booting an OS using BIOS ==<br />
<br />
A BIOS or Basic Input-Output System is the very first program that is executed once the system is switched on. After all the hardware has been initialized and the POST operation has completed, the BIOS executes the first boot code in the first device in the device booting list. <br />
<br />
If the list starts with a CD/DVD drive, then the El-Torito entry in the CD/DVD is executed. This is how bootable CD/DVD works. If the list starts with a HDD, then BIOS executes the very first 440 bytes MBR boot code. The boot code then chainloads or bootstraps a much larger and complex bootloader which then loads the OS.<br />
<br />
Basically, the BIOS does not know how to read a partition table or filesystem. All it does is initialize the hardware, then load and run the 440-byte boot code.<br />
<br />
=== Multiboot on BIOS ===<br />
<br />
Since very little can be achieved by a program that fits into the 440-byte boot code area, multi-booting using BIOS requires a multi-boot capable bootloader (multi-boot refers to booting multiple operating systems, not to booting a kernel in the Multiboot format specified by the GRUB developers). So usually a common bootloader like [[GRUB]] or [[Syslinux]] or [[LILO]] would be loaded by the BIOS, and it would load an operating system by either chain-loading or directly loading the kernel.<br />
<br />
== Booting an OS using UEFI ==<br />
<br />
UEFI firmware does not support booting through the above mentioned method which is the only way supported by BIOS. UEFI has support for reading both the partition table as well as understanding filesystems. <br />
<br />
The commonly used UEFI firmwares support both MBR and GPT partition table. EFI in Apple-Intel Macs are known to support Apple Partition Map also apart from MBR and GPT. Most of the UEFI firmwares have support for accessing FAT12 (floppy disks) , FAT16 and FAT32 filesystems in HDD and ISO9660 (and UDF) in CD/DVDs. EFI in Apple-Intel Macs can access HFS/HFS+ filesystems also apart from the mentioned ones.<br />
<br />
UEFI does not launch any boot code in the MBR whether it exists or not. Instead it uses a special partition in the partition table called "EFI SYSTEM PARTITION" in which files required to be launched by the firmware are stored. Each vendor can store its files under <EFI SYSTEM PARTITION>/EFI/<VENDOR NAME>/ folder and can use the firmware or its shell (UEFI shell) to launch the boot program. An EFI System Partition is usually formatted as FAT32.<br />
<br />
Under UEFI, every program whether they are OS loaders or some utilities (like memory testing apps) or recovery tools outside the OS, should be a UEFI Application corresponding to the EFI firmware architecture. Most of the UEFI firmware in the market, including recent Apple Macs use x86_64 EFI firmware. Only some older macs use i386 EFI firmware while no non-Apple UEFI system is known to use i386 EFI firmware.<br />
<br />
A x86_64 EFI firmware does not include support for launching 32-bit EFI apps unlike the 64-bit Linux and Windows which include such support. Therefore the bootloader must be compiled for that architecture correctly.<br />
<br />
=== Multibooting on UEFI ===<br />
<br />
Since each OS or vendor can maintain its own files within the EFI SYSTEM PARTITION without affecting the other, multi-booting using UEFI is just a matter of launching a different UEFI application corresponding to the particular OS's bootloader. This removes the need for relying on chainloading mechanisms of one bootloader to load another to switch OSes.<br />
<br />
==== Linux Windows x86_64 UEFI-GPT Multiboot ====<br />
<br />
Windows Vista (SP1+) and 7 pr 8 x86_64 versions support booting natively using UEFI firmware. But for this they need [[GPT]] partitioning of the disk used for UEFI booting. Windows x86_64 versions support either UEFI-GPT booting or BIOS-MBR booting. Windows 32-bit versions support only BIOS-MBR booting. Follow the instructions provided in the forum link given in the references sections as to how to do this. See http://support.microsoft.com/default.aspx?scid=kb;EN-US;2581408 for more info.<br />
<br />
This limitation does not exist in Linux Kernel but rather depends on the bootloader used. For the sake of Windows UEFI booting, the Linux bootloader used should also be installed in UEFI-GPT mode if booting from the same disk.<br />
<br />
== Boot Process under UEFI ==<br />
<br />
# System switched on - Power On Self Test, or POST process.<br />
# UEFI firmware is loaded.<br />
# Firmware reads its Boot Manager to determine which UEFI application to be launched and from where (ie. from which disk and partition).<br />
# Firmware launches the UEFI application from the FAT32 formatted UEFISYS partition as defined in the boot entry in the firmware's boot manager.<br />
# UEFI application may launch another application (in case of UEFI Shell or a boot manager like rEFInd) or the kernel and initramfs (in case of a bootloader like GRUB) depending on how the UEFI application was configured.<br />
<br />
== Detecting UEFI Firmware Arch ==<br />
<br />
If you have a non-mac UEFI system, then you have a x86_64 (aka 64-bit) UEFI 2.x firmware.<br />
<br />
Some of the known x86_64 UEFI 2.x firmwares are Phoenix SecureCore Tiano, AMI Aptio, Insyde H2O.<br />
<br />
Some of the known systems using these firmwares are Asus EZ Mode BIOS (in Sandy Bridge P67 and H67 motherboards), MSI ClickBIOS, HP EliteBooks, Sony Vaio Z series, many Intel Server and Desktop motherboards<br />
<br />
<br />
Pre-2008 Macs mostly have i386-efi firmware while >=2008 Macs have mostly x86_64-efi. All macs capable of running Mac OS X Snow Leopard 64-bit Kernel have x86_64 EFI 1.x firmware.<br />
<br />
To find out the arch of the efi firmware in a Mac, boot into Mac OS X and type the following command<br />
<br />
<pre><br />
ioreg -l -p IODeviceTree | grep firmware-abi<br />
</pre><br />
<br />
If the command returns EFI32 then it is i386 EFI 1.x firmware. If it returns EFI64 then it is x86_64 EFI 1.x firmware. Macs do not have UEFI 2.x firmware as Apple's EFI implementation is not fully compliant with UEFI Specification.<br />
<br />
== UEFI Support in Linux Kernel ==<br />
<br />
=== Linux Kernel config options for UEFI ===<br />
<br />
The required Linux Kernel configuration options for UEFI systems are :<br />
<br />
CONFIG_EFI=y<br />
CONFIG_EFI_STUB=y<br />
CONFIG_RELOCATABLE=y<br />
CONFIG_FB_EFI=y<br />
CONFIG_FRAMEBUFFER_CONSOLE=y<br />
<br />
UEFI Runtime Variables/Services Support - 'efivars' kernel module . This option is important as this is required to manipulate UEFI Runtime Variables using tools like '''efibootmgr'''.<br />
<br />
CONFIG_EFI_VARS=m<br />
<br />
{{Note| This option is compiled as module in Arch core/testing kernel.}}<br />
<br />
{{Note|For Linux to access UEFI Runtime Services, the UEFI Firmware processor architecture and the Linux kernel processor architecture must match. This is independent of the bootloader used.}}<br />
<br />
{{Note|If the UEFI Firmware arch and Linux Kernel arch are different, then the "'''noefi'''" kernel parameter must be used to avoid the kernel panic and boot successfully. The "noefi" option instructs the kernel not to access the UEFI Runtime Services.}}<br />
<br />
GUID Partition Table [[GPT]] config option - mandatory for UEFI support<br />
<br />
CONFIG_EFI_PARTITION=y<br />
<br />
{{Note|All of the above options are required to boot Linux via UEFI, and are enabled in Archlinux kernels in official repos.}}<br />
<br />
Retrieved from http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/x86/x86_64/uefi.txt;hb=HEAD .<br />
<br />
== UEFI Variables Support ==<br />
<br />
UEFI defines variables through which an operating system can interact with the firmware. UEFI Boot Variables are used by the boot-loader and used by the OS only for early system start-up. UEFI Runtime Variables allow an OS to manage certain settings of the firmware like the UEFI Boot Manager or managing the keys for UEFI Secure Boot Protocol etc.<br />
<br />
{{Note|The below steps will not work if the system has been booted in BIOS mode and will not work if the UEFI processor architecture does not match the kernel one, i.e. x86_64 UEFI + x86 32-bit Kernel and vice-versa config will not work. This is true only for efivars kernel module and efibootmgr step. The other steps (ie. upto setting up <UEFISYS>/EFI/arch/refind/{refindx64.efi,refind.conf} ) can be done even in BIOS/Legacy boot mode.}}<br />
<br />
Access to UEFI Runtime services is provided by "efivars" kernel module which is enabled through the {{ic|<nowiki>CONFIG_EFI_VAR=m</nowiki>}} kernel config option. This module once loaded exposes the variables under the directory {{ic|/sys/firmware/efi/vars}}. One way to check whether the system has booted in UEFI boot mode is to load the "efivars" kernel module and check for the existence of {{ic|/sys/firmware/efi/vars}} directory with contents similar to :<br />
<br />
Sample output (x86_64-UEFI 2.3.1 in x86_64 Kernel):<br />
<br />
# ls -1 /sys/firmware/efi/vars/<br />
Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
BootOptionSupport-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
ErrOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
MTC-eb704011-1402-11d3-8e77-00a0c969723b/<br />
MemoryTypeInformation-4c19049f-4137-4dd3-9c10-8b97a83ffdfa/<br />
PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c/<br />
RTC-378d7b65-8da9-4773-b6e4-a47826a833e1/<br />
del_var<br />
new_var<br />
<br />
The UEFI Runtime Variables will not be exposed to the OS if you have used "noefi" kernel parameter in the boot-loader menu. This parameter instructs the kernel to completely ignore UEFI Runtime Services.<br />
<br />
=== Userspace Tools ===<br />
<br />
There are few tools that can access/modify the UEFI variables, namely<br />
<br />
# efibootmgr - Used to create/modify boot entries in the UEFI Boot Manager - {{Pkg|efibootmgr}} or {{AUR|efibootmgr-git}}<br />
# uefivars - simply dumps the variables - {{AUR|uefivars-git}} - uses efibootmgr library<br />
# Ubuntu's Firmware Test Suite - fwts - {{AUR|fwts-git}} - uefidump command - {{ic|fwts uefidump}} <br />
<br />
=== Non-Mac UEFI systems ===<br />
<br />
==== efibootmgr ====<br />
<br />
{{Warning|Using {{ic|efibootmgr}} in Apple Macs will brick the firmware and may need reflash of the motherboard ROM. There have been bug reports regarding this in Ubuntu/Launchpad bug tracker. Use bless command alone in case of Macs. Experimental "bless" utility for Linux by Fedora developers - {{AUR|mactel-boot}}.}}<br />
<br />
{{Note|{{ic|efibootmgr}} command will work only if you have booted the system in UEFI mode itself, since it '''requires access to UEFI Runtime Variables''' which are '''available only in UEFI boot mode''' (with "noefi" kernel parameter NOT being used). Otherwise the message {{ic|Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables}} is shown.}}<br />
<br />
Initially the user may be required to manually launch the boot-loader from the firmware itself (using maybe the UEFI Shell) if the UEFI boot-loader was installed when the system is booted in BIOS mode. Then {{ic|efibootmgr}} should be run to make the UEFI boot-loader entry as the default entry in the UEFI Boot Manager.<br />
<br />
To use efibootmgr, first load the 'efivars' kernel module:<br />
<br />
# modprobe efivars<br />
<br />
If you get '''no such device found''' error for this command, that means you have not booted in UEFI mode or due to some reason the kernel is unable to access UEFI Runtime Variables (noefi?).<br />
<br />
Verify whether there are files in ''/sys/firmware/efi/vars/'' directory. This directory and its contents are created by "efivars" kernel module and it will exist only if you have booted in UEFI mode, without the "noefi" kernel parameter.<br />
<br />
If ''/sys/firmware/efi/vars/'' directory is empty or does not exist, then {{ic|efibootmgr}} command will not work. If you are unable to make the ISO/CD/DVD/USB boot in UEFI mode try https://gitorious.org/tianocore_uefi_duet_builds/pages/Linux_Windows_BIOS_UEFI_boot_USB.<br />
<br />
{{Note| The below commands use refind-efi-x86_64 boot-loader as example.}}<br />
<br />
Assume the boot-loader file to be launched is {{ic|/boot/efi/EFI/arch/refind/refindx64.efi}}. {{ic|/boot/efi/EFI/arch/refind/refindx64.efi}} can be split up as {{ic|/boot/efi}} and {{ic|/EFI/arch/refind/refindx64.efi}}, wherein {{ic|/boot/efi}} is the mountpoint of the UEFI System Partition, which is assumed to be /dev/sdXY (here X and Y are just placeholders for the actual values - eg:- in /dev/sda1 , X=a Y=1).<br />
<br />
To determine the actual device path for the UEFI System Partition, try :<br />
<br />
# awk '/\/boot\/efi/ { print $1 }' /proc/self/mounts<br />
/dev/sdXY<br />
<br />
Then create the boot entry using efibootmgr as follows :<br />
<br />
# efibootmgr -c -g -d /dev/sdX -p Y -w -L "Arch Linux (rEFInd)" -l \\EFI\\arch\\refind\\refindx64.efi<br />
<br />
In the above command {{ic|/boot/efi/EFI/arch/refind/refindx64.efi}} translates to {{ic|/boot/efi}} and {{ic|/EFI/arch/refind/refindx64.efi}} which in turn translate to drive {{ic|/dev/sdX}} -> partition Y -> file {{ic|/EFI/arch/refind/refindx64.efi}}.<br />
<br />
UEFI uses backward slash as path separator (similar to Windows paths).<br />
<br />
The 'label' is the name of the menu entry shown in the UEFI boot menu. This name is user's choice and does not affect the booting of the system. More info can be obtained from [http://linux.dell.com/cgi-bin/gitweb/gitweb.cgi?p=efibootmgr.git;a=blob_plain;f=README;hb=HEAD efibootmgr GIT README] .<br />
<br />
FAT32 filesystem is case-insensitive since it does not use UTF-8 encoding by default. In that case the firmware uses capital 'EFI' instead of small 'efi', therefore using {{ic|\EFI\arch\refind\refindx64.efi}} or {{ic|\efi\arch\refind\refindx64.efi}} does not matter (this will change if the filesystem encoding is UTF-8).<br />
<br />
== Linux Bootloaders for UEFI ==<br />
<br />
See [[UEFI Bootloaders]].<br />
<br />
== Create an UEFI System Partition in Linux ==<br />
<br />
{{Note|The UEFISYS partition can be of any size supported by FAT32 filesystem. According to Microsoft Documentation, the minimum partition/volume size for FAT32 is 512 MiB. Therefore it is recommended for UEFISYS partition to be atleast 512 MiB. Higher partition sizes are fine, especially if you use multiple UEFI bootloaders, or multiple OSes booting via UEFI, so that there is enough space to hold all the related files. If you are using Linux EFISTUB booting, then you need to make sure there is adequate space available for keeping the Kernel and Initramfs files in the UEFISYS partition.}}<br />
<br />
=== For GPT partitioned disks ===<br />
Two choices:<br />
* Using GNU Parted/GParted: Create a FAT32 partition. Set "boot" flag on for that partition.<br />
* Using GPT fdisk (aka gdisk): Create a partition with gdisk type code "EF00". Then format that partition as FAT32 using {{ic|mkfs.vfat -F32 /dev/<THAT_PARTITION>}}<br />
<br />
{{Note|Setting "boot" flag in parted in a MBR partition marks that partition as active, while the same "boot" flag in a GPT partition marks that partition as "UEFI System Partition".}}<br />
<br />
{{Warning|Do not use util-linux fdisk, cfdisk or sfdisk to change the type codes in a GPT disk. Similarly do not use gptfdisk gdisk, cgdisk or sgdisk on a MBR disk, it will be automatically converted to GPT (no data loss will occur, but the system will fail to boot).}}<br />
<br />
=== For MBR partitioned disks ===<br />
Two choices:<br />
* Using GNU Parted/GParted: Create FAT32 partition. Change the type code of that partition to 0xEF using fdisk, cfdisk or sfdisk.<br />
* Using fdisk: Create a partition with partition type 0xEF and format it as FAT32 using {{ic|mkfs.vfat -F32 /dev/<THAT_PARTITION>}}<br />
<br />
{{Note|It is recommended to use always GPT for UEFI boot as some UEFI firmwares do not allow UEFI-MBR boot.}}<br />
<br />
== UEFI Shell ==<br />
<br />
The UEFI Shell is a shell/terminal for the firmware which allows launching uefi applications which include uefi bootloaders. Apart from that, the shell can also be used to obtain various other information about the system or the firmware like memory map (memmap), modifying boot manager variables (bcfg), running partitioning programs (diskpart), loading uefi drivers, editing text files (edit), hexedit etc. <br />
<br />
=== UEFI Shell download links === <br />
<br />
You can download a BSD licensed UEFI Shell from Intel's Tianocore UDK/EDK2 Sourceforge.net project.<br />
<br />
* [https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellBinPkg/UefiShell/X64/Shell.efi x86_64 UEFI Shell 2.0 (Beta)]<br />
* [https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi x86_64 UEFI Shell 1.0 (Old)]<br />
* [https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellBinPkg/UefiShell/Ia32/Shell.efi i386 UEFI Shell 2.0 (Beta)]<br />
* [https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/FullShell/Ia32/Shell_Full.efi i386 UEFI Shell 1.0 (Old)]<br />
<br />
Shell 2.0 works only in UEFI 2.3+ systems and is recommended over Shell 1.0 in those systems. Shell 1.0 should work in all UEFI systems irrespective of the spec. version the firmware follows. More info at [http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=ShellPkg ShellPkg] and [http://sourceforge.net/mailarchive/message.php?msg_id=28690732 this mail]<br />
<br />
=== Launching UEFI Shell ===<br />
<br />
Few Asus and other AMI Aptio x86_64 UEFI firmware based motherboards (from Sandy Bridge onwards) provide an option called {{ic|"Launch EFI Shell from filesystem device"}} . For those motherboards, download the x86_64 UEFI Shell and copy it to your UEFI SYSTEM PARTITION as {{ic|<UEFI_SYSTEM_PARTITION>/shellx64.efi}} (mostly {{ic|/boot/efi/shellx64.efi}}) .<br />
<br />
Systems with Phoenix SecureCore Tiano UEFI firmware are known to have embedded UEFI Shell which can be launched using either F6, F11 or F12 key.<br />
<br />
{{Note|If you are unable to launch UEFI Shell from the firmware directly using any of the above mentioned methods, create a FAT32 USB pen drive with Shell.efi copied as (USB)/efi/boot/bootx64.efi . This USB should come up in the firmware boot menu. Launching this option will launch the UEFI Shell for you.}}<br />
<br />
=== Important UEFI Shell Commands === <br />
<br />
More info at http://software.intel.com/en-us/articles/efi-shells-and-scripting/<br />
<br />
==== bcfg ====<br />
<br />
BCFG command is used to modify the UEFI NVRAM entries, which allow the user to change the boot entries or driver options. This command is described in detail in page 83 (Section 5.3) of "UEFI Shell Specification 2.0" pdf document.<br />
<br />
{{Note| Users are recommended to try {{ic|bcfg}} only if {{ic|efibootmgr}} fails to create working boot entries in their system.}}<br />
<br />
{{Note| UEFI Shell 1.0 does not support {{ic|bcfg}} command.}}<br />
<br />
To dump a list of current boot entries -<br />
<br />
Shell> bcfg boot dump -v<br />
<br />
To add a boot menu entry for rEFInd (for example) as 4th (numbering starts from zero) option in the boot menu<br />
<br />
Shell> bcfg boot add 3 fs0:\EFI\arch\refind\refindx64.efi "Arch Linux (rEFInd)"<br />
<br />
where fs0: is the mapping corresponding to the UEFI System Partition and \EFI\arch\refind\refindx64.efi is the file to be launched.<br />
<br />
To remove the 4th boot option<br />
<br />
Shell> bcfg boot rm 3<br />
<br />
To move the boot option #3 to #0 (i.e. 1st or the default entry in the UEFI Boot menu)<br />
<br />
Shell> bcfg boot mv 3 0<br />
<br />
For bcfg help text<br />
<br />
Shell> help bcfg -v -b<br />
<br />
or<br />
<br />
Shell> bcfg -? -v -b<br />
<br />
==== edit ====<br />
<br />
EDIT command provides a basic text editor with an interface similar to nano text editor, but slightly less functional. It handles UTF-8 encoding and takes care or LF vs CRLF line endings.<br />
<br />
To edit, for example rEFInd's refind.conf in the UEFI System Partition (fs0: in the firmware)<br />
<br />
Shell> fs0:<br />
FS0:\> cd \EFI\arch\refind<br />
FS0:\EFI\arch\refind\> edit refind.conf<br />
<br />
== Hardware Compatibility ==<br />
<br />
Main page [[HCL/Firmwares/UEFI]]<br />
<br />
<br />
== Create UEFI bootable USB from ISO ==<br />
<br />
{{Note|dd'ing the ISO (isohybrid method) to the USB drive will not work for UEFI boot.}}<br />
<br />
{{Note|It does not matter whether the USB is partitioned as MBR or GPT, as long as the filesystem is FAT32 or FAT16.}}<br />
<br />
=== Archiso ===<br />
<br />
1. Mount FAT32 (or FAT16) USB Partition to {{ic|/tmp/archusb}}:<br />
<br />
$ mkdir -p /tmp/archusb/<br />
# mount -o rw,users -t vfat <USB_Device_Partition> /tmp/archusb<br />
<br />
2. Extract archiso image contents to USB:<br />
<br />
$ cd /tmp/archusb/<br />
$ bsdtar xf <Full path to Archiso image><br />
$ rm -f /tmp/archusb/[BOOT] # If the directory or file exist<br />
$ sync<br />
<br />
3. Find out the filesystem label to be used for the USB by reading "{{ic|1=archisolabel=}}" part in {{ic|/tmp/archusb/loader/entries/archiso-x86_64.conf}}. For example if {{ic|/tmp/archusb/loader/entries/archiso-x86_64.conf}} has {{ic|1=archisolabel=ARCH_201210}} then the filesystem label to be used is {{ic|ARCH_201210}} . <br />
<br />
4. Unmount USB device and change its FS Label:<br />
<br />
# umount <USB_Device_Partition><br />
# dosfslabel <USB_Device_Partition> <archisolabel><br />
$ sync<br />
<br />
Eg:<br />
<br />
# umount /dev/sdc1<br />
# dosfslabel /dev/sdc1 ARCH_201210<br />
$ sync<br />
<br />
=== [[Archboot]] ===<br />
<br />
1. Mount FAT32 (or FAT16) USB Partition to {{ic|/tmp/archusb}}:<br />
<br />
$ mkdir -p /tmp/archusb/<br />
# mount -o rw,users -t vfat <USB_Device_Partition> /tmp/archusb<br />
<br />
2. Extract archboot iso image contents to USB:<br />
<br />
$ cd /tmp/archusb/<br />
$ bsdtar xf <Full path to Archboot ISO><br />
$ rm -f /tmp/archusb/[BOOT] # If the directory or file exist<br />
$ sync<br />
<br />
3. Unmount the USB device:<br />
<br />
# umount <USB_Device_Partition><br />
<br />
== Remove UEFI boot support from ISO ==<br />
<br />
Most of the 32-bit EFI Macs and some 64-bit EFI Macs refuse to boot from a UEFI(X64)+BIOS bootable CD/DVD. In these cases the iso should be rebuilt without UEFI boot support, retaining only BIOS boot.<br />
<br />
=== Archiso ===<br />
<br />
1. Obtain the ISO label from the output of {{ic|file <path_to_iso>}}. Let it be {{ic|ARCH_201210}} for example.<br />
<br />
2. Create a directory {{ic|/tmp/archiso}} and extract the archiso file contents to it.<br />
<br />
3. Run {{ic|xorriso}} (part of {{Pkg|libisoburn}} package) as shown below:<br />
<br />
$ xorriso -as mkisofs -iso-level 3 \<br />
-full-iso9660-filenames \<br />
-volid "ARCH_201210" \<br />
-appid "Arch Linux CD" \<br />
-publisher "Arch Linux <https://www.archlinux.org>" \<br />
-preparer "prepared by user" \<br />
-eltorito-boot isolinux/isolinux.bin \<br />
-eltorito-catalog isolinux/boot.cat \<br />
-no-emul-boot -boot-load-size 4 -boot-info-table \<br />
-isohybrid-mbr "/tmp/archiso/isolinux/isohdpfx.bin" \<br />
-output "/tmp/archiso.iso" "/tmp/archiso/"<br />
<br />
4. Burn {{ic|/tmp/archiso.iso}} to a CD and boot into your Mac using that CD.<br />
<br />
=== [[Archboot]] ===<br />
<br />
{{Note|Archboot 2012.10 and above isos do not support UEFI-CD booting (only UEFI-USB booting is supported) so the below steps are not required for those isos.}}<br />
<br />
1. Create a directory {{ic|/tmp/archboot}} and extract the archboot iso file contents to it.<br />
<br />
2. Run {{ic|xorriso}} (part of {{Pkg|libisoburn}} package) as shown below:<br />
<br />
$ xorriso -as mkisofs -iso-level 3 -rock -joliet \<br />
-max-iso9660-filenames -omit-period \<br />
-omit-version-number -allow-leading-dots \<br />
-relaxed-filenames -allow-lowercase -allow-multidot \<br />
-volid "ARCHBOOT" -preparer "prepared by user" \<br />
-eltorito-boot boot/syslinux/isolinux.bin \<br />
-eltorito-catalog boot/syslinux/boot.cat \<br />
-no-emul-boot -boot-load-size 4 -boot-info-table \<br />
-isohybrid-mbr /tmp/archboot/boot/syslinux/isohdpfx.bin \<br />
-output "/tmp/archboot.iso" "/tmp/archboot/"<br />
<br />
3. Burn {{ic|/tmp/archboot.iso}} to a CD and boot into your Mac using that CD.<br />
<br />
== See also ==<br />
<br />
* Wikipedia's page on [http://en.wikipedia.org/wiki/UEFI UEFI]<br />
* Wikipedia's page on [http://en.wikipedia.org/wiki/EFI_System_partition UEFI SYSTEM Partition]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/x86/x86_64/uefi.txt;hb=HEAD Linux Kernel UEFI Documentation]<br />
* [http://www.uefi.org/home/ UEFI Forum] - contains the official [http://www.uefi.org/specs/ UEFI Specifications] - GUID Partition Table is part of UEFI Specification<br />
* [http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Welcome_to_TianoCore Intel's Tianocore Project] for Open-Source UEFI firmware which includes DuetPkg for direct BIOS based booting and OvmfPkg used in QEMU and Oracle VirtualBox<br />
* [http://www.intel.com/technology/efi/ Intel's page on EFI]<br />
* [http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/efi-boot-process.html FGA: The EFI boot process]<br />
* [http://www.microsoft.com/whdc/device/storage/GPT_FAQ.mspx Microsoft's Windows and GPT FAQ] - Contains info on Windows UEFI booting also<br />
* [https://gitorious.org/tianocore_uefi_duet_builds/pages/Windows_x64_BIOS_to_UEFI Convert Windows Vista SP1+ or 7 x86_64 boot from BIOS-MBR mode to UEFI-GPT mode without Reinstall]<br />
* [https://gitorious.org/tianocore_uefi_duet_builds/pages/Linux_Windows_BIOS_UEFI_boot_USB Create a Linux BIOS+UEFI and Windows x64 BIOS+UEFI bootable USB drive]<br />
* [http://rodsbooks.com/bios2uefi/ Rod Smith - A BIOS to UEFI Transformation]<br />
* [https://lkml.org/lkml/2011/6/8/322 UEFI Boot problems on some newer machines (LKML)]<br />
* [http://software.intel.com/en-us/articles/efi-shells-and-scripting/ EFI Shells and Scripting - Intel Documentation]<br />
* [http://software.intel.com/en-us/articles/uefi-shell/ UEFI Shell - Intel Documentation]<br />
* [http://www.hpuxtips.es/?q=node/293 UEFI Shell - bcfg command info]<br />
* [http://hackthejoggler.freeforums.org/download/file.php?id=28 Some useful 32-bit UEFI Shell utilities]<br />
* [http://linuxplumbers.ubicast.tv/videos/plumbing-uefi-into-linux/ LPC 2012 Plumbing UEFI into Linux]<br />
* [http://linuxplumbers.ubicast.tv/videos/uefi-tutorial-part-1/ LPC 2012 UEFI Tutorial : part 1]<br />
* [http://linuxplumbers.ubicast.tv/videos/uefi-tutorial-part-2/ LPC 2012 UEFI Tutorial : part 2]</div>IllReputehttps://wiki.archlinux.org/index.php?title=Beginners%27_guide/Preparation&diff=229093Beginners' guide/Preparation2012-10-16T19:33:38Z<p>IllRepute: /* Obtain the latest installation media */</p>
<hr />
<div><noinclude><br />
[[Category:Getting and installing Arch]]<br />
[[Category:About Arch]]<br />
[[da:Beginners' Guide/Preparation]]<br />
[[es:Beginners' Guide/Preparation]]<br />
[[hr:Beginners' Guide/Preparation]]<br />
[[hu:Beginners' Guide/Preparation]]<br />
[[id:Beginners' Guide/Preparation]]<br />
[[it:Beginners' Guide/Preparation]]<br />
[[ko:Beginners' Guide/Preparation]]<br />
[[pl:Beginners' Guide/Preparation]]<br />
[[pt:Beginners' Guide/Preparation]]<br />
[[ro:Ghidul începătorilor/Preparare]]<br />
[[ru:Beginners' Guide/Preparation]]<br />
[[sr:Beginners' Guide/Preparation]]<br />
[[zh-CN:Beginners' Guide/Preparation]]<br />
{{Tip|This is part of a multi-page article for The Beginners' Guide. '''[[Beginners' Guide|Click here]]''' if you would rather read the guide in its entirety.}}<br />
</noinclude><br />
== Preparation ==<br />
<br />
{{Note|If you wish to install from an existing GNU/Linux distribution, please see [[Install from Existing Linux|this article]]. This can be useful particularly if you plan to install Arch via [[VNC]] or [[SSH]] remotely.}}<br />
<br />
=== Obtain the latest installation media ===<br />
<br />
You can obtain Arch's official installation media [http://archlinux.org/download/ here]. At the time of writing the latest version is 2012.10.06 and this guide pertains to the current release. Pre-release images are also available and can be downloaded [http://releng.archlinux.org/isos/ here] ''(these are not official releases and so are not officially supported)''.<br />
<br />
==== Write the ISO image on a CD/DVD or USB stick ====<br />
<br />
* Burn the ISO image on a CD or DVD with your preferred software.<br />
<br />
: {{Note|The quality of optical drives and the discs themselves varies greatly. Generally, using a slow burn speed is recommended for reliable burns. Some users recommend speeds '''''as low as 4x or 2x.''''' If you are experiencing unexpected behaviour from the disc, try burning at the lowest speed supported by your burner.}}<br />
<br />
* Alternatively, you can write the ISO image on a USB stick. For detailed instructions, see [[USB Installation Media]].<br />
<br />
==== Installing over the network ====<br />
<br />
Instead of writing the boot media to a disc or USB stick, you may alternatively boot the .iso image over the network. This works well when you already have a server set up. Please see [[Install Arch from network (via PXE)|this article]] for more information, and then continue to [[#Boot_Arch_Linux_Installation_Media|Boot Arch Linux Installation Media]].<br />
<br />
==== Installing on a virtual machine ====<br />
<br />
Installing on a [[Wikipedia:Virtual_machine|virtual machine]] is a good way to become familiar with Arch Linux and its installation procedure without leaving your current operating system and repartitioning the storage drive. It will also let you keep this Beginners' Guide open in your browser throughout the installation. Some users may find it advantageous to have an independent Arch Linux system on a virtual drive, for testing purposes.<br />
<br />
Examples of virtualization software are [[VirtualBox]], [[VMware]], [[QEMU]], [[Xen]], [[Varch]], [[Parallels]].<br />
<br />
The exact procedure for preparing a virtual machine depends on the software, but will generally follow these steps:<br />
<br />
# Create the virtual disk image that will host the operating system.<br />
# Properly configure the virtual machine parameters.<br />
# Boot the downloaded ISO image with a virtual CD drive.<br />
# Continue with [[#Boot_Arch_Linux_Installation_Media|Boot Arch Linux Installation Media]].<br />
<br />
The following articles may be helpful:<br />
<br />
* [[Arch Linux VirtualBox Guest]]<br />
* [[Installing Arch Linux from VirtualBox]]<br />
* [[VirtualBox Arch Linux Guest On Physical Drive]]<br />
* [[Installing Arch Linux in VMware]]<br />
* [[Moving an existing install into (or out of) a virtual machine]]<br />
<br />
=== Boot Arch Linux Installation Media ===<br />
<br />
First, you may have to change the boot order in your computer's BIOS. To do this, you have to press a key (usually {{Keypress|Delete}}, {{Keypress|F1}}, {{Keypress|F2}}, {{Keypress|F11}} or {{Keypress|F12}}) during the POST (Power On Self-Test) phase. Then, select "Boot Arch Linux" from the menu and press {{Keypress|Enter}} in order to begin with the installation.<br />
<br />
{{Note|The memory requirement for a basic install is 64 MB of RAM.}}<br />
<br />
{{Note|Users seeking to perform the Arch Linux installation remotely via an [[SSH]] connection are encouraged to make a few tweaks at this point to enable SSH connections directly to the live CD environment. If interested, see the [[Install from SSH]] article.}}<br />
<br />
===== Test if you are booted into UEFI mode =====<br />
<br />
In case you have a [[UEFI]] motherboard, the CD/USB will launch UEFI Shell and display a message that {{ic|startup.nsh}} script will be launched. Allow the shell to launch it, and {{ic|exit}} the shell. Select "UEFI CD: Arch Linux" (or similar) from a list. Then, to check whether you have booted into UEFI mode, load the {{ic|efivars}} kernel module (before chrooting) and then check whether there are files in {{ic|/sys/firmware/efi/vars/}}:<br />
<br />
# modprobe efivars # before chrooting<br />
# ls -1 /sys/firmware/efi/vars/<br />
<br />
{{Note|The kernel module {{ic|efivars}} detects and populates the UEFI Runtime Variables at {{ic|/sys/firmware/efi/vars}}. This module is '''not''' loaded automatically during the boot process, and until this module is loaded, and the kernel booted in UEFI mode, '''without''' {{ic|noefi}} parameter, no files will exist in {{ic|/sys/firmware/efi/vars}}. These variables are later modified by {{ic|efibootmgr}} to add bootloader entry to UEFI boot menu. In BIOS mode, modprobe will not give any error about efivars module. The correct way to detect UEFI boot is to check for files in {{ic|/sys/firmware/efi/vars}} .}}<br />
<br />
===== Troubleshooting boot problems =====<br />
<br />
* If you're using an Intel video chipset and the screen goes blank during the boot process, the problem is likely an issue with Kernel Mode Setting ([[KMS]]). A possible workaround may be achieved by rebooting and pressing {{Keypress|Tab}} over the entry that you're trying to boot (i686 or x86_64). At the end of the string type {{ic|nomodeset}} and press {{Keypress|Enter}}. Alternatively, try {{ic|1=video=SVIDEO-1:d}} which, if it works, will not disable kernel mode setting. See the [[Intel]] article for more information.<br />
<br />
* If the screen does ''not'' go blank and the boot process gets stuck while trying to load the kernel, press {{Keypress|Tab}} while hovering over the menu entry, type {{ic|1=acpi=off}} at the end of the string and press {{Keypress|Enter}}.<noinclude><br />
{{Beginners' Guide navigation}}</noinclude></div>IllReputehttps://wiki.archlinux.org/index.php?title=Frequently_asked_questions&diff=229084Frequently asked questions2012-10-16T18:08:41Z<p>IllRepute: /* Q) Why is Arch using all my RAM? */</p>
<hr />
<div>[[Category:About Arch]]<br />
[[Category:FAQs]]<br />
[[bg:FAQ]]<br />
[[cs:FAQ]]<br />
[[da:FAQ]]<br />
[[de:FAQ]]<br />
[[es:FAQ]]<br />
[[fa:پرسش و پاسخ]]<br />
[[fr:FAQ]]<br />
[[hr:FAQ]]<br />
[[id:FAQ]]<br />
[[it:FAQ]]<br />
[[ja:FAQ]]<br />
[[ko:FAQ]]<br />
[[lt:FAQ]]<br />
[[nl:FAQ]]<br />
[[pt:FAQ]]<br />
[[ro:Întrebări frecvente]]<br />
[[ru:FAQ]]<br />
[[sk:FAQ]]<br />
[[sv:FAQ]]<br />
[[th:FAQ]]<br />
[[tr:Sss]]<br />
[[zh-CN:FAQ]]<br />
[[zh-TW:FAQ]]<br />
Besides the questions covered below, you may find [[The Arch Way]] and [[Arch Linux]] helpful. Both articles contain a good deal of information about Arch Linux.<br />
<br />
== General ==<br />
<br />
===Q) What is Arch Linux?===<br />
'''A)''' See the article entitled [[Arch Linux]].<br />
<br />
===Q) Why would I want to use Arch?===<br />
'''A)''' If, after reading about the [[The Arch Way]] philosophy, you wish to embrace the 'do-it-yourself' approach and require or desire a simple, elegant, highly customizable, bleeding edge, general purpose GNU/Linux distribution, you may like Arch.<br />
<br />
===Q) Why would I not want to use Arch?===<br />
'''A)''' You may '''not''' want to use Arch, if:<br />
<br />
* after reading [[The Arch Way]], you disagree with the philosophy.<br />
* you do not have the ability/time/desire for a 'do-it-yourself' GNU/Linux distribution.<br />
* you require support for an architecture other than x86_64 or i686.<br />
* you take a strong stand on using a distribution which only provides free software as defined by GNU.<br />
* you believe an operating system should configure itself, run out of the box, and include a complete default set of software and desktop environment on the installation media.<br />
* you do not want a bleeding edge, rolling release GNU/Linux distribution.<br />
* you are happy with your current OS.<br />
* you want an OS that targets a different userbase.<br />
<br />
===Q) What distribution is Arch based on?===<br />
'''A)''' Arch is independently developed, was built from scratch and is not based on any other GNU/Linux distribution. Before creating Arch, Judd Vinet admired and used CRUX, a great, minimalist distribution created by Per Lidén. Originally inspired by ideas in common with CRUX, Arch was built from scratch, and pacman was then coded in C.<br />
<br />
===Q) I am a complete GNU/Linux beginner. Should I use Arch?===<br />
'''A)''' This question has had much debate. Arch is targeted more towards advanced GNU/Linux users, but some people feel that Arch is a good place to start for the motivated novice. If you are a beginner and want to use Arch, just be warned that you must be willing to invest significant time into learning a new system, as well as accept the fact that Arch is fundamentally designed as a DIY (Do-It-Yourself) distribution. It is the user who assembles the system and controls what it will become. Before asking for help, do your own independent research by Googling, searching the forum (and reading the rest of these FAQs) and searching the superb documentation provided by the Arch Wiki. ''There is a reason these resources were made available to you in the first place.'' Many thousands of ''volunteered'' hours have been spent compiling this excellent information.<br />
<br />
Recommended reading: The Arch Linux [[Beginners Guide|Beginners' Guide]].<br />
<br />
===Q) Arch requires too much time and effort to install and use. Also, the community keeps telling me to RTFM in so many words===<br />
'''A)''' Arch is designed for and used by a specifically targeted user base. Perhaps it is not right for you. See the [[#Q)_I_am_a_complete_GNU/Linux_beginner._Should_I_use_Arch?|above]].<br />
<br />
===Q) Is Arch designed to be used as a server? A desktop? A workstation?===<br />
'''A)''' Arch is not designed for any particular type of use. Rather, it is designed for a particular type of ''user''. Arch targets competent users who enjoy its do-it-yourself nature, and who further exploit it to shape the system to fit their unique needs. Therefore, in the hands of its target user base, Arch can be used for virtually any purpose. Many use Arch on both their desktops and workstations. And of course, archlinux.org runs on Arch.<br />
<br />
===Q) I really like Arch, except the development team needs to implement ''"feature X"''===<br />
'''A)''' Before going further, did you read [[The Arch Way]]? Have you provided the feature/solution? Does it conform to the Arch philosophy of ''minimalism'' and ''code-correctness over convenience''? Get involved, contribute your code/solution to the community. If it is well regarded by the community and development team, perhaps it will be merged. The Arch community thrives on contribution and sharing of code and tools.<br />
<br />
===Q) When will the new release be made available?===<br />
'''A)''' Arch Linux releases are merely a snapshot of the [core] repository, and are issued usually in the first half of every month.<br />
<br />
The rolling release model keeps every Arch Linux system current and on the bleeding edge by issuing one command. For this reason, releases are not terribly important in Arch, because they become out of date as soon as a package has been updated. If you are looking to obtain the latest Arch Linux release, you do not need to reinstall. You simply run the {{ic|pacman -Syu}} command, and your system will be identical to what you would get with a brand-new install. For this same reason, new Arch Linux releases are not typically full of new and exciting features. New and exciting features are released as needed with the packages that are updated, and can be obtained immediately via {{ic|pacman -Syu}}.<br />
<br />
===Q) Is Arch Linux a stable distribution? Will I get frequent breakage?===<br />
'''A)''' The short answer is: It is largely as stable as ''you'' make it.<br />
<br />
''You'' assemble your own Arch system, atop the simple base environment, and ''you'' control system upgrades. Obviously, a larger, more complicated system incorporating multitudes of customized packages, and a plethora of toolkits and desktop environments would be more likely to experience configuration issues due to upstream changes than a slimmer, more simple system would. Arch is targeted at capable, proactive users. General UNIX competence and good system maintenance and upgrade practices also play a large role in system stability. Also recall that Arch packages are predominantly unpatched, so most application issues are inherently upstream.<br />
<br />
Therefore, it is ''the user'' who is ultimately responsible for the stability of his own rolling release system. The user decides when to upgrade, and merges necessary changes when required. If the user reaches out to the community for help, it is often provided in a timely manner. The difference between Arch and other distributions in this regard is that Arch is truly a 'do-it-yourself' distribution; complaints of breakage are misguided and unproductive, since upstream changes are not the responsibility of Arch devs.<br />
<br />
===Q) Arch needs more press (i.e. advertisement)===<br />
'''A)''' Arch gets plenty of press as it is. The goal of Arch Linux is not to be large, but rather, to provide an elegant, minimalist and bleeding edge distribution focused on simplicity and code-correctness. Organic, sustainable growth occurs naturally amongst the target user base.<br />
<br />
===Q) Arch needs more developers===<br />
'''A)''' Possibly so. Feel free to volunteer your time! Visit the [https://bbs.archlinux.org forums], [[IRC_Channel|IRC channels]], and [https://mailman.archlinux.org/mailman/listinfo/ mailing lists], and see what needs to be done. Getting involved in the Community Contributions subforum is a good way to start.<br />
<br />
===Q) Why is Arch so slow? Programs open slowly or do not run at all!===<br />
'''A)''' Make sure that your hostname is set correctly in {{ic|/etc/hosts}} (i.e., that it matches the hostname in {{ic|/etc/hostname}}). Have a look at [[Beginners_Guide#Hostname|Hostname]] from the Beginners' Guide. If the hostname entries do not match, applications may start up very slowly.<br />
<br />
===Q) Why is my internet so slow compared to other operating systems?===<br />
'''A)''' Is your network configured correctly? Have you double checked your {{ic|/etc/rc.conf}}, {{ic|/etc/hostname}}, {{ic|/etc/hosts}} and {{ic|/etc/resolv.conf}}? Have a look at [[Beginners_Guide#Hostname|Hostname]] and [[Beginners_Guide#Configure_the_network|Configure the network]] from the Beginners' Guide.<br />
<br />
Also note that Arch Linux does not come with [[Wikipedia:Traffic_shaping|traffic shaping]] enabled. Thus, it is possible that if a program on it somehow utilizes your internet connection to the full – regardless if it's over P2P or classic client-server connections – other local ones will find it clogged, resulting in severe lags and timeouts. Relief can be provided by [[firewall]]s such as Shorewall or Vuurmuur; there are also static scripts for {{Pkg|iproute2}} (such as [http://serendipity.ruwenzori.net/index.php/2008/06/01/modified-wondershaper-for-better-voip-qos this derivative] of Wondershaper), which allow shaping on the network layer.<br />
<br />
===Q) Why is Arch using all my RAM?===<br />
'''A)''' Essentially, unused RAM is wasted RAM.<br />
<br />
Many new users notice how the Linux kernel handles memory differently than they are used to. Since accessing data from RAM is much faster than from a storage drive, the kernel caches recently accessed data in memory. The cached data is only cleared when the system begins to run out of available memory and new data needs to be loaded.<br />
<br />
Perhaps the most common culprit of this confusion is the {{ic|free}} command:<br />
<br />
{{hc|$ free -m|<br />
total used free shared buffers cached<br />
Mem: 1009 741 267 0 104 359<br />
-/+ buffers/cache: 278 731<br />
Swap: 1537 0 1537}}<br />
<br />
It is important to note the {{ic|-/+ buffers/cache:}} line -- a representation of the amount of memory that is actually in "active use" and the amount of "available" memory, rather than "unused".<br />
<br />
In the above example, a laptop with 1G of total RAM appears to be using 741M of it, with naught but a few idling terminals and a web browser open! However, upon examining the emphasized line, see that only 278M of it is in "active use", and in fact 741M is "available" for new data. Apparently, 104M of that "used" memory contains buffered data and 359M contains cached data, both of which can be cleared away if needed. Only 267M of the total is truly "free" of the burden of data storage.<br />
<br />
The result of all this? Performance!<br />
<br />
See [http://www.linuxjournal.com/article/2770 this wonderful article] if your curiosity has been piqued!<br />
<br />
===Q) Where did all my free space go?===<br />
'''A)''' The answer to this question depends on your system. There are some [[Common Applications#Disk usage display programs|fine utilities]] that may help you find the answer.<br />
<br />
== Package Management ==<br />
<br />
===Q) In which package is X in?===<br />
'''A)''' You can find out with [[pkgfile]].<br />
<br />
For example:<br />
<br />
$ pkgfile ''file_name''<br />
<br />
===Q) I've found an error with Package X. What should I do?===<br />
'''A)''' First, you need to figure out if this error is something the Arch team can fix. Sometimes it's not (e.g. Firefox crashes may be the fault of the Mozilla team); this is called an ''upstream error''. If it is an Arch problem, there is a series of steps you can take:<br />
<br />
# Search the forums for information. See if anyone else has noticed it.<br />
# Post a [[Reporting Bug Guidelines|bug report]] with detailed information at https://bugs.archlinux.org.<br />
# If you'd like, write a forum post detailing the problem and the fact that you have reported it already. This will help prevent a lot of people from reporting the same error.<br />
<br />
===Q) Arch packages need to use a unique naming convention. ".pkg.tar.gz" and ".pkg.tar.xz" are too long and/or confusing===<br />
'''A)''' This has been discussed on the Arch mailing list. Some proposed a {{ic|.pac}} file extension. As far as is currently known, there is no plan to change the package extension. As Tobias Kieslich, one of the Arch devs, put it, "''A package '''is''' a gzipped'' [xz] ''tarball! And it can be opened, investigated and manipulated by any tar-capable application. Moreover, the mime-type is automatically detected correctly by most applications.''"<br />
<br />
===Q) Pacman needs a library so other applications can easily access package information===<br />
'''A)''' Since version 3.0.0, pacman has been the front-end to libalpm, the "Arch Linux Package Management" library. This library allows alternative front-ends to be written (for instance, a GUI front-end).<br />
<br />
===Q) Why doesn't pacman have an official GUI front-end?===<br />
'''A)''' Please read [[The Arch Way]] and [[Arch Linux]]. Basically, the answer is that the Arch dev team will not be providing one. Feel free to use one developed by other users. A selective list can be found in [[Pacman GUI Frontends]].<br />
<br />
===Q) Pacman needs ''"feature X"!''===<br />
'''A)''' Please read [[The Arch Way]] and [[Arch Linux]]. The Arch philosophy is "Keep It Simple". If you think the idea has merit, and does not violate this simple litany, then you may choose to discuss it on the forum [https://bbs.archlinux.org/ here]. You might also like to check [https://bugs.archlinux.org here]; it is a place for feature requests if you find it is important.<br />
<br />
However, the best way to get a feature added to pacman or Arch Linux is to implement it yourself. The patch or code may or may not be officially accepted, but perhaps others will appreciate, test and contribute to your effort.<br />
<br />
===Q) Arch needs a stable package branch===<br />
'''A)''' Check out [http://www.archserver.org/ ArchServer].<br />
<br />
===Q) What is the difference between all these repositories?===<br />
'''A)''' See [[Official Repositories]].<br />
<br />
===Q) I just installed Package X. How do I start it?===<br />
'''A)''' If you're using a desktop environment like [[KDE]] or [[GNOME]], the program should automatically show up in your menu. If you're trying to run the program from a terminal and do not know the binary name, use:<br />
<br />
$ pacman -Qlq ''package_name'' | grep bin<br />
<br />
===Q) Why is there only a single version of each shared library in the official repositories?===<br />
'''A)''' Several distributions, such as Debian, have different versions of shared libraries packaged as different packages: {{ic|libfoo1}}, {{ic|libfoo2}}, {{ic|libfoo3}} and so on. In this way it is possible to have apps compiled against different versions of {{ic|libfoo}} installed on the same system.<br />
<br />
Unlike Debian, Arch is a rolling-release cutting-edge distribution. The most visible trait of a cutting-edge distribution is availability of the latest versions of software in the repositories; in case of a distribution like Arch, it also means that only the latest versions of all packages are officially supported. By dropping support for outdated software, package maintainers are able to spend more time ensuring that the newest versions work as expected. As soon as a new version of a shared library becomes available from upstream, it is added to the repositories and affected packages are rebuilt to utilize the new version.<br />
<br />
===Q) What if I run "pacman -Syu" and there will be an update for a shared library, but not for the apps that depend on it?===<br />
'''A)''' This scenario should not happen at all. Assuming an application called {{ic|foobaz}} is in one of the official repositories and builds successfully against a new version of a shared library called {{ic|libbaz}}, it will be updated along with {{ic|libbaz}}. If, however, it doesn't build successfully, {{ic|foobaz}} package will have a versioned dependency (e.g. ''libbaz 1.5''), and will be removed by pacman during {{ic|libbaz}} upgrade, due to a conflict.<br />
<br />
If {{ic|foobaz}} is a package that you built yourself and installed from AUR, you should try rebuilding {{ic|foobaz}} against the new version of {{ic|libbaz}}. If the build fails, report the bug to the {{ic|foobaz}} developers.<br />
<br />
===Q) Is it possible that there's a major kernel update in the repository, and that some of the driver packages haven't been updated?===<br />
'''A)''' No, it is not possible. Major kernel updates (e.g. ''linux 3.5.0-1'' to ''linux 3.6.0-1'') are always accompanied by rebuilds of all supported kernel driver packages. On the other hand, if you have an unsupported driver package installed on your system, such as {{AUR|catalyst}}, then a kernel update might break things for you if you do not rebuild it for the new kernel. Users are responsible for updating any unsupported driver packages that they have installed.<br />
<br />
===Q) Does Arch use package signing?===<br />
'''A)''' Yes. Package signing in [[pacman]] has been implemented since version 4. See [[package signing]] for more information.<br />
<br />
== Installation ==<br />
<br />
===Q) Arch needs an installer. Maybe a GUI installer===<br />
'''A)''' Since installation doesn't occur often (read the rest of this article to know more about what ''rolling release'' means), it is not a high priority for developers or users. The [[Installation Guide]] and [[Beginners' Guide]] have been fully updated to use the command-line method. If you're still interested in using an installer, consider using [[Archboot]].<br />
<br />
===Q) I installed Arch, and now I am at a shell! What now?===<br />
'''A)''' Have a look at the Arch Linux [[Beginners' Guide]].<br />
<br />
===Q) Which desktop environment or window manager should I use?===<br />
'''A)''' Since many are available to you, use the one you like the most to fit your needs. Have a look at the [[Desktop Environment]] article.<br />
<br />
===Q) What makes Arch unique amongst other "minimal" distributions?===<br />
'''A)''' Some distributions may provide minimal installation methods, sharing some similarities to the Arch installation process. However, a few points must be noted:<br />
<br />
# Arch has been ''fundamentally designed'' as a lightweight, minimal base environment upon which to build.<br />
# The ''only'' way to install Arch is by building up from this minimal base.<br />
# The base system and the entire distribution are inherently a K.I.S.S. design approach, which makes it uniquely suitable for its target base of users.<br />
# Installing services and packages requires manual, interactive user configuration. Unlike other distributions which automatically configure services and startup behavior, the Arch philosophy puts emphasis on the power user's competence and prerogative to handle such responsibilities.<br />
# Arch packaging is designed to be minimal, and ''optional'' package dependencies are never automatically installed. Rather, the user is simply notified of their existence during package installation, resulting in a slimmer system.<br />
# Arch provides excellent, thorough documentation, aiding in the process of system assembly.<br />
<br />
== Other ==<br />
<br />
===Q) What is this AUR thing I keep hearing about?===<br />
'''A)''' See [[Arch User Repository#FAQ]].<br />
<br />
===Q) Why do I get a green screen whenever I try to watch a video?===<br />
'''A)''' Your color depth is set wrong. It may need to be 24 instead of 16, for example.<br />
<br />
===Q) Spellcheck is marking all of my text as incorrect!===<br />
'''A)''' Have you installed an {{Pkg|aspell}} dictionary? Use {{ic|pacman -Ss aspell}} to see available dictionaries for downloading.<br />
<br />
If installing the dictionary files did not resolve the problem, it's most likely a problem with {{ic|enchant}}. Check for known dictionary files:<br />
<br />
{{hc|$ aspell dicts|<br />
en<br />
en_GB<br />
...etc}}<br />
<br />
If your respective language dictionary is listed, add the following line to {{ic|/usr/share/enchant/enchant.ordering}}:<br />
<br />
en_GB:aspell #For example.</div>IllRepute