https://wiki.archlinux.org/api.php?action=feedcontributions&user=Codemac&feedformat=atomArchWiki - User contributions [en]2024-03-19T04:06:10ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Mac&diff=293061Mac2014-01-16T02:04:16Z<p>Codemac: /* Stability problems */</p>
<hr />
<div>[[Category:Apple]]<br />
[[de:ArchLinux auf einem MacBook]]<br />
[[fr:MacBook]]<br />
[[it:MacBook]]<br />
[[zh-CN:MacBook]]<br />
{{Related articles start}}<br />
{{Related|Official Arch Linux Install Guide}}<br />
{{Related|Beginners Guide}}<br />
{{Related|General Recommendations}}<br />
{{Related|MacBook 4,2 (late 2008)}}<br />
{{Related|MacBook 5,2 (early-mid 2009)}}<br />
{{Related|MacBook Pro 7,1}}<br />
{{Related|MacBook Pro 8,1 / 8,2 / 8,3 (2011)}}<br />
{{Related|MacBook Pro 9,2 (Mid-2012)}}<br />
{{Related articles end}}<br />
Installing Arch Linux on a MacBook (Pro) is quite similar to installing it on any other computer. However, due to the specific hardware configuration on a MacBook, there are a few deviations and special considerations which warrant a separate guide. For more background information, please see the [[Installation Guide]], [[Beginners' Guide]]. This guide contains installation-instructions that can be used on any Apple computer whose hardware is supported by the Linux kernel. Please see 'related' pages (on the top right of this page) for model-specific tips and troubleshooting.<br />
<br />
== Overview ==<br />
<br />
Specifically, the procedure for installing Arch Linux on a MacBook is:<br />
<br />
# '''[[#Installation of Mac OS X and firmware update|Install OS X]]''': Regardless of the desired end-configuration, it helps to start from a clean install of OS X.<br />
# '''[[#Installation of Mac OS X and firmware update|Firmware update]]''': This should help reduce errors and provide newer features for the hardware.<br />
# '''[[#Partitions|Partition]]''': This step either resizes or deletes the OS X partition and creates partitions for Arch Linux.<br />
# '''[[#Installation|Install Arch Linux]]''': The actual installation procedure.<br />
# '''[[#Post-install configuration|Post-install configuration]]''': MacBook specific configuration.<br />
<br />
{{Tip|rEFIt is a popular bootloader for EFI-firmware computers (including Macs). It can be installed at any time during the installation. For instructions, please see [[#rEFIt]]. }}<br />
<br />
== Installation of Mac OS X and firmware update ==<br />
<br />
[http://www.apple.com Apple] has excellent instructions for installing OS X. Follow their instructions. Once OS X is installed, go to ''Apple Menu > Software Update'' and update all software. Once this has run, you will need to reboot your computer. Do this, and then run '''Software Update''' again to check to make sure that all updates have been installed.<br />
<br />
If you are not going to have OS X installed, make backups of these files:<br />
<br />
/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport<br />
<br />
You will need this file later for iSight functionality.<br />
<br />
/Library/ColorSync/Profiles/Displays/<FILES HERE><br />
<br />
You will need the file(s) here for adjusting the [[#Color Profile|color profile]].<br />
<br />
== Partitions ==<br />
<br />
The next step in the installation is to re-partition the hard drive. If OS X was installed using the typical procedure, then your drive should have a GPT format and the following partitions:<br />
<br />
* '''EFI''': a 200 MB partition at the beginning of the disk.It is often read as '''msdos''' or '''FAT''' by some partitioning tools and usually labeled ''#1''.<br />
* '''Mac OS X''': the ''(HFS+)'' partition that should take up all of the remaining disk space. Usually labeled ''#2''.<br />
* '''Recovery''': A recovery partition (only for Mac OS X 10.7+).<br />
How to partition depends on how many operating systems you want install. The following options will be explained:<br />
<br />
* [[#Arch Linux only|Arch Linux only]] for single boot.<br />
* [[#Mac OS X with Arch Linux|OS X with Arch Linux]] for dual boot.<br />
<br />
If you do not know which option to pick, we recommend the dual boot so you can still return to OS X whenever you want.<br />
<br />
=== Arch Linux only ===<br />
<br />
This situation is the easiest to deal with. Mostly, partitioning is the same as any other hardware that Arch Linux can be installed on. The only special consideration is the MacBook firmware boot sound. To ensure that this sound is off: '''mute''' the volume in OS X before continuing further. The MacBook firmware relies on the value in OS X, if available. Note that if you choose to get rid of the OS X partition, there is no easy way to update your machines firmware unless you use an external drive to boot OS X.<br />
You can boot in EFI mode (recommended) or bios-compatibility mode, if in doubt choose EFI.<br />
<br />
To install using EFI, follow the [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO|instruction to make a EFI bootable media]]. Once done double check that your USB key actually boots in EFI mode [[Unified Extensible Firmware Interface#UEFI Variables Support|checking the EFI kernel variables]]. You will need to format the EFI partition with the {{ic|hfsplus}} filesystem ({{AUR|hfsprogs}}) instead of vfat otherwise {{AUR|mactel-boot}} will fail, and in Macbooks [[Unified Extensible Firmware Interface#Non-Mac UEFI systems|you cannot use {{ic|efibootmgr}}]].<br />
<br />
==== EFI ====<br />
<br />
*'''This requires [[GRUB]] to work'''<br />
* Boot installation medium and switch to a free tty.<br />
* Run '''cgdisk''' ({{Pkg|gptfdisk}} package).<br />
* Create the necessary partitions.<br />
<br />
{{Note|<br />
* The swap partition is optional, on machines with a RAM of size 4GB or more, good performance can be expected without a swap partition. Also, a '''swap file''' can be created later, see [[Swap#Swap file|Swap file]].<br />
* For more information on partitioning, see [[Beginners'_Guide#Partitioning hard disks: General information|Partitioning hard disks: General information]].<br />
}}<br />
Simple example (no LVM, crypto):<br />
partition mountpoint size type label<br />
/dev/sda1 /boot/efi 200MiB vfat EFI<br />
/dev/sda2 /boot 100MiB ext2 boot<br />
/dev/sda3 - adjust swap swap<br />
/dev/sda4 / 10GiB ext4 root<br />
/dev/sda5 /home remain. ext4 home<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
==== BIOS-compatibility ====<br />
<br />
* Boot installation medium and switch to a free tty.<br />
* Run '''parted'''. The simplest way is to change the partition table to '''msdos''' and then partition as normal. GRUB is compatible with GPT.<br />
<br />
* Create the necessary partitions.<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
=== Mac OS X with Arch Linux ===<br />
<br />
The easiest way to partition your hard drive, so that OS X and Arch Linux will co-exist, is to use partitioning tools in OS X and then finish with Arch Linux tools.<br />
<br />
{{Warning|It is highly recommended that this only be attempted after a clean install of OS X. Using these methods on a pre-existing system may have undesired results.}}<br />
<br />
{{Note|If you have any problems, try using [http://gparted.sourceforge.net/ gparted] (i.e. ''instead'' of using Disk Utility and/or cgdisk). It is capable of shrinking the OS X partition and creating Linux partitions ready for installation.}}<br />
<br />
'''Procedure''':<br />
* In OS X, run '''Disk Utility.app''' (located in {{ic|/Applications/Utilities}})<br />
<br />
* Select the drive to be partitioned in the left-hand column (not the partitions!). Click on the '''partition''' tab on the right.<br />
<br />
* Select the volume to be resized in the '''Volume scheme'''.<br />
<br />
* Decide how much space you wish to have for your OS X partition, and how much for Arch Linux. Remember that a typical installation of OS X requires around 15-20 GiB, depending on the number of software applications and files.<br />
<br />
* Finally, type the new (smaller) size for the OS X partition in the size box and click '''Apply'''. This will create a new partition out of the empty space. You will delete this partition later.<br />
<br />
{{Note|if you wish to have a shared partition between OS X and Arch Linux, then additional steps will need to happen here. Please see [[#HFS partition sharing]].}}<br />
<br />
* If the above completed successfully, then you can continue. If not, then you may need to fix your partitions from within OS X first.<br />
<br />
* Boot the Arch install CD by holding down the alt key during Boot. Follow one of the procedures below according to your choice of boot-method.<br />
<br />
==== EFI ====<br />
<br />
* Run '''cgdisk'''<br />
<br />
* Delete the partition you made in Disk Utility.app and create the necessary partitions for Arch Linux. OS X likes to see a 128 MiB gap after partitions, so when you create the first partition after the last Mac OS X-partition, type in '''+128M''' when cgdisk asks for the first sector for the partition. A simple example (no LVM, crypto):<br />
{{Note|<br />
* The swap partition is optional, on machines with a RAM of size 4GB or more, good performance can be expected without a swap partition. Also, a '''swap file''' can be created later, see [[Swap#Swap file]].<br />
* The easiest dual-boot option is to install refind from inside OSX, to its root directory (default for install.sh). Following that, copy the driver folder from the installation tarball into the new refind location, and uncomment the lines "scan_all_linux_kernels" and "also_scan_dirs" options in refind.conf. Configuration of boot options can then be done from a refind_linux.conf in Arch's /boot directory.<br />
* If you want to be able to boot GRUB from the Apple boot loader, you can create a small hfs+ partition (for convenience, use OS X to format it in Disk Utility.app afterwards). Follow the GRUB EFI install procedure, and mount your {{ic|/boot/efi}} directory to the hfs+ partition you created. Finally, finish up again in OS X by blessing the partition. This will set GRUB as the default boot option (holding alt at startup goes to the mac boot options screen still. See http://mjg59.dreamwidth.org/7468.html)<br />
* For more information on partitioning, see [[Partitioning]].<br />
* OS X's EFI partition can be shared with archlinux, making the creation of an additional EFI partition dedicated to arch completely optional<br />
}}<br />
partition mountpoint size type label<br />
/dev/sda1 /boot/efi 200MiB vfat EFI<br />
/dev/sda2 - ? hfs+ Mac OS X<br />
/dev/sda3 - ? hfs+ Recovery<br />
/dev/sda4 - 100MiB hfs+ Boot Arch Linux from the Apple boot loader (optional)<br />
/dev/sda5 /boot 100MiB boot boot<br />
/dev/sda6 - ? swap swap (optional)<br />
/dev/sda7 / 10GiB ext4 root<br />
/dev/sda8 /home remaining ext4 home<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
==== BIOS-compatibility ====<br />
<br />
* Run '''parted''' as root.<br />
<br />
* Delete the empty space partition and partition the space as you would for any other installation. Note that MBR is limited to 4 primary partitions (including the efi partition). That leaves 2 primary partitions for arch. One strategy is to have a system and home partition, and use a swap file (I have not tried to use logical partitions). Another is to dedicate one partition to a shared partition (see below).<br />
<br />
* Next, create new filesystems on those partitions which need them, especially the partition which will contain /boot. If you are not sure how to do this using {{ic|mkfs.ext2}} (or whatever), run {{ic|/arch/setup}} and work through until you get to Prepare Hard Drive and use the "Manually configure block devices..." option, then exit the installer. This is necessary so that rEFIt will set the right partition type in the MBR in the next step (without an existing filesystem, it seems to ignore the partition type set by parted), without which GRUB will refuse to install to the right partition.<br />
<br />
* At this point you should reboot your computer and have rEFIt fix the partition tables on your hard drive. (If you do not do this, you may have to reinstall GRUB later on in order to have your Mac recognize the Linux partition.) When you are into the rEFIt menu, select '''update partition table''', then press Y. Reboot.<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
=== Mac OS X, Windows XP, and Arch Linux triple boot ===<br />
<br />
This may not work for everyone but it has been successfully tested on a Macbook from late 2009.<br />
<br />
The easiest way to partition your hard drive, so that all these operating systems can co-exist, is to use disk utility in Mac OS X, use the formatter on windows XP install CP, and then finish with Arch Linux tools.<br />
<br />
{{Warning|It is highly recommended that this only be attempted after a clean install of Mac OS X. Using these methods on a pre-existing system may have undesired results. At least back your stuff up with timemachine or clonezilla before you begin.}}<br />
<br />
'''Procedure''':<br />
* In Mac OS X, run '''Disk Utility''' (located in {{ic|/Applications/Utilities}}).<br />
<br />
* Select the drive to be partitioned in the left-hand column (not the partitions!). Click on the '''partition''' tab on the right.<br />
<br />
* Select the volume to be resized in the '''volume scheme.'''<br />
<br />
* Decide how much space you wish to have for your Mac OS X partition, how much fo XP, and how much for Arch Linux. Remember that a typical installation of Mac OS X requires around 15-20 GiB, and XP about the same, depending on the number of software applications and files. Something like OSX 200Gb, XP 25Gb, Arch 25Gb should be fine.<br />
<br />
* Put your decisions into action by pressing the + button and adding the new partitions, Label them as you like and make sure that your XP partition is the last one on the disk and is formatted for FAT32. It is probably best to have Arch formatted in HFS format as to not confuse you later, it will be reformatted anyway.<br />
<br />
So in linux terms your partitions will be something like:<br />
<br />
:*sda (disk)<br />
:*sda1 (Mac boot partition - you cannot see this one in OSX)<br />
:*sda2 (OSX install in HFS+)<br />
:*sda3 (Arch install temporarly in HFS)<br />
:*sda4 (XP install in FAT32)<br />
<br />
* Finally, click '''apply'''. This will create a new partition out of the empty space.<br />
<br />
{{Note|Using this method you may not be able to have a shared partition between Mac OS X and Arch Linux, this is because the mac will only allow for 4 active partitions. You will however be able to mount a HFS partition in Arch for one workaround. There are other workarounds possible also.}}<br />
<br />
* If the above completed successfully, you can continue. If not, then you may need to fix your partitions from within Mac OS X first.<br />
<br />
* You will not be needing boot camp this way, the program rEFIt is much more flexible (though not as flexible as GRUB). Download and install rEFIt [[http://refit.sourceforge.net/]]<br />
<br />
* Go into a terminal in OS X and perform the following, this will enable the rEFIt boot manager. <br />
<br />
cd /efi/refit<br />
./enable.sh<br />
<br />
* Reboot to check the rEFIt is working, it should appear on boot. When it comes up go to the rEFIt partition manager and agree to the changes.<br />
<br />
* Put your XP install CD and boot it with rEFIt - You may have to reboot a few times until it is recognized by the boot loader. Install XP and once it is installed use the OSX install CD to get your drivers running nicely in XP.<br />
** Note: when installing XP make sure you select your XP partition and format it again inside the XP installer. If you do not reformat it will not work.<br />
<br />
* Boot the Arch install CD, log in as root and run {{ic|# /arch/setup}}.<br />
<br />
* Follow the install as normal but note that you will have to tell that arch installer to mount sda3 as the root partition and format it as ext3, there will not be a /boot or swap partition so ignore those warnings.<br />
<br />
* At this point, if you are dual booting, you should reboot your computer and have rEFIt fix the partition tables on your hard drive. (If you do not do this, you may have to reinstall GRUB later on in order to have your Mac recognize the Linux partition.) When you are into the rEFIt menu, select '''update partition table''', then press Y.<br />
# reboot<br />
<br />
* Done! You can continue to [[#Installation]] but make sure you read [[#Booting directly from GRUB]] for the stage "* (for booting with EFI) After the install boot loader stage, exit the installer and install GRUB."<br />
<br />
== Booting directly from GRUB ==<br />
<br />
=== Installing GRUB to EFI partition directly ===<br />
<br />
* If you would like to use GRUB as your main bootloader and use the "boot while holding the Alt/Option key" method to go back to Mac OS X rather than using alternatives such as rEFIt (http://refit.sourceforge.net/, mentioned previously in [[#BIOS-compatibility]] and [[#Mac OS X, Windows XP, and Arch Linux triple boot]]) then you must install {{Pkg|grub}} to your Mac's '''already-existing''' EFI partition (see below). <br />
<br />
{{Note| These instructions are known to work on a Macbook Pro (Early 2011). Please read the procedure carefully '''as well as the details following it'''.}}<br />
<br />
'''Procedure''':<br />
<br />
* Install {{Pkg|grub}}<br />
<br />
* Make a directory named {{ic|efi}} in {{ic|/boot}} <br />
<br />
* Mount the '''already-existing''' EFI partition on your Mac to this {{ic|/boot/efi}} directory<br />
<br />
* Install GRUB to this directory<br />
<br />
* Make a directory named {{ic| locale}} in {{ic| /boot/grub}}<br />
<br />
* Copy {{ic| grub.mo}} from {{ic| /usr/share/locale/en\@quot/LC_MESSAGES/}} to {{ic| /boot/grub/locale}} <br />
<br />
* Generate a configuration for GRUB<br />
<br />
* Done! GRUB will now start on reboot and you can boot into your newly installed Archlinux.<br />
<br />
* Remember to hold ALT/Option key '''while''' starting your computer if you want to boot back into Mac OS X.<br />
<br />
'''Details (quoted from [[GRUB_EFI_Examples#M5A97]]):'''<br />
<br />
Finish the standard Arch install procedures, making sure that you install {{Pkg|grub}} and partition your boot hard disk as GPT.<br />
<br />
From [[Grub#Install_to_UEFI_system_partition]]:<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 />
Where X is your boot hard disk and Y is the efi partition you created earlier.<br />
<br />
Install GRUB UEFI application to and its modules to {{ic|/boot/grub/x86_64-efi}} 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 />
Generate a configuration for GRUB<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
=== Using blessing ===<br />
<br />
It is possible to boot directly from GRUB in EFI mode without using rEFIt through what is known as "blessing" after placing GRUB on a '''separate partition'''. These instructions are known to work on a Macbook 7,1. It is advisable to host GRUB on either a FAT32 or HFS+ partition, but ext2 or ext3 may also work. GRUB's appleloader command does not currently work with the 7,1, but support can be added with the patch available [https://savannah.gnu.org/bugs/index.php?33185 here].<br />
<br />
After the GRUB install is in the desired location, the firmware needs to be instructed to boot from that location. This can be done from either an existing OS X install or an OS X install disk. The following command assumes that the GRUB install is in {{ic|/efi/grub}} on an existing OS X partition:<br />
# bless --folder /efi/grub --file /efi/grub/grub.efi<br />
<br />
=== Compilation ===<br />
<br />
Some models may need EFI_ARCH set to i386.<br />
bzr branch --revision -2 bzr://bzr.savannah.gnu.org/grub/trunk/grub grub<br />
cd grub<br />
./autogen.sh<br />
patch -p1 < appleloader_macbook_7_1.patch<br />
export EFI_ARCH=x86_64<br />
./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix=""<br />
make<br />
cd grub-core<br />
../grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot<br />
cp grub.efi *.mod *.lst yourinstalllocation<br />
<br />
=== Example grub.cfg ===<br />
<br />
{{out of date|reason=kernel26}}<br />
Note that there may be a better method for loading Windows.<br />
{{bc|1=<br />
set debug=video<br />
insmod efi_gop<br />
<br />
menuentry "Arch Linux EFI" {<br />
set root=(hd0,3)<br />
#search --set -f /boot/vmlinuz26-efi-physical<br />
#loadbios /boot/vbtrace_bios.bin /boot/int10.bin<br />
linux /boot/vmlinuz26-efi-physical root=/dev/sda3 reboot=pci resume=/dev/sda3 resume_offset=151552<br />
initrd /boot/kernel26-efi-physical.img<br />
}<br />
<br />
menuentry "MacOSX" {<br />
set root=(hd0,2)<br />
# Search the root device for Mac OS X's loader.<br />
#search --set -f /usr/standalone/i386/boot.efi<br />
# Load the loader.<br />
chainloader /usr/standalone/i386/boot.efi<br />
}<br />
<br />
menuentry "Windows 7" {<br />
appleloader HD<br />
}<br />
<br />
menuentry "Boot from CD" {<br />
appleloader CD<br />
}<br />
<br />
menuentry "Boot from USB" {<br />
appleloader USB<br />
}<br />
}}<br />
<br />
== Installation ==<br />
<br />
{{Note|This section is only required if you want to have Mac OS X installed along with Arch Linux. If not, follow the steps in the official install guide, then skip to [[#Post-install configuration]].}}<br />
<br />
* Boot from the Arch Linux install CD or the latest [[Archboot]] iso (unofficial) depending on your needs. For a USB that is bootable by Apple's UEFI, you will need to follow these steps to [[Unified_Extensible_Firmware_Interface#Create_UEFI_bootable_USB_from_ISO|create a UEFI bootable USB.]]<br />
{{Note|<br />
* On MacBook Pro 7,1, I had an error booting the installation media Version 2012.12.01: "unable to handle kernel NULL pointer dereference at 0000000000000010" during pacpi_set_dmamode. To fix this problem, boot with the option: acpi&#61;off. After chrooting, add MODULES&#61;"ata_generic" into /etc/mkinitcpio.conf and execute mkinitcpio -p linux, see: [[Installation_Guide#Configure_the_system|Installation Guide, 9 Configure the system]].<br />
* Some MacBook users report strange keyboard output such as long delays and character doubling. To fix this problem, boot with the following options: arch noapic irqpoll acpi&#61;force}}<br />
<br />
* Log in as '''root'''<br />
<br />
{{Note|If you want to do a netinstall rather than installing the possibly outdated packages on the iso and depend on a wireless network that is encrypted, you should change to a free tty and connect manually before proceeding, see [[Beginners_Guide#Setup wireless in the live environment (optional)|Beginners_Guide]]}}<br />
<br />
* Proceed through the installation as described in the [[Official Arch Linux Install Guide]] '''except''' in the following areas:<br />
** In the [[Official Arch Linux Install Guide#Prepare Hard Drive|prepare hard drive]] stage, do only the [[Official Arch Linux Install Guide#Manually configure block devices, filesystems and mountpoints|set filesystem mountpoints]] step, taking care to assign the correct partitions. Partitions have already been created if you followed [[#Partition]]<br />
** '''(for booting with EFI''') After the [[Official Arch Linux Install Guide#Install Bootloader|install boot loader]] stage, exit the installer and install [[GRUB]].<br />
** '''(for booting with BIOS-compatibility)''' In the [[Official Arch Linux Install Guide#Install Bootloader|install boot loader]] stage, edit the menu.lst file and add '''reboot=pci''' to the end of the '''kernel''' lines, for example: {{bc|1=kernel /vmlinuz26 root=/dev/sda5 ro reboot=pci}} This will allow your MacBook to reboot correctly from Arch.<br />
** '''(for booting with BIOS-compatibility)''' Also in the [[Official Arch Linux Install Guide#Install Bootloader|install boot loader]] stage, install GRUB on whatever partition that {{ic|/boot}} is on. {{Warning|Do not install GRUB onto ''/dev/sda'' !!! Doing so is likely to lead to an unstable post-environment.}}<br />
** In the [[Official Arch Linux Install Guide#Configure System|configure system]] stage, edit /etc/mkinitcpio.conf and add the '''usbinput''' hook to the '''HOOKS''' line somewhere after the '''autodetect''' hook. This will load the drivers for your keyboard in case you need to use it before Arch boots (e.g. entering a [[LUKS]] password or using the troubleshooting shell).<br />
<br />
* When the install process is complete, reboot your computer.<br />
<br />
* If using optical media, hold down the eject key as your MacBook starts, this should eject the Arch Linux install disk.<br />
<br />
* If dual-booting Mac OS X and Arch Linux, hold down the alt (option) key while the system boots to use the Mac bootloader to select which OS to boot.<br />
<br />
=== Additional steps for Arch Linux only install===<br />
<br />
GRUB seems to be more complicated and less straightforward than rEFInd on EFI environments, so it's usually the prefered choice. It will also add entries for bootable devices if they are plugged in, and requires no rebuild/redeployments when the configuration is updated.<br />
<br />
==== GRUB ====<br />
<br />
{{Note|Do this after you tested that your setup is working. This procedure has been tested on a MacBook 4,1 with an msdos partition table. It may not work on newer versions. Please update if it works for you.}}<br />
* In order for Linux to boot up straight away, you will have to tell the firmware that your /boot partition is bootable, or you will always have to hold down the option (alt) key whenever you want to start up your computer.<br />
* In order to do this you will need the original Mac OS X install disk<br />
* Boot into it (you may need to hold the option (alt) key during boot again to access it)<br />
** Open Terminal.app (found under the Utilities menu in the menu bar), and type:<br />
# diskutil list<br />
** Find the device name of your /boot partition (this is your root (/) partition, if you do not have it separate). The format should be /dev/disk0sX, where X is a number from 1 to infinity<br />
** If using EFI type (replace X with the appropriate number):<br />
# bless --folder=/Volumes/efi --file=/Volumes/efi/efi/arch/grubx64.efi --setBoot<br />
# bless --mount=/Volumes/efi --file=/Volumes/efi/efi/arch/grubx64.efi --setBoot<br />
** If using BIOS-compatibility type (replace X with the appropriate number):<br />
# bless --device /dev/disk0sX --setBoot --legacy --verbose<br />
* Remove the installation disk and restart your computer<br />
* After a few seconds of grey screen, your boot loader screen should appear automatically.<br />
<br />
==== rEFInd ====<br />
<br />
{{Note|This has been tested on a 2013 MBA. There is no reason for it not to work on older models.}}<br />
<br />
* Install [https://www.archlinux.org/packages/extra/x86_64/refind-efi/ rEFInd] from [extra].<br />
* Install rEFInd into the EFI partition:<br />
# refind-install<br />
* Create configuration files for the linux images in /boot:<br />
# refind-mkrlconf<br />
* Edit /boot/refind_linux.conf if you need to add any additional kernel parameters.<br />
<br />
== Post-install configuration ==<br />
<br />
=== Xorg ===<br />
<br />
Install and configure Xorg by following the [[Xorg]] article.<br />
<br />
==== Video ====<br />
<br />
Different MacBook models have different graphic cards.<br />
<br />
To see which graphics card you have type:<br />
<br />
$ lspci | grep VGA<br />
<br />
* If it returns a string containing '''intel''' you only need the {{Pkg|xf86-video-intel}} driver. Intel-based MacBooks work out-of-the-box.<br />
<br />
* If it returns '''nVidia''', read [[NVIDIA]].<br />
<br />
* Otherwise if it returns '''ATI''' or '''AMD''', read [[ATI]].<br />
<br />
===== NVIDIA note =====<br />
<br />
{{Tip|MBP 6.2 - With the proprietary [[NVIDIA]] drivers, support for [[NVIDIA#Enabling Pure Video HD (VDPAU/VAAPI)|PureVideo HD]] is available for hardware video decoding. }}<br />
<br />
For MacBooks with NVIDIA graphics, for the backlight to work properly you may need the {{AUR|nvidia-bl}} package found in the [[AUR]].<br />
<br />
{{Tip|<br />
* If backlight control does not work after installing nvidia-bl, you should [[Kernel modules#Blacklisting|blacklist]] apple_bl kernel module.<br />
* Alternatively, you can choose to use the {{AUR|pommed-light}} package. If you do so, you may wish to change the step settings in {{ic|/etc/pommed.conf.mactel}} to something around 5000-10000 depending on how many levels of brightness you desire. The max brightness is around 80000, so take that into account.}}<br />
<br />
===== Macbook 6.2+ - EFI =====<br />
<br />
As of 4/30/2011, the proprietary nvidia driver is not known to work under X with this model in efi mode. The nouveau driver should work out of the box, but dri should be installed from the [https://aur.archlinux.org/packages/mesa-git/PKGBUILD mesa-git] package.<br />
<br />
===== MacbookPro 5.5, NVIDIA and secondary display =====<br />
<br />
As of January 1 2011, the latest NVIDIA drivers (290.10) might not work properly when a secondary display is used (tested with TwinView), NVIDIA's current [http://www.nvnews.net/vbulletin/showthread.php?t=122606 long-live supported] 275xx drivers seem to work fine. Install {{AUR|nvidia-275xx}} and {{AUR|nvidia-utils-275xx}}, and possibly {{AUR|lib32-nvidia-utils-275xx}} if you are on x86_64 system and want 32-bits support.<br />
<br />
MacbookPro 5.5 has an NVIDIA 9400m graphics card. This problem might apply to other devices as well.<br />
<br />
==== Touchpad ====<br />
<br />
The touchpad should have basic functionality by default. A true multitouch driver which behaves very similarly to native OSX can be installed from the AUR: {{AUR|xf86-input-multitouch-git}}. It supports 1, 2 and 3 finger gestures, including differentiation between horizontal and vertical 3 finger swipe. Additional details are available at [http://bitmath.org/code/multitouch/ the driver's project page].<br />
<br />
xf86-input-multitouch-git does not support any sort of configuration without editing the driver's source. Some users are also experiencing issues with false clicks from palm touches. There is now a much more configurable fork available as {{AUR|xf86-input-mtrack-git}}. Configuration options are documented in the [https://github.com/BlueDragonX/xf86-input-mtrack readme].<br />
<br />
The following mtrack options work well on a Macbook 7,1:<br />
<br />
Option "Thumbsize" "50"<br />
Option "ScrollDistance" "100"<br />
<br />
Probably you need also to add:<br />
<br />
MatchDevicePath "/dev/input/event10"<br />
<br />
'''Natural scrolling:''' To configure natural two finger scrolling similar to [http://www.apple.com/au/osx/what-is/gestures.html#gallery-gestures-scroll Mac OSX], refer to [[Touchpad Synaptics#Natural scrolling]]. If you are using GNOME, it will override these settings - in this case refer to [[GNOME#Natural_scrolling_touchpad]].<br />
<br />
'''Special Note About Older Macbook Models (confirmed on MacBook 2,1):''' On older Macbook models (pre-multitouch), the touchpad will not function properly until you install the xf86-input-synaptics package. Please see [[Touchpad Synaptics]] for more information on installing and configuring this package.<br />
<br />
'''Note on Macbook Pro(5,5):''' I found it is much simpler to use the xf86-input-synaptics{{Pkg|xf86-input-synaptics}} in Extra. Although it does not have much function as 3 finger swipe, this driver provides faster response. Gsynaptics{{Pkg|gsynaptics}} also provides a simple GUI config. Below is a Xorg config file /etc/X11/xorgconfig.d/60-synaptics.conf for reference only.<br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "SHMConfig" "on"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "3"<br />
Option "TapButton3" "2"<br />
Option "PalmDetect" "on"<br />
Option "VertEdgeScroll" "off"<br />
Option "HorizEdgeScroll" "off"<br />
Option "CornerCoasting" "off"<br />
Option "EdgeMotionUseAlways" "off"<br />
Option "AreaLeftEdge" "10"<br />
Option "AreaRightEdge" "1270"<br />
EndSection<br />
'''OS X like MultiTouch Gestures''' ''currently broken due to newer synaptic drivers!'' For users looking to add more of OS X's multitouch gestures to Arch, [https://github.com/iberianpig/xSwipe xSwipe] is a highly customisable, light weight pearl script, which does just that. Once installed and configured (see xSwipe wiki on Github) I would recommend adding xSwipe as a [[Autostarting|start up item]].<br />
<br />
==== Keyboard ====<br />
<br />
MacBook keyboard works by default. For swaping fn keys with Fx keys see [[Apple Keyboard]].<br />
<br />
To enable it you can map with right application like '''xbindkeys''' or through DE preferences; but another very good way, that we recommend, is to install {{AUR|pommed}} from the [[AUR]].<br />
<br />
Edit the {{ic|/etc/pommed.conf}} according to your hardware on MacBook, building<br />
it from {{ic|/etc/pommed.conf.mac}} or {{ic|/etc/pommed.conf.ppc}} example files.<br />
<br />
Note that you can also run it without a configuration file, the defaults may work for you. Then enable and start pommed [[Systemd]] service.<br />
<br />
systemctl enable pommed<br />
systemctl start pommed<br />
<br />
{{Tip|if you are using Gnome or KDE you can easily configure ''3rd level functionality'', ''multimedia key'', etc. in Keyboard Preferences.}}<br />
<br />
{{Note|See the [[Xorg input hotplugging]] page for other configuration information.}}<br />
<br />
===== Keyboard Backlight =====<br />
<br />
The keyboard backlight is controlled by {{ic|/sys/class/leds/smc::kbd_backlight}}. Write the desired value to {{ic|brightness}} in that directory.<br />
<br />
You may also use [https://aur.archlinux.org/packages/kbdlight/ kbdlight] to control keyboard backlight though scripts or by running it via sxhkd or xbindkeys. It has the advantage of allowing keyboard light-level changes without being root.<br />
<br />
====== NVIDIA note ======<br />
<br />
If the brightness does not function correctly through pommed, make sure you have installed the {{AUR|nvidia-bl}} package and insert<br />
<br />
find . -name "*" -exec sed -i 's/mbp_backlight/nvidia_backlight/' '{}' \;<br />
<br />
into the second line of the pommed PKGBUILD build() function and remake the package. From [https://bbs.archlinux.org/viewtopic.php?id=105091 this forum post].<br />
<br />
Another possible solution is to modify the pommed PKGBUILD build():<br />
<br />
find . -name "*" -exec sed -i 's/nvidia_backlight/apple_backlight/' '{}' \;<br />
<br />
If the previous does not work try the following,<br />
<br />
run nvidia-settings, edit the file '/etc/X11/xorg.conf' and add this line into the Device section:<br />
<br />
Option "RegistryDwords" "EnableBrightnessControl=1"<br />
Save and reboot and check backlight buttons work.<br />
More information available at [https://help.ubuntu.com/community/MacBookPro5-5/Precise#LCD ubuntu macbook pro 5,5]<br />
<br />
=== Wi-Fi ===<br />
<br />
Different MacBook models have different wireless cards.<br />
<br />
You can easily check what card do your MacBook have by:<br />
<br />
# lspci | grep Network<br />
<br />
* If you have an Atheros card, all should work out-of-the-box.<br />
<br />
* If you have a Broadcom card, follow the [[Broadcom BCM4312]] page.<br />
<br />
* 5.0 and 6.0 generation MacBooks may have a BCM43xx, follow the instructions for the broadcom-wl driver on the [[Broadcom wireless]] page. The interfaces can swap during reboot so its best to define them in a udev rule (instructions on the [[Broadcom wireless]] page).<br />
<br />
* 8.1 generation MacBooks have BCM4331, for which support is not present in either Linux (3.0 and 3.1) or the proprietary drivers by Broadcom. There is however preliminary support for it in Linux 3.2. To run the drivers on earlier kernels, you will need to use [http://wireless.kernel.org/en/users/Download compat-wireless]<br />
<br />
{{Note|If your connection frequently drops, you may have to turn off Wi-Fi power management. If you are running [[pm-utils]], you may override wireless power management by creating an executable file {{ic|/etc/pm/wireless}} with the lines:<br />
#!/bin/sh<br />
iwconfig wlp2s0 power off<br />
}}<br />
<br />
=== Power management ===<br />
<br />
==== Laptop-mode-tools ====<br />
<br />
Because the MacBook is obviously a laptop, you may wish to control its power management features using something like [[Laptop Mode Tools]].<br />
<br />
However, Laptop Mode Tools is known to disable the keyboard in console mode after being idle for a few seconds (does not happen when using X). If this happens to you set <br />
<br />
CONTROL_USB_AUTOSUSPEND=0<br />
<br />
in {{ic|/etc/laptop-mode/conf.d/usb-autosuspend.conf}}. See this [https://bbs.archlinux.org/viewtopic.php?pid=984831 forum thread] for the original workaround.<br />
<br />
==== Suspend to RAM (kernel suspend) ====<br />
<br />
Suspend (the kernel suspend) should work out of the box (I had a problem in which the machine would "suspend immediately after resume" in certain conditions when suspending by closing the lid. This was solved by de-selecting the option "event_when_closed_battery" in gconf-editor &rarr; gnome-power-manager &rarr; actions).<br />
<br />
For a macbook2,1 (bought in 2007) s2ram works using <br />
s2ram -f -a 3 <br />
To make it work with kde4 you have to create a file named "config" into /etc/pm/config.d containing<br />
SLEEP_MODULE="uswsusp"<br />
S2RAM_OPTS="-f -a 3"<br />
<br />
For a MacBook Pro 3,1 (bought in 2008), the following command should work, both in X and in a console:<br />
s2ram -f -a 1<br />
<br />
Note: If you use pm-utils suspending lead (at least for me) disk freeze. Try changing /etc/pm/config.d/module to<br />
SLEEP_MODULE=tuxonice<br />
<br />
For a macbook5.5, s2ram may work using (be sure to run it in X)<br />
s2ram -f -p -m<br />
<br />
==== Suspend to disk (hibernate) ====<br />
<br />
{{Merge|Swap#Swap file|These part is duplication of Swap file section in Swap. Should check and merge it to Swap.}}<br />
Hibernate should work if you have a swap partition. If you opted for a swap file because of the MBR limitation to 4 primary partitions, you can still get hibernate functionality by following these instructions (this is mostly taken from http://ubuntuforums.org/showthread.php?t=1042946):<br />
<br />
* Create a swapfile (here 2G = bs*count):<br />
# dd if=/dev/zero of=/swapfile bs=1024 count=2M<br />
It is recommended, but not necessary, to create the swapfile on a newly created partition, so that fragmentation is minimum.<br />
# chmod 600 swapfile <br />
# mkswap swapfile <br />
mkswap: swapfile: warning: do not erase bootbits sectors<br />
on whole disk. Use -f to force.<br />
Setting up swapspace version 1, size = 2097148 KiB<br />
no label, UUID=6bf46166-4f9e-433a-aac1-91cb3f5cf8ba<br />
# <br />
Note that we will not use this UUID later.<br />
* Add the swapfile in {{ic|/etc/fstab}}:<br />
/swapfile none swap sw 0 0<br />
* Determine the UUID of partition on which the swapfile is (/usr/bin/blkid is provided by util-linux-ng)<br />
# blkid -g<br />
# blkid<br />
/dev/sda4: UUID="388014d3-1d18-4ca0-980e-ef2f9fdebde4" TYPE="ext3" <br />
388014d3-1d18-4ca0-980e-ef2f9fdebde4 is the number we are looking for.<br />
* Determine the physical offset of the swapfile:<br />
# filefrag -v /swapfile | head<br />
Filesystem type is: ef53<br />
Filesystem cylinder groups is approximately 132<br />
File size of /swapfile is 2147483648 (524288 blocks, blocksize 4096)<br />
ext logical physical expected length flags<br />
0 0 24576 12 merged<br />
1 12 24589 24587 1024 merged<br />
2 1036 25615 25612 1024 merged<br />
3 2060 26640 26638 1024 merged<br />
4 3084 27665 27663 1024 merged<br />
5 4108 28690 28688 1024 merged<br />
$ <br />
Here, 24576 is the number we want.<br />
* Edit {{ic|/boot/grub/grub.cfg}} and add:<br />
resume=/dev/disk/by-uuid/388014d3-1d18-4ca0-980e-ef2f9fdebde4 resume_offset=24576<br />
to your kernel stanza options (or use the kopt method as in the post). Note that the "resume=UUID=" actually did not work for me. I had to use the {{ic|/dev/disk/by-uuid}} syntax.<br />
<br />
Note: "ro" has to be at the end of the line, like this:<br />
kernel /boot/vmlinuz-linux root=/dev/sda4 '''resume=/dev/sda4 resume_offset=24576''' ro<br />
* Nothing to do with update-grub nor mkinitcpio.<br />
* Reboot once<br />
* Try to hibernate<br />
<br />
=== Light sensor ===<br />
<br />
If you want to use the built in light sensor to automatically adjust screen and keyboard backlight brightness check out<br />
'''Lighter''' [https://github.com/Janhouse/lighter] (simple perl script, easy to fine-tune) and '''Lightum''' [https://github.com/poliva/lightum] (Requires Gnome or KDE but is older and more complete than Lighter).<br />
<br />
=== Sound ===<br />
<br />
{{Tip|MBP 5.5: since kernel 2.6.32 this works out of the box - just unmute the front speakers and store the sound level }}<br />
<br />
First of all follow [[ALSA]] wiki page, then if something does not work correctly, continue reading this part.<br />
<br />
Edit your {{ic|/etc/modprobe.d/50-sound.conf}} or {{ic|/etc/modprobe.d/modprobe.conf}} appending this line:<br />
<br />
options snd_hda_intel model=intel-mac-auto<br />
<br />
This should automatically specify the codec in your MacBook. Alternatively, for MacBookPro5,X, you can use:<br />
<br />
options snd_hda_intel model=mb5<br />
<br />
(note that the jack output is controlled with "HP").<br />
<br />
If you have an iMac8,1, you should instead use<br />
<br />
options snd-hda-intel model=mbp3 position_fix=2<br />
<br />
You can try to specify other options, that depend on your hardware. All other possible settings are listed in Kernel Documentation, avaible online:<br />
<br />
* [http://www.kernel.org/doc/Documentation/sound/alsa/ALSA-Configuration.txt ALSA-Configuration.txt]<br />
* [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt HD-Audio.txt]<br />
* [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt HD-Audio-Models.txt].}}<br />
<br />
Then, reboot.<br />
<br />
=== Bluetooth ===<br />
<br />
{{Note|Bluetooth should work out-of-the box. The hid2hci utility is used by default since bluez 4.91}}<br />
<br />
See the article on [[Bluetooth]] to install and configure all software needed.<br />
<br />
=== Webcam ===<br />
<br />
==== iSight ====<br />
<br />
{{Note|Linux kernel from 2.6.26 includes the '''Linux UVC driver''' natively. MBP 6.2+ (Kernel ~2.6.37+) iSight works out of the box without the need to use firmware from OS X.}}<br />
<br />
You can use many applications to test the camera:<br />
<br />
* MPlayer<br />
<br />
# mplayer tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0 -fps 30<br />
<br />
* Cheese<br />
* Skype<br />
* Ekiga<br />
<br />
A simple solution to take snapshots is:<br />
<br />
# mplayer tv:// -vf screenshot<br />
<br />
and the pressing the s key to take a snapshot. Files are of the format shot\d\d\d\d.png and are reported in the standard output.<br />
<br />
==== Facetime HD ====<br />
The Facetime HD webcam (included on 2013 MBAs onwards) [http://mactaris.blogspot.co.uk/2013/07/webcam-settings-20-will-support.html is no longer UVC device], and therefore, does not work out of the box.<br />
<br />
=== Temperature Sensors ===<br />
<br />
For reading temperature just install and configure '''lm_sensors'''.<br />
See [[Lm sensors]] page.<br />
<br />
=== Color Profile ===<br />
<br />
We can use color profiles from Mac OS.<br />
<br />
First, install {{AUR|xcalib}} from the [[AUR]].<br />
<br />
Second copy pre-saved color profiles placed in {{ic|/Library/ColorSync/Profiles/Displays/}} on Mac OS partition to {{ic|~/colorprofiles/}} for example.<br />
<br />
There are color profile files agree with in MacBook models; select the right one:<br />
<br />
* '''Color LCD-4271800.icc''' for MacBook Pro with CoreDuo CPU<br />
* '''Color LCD-4271880.icc''' for MacBook with Core2Duo<br />
* '''Color LCD-4271780.icc''' for MacBook (not Pro) based on CoreDuo or Core2Duo.<br />
<br />
{{Tip|Also Mac OS allows to save current color profile from ''Displays > Color'' section of the ''Mac OS System Preferences'', in this case file is saved to {{ic|/Users/<username>/Library/ColorSync/Profiles}}.}}<br />
<br />
Finally you can activate it by running<br />
<br />
# xcalib ~/colorprofile.icc<br />
<br />
{{Note|Previous command set the color profile only for the current session; this mean that you must run it every time you login in your system. For automating it you can execute the command by '''Autostart Application''', concording with your DE (or add the command to your login manager's initialization script, e.g. /etc/gdm/Init/Default).}}<br />
<br />
=== Apple Remote ===<br />
<br />
First, to correctly install and configure the '''lirc''' software that control IR see [[Lirc]] wiki.<br />
<br />
Then make LIRC use {{ic|/dev/usb/hiddev0}} (or {{ic|/dev/hiddev0}}) by editing {{ic|/etc/conf.d/lircd}}. Here is how mine look:<br />
<br />
#<br />
# Parameters for lirc daemon<br />
#<br />
LIRC_DEVICE="/dev/usb/hiddev0"<br />
LIRC_DRIVER="macmini"<br />
LIRC_EXTRAOPTS=""<br />
LIRC_CONFIGFILE="/etc/lirc/lircd.conf"<br />
<br />
Use '''irrecord''' (available when installing '''lirc''') to create a configuration file matching your remote control signals (alternatively, you can try to use the {{ic|lircd.conf}} below):<br />
<br />
# irrecord -d /dev/usb/hiddev0 -H macmini output_conf_file<br />
<br />
Start '''lircd''' and use '''irw''' to check if it works.<br />
<br />
Example of an {{ic|/etc/lirc/lircd.conf}}:<br />
<br />
begin remote<br />
<br />
name lircd.conf.macbook<br />
bits 8<br />
eps 30<br />
aeps 100<br />
<br />
one 0 0<br />
zero 0 0<br />
pre_data_bits 24<br />
pre_data 0x87EEFD<br />
gap 211994<br />
toggle_bit_mask 0x87EEFD01<br />
<br />
begin codes<br />
Repeat 0x01<br />
Menu 0x03<br />
Play 0x05<br />
Prev 0x09<br />
Next 0x06<br />
Up 0x0A<br />
Down 0x0C<br />
end codes<br />
<br />
end remote<br />
<br />
=== HFS partition sharing ===<br />
<br />
First, we need {{AUR|hfsprogs}} package from AUR. <br />
<br />
we have to list our partitions. Use<br />
<br />
fdisk -l /dev/sda<br />
<br />
example output:<br />
<br />
# fdisk -l /dev/sda<br />
Device Boot Start End Blocks Id Type<br />
/dev/sda1 1 26 204819 ee GPT<br />
/dev/sda2 26 13602 109051903+ af Unknown<br />
/dev/sda3 * 13602 14478 7031250 83 Linux<br />
/dev/sda4 14478 14594 932832+ 82 Linux swap / Solaris<br />
<br />
As we see, the "Unknown" partition is our OS X partition, which is located in {{ic|/dev/sda2}}.<br />
<br />
Create a "mac" folder in /media:<br />
<br />
# mkdir /media/mac<br />
<br />
Add at the end of ''/etc/fstab'' this line:<br />
<br />
/dev/sda2 /media/mac hfsplus auto,user,rw,exec 0 0<br />
<br />
Mount it :<br />
<br />
mount /media/mac<br />
<br />
and check it:<br />
<br />
ls /media/mac<br />
<br />
=== HFS+ Partitions ===<br />
<br />
HFS+ partitions, now the default in Mac OS X, are not fully supported by Linux and are mounted as read-only by default. In order to write to an HFS+ partition, it is necessary to disable journaling. This can be accomplished using Mac OS X Disk Utility. Refer to this [http://support.apple.com/kb/ht2355 Apple support page] for more information.<br />
<br />
===Home Sharing===<br />
<br />
'''''UID Synchronization'''''<br />
<br />
==== In OS X ====<br />
<br />
{{Note|It is strongly recommended that UID/GID manipulation be done immediately after a new user account is created, in OS X as well as in Arch Linux. If you installed OS X from scratch, then this operation is guaranteed to work after logging into your account for the first time.}}<br />
<br />
===== Step 1: change UID and GID(s) =====<br />
<br />
'''''Pre-Leopard'''''<br />
<br />
# Open '''NetInfo Manager''' located in the ''/Applications/Utilities'' folder.<br />
# If not done for you already, enable access to user account transactions by clicking on the closed lock at the bottom of the window, and entering your account password, or root password if you have created a root account.<br />
# Navigate to ''/users/<new user name>'' where <new user name> is the name of the account that will have read/write access to the folder that will be shared with the primary user in Arch.<br />
# Change the '''UID''' value to 1000 (the value used by default for first user created in Arch).<br />
# Also change the '''GID''' value to 1000 (the value used by default for user account creation in Arch).<br />
# Navigate to {{ic|/groups/<new user name>}}, automatically saving the changes you have made so far.<br />
<br />
{{Note|If you get an error message that the transaction is not allowed, log out and log back in.}}<br />
<br />
'''''Leopard'''''<br />
<br />
In Leopard, the '''NetInfo Manager''' application is not present. A different set of steps is required for UID synchronization:<br />
<br />
# Open '''System Preferences'''.<br />
# Click on '''Users & Groups'''.<br />
# Unlock the pane if not already done so.<br />
# Right-click on the desired user and select '''Advanced Options'''.<br />
# Write down the value of the '''User ID''' field, you will need it later on. Change both the UID and GID to match the UID and GID of the account wished to be shared with in Arch (1000 by default for the first user created in Arch).<br />
<br />
===== Step 2: change "Home" permissions =====<br />
<br />
# Open up '''Terminal''' in the {{ic|/Applications/Utilities}} folder.<br />
<br />
# Enter the following command to reclaim the permission settings of your home folder, replacing <your user name>, <your user group> and <your old UID> with the user name whose UID and GID values you just changed, the group name whose GID value you just changed and the old UID number, respectively.<br />
<br />
# find /User/<your user name> -user <your old UID> -exec chown <your user name>:<your user group> {} \;<br />
<br />
==== In Arch ====<br />
<br />
To synchronize your UID in Arch Linux, you are advised to perform this operation ''while creating a new user account''.<br />
It is therefore recommended that you do this as soon as you install Arch Linux.<br />
<br />
Now you must substitute Arch's home with Mac OS's home, by modify entries of {{ic|/etc/fstab}}.<br />
<br />
=== Avoid long EFI wait before booting ===<br />
<br />
If your Macbook spends 30 seconds with "white screen" before booting you need to tell the firmware where is the booting partition.<br />
<br />
Boot Mac OS X, if do not have it installed, you can use the install DVD (select language, then click Utilities->Terminal), or another MacBook with Mac OS X (connect the two computers via firewire or thunderbolt, start the other Macbook keeping pressed T, boot your MacBook keeping pressed Options).<br />
<br />
Either way, once you got a Mac OS X terminal running on your MacBook you need to execute, as root, a different command if the boot partition is EFI or it is not:<br />
<br />
# bless --device /dev/disk0s1 --setBoot # if the booting partition is EFI<br />
or<br />
# bless --device /dev/disk0s1 --setBoot --legacy # if the booting partition is not EFI<br />
<br />
(given that if your GRUB or EFI is on sda1, /dev/disk1s2 if it is on sdb2, etc). See also https://bbs.archlinux.org/viewtopic.php?pid=833215 and https://support.apple.com/kb/HT1533 .<br />
<br />
=== Mute startup chime ===<br />
<br />
If you forgot to mute before installing, you can still mute again if you have a Mac OS X install disk. Boot from it, select language, then click ''Utilities > Terminal'', and enter<br />
<br />
# /usr/bin/nvram SystemAudioVolume=%01<br />
<br />
(or whatever volume you want).<br />
<br />
== rEFIt ==<br />
<br />
{{Note|<br />
* You probably want to have a look at [http://www.rodsbooks.com/refind/ refind], which is some type of successor of rEFIt.<br />
* This is not a requirement. It only gives you a menu to choose between OS X and Arch Linux upon every boot.<br />
}}<br />
<br />
For more see, [http://refit.sourceforge.net/myths/ refit myths].<br />
<br />
In OS X, download the ".dmg" from [http://refit.sourceforge.net/ Refit Homepage] and install it.<br />
<br />
{{Note|If you have already partitioned your hard disk in preparation for the Arch installation, rEFIt may not be enabled by default. You will have to run the "enable.sh" script installed in /efi/refit/.}}<br />
<br />
Open up '''Terminal''' and enter:<br />
<br />
cd /efi/refit;<br />
./enable.sh<br />
<br />
=== Problems with rEFIt ===<br />
<br />
If you experience problems after the install of Arch or rEFIt, especially is the right OS is not showing up to boot to or if it dumps you at a GRUB prompt stuck like the following:<br />
<br />
GRUB>_<br />
<br />
Then have a look at this link:<br />
<br />
http://mac.linux.be/content/problems-refit-and-grub-after-installation<br />
<br />
It can give you a basic idea on how to boot off the Arch live cd, mount the problem Arch install, chroot, use gptsync, and reinstall GRUB. This is probably for more advanced users who can translate the commands from a debian system to an Arch system and also apply it to the partitions on their machine. Be careful not to install GRUB in the wrong spot.<br />
<br />
If you need a copy of gptsync you can wget it from here:<br />
http://packages.debian.org/sid/gptsync<br />
or try these, for 64 bit:<br />
<br />
wget http://ftp.us.debian.org/debian/pool/main/r/refit/gptsync_0.14-2_amd64.deb<br />
<br />
and for i386:<br />
<br />
wget http://ftp.us.debian.org/debian/pool/main/r/refit/gptsync_0.14-2_i386.deb<br />
<br />
since they are .deb packages you will need the program {{AUR|deb2targz}}.<br />
<br />
==== Mavericks upgrade breaks Arch boot option ====<br />
For some multi-boot users who utilize a separate Linux boot partition, the OSX Mavericks upgrade may overwrite the boot partition with Apple's own recovery boot filesystem. This breaks the Archlinux boot option in rEFIt/rEFInd. The best way to proceed in this situation is to abandon a separate boot partition and use the EFI system partition (ESP) to install the bootloader of your choice. It is also recommended that you use rEFInd instead of rEFIt as development on the latter has halted.<br />
<br />
Assuming grub2 as the bootloader:<br />
<br />
Use the Arch LiveCD to boot to a shell and [[Change Root|chroot]] to your broken Archlinux environment.<br />
<br />
Mount the ESP on /boot.<br />
<br />
Edit the fstab and remove the old boot partition and make ESP the new boot partition. Now mount the ESP as the new /boot parition.<br />
# mount -a<br />
<br />
Reinstall linux.<br />
# pacman -S linux<br />
<br />
Create a new initramfs and vmlinuz in /boot.<br />
# mkinitcpio -p linux<br />
<br />
Install grub.<br />
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck --debug<br />
<br />
Create a new grub.cfg file.<br />
# grub-mkconfig -o /boot/EFI/grub/grub.cfg<br />
<br />
Make sure that grub.cfg is in the same directory as grubx64.efi.<br />
<br />
Generate a new refind_linux.conf file in /boot simply by running mkrlconf.sh which comes with rEFInd.<br />
<br />
Exit the chroot environment.<br />
<br />
Reboot. You should see a new entry for Archlinux in rEFInd and it should boot to your Archlinux installation.<br />
<br />
== Model-specific information ==<br />
<br />
=== MacBook ===<br />
<br />
==== Mid 2007 13" - Version 2,1 ====<br />
<br />
{{Note|I used the 201212 ISO image.}}<br />
{{Warning|Current linux-3.8.x packages do not work with their EFI stub and refind-efi. Either use an older package ({{Pkg|linux}} 3.7.10-1 works with {{Pkg|refind-efi}} 0.6.8-1) or you may use a bootloader which does not rely on EFI stub. Similiar issues are reported with {{Pkg|gummiboot}}.}}<br />
<br />
Since older Macbooks have a 32bit EFI running, the usual installation image is not recognized. You need to either remove the UEFI support from the disc ([[Unified_Extensible_Firmware_Interface#Remove_UEFI_boot_support_from_ISO]]) or build a 32bit EFI version of the disc. The paragraphs below will take the first path to success, booting into BIOS mode and its pitfalls. For a try the other way round, read [[Unified_Extensible_Firmware_Interface#Create_UEFI_bootable_USB_from_ISO]] first.<br />
<br />
First prepare your harddisc according to your wishes. In this scenario it was a "Linux only" approach with<br />
<br />
/dev/sda1 HFS+ AF00 200M -> EFI boot system on Apple HFS+ partition<br />
/dev/sda2 ext4 8300 147G -> arch system<br />
/dev/sda3 swap 8200 1G -> swap<br />
<br />
The {{AUR|hfsprogs}} package contains the tools to handle HFS/HFS+ filesystems. The rEFInd bootloader recognizes it on its own. Usually the partition for the EFI bootloader is a FAT32 (vfat) partition. In this case I tried rEFIt first, which apparently needs the HFS+ filesystem to work, and kept it at that.<br />
<br />
The mount points are:<br />
<br />
/dev/sda2 -> /<br />
/dev/sda1 -> /boot/efi<br />
<br />
The bootloader in use was [http://www.rodsbooks.com/refind/index.html rEFInd] instead of rEFIt. To install it, the rEFInd homepage provides a good guide. The pitfall here is, that the system bootet in BIOS compatibility mode and not in EFI mode. You cannot therefore use {{ic|efibootmgr}}, because the EFI variables (even with 'modprobe efivars') are not available. While installing the system get {{AUR|mactel-boot}} from the [[AUR]]. The {{ic|hfs-bless}} utility comes in handy, when blessing the EFI bootloader. This is done by calling e.g.:<br />
<br />
hfs-bless /boot/efi/EFI/refind/refind.efi<br />
<br />
Since the Linux kernel does come with EFI stub enabled, it seemed a good idea to run it through a bootloader first. Especially if it runs not out of the box. But using rEFInd makes GRUB (or any other bootloader) obsolete, because of that.<br />
<br />
Not running out of the box is unfortunately the initial stage for the kernel. Since we installed it in BIOS mode, two modules are missing to grant access to the root partition while booting. Hence the 'initfsram-linux.img' can not be found/loaded. Adding the following modules to your 'MODULES' line in {{ic|/etc/mkinitcpio.conf}} solved this ([https://bbs.archlinux.org/viewtopic.php?pid=1139226#p1139226 original post]).<br />
<br />
{{hc|/etc/mkinitcpio.conf|2=<br />
MODULES="ahci sd_mod"}}<br />
<br />
Rebuild your kernel image:<br />
<br />
mkinitcpio -p linux<br />
<br />
The bootloader rEFInd can scan kernels even out of the '/boot/efi/...' directory and assumes an efi kernel even without the extension '.efi'. If you do not want to try out special kernels, this should work without the hassle to copy each kernel after building to some spot special.<br />
<br />
If you happen to get multiple entries for one boot image, it often results of a previous installation of a bootloader within the MBR. To remove that, try the following - taken from the [http://ubuntuforums.org/showpost.php?p=7828260&postcount=4 original post]. This is valid for GPT partitioned discs, so please check your environment and save your MBR first.<br />
<br />
# dd if=/dev/zero of=/dev/sda bs=440 count=1<br />
<br />
=== MacBook Pro ===<br />
<br />
* [[MacBookPro Retina]].<br />
<br />
=== MacBook Air===<br />
<br />
==== Mid 2013 13" - Version 6,2 ====<br />
[https://bbs.archlinux.org/viewtopic.php?id=165899 Dedicated forum thread]<br />
===== Installing and booting =====<br />
Booting from a normal 2013.6 USB key works fine, but I could not seem to get either GRUB or Syslinux working.<br />
<br />
I was able to boot by first installing Arch Linux following the Macbook guide at the wiki (having a separate FAT32 /boot partition). Skip the bootloader installation. <br />
<br />
Installing [http://www.rodsbooks.com/refind/getting.html rEFInd] from OS X (important!) and installing the EFI stub loader made me able to boot fine.<br />
<br />
[https://bbs.archlinux.org/viewtopic.php?id=165710 Dedicated thread].<br />
<br />
{{Note| Installing [http://www.rodsbooks.com/refind/getting.html rEFInd] from Linux (or from OS X, but to the esp) also works fine}}<br />
<br />
===== Arch Only Installation =====<br />
This method works without refind and uses grub to boot EFI. Partition as follows:<br />
<br />
/dev/sda1 200M Microsoft basic data<br />
/dev/sda2 256M Linux filesystem<br />
/dev/sda3 4G Linux swap<br />
/dev/sda4 108.6G Linux filesystem<br />
<br />
sda1 can also be a HFS+ partition for EFI. This example chooses to use FAT32 (vfat). Although swap is optional, it is highly recommended due to a suspend/resume bug where the monitor can only be displayed at 0% or 100%. Instead of sda4 for root and home, an alternative partition scheme would be to make sda4 as root and sda5 as home.<br />
<br />
Format and mount:<br />
<br />
mkfs.vfat -F 32 /dev/sda1<br />
mkfs.ext2 /dev/sda2<br />
mkswap /dev/sda3<br />
swapon /dev/sda3<br />
mkfs.ext4 /dev/sda4<br />
<br />
mount /dev/sda4 /mnt<br />
mkdir /mnt/boot<br />
mount/dev/sda2 /mnt/boot<br />
mkdir /mnt/boot/efi<br />
mount /dev/sda1 /mnt/boot/efi<br />
<br />
Finish the installation according to the [https://wiki.archlinux.org/index.php/Beginners'_Guide#Select_a_mirror Beginner's Guide] and skip anything after the bootloader. After you have generated your initramfs and set root passwd follow below to setup grub:<br />
<br />
pacman -S grub efibootmgr<br />
mount -t efivarfs efivarfs /sys/firmware/efi/efivars<br />
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug<br />
grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg<br />
cp /boot/efi/EFI/grub/grub.cfg /boot/grub/grub.cfg<br />
cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi}}<br />
<br />
Now you can exit/unmount/reboot:<br />
exit<br />
umount -R /mnt<br />
reboot<br />
<br />
===== Stability problems =====<br />
{{Note| Passing {{ic|<nowiki>libata.force=1:noncq</nowiki>}} to the kernel parameters solves the problem.}}<br />
This is the big worry for me. Every now and then my system hangs for a brief moment and everything involving net or disk access just hangs there for a while and then it seems to work. <br />
So far it only seems to happen when I run something disk- or CPU-intensive. Also had an occassion when I could not start X and just got this repeating all over my screen:<br />
<br />
ata1.00: failed command: WRITE FPDMA QUEUED<br />
ata1.00: cmd 61/08:f0:10:8c:c2/00:00:0b:00:00/40 tag 30 ncq 4096 out<br />
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)<br />
ata1.00: status: { DRDY }<br />
<br />
On the next attempt it worked fine.<br />
I did SMART short and long tests on my disk and they returned fine:<br />
<br />
[http://pastebin.com/vRE4T2Ld smartctl -a]<br />
<br />
There are some messages in my boot that indicate this could be disk and/or ACPI related.<br />
<br />
These are with 2013-06 ISO, 3.9.7-1 2013 x86_64 kernel.<br />
<br />
[http://pastebin.com/mjTJaPFa journalctl -b]<br />
Seems to only work with the headphone jack, not with the speakers.<br />
<br />
[http://pastebin.com/SdAcHuKh dmesg]<br />
<br />
===== Marvell ATA suspend bugs =====<br />
If you have 2013 Macbook Air with a Marvell 128 gig drive, you might get the following ata errors instead after pm-suspend/resumes:<br />
<br />
ata1: exception Emask 0x10 SAct 0x0 SErr 0x10000 action 0xe frozen<br />
ata1: irq_stat 0x00400000, PHY RDY changed<br />
ata1: SError: { PHYRdyChg }<br />
ata1: hard resetting link<br />
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)<br />
ata1.00: unexpected _GTF length (8)<br />
ata1.00: unexpected _GTF length (8)<br />
ata1.00: configured for UDMA/33<br />
ata1: EH complete<br />
<br />
Try what Patrick and Tejun figured out on the [https://bugzilla.kernel.org/show_bug.cgi?id=62351 linux bug]. I followed what Patrick describes with sata_alpm, and I haven't seen the issue since.<br />
<br />
===== WiFi =====<br />
WiFi does not work out of the box. Install {{AUR|broadcom-wl-dkms}} to connect to a network. <br />
<br />
===== Touchpad =====<br />
Since 3.10.3 kernel touchpad works perfectly with {{Pkg|xf86-input-synaptics}}.<br />
<br />
===== Audio =====<br />
As of Linux 3.12, sound works out of the box. If you do not get sound with only {{pkg|alsa-utils}}, you may need to create a /etc/asound.conf with below entries:<br />
<br />
defaults.pcm.card 1<br />
defaults.pcm.device 0<br />
defaults.ctl.card 1<br />
<br />
==== Mid 2012 13" — version 5,2 ====<br />
<br />
Kernel panics using default boot media under arch kernel 3.5. Adding <code>intremap=off</code> fixes this. Additionally, there are problems loading the <code>applesmc</code> module (meaning the temperature sensors, fan, and keyboard backlight do not work). These problems are fixed in the linux 3.6-rc4 mainline kernel (I have tested).<br />
<br />
==== Mid 2012 11.5" — Version 5,1 ====<br />
<br />
If you have issues with waking from sleep while in X11 such as a black screen or showing the console with a frozen mouse cursor then remove xf86-input-synaptics and install mtrack-git from aur. This fixed errors such as <br />
(EE) [dix] bcm5974: unable to find touch point 0<br />
and backtraces that causes X11 to crash. This might apply to Version 5,2 assuming they use the same trackpad.<br />
<br />
===== Installing using the Archboot 2012.06 image =====<br />
<br />
Several people have reported problems installing Arch Linux on the MBA version 5,2 (See [https://bbs.archlinux.org/viewtopic.php?id=144089 problems booting archlinux on a MacBook Air Mid 2012]). A common problem is that the screen is not detected and therefore goes black when the installer boots. To fix this problem one has to select the normal install (Not the LTS) during boot and press tab to edit the boot flags. Then add noapic flag to the boot line. This should fix the screen going black. Install the system as you normally would. It may help later in the configuration process if the support packages are installed already at this stage.<br />
<br />
When the install has finished again add the noapic flag to the GRUB boot line (if you use GRUB) and also add i915.diescreaming=1 (or perhaps i915.die). This should keep the screen from going black when booting the new system. After you enter the system the wireless driver should be loaded. If you installed the support packages during installation you should have the wifi-menu command. Run it and select the network you want to use. One could also use wpa_supplicant but wifi-menu is quite fast to use at this stage. Now you are ready to upgrade the system. As of writing there have been a lot of changes to Archlinux since the 2012.06 image of Archboot was released ([https://www.archlinux.org/news/filesystem-upgrade-manual-intervention-required-1/ filesystem] and [https://www.archlinux.org/news/the-lib-directory-becomes-a-symlink/ glibc]). Therefore the upgrade process can be a bit difficult. The current solution has sucessfully upgraded a standart archboot version to a up-to-date version as of October 2012 and this step should be obsolete in future releases of archboot.<br />
<br />
First ignore the new "big" changes to Arch Linux,<br />
<br />
pacman -Suy --ignore glibc,libarchive,curl,filesystem <br />
<br />
If this only upgrades pacman then run the command again. Remember to make sure that pacman is ignoring the packages you do not want upgraded now. Otherwise you may break the system and have to reinstall! Now upgrade to the new filesystem,<br />
<br />
pacman -S filesystem --force<br />
<br />
As described in [[DeveloperWiki:usrlib|Glibc upgrade guide]] there may be conflicts with installed packages that require the /lib directory. Follow the guide and remove any packages that use /lib. The stock 3.4.2 kernel from Archboot should be on this list so first upgrade this,<br />
<br />
pacman -S linux<br />
<br />
This may give some errors saying that the system may not boot because of missing modules. Ignore this warning for now. The stock install may also contain gcc in the /lib directory so also remove this if needed and any other packages that have conflicts. Now Glibc should be the only package in /lib so run the system upgrade and accept all changes, <br />
<br />
pacman -Su<br />
<br />
Finally reinstall the kernel so that it can find the correct modules.<br />
<br />
Now this command should not give any errors like last time. You can also reinstall gcc at this point. After a rebooted the system should startup and the new kernel should have fixed the problem with the screen going black. If want to boot Xorg then you may need to remove the i915.diescreaming=1 line from GRUB. If not then attach a external screen and try to fix the problem that way. Some people have reported commands that may help on the [https://bbs.archlinux.org/viewtopic.php?id=144089 forum].<br />
<br />
==== Mid 2011 — version 4,x ====<br />
<br />
Works out-of-the-box since kernel 3.2. It is recommended to use [[Archboot]], install [[GRUB]] and use EFI.<br />
<br />
==== Early 2008 — version 1,1 ====<br />
<br />
Everything works out of the box though you will need [https://www.archlinux.org/packages/core/x86_64/b43-fwcutter/ b43-fwcutter] (or simply [https://aur.archlinux.org/packages/b43-firmware/ b43-firmware]) for the wireless adapter to work.<br />
<br />
Since this model has only one USB port, you may find it easiest to install Arch with a powered USB hub. Plug a USB network adapter (wireless or ethernet adapter to plug into a USB port) and your Arch installation media into the USB hub.<br />
<br />
If you can't get any result by scanning wireless network after boot, unload modules <code>b43</code> and <code>ssb</code> and load them again:<br />
<br />
rmmod ssb<br />
rmmod b43<br />
modprobe b43<br />
<br />
There is a good chance you will find what's wrong with DMA from the dmesg log.<br />
<br />
Even if you can scan wireless networks after reloading the modules, it's still possible that you will only be able to connect to some networks, but not all of them. According to a more detailed discussion here: http://crunchbang.org/forums/viewtopic.php?id=17368, adding <code>pio=1,qos=0</code> options to the b43 module can solve this problem.<br />
<br />
I tested this for a 13' MacBook Air 1,1 with a BCM4321 chipset, and it works.<br />
<br />
== See also ==<br />
<br />
* http://www.netsoc.tcd.ie/~theorie/interblag/2010/01/30/installing-arch-linux-on-a-mac-pro/<br />
* http://allanmcrae.com/2010/04/installing-arch-on-a-macbook-pro-5-5/<br />
* http://allanmcrae.com/2012/04/installing-arch-on-a-macbook-pro-8-1/<br />
* http://linux-junky.blogspot.com/2011/08/triple-boot-archlinux-windows-7-and-mac.html</div>Codemachttps://wiki.archlinux.org/index.php?title=Mac&diff=293060Mac2014-01-16T02:03:31Z<p>Codemac: /* Stability problems */</p>
<hr />
<div>[[Category:Apple]]<br />
[[de:ArchLinux auf einem MacBook]]<br />
[[fr:MacBook]]<br />
[[it:MacBook]]<br />
[[zh-CN:MacBook]]<br />
{{Related articles start}}<br />
{{Related|Official Arch Linux Install Guide}}<br />
{{Related|Beginners Guide}}<br />
{{Related|General Recommendations}}<br />
{{Related|MacBook 4,2 (late 2008)}}<br />
{{Related|MacBook 5,2 (early-mid 2009)}}<br />
{{Related|MacBook Pro 7,1}}<br />
{{Related|MacBook Pro 8,1 / 8,2 / 8,3 (2011)}}<br />
{{Related|MacBook Pro 9,2 (Mid-2012)}}<br />
{{Related articles end}}<br />
Installing Arch Linux on a MacBook (Pro) is quite similar to installing it on any other computer. However, due to the specific hardware configuration on a MacBook, there are a few deviations and special considerations which warrant a separate guide. For more background information, please see the [[Installation Guide]], [[Beginners' Guide]]. This guide contains installation-instructions that can be used on any Apple computer whose hardware is supported by the Linux kernel. Please see 'related' pages (on the top right of this page) for model-specific tips and troubleshooting.<br />
<br />
== Overview ==<br />
<br />
Specifically, the procedure for installing Arch Linux on a MacBook is:<br />
<br />
# '''[[#Installation of Mac OS X and firmware update|Install OS X]]''': Regardless of the desired end-configuration, it helps to start from a clean install of OS X.<br />
# '''[[#Installation of Mac OS X and firmware update|Firmware update]]''': This should help reduce errors and provide newer features for the hardware.<br />
# '''[[#Partitions|Partition]]''': This step either resizes or deletes the OS X partition and creates partitions for Arch Linux.<br />
# '''[[#Installation|Install Arch Linux]]''': The actual installation procedure.<br />
# '''[[#Post-install configuration|Post-install configuration]]''': MacBook specific configuration.<br />
<br />
{{Tip|rEFIt is a popular bootloader for EFI-firmware computers (including Macs). It can be installed at any time during the installation. For instructions, please see [[#rEFIt]]. }}<br />
<br />
== Installation of Mac OS X and firmware update ==<br />
<br />
[http://www.apple.com Apple] has excellent instructions for installing OS X. Follow their instructions. Once OS X is installed, go to ''Apple Menu > Software Update'' and update all software. Once this has run, you will need to reboot your computer. Do this, and then run '''Software Update''' again to check to make sure that all updates have been installed.<br />
<br />
If you are not going to have OS X installed, make backups of these files:<br />
<br />
/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport<br />
<br />
You will need this file later for iSight functionality.<br />
<br />
/Library/ColorSync/Profiles/Displays/<FILES HERE><br />
<br />
You will need the file(s) here for adjusting the [[#Color Profile|color profile]].<br />
<br />
== Partitions ==<br />
<br />
The next step in the installation is to re-partition the hard drive. If OS X was installed using the typical procedure, then your drive should have a GPT format and the following partitions:<br />
<br />
* '''EFI''': a 200 MB partition at the beginning of the disk.It is often read as '''msdos''' or '''FAT''' by some partitioning tools and usually labeled ''#1''.<br />
* '''Mac OS X''': the ''(HFS+)'' partition that should take up all of the remaining disk space. Usually labeled ''#2''.<br />
* '''Recovery''': A recovery partition (only for Mac OS X 10.7+).<br />
How to partition depends on how many operating systems you want install. The following options will be explained:<br />
<br />
* [[#Arch Linux only|Arch Linux only]] for single boot.<br />
* [[#Mac OS X with Arch Linux|OS X with Arch Linux]] for dual boot.<br />
<br />
If you do not know which option to pick, we recommend the dual boot so you can still return to OS X whenever you want.<br />
<br />
=== Arch Linux only ===<br />
<br />
This situation is the easiest to deal with. Mostly, partitioning is the same as any other hardware that Arch Linux can be installed on. The only special consideration is the MacBook firmware boot sound. To ensure that this sound is off: '''mute''' the volume in OS X before continuing further. The MacBook firmware relies on the value in OS X, if available. Note that if you choose to get rid of the OS X partition, there is no easy way to update your machines firmware unless you use an external drive to boot OS X.<br />
You can boot in EFI mode (recommended) or bios-compatibility mode, if in doubt choose EFI.<br />
<br />
To install using EFI, follow the [[Unified Extensible Firmware Interface#Create UEFI bootable USB from ISO|instruction to make a EFI bootable media]]. Once done double check that your USB key actually boots in EFI mode [[Unified Extensible Firmware Interface#UEFI Variables Support|checking the EFI kernel variables]]. You will need to format the EFI partition with the {{ic|hfsplus}} filesystem ({{AUR|hfsprogs}}) instead of vfat otherwise {{AUR|mactel-boot}} will fail, and in Macbooks [[Unified Extensible Firmware Interface#Non-Mac UEFI systems|you cannot use {{ic|efibootmgr}}]].<br />
<br />
==== EFI ====<br />
<br />
*'''This requires [[GRUB]] to work'''<br />
* Boot installation medium and switch to a free tty.<br />
* Run '''cgdisk''' ({{Pkg|gptfdisk}} package).<br />
* Create the necessary partitions.<br />
<br />
{{Note|<br />
* The swap partition is optional, on machines with a RAM of size 4GB or more, good performance can be expected without a swap partition. Also, a '''swap file''' can be created later, see [[Swap#Swap file|Swap file]].<br />
* For more information on partitioning, see [[Beginners'_Guide#Partitioning hard disks: General information|Partitioning hard disks: General information]].<br />
}}<br />
Simple example (no LVM, crypto):<br />
partition mountpoint size type label<br />
/dev/sda1 /boot/efi 200MiB vfat EFI<br />
/dev/sda2 /boot 100MiB ext2 boot<br />
/dev/sda3 - adjust swap swap<br />
/dev/sda4 / 10GiB ext4 root<br />
/dev/sda5 /home remain. ext4 home<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
==== BIOS-compatibility ====<br />
<br />
* Boot installation medium and switch to a free tty.<br />
* Run '''parted'''. The simplest way is to change the partition table to '''msdos''' and then partition as normal. GRUB is compatible with GPT.<br />
<br />
* Create the necessary partitions.<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
=== Mac OS X with Arch Linux ===<br />
<br />
The easiest way to partition your hard drive, so that OS X and Arch Linux will co-exist, is to use partitioning tools in OS X and then finish with Arch Linux tools.<br />
<br />
{{Warning|It is highly recommended that this only be attempted after a clean install of OS X. Using these methods on a pre-existing system may have undesired results.}}<br />
<br />
{{Note|If you have any problems, try using [http://gparted.sourceforge.net/ gparted] (i.e. ''instead'' of using Disk Utility and/or cgdisk). It is capable of shrinking the OS X partition and creating Linux partitions ready for installation.}}<br />
<br />
'''Procedure''':<br />
* In OS X, run '''Disk Utility.app''' (located in {{ic|/Applications/Utilities}})<br />
<br />
* Select the drive to be partitioned in the left-hand column (not the partitions!). Click on the '''partition''' tab on the right.<br />
<br />
* Select the volume to be resized in the '''Volume scheme'''.<br />
<br />
* Decide how much space you wish to have for your OS X partition, and how much for Arch Linux. Remember that a typical installation of OS X requires around 15-20 GiB, depending on the number of software applications and files.<br />
<br />
* Finally, type the new (smaller) size for the OS X partition in the size box and click '''Apply'''. This will create a new partition out of the empty space. You will delete this partition later.<br />
<br />
{{Note|if you wish to have a shared partition between OS X and Arch Linux, then additional steps will need to happen here. Please see [[#HFS partition sharing]].}}<br />
<br />
* If the above completed successfully, then you can continue. If not, then you may need to fix your partitions from within OS X first.<br />
<br />
* Boot the Arch install CD by holding down the alt key during Boot. Follow one of the procedures below according to your choice of boot-method.<br />
<br />
==== EFI ====<br />
<br />
* Run '''cgdisk'''<br />
<br />
* Delete the partition you made in Disk Utility.app and create the necessary partitions for Arch Linux. OS X likes to see a 128 MiB gap after partitions, so when you create the first partition after the last Mac OS X-partition, type in '''+128M''' when cgdisk asks for the first sector for the partition. A simple example (no LVM, crypto):<br />
{{Note|<br />
* The swap partition is optional, on machines with a RAM of size 4GB or more, good performance can be expected without a swap partition. Also, a '''swap file''' can be created later, see [[Swap#Swap file]].<br />
* The easiest dual-boot option is to install refind from inside OSX, to its root directory (default for install.sh). Following that, copy the driver folder from the installation tarball into the new refind location, and uncomment the lines "scan_all_linux_kernels" and "also_scan_dirs" options in refind.conf. Configuration of boot options can then be done from a refind_linux.conf in Arch's /boot directory.<br />
* If you want to be able to boot GRUB from the Apple boot loader, you can create a small hfs+ partition (for convenience, use OS X to format it in Disk Utility.app afterwards). Follow the GRUB EFI install procedure, and mount your {{ic|/boot/efi}} directory to the hfs+ partition you created. Finally, finish up again in OS X by blessing the partition. This will set GRUB as the default boot option (holding alt at startup goes to the mac boot options screen still. See http://mjg59.dreamwidth.org/7468.html)<br />
* For more information on partitioning, see [[Partitioning]].<br />
* OS X's EFI partition can be shared with archlinux, making the creation of an additional EFI partition dedicated to arch completely optional<br />
}}<br />
partition mountpoint size type label<br />
/dev/sda1 /boot/efi 200MiB vfat EFI<br />
/dev/sda2 - ? hfs+ Mac OS X<br />
/dev/sda3 - ? hfs+ Recovery<br />
/dev/sda4 - 100MiB hfs+ Boot Arch Linux from the Apple boot loader (optional)<br />
/dev/sda5 /boot 100MiB boot boot<br />
/dev/sda6 - ? swap swap (optional)<br />
/dev/sda7 / 10GiB ext4 root<br />
/dev/sda8 /home remaining ext4 home<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
==== BIOS-compatibility ====<br />
<br />
* Run '''parted''' as root.<br />
<br />
* Delete the empty space partition and partition the space as you would for any other installation. Note that MBR is limited to 4 primary partitions (including the efi partition). That leaves 2 primary partitions for arch. One strategy is to have a system and home partition, and use a swap file (I have not tried to use logical partitions). Another is to dedicate one partition to a shared partition (see below).<br />
<br />
* Next, create new filesystems on those partitions which need them, especially the partition which will contain /boot. If you are not sure how to do this using {{ic|mkfs.ext2}} (or whatever), run {{ic|/arch/setup}} and work through until you get to Prepare Hard Drive and use the "Manually configure block devices..." option, then exit the installer. This is necessary so that rEFIt will set the right partition type in the MBR in the next step (without an existing filesystem, it seems to ignore the partition type set by parted), without which GRUB will refuse to install to the right partition.<br />
<br />
* At this point you should reboot your computer and have rEFIt fix the partition tables on your hard drive. (If you do not do this, you may have to reinstall GRUB later on in order to have your Mac recognize the Linux partition.) When you are into the rEFIt menu, select '''update partition table''', then press Y. Reboot.<br />
<br />
* Done, you can continue to [[#Installation]]<br />
<br />
=== Mac OS X, Windows XP, and Arch Linux triple boot ===<br />
<br />
This may not work for everyone but it has been successfully tested on a Macbook from late 2009.<br />
<br />
The easiest way to partition your hard drive, so that all these operating systems can co-exist, is to use disk utility in Mac OS X, use the formatter on windows XP install CP, and then finish with Arch Linux tools.<br />
<br />
{{Warning|It is highly recommended that this only be attempted after a clean install of Mac OS X. Using these methods on a pre-existing system may have undesired results. At least back your stuff up with timemachine or clonezilla before you begin.}}<br />
<br />
'''Procedure''':<br />
* In Mac OS X, run '''Disk Utility''' (located in {{ic|/Applications/Utilities}}).<br />
<br />
* Select the drive to be partitioned in the left-hand column (not the partitions!). Click on the '''partition''' tab on the right.<br />
<br />
* Select the volume to be resized in the '''volume scheme.'''<br />
<br />
* Decide how much space you wish to have for your Mac OS X partition, how much fo XP, and how much for Arch Linux. Remember that a typical installation of Mac OS X requires around 15-20 GiB, and XP about the same, depending on the number of software applications and files. Something like OSX 200Gb, XP 25Gb, Arch 25Gb should be fine.<br />
<br />
* Put your decisions into action by pressing the + button and adding the new partitions, Label them as you like and make sure that your XP partition is the last one on the disk and is formatted for FAT32. It is probably best to have Arch formatted in HFS format as to not confuse you later, it will be reformatted anyway.<br />
<br />
So in linux terms your partitions will be something like:<br />
<br />
:*sda (disk)<br />
:*sda1 (Mac boot partition - you cannot see this one in OSX)<br />
:*sda2 (OSX install in HFS+)<br />
:*sda3 (Arch install temporarly in HFS)<br />
:*sda4 (XP install in FAT32)<br />
<br />
* Finally, click '''apply'''. This will create a new partition out of the empty space.<br />
<br />
{{Note|Using this method you may not be able to have a shared partition between Mac OS X and Arch Linux, this is because the mac will only allow for 4 active partitions. You will however be able to mount a HFS partition in Arch for one workaround. There are other workarounds possible also.}}<br />
<br />
* If the above completed successfully, you can continue. If not, then you may need to fix your partitions from within Mac OS X first.<br />
<br />
* You will not be needing boot camp this way, the program rEFIt is much more flexible (though not as flexible as GRUB). Download and install rEFIt [[http://refit.sourceforge.net/]]<br />
<br />
* Go into a terminal in OS X and perform the following, this will enable the rEFIt boot manager. <br />
<br />
cd /efi/refit<br />
./enable.sh<br />
<br />
* Reboot to check the rEFIt is working, it should appear on boot. When it comes up go to the rEFIt partition manager and agree to the changes.<br />
<br />
* Put your XP install CD and boot it with rEFIt - You may have to reboot a few times until it is recognized by the boot loader. Install XP and once it is installed use the OSX install CD to get your drivers running nicely in XP.<br />
** Note: when installing XP make sure you select your XP partition and format it again inside the XP installer. If you do not reformat it will not work.<br />
<br />
* Boot the Arch install CD, log in as root and run {{ic|# /arch/setup}}.<br />
<br />
* Follow the install as normal but note that you will have to tell that arch installer to mount sda3 as the root partition and format it as ext3, there will not be a /boot or swap partition so ignore those warnings.<br />
<br />
* At this point, if you are dual booting, you should reboot your computer and have rEFIt fix the partition tables on your hard drive. (If you do not do this, you may have to reinstall GRUB later on in order to have your Mac recognize the Linux partition.) When you are into the rEFIt menu, select '''update partition table''', then press Y.<br />
# reboot<br />
<br />
* Done! You can continue to [[#Installation]] but make sure you read [[#Booting directly from GRUB]] for the stage "* (for booting with EFI) After the install boot loader stage, exit the installer and install GRUB."<br />
<br />
== Booting directly from GRUB ==<br />
<br />
=== Installing GRUB to EFI partition directly ===<br />
<br />
* If you would like to use GRUB as your main bootloader and use the "boot while holding the Alt/Option key" method to go back to Mac OS X rather than using alternatives such as rEFIt (http://refit.sourceforge.net/, mentioned previously in [[#BIOS-compatibility]] and [[#Mac OS X, Windows XP, and Arch Linux triple boot]]) then you must install {{Pkg|grub}} to your Mac's '''already-existing''' EFI partition (see below). <br />
<br />
{{Note| These instructions are known to work on a Macbook Pro (Early 2011). Please read the procedure carefully '''as well as the details following it'''.}}<br />
<br />
'''Procedure''':<br />
<br />
* Install {{Pkg|grub}}<br />
<br />
* Make a directory named {{ic|efi}} in {{ic|/boot}} <br />
<br />
* Mount the '''already-existing''' EFI partition on your Mac to this {{ic|/boot/efi}} directory<br />
<br />
* Install GRUB to this directory<br />
<br />
* Make a directory named {{ic| locale}} in {{ic| /boot/grub}}<br />
<br />
* Copy {{ic| grub.mo}} from {{ic| /usr/share/locale/en\@quot/LC_MESSAGES/}} to {{ic| /boot/grub/locale}} <br />
<br />
* Generate a configuration for GRUB<br />
<br />
* Done! GRUB will now start on reboot and you can boot into your newly installed Archlinux.<br />
<br />
* Remember to hold ALT/Option key '''while''' starting your computer if you want to boot back into Mac OS X.<br />
<br />
'''Details (quoted from [[GRUB_EFI_Examples#M5A97]]):'''<br />
<br />
Finish the standard Arch install procedures, making sure that you install {{Pkg|grub}} and partition your boot hard disk as GPT.<br />
<br />
From [[Grub#Install_to_UEFI_system_partition]]:<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 />
Where X is your boot hard disk and Y is the efi partition you created earlier.<br />
<br />
Install GRUB UEFI application to and its modules to {{ic|/boot/grub/x86_64-efi}} 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 />
Generate a configuration for GRUB<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
=== Using blessing ===<br />
<br />
It is possible to boot directly from GRUB in EFI mode without using rEFIt through what is known as "blessing" after placing GRUB on a '''separate partition'''. These instructions are known to work on a Macbook 7,1. It is advisable to host GRUB on either a FAT32 or HFS+ partition, but ext2 or ext3 may also work. GRUB's appleloader command does not currently work with the 7,1, but support can be added with the patch available [https://savannah.gnu.org/bugs/index.php?33185 here].<br />
<br />
After the GRUB install is in the desired location, the firmware needs to be instructed to boot from that location. This can be done from either an existing OS X install or an OS X install disk. The following command assumes that the GRUB install is in {{ic|/efi/grub}} on an existing OS X partition:<br />
# bless --folder /efi/grub --file /efi/grub/grub.efi<br />
<br />
=== Compilation ===<br />
<br />
Some models may need EFI_ARCH set to i386.<br />
bzr branch --revision -2 bzr://bzr.savannah.gnu.org/grub/trunk/grub grub<br />
cd grub<br />
./autogen.sh<br />
patch -p1 < appleloader_macbook_7_1.patch<br />
export EFI_ARCH=x86_64<br />
./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix=""<br />
make<br />
cd grub-core<br />
../grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot<br />
cp grub.efi *.mod *.lst yourinstalllocation<br />
<br />
=== Example grub.cfg ===<br />
<br />
{{out of date|reason=kernel26}}<br />
Note that there may be a better method for loading Windows.<br />
{{bc|1=<br />
set debug=video<br />
insmod efi_gop<br />
<br />
menuentry "Arch Linux EFI" {<br />
set root=(hd0,3)<br />
#search --set -f /boot/vmlinuz26-efi-physical<br />
#loadbios /boot/vbtrace_bios.bin /boot/int10.bin<br />
linux /boot/vmlinuz26-efi-physical root=/dev/sda3 reboot=pci resume=/dev/sda3 resume_offset=151552<br />
initrd /boot/kernel26-efi-physical.img<br />
}<br />
<br />
menuentry "MacOSX" {<br />
set root=(hd0,2)<br />
# Search the root device for Mac OS X's loader.<br />
#search --set -f /usr/standalone/i386/boot.efi<br />
# Load the loader.<br />
chainloader /usr/standalone/i386/boot.efi<br />
}<br />
<br />
menuentry "Windows 7" {<br />
appleloader HD<br />
}<br />
<br />
menuentry "Boot from CD" {<br />
appleloader CD<br />
}<br />
<br />
menuentry "Boot from USB" {<br />
appleloader USB<br />
}<br />
}}<br />
<br />
== Installation ==<br />
<br />
{{Note|This section is only required if you want to have Mac OS X installed along with Arch Linux. If not, follow the steps in the official install guide, then skip to [[#Post-install configuration]].}}<br />
<br />
* Boot from the Arch Linux install CD or the latest [[Archboot]] iso (unofficial) depending on your needs. For a USB that is bootable by Apple's UEFI, you will need to follow these steps to [[Unified_Extensible_Firmware_Interface#Create_UEFI_bootable_USB_from_ISO|create a UEFI bootable USB.]]<br />
{{Note|<br />
* On MacBook Pro 7,1, I had an error booting the installation media Version 2012.12.01: "unable to handle kernel NULL pointer dereference at 0000000000000010" during pacpi_set_dmamode. To fix this problem, boot with the option: acpi&#61;off. After chrooting, add MODULES&#61;"ata_generic" into /etc/mkinitcpio.conf and execute mkinitcpio -p linux, see: [[Installation_Guide#Configure_the_system|Installation Guide, 9 Configure the system]].<br />
* Some MacBook users report strange keyboard output such as long delays and character doubling. To fix this problem, boot with the following options: arch noapic irqpoll acpi&#61;force}}<br />
<br />
* Log in as '''root'''<br />
<br />
{{Note|If you want to do a netinstall rather than installing the possibly outdated packages on the iso and depend on a wireless network that is encrypted, you should change to a free tty and connect manually before proceeding, see [[Beginners_Guide#Setup wireless in the live environment (optional)|Beginners_Guide]]}}<br />
<br />
* Proceed through the installation as described in the [[Official Arch Linux Install Guide]] '''except''' in the following areas:<br />
** In the [[Official Arch Linux Install Guide#Prepare Hard Drive|prepare hard drive]] stage, do only the [[Official Arch Linux Install Guide#Manually configure block devices, filesystems and mountpoints|set filesystem mountpoints]] step, taking care to assign the correct partitions. Partitions have already been created if you followed [[#Partition]]<br />
** '''(for booting with EFI''') After the [[Official Arch Linux Install Guide#Install Bootloader|install boot loader]] stage, exit the installer and install [[GRUB]].<br />
** '''(for booting with BIOS-compatibility)''' In the [[Official Arch Linux Install Guide#Install Bootloader|install boot loader]] stage, edit the menu.lst file and add '''reboot=pci''' to the end of the '''kernel''' lines, for example: {{bc|1=kernel /vmlinuz26 root=/dev/sda5 ro reboot=pci}} This will allow your MacBook to reboot correctly from Arch.<br />
** '''(for booting with BIOS-compatibility)''' Also in the [[Official Arch Linux Install Guide#Install Bootloader|install boot loader]] stage, install GRUB on whatever partition that {{ic|/boot}} is on. {{Warning|Do not install GRUB onto ''/dev/sda'' !!! Doing so is likely to lead to an unstable post-environment.}}<br />
** In the [[Official Arch Linux Install Guide#Configure System|configure system]] stage, edit /etc/mkinitcpio.conf and add the '''usbinput''' hook to the '''HOOKS''' line somewhere after the '''autodetect''' hook. This will load the drivers for your keyboard in case you need to use it before Arch boots (e.g. entering a [[LUKS]] password or using the troubleshooting shell).<br />
<br />
* When the install process is complete, reboot your computer.<br />
<br />
* If using optical media, hold down the eject key as your MacBook starts, this should eject the Arch Linux install disk.<br />
<br />
* If dual-booting Mac OS X and Arch Linux, hold down the alt (option) key while the system boots to use the Mac bootloader to select which OS to boot.<br />
<br />
=== Additional steps for Arch Linux only install===<br />
<br />
GRUB seems to be more complicated and less straightforward than rEFInd on EFI environments, so it's usually the prefered choice. It will also add entries for bootable devices if they are plugged in, and requires no rebuild/redeployments when the configuration is updated.<br />
<br />
==== GRUB ====<br />
<br />
{{Note|Do this after you tested that your setup is working. This procedure has been tested on a MacBook 4,1 with an msdos partition table. It may not work on newer versions. Please update if it works for you.}}<br />
* In order for Linux to boot up straight away, you will have to tell the firmware that your /boot partition is bootable, or you will always have to hold down the option (alt) key whenever you want to start up your computer.<br />
* In order to do this you will need the original Mac OS X install disk<br />
* Boot into it (you may need to hold the option (alt) key during boot again to access it)<br />
** Open Terminal.app (found under the Utilities menu in the menu bar), and type:<br />
# diskutil list<br />
** Find the device name of your /boot partition (this is your root (/) partition, if you do not have it separate). The format should be /dev/disk0sX, where X is a number from 1 to infinity<br />
** If using EFI type (replace X with the appropriate number):<br />
# bless --folder=/Volumes/efi --file=/Volumes/efi/efi/arch/grubx64.efi --setBoot<br />
# bless --mount=/Volumes/efi --file=/Volumes/efi/efi/arch/grubx64.efi --setBoot<br />
** If using BIOS-compatibility type (replace X with the appropriate number):<br />
# bless --device /dev/disk0sX --setBoot --legacy --verbose<br />
* Remove the installation disk and restart your computer<br />
* After a few seconds of grey screen, your boot loader screen should appear automatically.<br />
<br />
==== rEFInd ====<br />
<br />
{{Note|This has been tested on a 2013 MBA. There is no reason for it not to work on older models.}}<br />
<br />
* Install [https://www.archlinux.org/packages/extra/x86_64/refind-efi/ rEFInd] from [extra].<br />
* Install rEFInd into the EFI partition:<br />
# refind-install<br />
* Create configuration files for the linux images in /boot:<br />
# refind-mkrlconf<br />
* Edit /boot/refind_linux.conf if you need to add any additional kernel parameters.<br />
<br />
== Post-install configuration ==<br />
<br />
=== Xorg ===<br />
<br />
Install and configure Xorg by following the [[Xorg]] article.<br />
<br />
==== Video ====<br />
<br />
Different MacBook models have different graphic cards.<br />
<br />
To see which graphics card you have type:<br />
<br />
$ lspci | grep VGA<br />
<br />
* If it returns a string containing '''intel''' you only need the {{Pkg|xf86-video-intel}} driver. Intel-based MacBooks work out-of-the-box.<br />
<br />
* If it returns '''nVidia''', read [[NVIDIA]].<br />
<br />
* Otherwise if it returns '''ATI''' or '''AMD''', read [[ATI]].<br />
<br />
===== NVIDIA note =====<br />
<br />
{{Tip|MBP 6.2 - With the proprietary [[NVIDIA]] drivers, support for [[NVIDIA#Enabling Pure Video HD (VDPAU/VAAPI)|PureVideo HD]] is available for hardware video decoding. }}<br />
<br />
For MacBooks with NVIDIA graphics, for the backlight to work properly you may need the {{AUR|nvidia-bl}} package found in the [[AUR]].<br />
<br />
{{Tip|<br />
* If backlight control does not work after installing nvidia-bl, you should [[Kernel modules#Blacklisting|blacklist]] apple_bl kernel module.<br />
* Alternatively, you can choose to use the {{AUR|pommed-light}} package. If you do so, you may wish to change the step settings in {{ic|/etc/pommed.conf.mactel}} to something around 5000-10000 depending on how many levels of brightness you desire. The max brightness is around 80000, so take that into account.}}<br />
<br />
===== Macbook 6.2+ - EFI =====<br />
<br />
As of 4/30/2011, the proprietary nvidia driver is not known to work under X with this model in efi mode. The nouveau driver should work out of the box, but dri should be installed from the [https://aur.archlinux.org/packages/mesa-git/PKGBUILD mesa-git] package.<br />
<br />
===== MacbookPro 5.5, NVIDIA and secondary display =====<br />
<br />
As of January 1 2011, the latest NVIDIA drivers (290.10) might not work properly when a secondary display is used (tested with TwinView), NVIDIA's current [http://www.nvnews.net/vbulletin/showthread.php?t=122606 long-live supported] 275xx drivers seem to work fine. Install {{AUR|nvidia-275xx}} and {{AUR|nvidia-utils-275xx}}, and possibly {{AUR|lib32-nvidia-utils-275xx}} if you are on x86_64 system and want 32-bits support.<br />
<br />
MacbookPro 5.5 has an NVIDIA 9400m graphics card. This problem might apply to other devices as well.<br />
<br />
==== Touchpad ====<br />
<br />
The touchpad should have basic functionality by default. A true multitouch driver which behaves very similarly to native OSX can be installed from the AUR: {{AUR|xf86-input-multitouch-git}}. It supports 1, 2 and 3 finger gestures, including differentiation between horizontal and vertical 3 finger swipe. Additional details are available at [http://bitmath.org/code/multitouch/ the driver's project page].<br />
<br />
xf86-input-multitouch-git does not support any sort of configuration without editing the driver's source. Some users are also experiencing issues with false clicks from palm touches. There is now a much more configurable fork available as {{AUR|xf86-input-mtrack-git}}. Configuration options are documented in the [https://github.com/BlueDragonX/xf86-input-mtrack readme].<br />
<br />
The following mtrack options work well on a Macbook 7,1:<br />
<br />
Option "Thumbsize" "50"<br />
Option "ScrollDistance" "100"<br />
<br />
Probably you need also to add:<br />
<br />
MatchDevicePath "/dev/input/event10"<br />
<br />
'''Natural scrolling:''' To configure natural two finger scrolling similar to [http://www.apple.com/au/osx/what-is/gestures.html#gallery-gestures-scroll Mac OSX], refer to [[Touchpad Synaptics#Natural scrolling]]. If you are using GNOME, it will override these settings - in this case refer to [[GNOME#Natural_scrolling_touchpad]].<br />
<br />
'''Special Note About Older Macbook Models (confirmed on MacBook 2,1):''' On older Macbook models (pre-multitouch), the touchpad will not function properly until you install the xf86-input-synaptics package. Please see [[Touchpad Synaptics]] for more information on installing and configuring this package.<br />
<br />
'''Note on Macbook Pro(5,5):''' I found it is much simpler to use the xf86-input-synaptics{{Pkg|xf86-input-synaptics}} in Extra. Although it does not have much function as 3 finger swipe, this driver provides faster response. Gsynaptics{{Pkg|gsynaptics}} also provides a simple GUI config. Below is a Xorg config file /etc/X11/xorgconfig.d/60-synaptics.conf for reference only.<br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "SHMConfig" "on"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "3"<br />
Option "TapButton3" "2"<br />
Option "PalmDetect" "on"<br />
Option "VertEdgeScroll" "off"<br />
Option "HorizEdgeScroll" "off"<br />
Option "CornerCoasting" "off"<br />
Option "EdgeMotionUseAlways" "off"<br />
Option "AreaLeftEdge" "10"<br />
Option "AreaRightEdge" "1270"<br />
EndSection<br />
'''OS X like MultiTouch Gestures''' ''currently broken due to newer synaptic drivers!'' For users looking to add more of OS X's multitouch gestures to Arch, [https://github.com/iberianpig/xSwipe xSwipe] is a highly customisable, light weight pearl script, which does just that. Once installed and configured (see xSwipe wiki on Github) I would recommend adding xSwipe as a [[Autostarting|start up item]].<br />
<br />
==== Keyboard ====<br />
<br />
MacBook keyboard works by default. For swaping fn keys with Fx keys see [[Apple Keyboard]].<br />
<br />
To enable it you can map with right application like '''xbindkeys''' or through DE preferences; but another very good way, that we recommend, is to install {{AUR|pommed}} from the [[AUR]].<br />
<br />
Edit the {{ic|/etc/pommed.conf}} according to your hardware on MacBook, building<br />
it from {{ic|/etc/pommed.conf.mac}} or {{ic|/etc/pommed.conf.ppc}} example files.<br />
<br />
Note that you can also run it without a configuration file, the defaults may work for you. Then enable and start pommed [[Systemd]] service.<br />
<br />
systemctl enable pommed<br />
systemctl start pommed<br />
<br />
{{Tip|if you are using Gnome or KDE you can easily configure ''3rd level functionality'', ''multimedia key'', etc. in Keyboard Preferences.}}<br />
<br />
{{Note|See the [[Xorg input hotplugging]] page for other configuration information.}}<br />
<br />
===== Keyboard Backlight =====<br />
<br />
The keyboard backlight is controlled by {{ic|/sys/class/leds/smc::kbd_backlight}}. Write the desired value to {{ic|brightness}} in that directory.<br />
<br />
You may also use [https://aur.archlinux.org/packages/kbdlight/ kbdlight] to control keyboard backlight though scripts or by running it via sxhkd or xbindkeys. It has the advantage of allowing keyboard light-level changes without being root.<br />
<br />
====== NVIDIA note ======<br />
<br />
If the brightness does not function correctly through pommed, make sure you have installed the {{AUR|nvidia-bl}} package and insert<br />
<br />
find . -name "*" -exec sed -i 's/mbp_backlight/nvidia_backlight/' '{}' \;<br />
<br />
into the second line of the pommed PKGBUILD build() function and remake the package. From [https://bbs.archlinux.org/viewtopic.php?id=105091 this forum post].<br />
<br />
Another possible solution is to modify the pommed PKGBUILD build():<br />
<br />
find . -name "*" -exec sed -i 's/nvidia_backlight/apple_backlight/' '{}' \;<br />
<br />
If the previous does not work try the following,<br />
<br />
run nvidia-settings, edit the file '/etc/X11/xorg.conf' and add this line into the Device section:<br />
<br />
Option "RegistryDwords" "EnableBrightnessControl=1"<br />
Save and reboot and check backlight buttons work.<br />
More information available at [https://help.ubuntu.com/community/MacBookPro5-5/Precise#LCD ubuntu macbook pro 5,5]<br />
<br />
=== Wi-Fi ===<br />
<br />
Different MacBook models have different wireless cards.<br />
<br />
You can easily check what card do your MacBook have by:<br />
<br />
# lspci | grep Network<br />
<br />
* If you have an Atheros card, all should work out-of-the-box.<br />
<br />
* If you have a Broadcom card, follow the [[Broadcom BCM4312]] page.<br />
<br />
* 5.0 and 6.0 generation MacBooks may have a BCM43xx, follow the instructions for the broadcom-wl driver on the [[Broadcom wireless]] page. The interfaces can swap during reboot so its best to define them in a udev rule (instructions on the [[Broadcom wireless]] page).<br />
<br />
* 8.1 generation MacBooks have BCM4331, for which support is not present in either Linux (3.0 and 3.1) or the proprietary drivers by Broadcom. There is however preliminary support for it in Linux 3.2. To run the drivers on earlier kernels, you will need to use [http://wireless.kernel.org/en/users/Download compat-wireless]<br />
<br />
{{Note|If your connection frequently drops, you may have to turn off Wi-Fi power management. If you are running [[pm-utils]], you may override wireless power management by creating an executable file {{ic|/etc/pm/wireless}} with the lines:<br />
#!/bin/sh<br />
iwconfig wlp2s0 power off<br />
}}<br />
<br />
=== Power management ===<br />
<br />
==== Laptop-mode-tools ====<br />
<br />
Because the MacBook is obviously a laptop, you may wish to control its power management features using something like [[Laptop Mode Tools]].<br />
<br />
However, Laptop Mode Tools is known to disable the keyboard in console mode after being idle for a few seconds (does not happen when using X). If this happens to you set <br />
<br />
CONTROL_USB_AUTOSUSPEND=0<br />
<br />
in {{ic|/etc/laptop-mode/conf.d/usb-autosuspend.conf}}. See this [https://bbs.archlinux.org/viewtopic.php?pid=984831 forum thread] for the original workaround.<br />
<br />
==== Suspend to RAM (kernel suspend) ====<br />
<br />
Suspend (the kernel suspend) should work out of the box (I had a problem in which the machine would "suspend immediately after resume" in certain conditions when suspending by closing the lid. This was solved by de-selecting the option "event_when_closed_battery" in gconf-editor &rarr; gnome-power-manager &rarr; actions).<br />
<br />
For a macbook2,1 (bought in 2007) s2ram works using <br />
s2ram -f -a 3 <br />
To make it work with kde4 you have to create a file named "config" into /etc/pm/config.d containing<br />
SLEEP_MODULE="uswsusp"<br />
S2RAM_OPTS="-f -a 3"<br />
<br />
For a MacBook Pro 3,1 (bought in 2008), the following command should work, both in X and in a console:<br />
s2ram -f -a 1<br />
<br />
Note: If you use pm-utils suspending lead (at least for me) disk freeze. Try changing /etc/pm/config.d/module to<br />
SLEEP_MODULE=tuxonice<br />
<br />
For a macbook5.5, s2ram may work using (be sure to run it in X)<br />
s2ram -f -p -m<br />
<br />
==== Suspend to disk (hibernate) ====<br />
<br />
{{Merge|Swap#Swap file|These part is duplication of Swap file section in Swap. Should check and merge it to Swap.}}<br />
Hibernate should work if you have a swap partition. If you opted for a swap file because of the MBR limitation to 4 primary partitions, you can still get hibernate functionality by following these instructions (this is mostly taken from http://ubuntuforums.org/showthread.php?t=1042946):<br />
<br />
* Create a swapfile (here 2G = bs*count):<br />
# dd if=/dev/zero of=/swapfile bs=1024 count=2M<br />
It is recommended, but not necessary, to create the swapfile on a newly created partition, so that fragmentation is minimum.<br />
# chmod 600 swapfile <br />
# mkswap swapfile <br />
mkswap: swapfile: warning: do not erase bootbits sectors<br />
on whole disk. Use -f to force.<br />
Setting up swapspace version 1, size = 2097148 KiB<br />
no label, UUID=6bf46166-4f9e-433a-aac1-91cb3f5cf8ba<br />
# <br />
Note that we will not use this UUID later.<br />
* Add the swapfile in {{ic|/etc/fstab}}:<br />
/swapfile none swap sw 0 0<br />
* Determine the UUID of partition on which the swapfile is (/usr/bin/blkid is provided by util-linux-ng)<br />
# blkid -g<br />
# blkid<br />
/dev/sda4: UUID="388014d3-1d18-4ca0-980e-ef2f9fdebde4" TYPE="ext3" <br />
388014d3-1d18-4ca0-980e-ef2f9fdebde4 is the number we are looking for.<br />
* Determine the physical offset of the swapfile:<br />
# filefrag -v /swapfile | head<br />
Filesystem type is: ef53<br />
Filesystem cylinder groups is approximately 132<br />
File size of /swapfile is 2147483648 (524288 blocks, blocksize 4096)<br />
ext logical physical expected length flags<br />
0 0 24576 12 merged<br />
1 12 24589 24587 1024 merged<br />
2 1036 25615 25612 1024 merged<br />
3 2060 26640 26638 1024 merged<br />
4 3084 27665 27663 1024 merged<br />
5 4108 28690 28688 1024 merged<br />
$ <br />
Here, 24576 is the number we want.<br />
* Edit {{ic|/boot/grub/grub.cfg}} and add:<br />
resume=/dev/disk/by-uuid/388014d3-1d18-4ca0-980e-ef2f9fdebde4 resume_offset=24576<br />
to your kernel stanza options (or use the kopt method as in the post). Note that the "resume=UUID=" actually did not work for me. I had to use the {{ic|/dev/disk/by-uuid}} syntax.<br />
<br />
Note: "ro" has to be at the end of the line, like this:<br />
kernel /boot/vmlinuz-linux root=/dev/sda4 '''resume=/dev/sda4 resume_offset=24576''' ro<br />
* Nothing to do with update-grub nor mkinitcpio.<br />
* Reboot once<br />
* Try to hibernate<br />
<br />
=== Light sensor ===<br />
<br />
If you want to use the built in light sensor to automatically adjust screen and keyboard backlight brightness check out<br />
'''Lighter''' [https://github.com/Janhouse/lighter] (simple perl script, easy to fine-tune) and '''Lightum''' [https://github.com/poliva/lightum] (Requires Gnome or KDE but is older and more complete than Lighter).<br />
<br />
=== Sound ===<br />
<br />
{{Tip|MBP 5.5: since kernel 2.6.32 this works out of the box - just unmute the front speakers and store the sound level }}<br />
<br />
First of all follow [[ALSA]] wiki page, then if something does not work correctly, continue reading this part.<br />
<br />
Edit your {{ic|/etc/modprobe.d/50-sound.conf}} or {{ic|/etc/modprobe.d/modprobe.conf}} appending this line:<br />
<br />
options snd_hda_intel model=intel-mac-auto<br />
<br />
This should automatically specify the codec in your MacBook. Alternatively, for MacBookPro5,X, you can use:<br />
<br />
options snd_hda_intel model=mb5<br />
<br />
(note that the jack output is controlled with "HP").<br />
<br />
If you have an iMac8,1, you should instead use<br />
<br />
options snd-hda-intel model=mbp3 position_fix=2<br />
<br />
You can try to specify other options, that depend on your hardware. All other possible settings are listed in Kernel Documentation, avaible online:<br />
<br />
* [http://www.kernel.org/doc/Documentation/sound/alsa/ALSA-Configuration.txt ALSA-Configuration.txt]<br />
* [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt HD-Audio.txt]<br />
* [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt HD-Audio-Models.txt].}}<br />
<br />
Then, reboot.<br />
<br />
=== Bluetooth ===<br />
<br />
{{Note|Bluetooth should work out-of-the box. The hid2hci utility is used by default since bluez 4.91}}<br />
<br />
See the article on [[Bluetooth]] to install and configure all software needed.<br />
<br />
=== Webcam ===<br />
<br />
==== iSight ====<br />
<br />
{{Note|Linux kernel from 2.6.26 includes the '''Linux UVC driver''' natively. MBP 6.2+ (Kernel ~2.6.37+) iSight works out of the box without the need to use firmware from OS X.}}<br />
<br />
You can use many applications to test the camera:<br />
<br />
* MPlayer<br />
<br />
# mplayer tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0 -fps 30<br />
<br />
* Cheese<br />
* Skype<br />
* Ekiga<br />
<br />
A simple solution to take snapshots is:<br />
<br />
# mplayer tv:// -vf screenshot<br />
<br />
and the pressing the s key to take a snapshot. Files are of the format shot\d\d\d\d.png and are reported in the standard output.<br />
<br />
==== Facetime HD ====<br />
The Facetime HD webcam (included on 2013 MBAs onwards) [http://mactaris.blogspot.co.uk/2013/07/webcam-settings-20-will-support.html is no longer UVC device], and therefore, does not work out of the box.<br />
<br />
=== Temperature Sensors ===<br />
<br />
For reading temperature just install and configure '''lm_sensors'''.<br />
See [[Lm sensors]] page.<br />
<br />
=== Color Profile ===<br />
<br />
We can use color profiles from Mac OS.<br />
<br />
First, install {{AUR|xcalib}} from the [[AUR]].<br />
<br />
Second copy pre-saved color profiles placed in {{ic|/Library/ColorSync/Profiles/Displays/}} on Mac OS partition to {{ic|~/colorprofiles/}} for example.<br />
<br />
There are color profile files agree with in MacBook models; select the right one:<br />
<br />
* '''Color LCD-4271800.icc''' for MacBook Pro with CoreDuo CPU<br />
* '''Color LCD-4271880.icc''' for MacBook with Core2Duo<br />
* '''Color LCD-4271780.icc''' for MacBook (not Pro) based on CoreDuo or Core2Duo.<br />
<br />
{{Tip|Also Mac OS allows to save current color profile from ''Displays > Color'' section of the ''Mac OS System Preferences'', in this case file is saved to {{ic|/Users/<username>/Library/ColorSync/Profiles}}.}}<br />
<br />
Finally you can activate it by running<br />
<br />
# xcalib ~/colorprofile.icc<br />
<br />
{{Note|Previous command set the color profile only for the current session; this mean that you must run it every time you login in your system. For automating it you can execute the command by '''Autostart Application''', concording with your DE (or add the command to your login manager's initialization script, e.g. /etc/gdm/Init/Default).}}<br />
<br />
=== Apple Remote ===<br />
<br />
First, to correctly install and configure the '''lirc''' software that control IR see [[Lirc]] wiki.<br />
<br />
Then make LIRC use {{ic|/dev/usb/hiddev0}} (or {{ic|/dev/hiddev0}}) by editing {{ic|/etc/conf.d/lircd}}. Here is how mine look:<br />
<br />
#<br />
# Parameters for lirc daemon<br />
#<br />
LIRC_DEVICE="/dev/usb/hiddev0"<br />
LIRC_DRIVER="macmini"<br />
LIRC_EXTRAOPTS=""<br />
LIRC_CONFIGFILE="/etc/lirc/lircd.conf"<br />
<br />
Use '''irrecord''' (available when installing '''lirc''') to create a configuration file matching your remote control signals (alternatively, you can try to use the {{ic|lircd.conf}} below):<br />
<br />
# irrecord -d /dev/usb/hiddev0 -H macmini output_conf_file<br />
<br />
Start '''lircd''' and use '''irw''' to check if it works.<br />
<br />
Example of an {{ic|/etc/lirc/lircd.conf}}:<br />
<br />
begin remote<br />
<br />
name lircd.conf.macbook<br />
bits 8<br />
eps 30<br />
aeps 100<br />
<br />
one 0 0<br />
zero 0 0<br />
pre_data_bits 24<br />
pre_data 0x87EEFD<br />
gap 211994<br />
toggle_bit_mask 0x87EEFD01<br />
<br />
begin codes<br />
Repeat 0x01<br />
Menu 0x03<br />
Play 0x05<br />
Prev 0x09<br />
Next 0x06<br />
Up 0x0A<br />
Down 0x0C<br />
end codes<br />
<br />
end remote<br />
<br />
=== HFS partition sharing ===<br />
<br />
First, we need {{AUR|hfsprogs}} package from AUR. <br />
<br />
we have to list our partitions. Use<br />
<br />
fdisk -l /dev/sda<br />
<br />
example output:<br />
<br />
# fdisk -l /dev/sda<br />
Device Boot Start End Blocks Id Type<br />
/dev/sda1 1 26 204819 ee GPT<br />
/dev/sda2 26 13602 109051903+ af Unknown<br />
/dev/sda3 * 13602 14478 7031250 83 Linux<br />
/dev/sda4 14478 14594 932832+ 82 Linux swap / Solaris<br />
<br />
As we see, the "Unknown" partition is our OS X partition, which is located in {{ic|/dev/sda2}}.<br />
<br />
Create a "mac" folder in /media:<br />
<br />
# mkdir /media/mac<br />
<br />
Add at the end of ''/etc/fstab'' this line:<br />
<br />
/dev/sda2 /media/mac hfsplus auto,user,rw,exec 0 0<br />
<br />
Mount it :<br />
<br />
mount /media/mac<br />
<br />
and check it:<br />
<br />
ls /media/mac<br />
<br />
=== HFS+ Partitions ===<br />
<br />
HFS+ partitions, now the default in Mac OS X, are not fully supported by Linux and are mounted as read-only by default. In order to write to an HFS+ partition, it is necessary to disable journaling. This can be accomplished using Mac OS X Disk Utility. Refer to this [http://support.apple.com/kb/ht2355 Apple support page] for more information.<br />
<br />
===Home Sharing===<br />
<br />
'''''UID Synchronization'''''<br />
<br />
==== In OS X ====<br />
<br />
{{Note|It is strongly recommended that UID/GID manipulation be done immediately after a new user account is created, in OS X as well as in Arch Linux. If you installed OS X from scratch, then this operation is guaranteed to work after logging into your account for the first time.}}<br />
<br />
===== Step 1: change UID and GID(s) =====<br />
<br />
'''''Pre-Leopard'''''<br />
<br />
# Open '''NetInfo Manager''' located in the ''/Applications/Utilities'' folder.<br />
# If not done for you already, enable access to user account transactions by clicking on the closed lock at the bottom of the window, and entering your account password, or root password if you have created a root account.<br />
# Navigate to ''/users/<new user name>'' where <new user name> is the name of the account that will have read/write access to the folder that will be shared with the primary user in Arch.<br />
# Change the '''UID''' value to 1000 (the value used by default for first user created in Arch).<br />
# Also change the '''GID''' value to 1000 (the value used by default for user account creation in Arch).<br />
# Navigate to {{ic|/groups/<new user name>}}, automatically saving the changes you have made so far.<br />
<br />
{{Note|If you get an error message that the transaction is not allowed, log out and log back in.}}<br />
<br />
'''''Leopard'''''<br />
<br />
In Leopard, the '''NetInfo Manager''' application is not present. A different set of steps is required for UID synchronization:<br />
<br />
# Open '''System Preferences'''.<br />
# Click on '''Users & Groups'''.<br />
# Unlock the pane if not already done so.<br />
# Right-click on the desired user and select '''Advanced Options'''.<br />
# Write down the value of the '''User ID''' field, you will need it later on. Change both the UID and GID to match the UID and GID of the account wished to be shared with in Arch (1000 by default for the first user created in Arch).<br />
<br />
===== Step 2: change "Home" permissions =====<br />
<br />
# Open up '''Terminal''' in the {{ic|/Applications/Utilities}} folder.<br />
<br />
# Enter the following command to reclaim the permission settings of your home folder, replacing <your user name>, <your user group> and <your old UID> with the user name whose UID and GID values you just changed, the group name whose GID value you just changed and the old UID number, respectively.<br />
<br />
# find /User/<your user name> -user <your old UID> -exec chown <your user name>:<your user group> {} \;<br />
<br />
==== In Arch ====<br />
<br />
To synchronize your UID in Arch Linux, you are advised to perform this operation ''while creating a new user account''.<br />
It is therefore recommended that you do this as soon as you install Arch Linux.<br />
<br />
Now you must substitute Arch's home with Mac OS's home, by modify entries of {{ic|/etc/fstab}}.<br />
<br />
=== Avoid long EFI wait before booting ===<br />
<br />
If your Macbook spends 30 seconds with "white screen" before booting you need to tell the firmware where is the booting partition.<br />
<br />
Boot Mac OS X, if do not have it installed, you can use the install DVD (select language, then click Utilities->Terminal), or another MacBook with Mac OS X (connect the two computers via firewire or thunderbolt, start the other Macbook keeping pressed T, boot your MacBook keeping pressed Options).<br />
<br />
Either way, once you got a Mac OS X terminal running on your MacBook you need to execute, as root, a different command if the boot partition is EFI or it is not:<br />
<br />
# bless --device /dev/disk0s1 --setBoot # if the booting partition is EFI<br />
or<br />
# bless --device /dev/disk0s1 --setBoot --legacy # if the booting partition is not EFI<br />
<br />
(given that if your GRUB or EFI is on sda1, /dev/disk1s2 if it is on sdb2, etc). See also https://bbs.archlinux.org/viewtopic.php?pid=833215 and https://support.apple.com/kb/HT1533 .<br />
<br />
=== Mute startup chime ===<br />
<br />
If you forgot to mute before installing, you can still mute again if you have a Mac OS X install disk. Boot from it, select language, then click ''Utilities > Terminal'', and enter<br />
<br />
# /usr/bin/nvram SystemAudioVolume=%01<br />
<br />
(or whatever volume you want).<br />
<br />
== rEFIt ==<br />
<br />
{{Note|<br />
* You probably want to have a look at [http://www.rodsbooks.com/refind/ refind], which is some type of successor of rEFIt.<br />
* This is not a requirement. It only gives you a menu to choose between OS X and Arch Linux upon every boot.<br />
}}<br />
<br />
For more see, [http://refit.sourceforge.net/myths/ refit myths].<br />
<br />
In OS X, download the ".dmg" from [http://refit.sourceforge.net/ Refit Homepage] and install it.<br />
<br />
{{Note|If you have already partitioned your hard disk in preparation for the Arch installation, rEFIt may not be enabled by default. You will have to run the "enable.sh" script installed in /efi/refit/.}}<br />
<br />
Open up '''Terminal''' and enter:<br />
<br />
cd /efi/refit;<br />
./enable.sh<br />
<br />
=== Problems with rEFIt ===<br />
<br />
If you experience problems after the install of Arch or rEFIt, especially is the right OS is not showing up to boot to or if it dumps you at a GRUB prompt stuck like the following:<br />
<br />
GRUB>_<br />
<br />
Then have a look at this link:<br />
<br />
http://mac.linux.be/content/problems-refit-and-grub-after-installation<br />
<br />
It can give you a basic idea on how to boot off the Arch live cd, mount the problem Arch install, chroot, use gptsync, and reinstall GRUB. This is probably for more advanced users who can translate the commands from a debian system to an Arch system and also apply it to the partitions on their machine. Be careful not to install GRUB in the wrong spot.<br />
<br />
If you need a copy of gptsync you can wget it from here:<br />
http://packages.debian.org/sid/gptsync<br />
or try these, for 64 bit:<br />
<br />
wget http://ftp.us.debian.org/debian/pool/main/r/refit/gptsync_0.14-2_amd64.deb<br />
<br />
and for i386:<br />
<br />
wget http://ftp.us.debian.org/debian/pool/main/r/refit/gptsync_0.14-2_i386.deb<br />
<br />
since they are .deb packages you will need the program {{AUR|deb2targz}}.<br />
<br />
==== Mavericks upgrade breaks Arch boot option ====<br />
For some multi-boot users who utilize a separate Linux boot partition, the OSX Mavericks upgrade may overwrite the boot partition with Apple's own recovery boot filesystem. This breaks the Archlinux boot option in rEFIt/rEFInd. The best way to proceed in this situation is to abandon a separate boot partition and use the EFI system partition (ESP) to install the bootloader of your choice. It is also recommended that you use rEFInd instead of rEFIt as development on the latter has halted.<br />
<br />
Assuming grub2 as the bootloader:<br />
<br />
Use the Arch LiveCD to boot to a shell and [[Change Root|chroot]] to your broken Archlinux environment.<br />
<br />
Mount the ESP on /boot.<br />
<br />
Edit the fstab and remove the old boot partition and make ESP the new boot partition. Now mount the ESP as the new /boot parition.<br />
# mount -a<br />
<br />
Reinstall linux.<br />
# pacman -S linux<br />
<br />
Create a new initramfs and vmlinuz in /boot.<br />
# mkinitcpio -p linux<br />
<br />
Install grub.<br />
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck --debug<br />
<br />
Create a new grub.cfg file.<br />
# grub-mkconfig -o /boot/EFI/grub/grub.cfg<br />
<br />
Make sure that grub.cfg is in the same directory as grubx64.efi.<br />
<br />
Generate a new refind_linux.conf file in /boot simply by running mkrlconf.sh which comes with rEFInd.<br />
<br />
Exit the chroot environment.<br />
<br />
Reboot. You should see a new entry for Archlinux in rEFInd and it should boot to your Archlinux installation.<br />
<br />
== Model-specific information ==<br />
<br />
=== MacBook ===<br />
<br />
==== Mid 2007 13" - Version 2,1 ====<br />
<br />
{{Note|I used the 201212 ISO image.}}<br />
{{Warning|Current linux-3.8.x packages do not work with their EFI stub and refind-efi. Either use an older package ({{Pkg|linux}} 3.7.10-1 works with {{Pkg|refind-efi}} 0.6.8-1) or you may use a bootloader which does not rely on EFI stub. Similiar issues are reported with {{Pkg|gummiboot}}.}}<br />
<br />
Since older Macbooks have a 32bit EFI running, the usual installation image is not recognized. You need to either remove the UEFI support from the disc ([[Unified_Extensible_Firmware_Interface#Remove_UEFI_boot_support_from_ISO]]) or build a 32bit EFI version of the disc. The paragraphs below will take the first path to success, booting into BIOS mode and its pitfalls. For a try the other way round, read [[Unified_Extensible_Firmware_Interface#Create_UEFI_bootable_USB_from_ISO]] first.<br />
<br />
First prepare your harddisc according to your wishes. In this scenario it was a "Linux only" approach with<br />
<br />
/dev/sda1 HFS+ AF00 200M -> EFI boot system on Apple HFS+ partition<br />
/dev/sda2 ext4 8300 147G -> arch system<br />
/dev/sda3 swap 8200 1G -> swap<br />
<br />
The {{AUR|hfsprogs}} package contains the tools to handle HFS/HFS+ filesystems. The rEFInd bootloader recognizes it on its own. Usually the partition for the EFI bootloader is a FAT32 (vfat) partition. In this case I tried rEFIt first, which apparently needs the HFS+ filesystem to work, and kept it at that.<br />
<br />
The mount points are:<br />
<br />
/dev/sda2 -> /<br />
/dev/sda1 -> /boot/efi<br />
<br />
The bootloader in use was [http://www.rodsbooks.com/refind/index.html rEFInd] instead of rEFIt. To install it, the rEFInd homepage provides a good guide. The pitfall here is, that the system bootet in BIOS compatibility mode and not in EFI mode. You cannot therefore use {{ic|efibootmgr}}, because the EFI variables (even with 'modprobe efivars') are not available. While installing the system get {{AUR|mactel-boot}} from the [[AUR]]. The {{ic|hfs-bless}} utility comes in handy, when blessing the EFI bootloader. This is done by calling e.g.:<br />
<br />
hfs-bless /boot/efi/EFI/refind/refind.efi<br />
<br />
Since the Linux kernel does come with EFI stub enabled, it seemed a good idea to run it through a bootloader first. Especially if it runs not out of the box. But using rEFInd makes GRUB (or any other bootloader) obsolete, because of that.<br />
<br />
Not running out of the box is unfortunately the initial stage for the kernel. Since we installed it in BIOS mode, two modules are missing to grant access to the root partition while booting. Hence the 'initfsram-linux.img' can not be found/loaded. Adding the following modules to your 'MODULES' line in {{ic|/etc/mkinitcpio.conf}} solved this ([https://bbs.archlinux.org/viewtopic.php?pid=1139226#p1139226 original post]).<br />
<br />
{{hc|/etc/mkinitcpio.conf|2=<br />
MODULES="ahci sd_mod"}}<br />
<br />
Rebuild your kernel image:<br />
<br />
mkinitcpio -p linux<br />
<br />
The bootloader rEFInd can scan kernels even out of the '/boot/efi/...' directory and assumes an efi kernel even without the extension '.efi'. If you do not want to try out special kernels, this should work without the hassle to copy each kernel after building to some spot special.<br />
<br />
If you happen to get multiple entries for one boot image, it often results of a previous installation of a bootloader within the MBR. To remove that, try the following - taken from the [http://ubuntuforums.org/showpost.php?p=7828260&postcount=4 original post]. This is valid for GPT partitioned discs, so please check your environment and save your MBR first.<br />
<br />
# dd if=/dev/zero of=/dev/sda bs=440 count=1<br />
<br />
=== MacBook Pro ===<br />
<br />
* [[MacBookPro Retina]].<br />
<br />
=== MacBook Air===<br />
<br />
==== Mid 2013 13" - Version 6,2 ====<br />
[https://bbs.archlinux.org/viewtopic.php?id=165899 Dedicated forum thread]<br />
===== Installing and booting =====<br />
Booting from a normal 2013.6 USB key works fine, but I could not seem to get either GRUB or Syslinux working.<br />
<br />
I was able to boot by first installing Arch Linux following the Macbook guide at the wiki (having a separate FAT32 /boot partition). Skip the bootloader installation. <br />
<br />
Installing [http://www.rodsbooks.com/refind/getting.html rEFInd] from OS X (important!) and installing the EFI stub loader made me able to boot fine.<br />
<br />
[https://bbs.archlinux.org/viewtopic.php?id=165710 Dedicated thread].<br />
<br />
{{Note| Installing [http://www.rodsbooks.com/refind/getting.html rEFInd] from Linux (or from OS X, but to the esp) also works fine}}<br />
<br />
===== Arch Only Installation =====<br />
This method works without refind and uses grub to boot EFI. Partition as follows:<br />
<br />
/dev/sda1 200M Microsoft basic data<br />
/dev/sda2 256M Linux filesystem<br />
/dev/sda3 4G Linux swap<br />
/dev/sda4 108.6G Linux filesystem<br />
<br />
sda1 can also be a HFS+ partition for EFI. This example chooses to use FAT32 (vfat). Although swap is optional, it is highly recommended due to a suspend/resume bug where the monitor can only be displayed at 0% or 100%. Instead of sda4 for root and home, an alternative partition scheme would be to make sda4 as root and sda5 as home.<br />
<br />
Format and mount:<br />
<br />
mkfs.vfat -F 32 /dev/sda1<br />
mkfs.ext2 /dev/sda2<br />
mkswap /dev/sda3<br />
swapon /dev/sda3<br />
mkfs.ext4 /dev/sda4<br />
<br />
mount /dev/sda4 /mnt<br />
mkdir /mnt/boot<br />
mount/dev/sda2 /mnt/boot<br />
mkdir /mnt/boot/efi<br />
mount /dev/sda1 /mnt/boot/efi<br />
<br />
Finish the installation according to the [https://wiki.archlinux.org/index.php/Beginners'_Guide#Select_a_mirror Beginner's Guide] and skip anything after the bootloader. After you have generated your initramfs and set root passwd follow below to setup grub:<br />
<br />
pacman -S grub efibootmgr<br />
mount -t efivarfs efivarfs /sys/firmware/efi/efivars<br />
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug<br />
grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg<br />
cp /boot/efi/EFI/grub/grub.cfg /boot/grub/grub.cfg<br />
cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi}}<br />
<br />
Now you can exit/unmount/reboot:<br />
exit<br />
umount -R /mnt<br />
reboot<br />
<br />
===== Stability problems =====<br />
{{Note| Passing {{ic|<nowiki>libata.force=1:noncq</nowiki>}} to the kernel parameters solves the problem.}}<br />
This is the big worry for me. Every now and then my system hangs for a brief moment and everything involving net or disk access just hangs there for a while and then it seems to work. <br />
So far it only seems to happen when I run something disk- or CPU-intensive. Also had an occassion when I could not start X and just got this repeating all over my screen:<br />
<br />
ata1.00: failed command: WRITE FPDMA QUEUED<br />
ata1.00: cmd 61/08:f0:10:8c:c2/00:00:0b:00:00/40 tag 30 ncq 4096 out<br />
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)<br />
ata1.00: status: { DRDY }<br />
<br />
On the next attempt it worked fine.<br />
I did SMART short and long tests on my disk and they returned fine:<br />
<br />
[http://pastebin.com/vRE4T2Ld smartctl -a]<br />
<br />
There are some messages in my boot that indicate this could be disk and/or ACPI related.<br />
<br />
These are with 2013-06 ISO, 3.9.7-1 2013 x86_64 kernel.<br />
<br />
[http://pastebin.com/mjTJaPFa journalctl -b]<br />
Seems to only work with the headphone jack, not with the speakers.<br />
<br />
[http://pastebin.com/SdAcHuKh dmesg]<br />
<br />
If you have 2013 Macbook Air with a Marvell 128 gig drive, you might get the following ata errors instead after pm-suspend/resumes:<br />
<br />
ata1: exception Emask 0x10 SAct 0x0 SErr 0x10000 action 0xe frozen<br />
ata1: irq_stat 0x00400000, PHY RDY changed<br />
ata1: SError: { PHYRdyChg }<br />
ata1: hard resetting link<br />
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)<br />
ata1.00: unexpected _GTF length (8)<br />
ata1.00: unexpected _GTF length (8)<br />
ata1.00: configured for UDMA/33<br />
ata1: EH complete<br />
<br />
Try what Patrick and Tejun figured out on the [https://bugzilla.kernel.org/show_bug.cgi?id=62351 linux bug]. I followed what Patrick describes with sata_alpm, and I haven't seen the issue since.<br />
<br />
===== WiFi =====<br />
WiFi does not work out of the box. Install {{AUR|broadcom-wl-dkms}} to connect to a network. <br />
<br />
===== Touchpad =====<br />
Since 3.10.3 kernel touchpad works perfectly with {{Pkg|xf86-input-synaptics}}.<br />
<br />
===== Audio =====<br />
As of Linux 3.12, sound works out of the box. If you do not get sound with only {{pkg|alsa-utils}}, you may need to create a /etc/asound.conf with below entries:<br />
<br />
defaults.pcm.card 1<br />
defaults.pcm.device 0<br />
defaults.ctl.card 1<br />
<br />
==== Mid 2012 13" — version 5,2 ====<br />
<br />
Kernel panics using default boot media under arch kernel 3.5. Adding <code>intremap=off</code> fixes this. Additionally, there are problems loading the <code>applesmc</code> module (meaning the temperature sensors, fan, and keyboard backlight do not work). These problems are fixed in the linux 3.6-rc4 mainline kernel (I have tested).<br />
<br />
==== Mid 2012 11.5" — Version 5,1 ====<br />
<br />
If you have issues with waking from sleep while in X11 such as a black screen or showing the console with a frozen mouse cursor then remove xf86-input-synaptics and install mtrack-git from aur. This fixed errors such as <br />
(EE) [dix] bcm5974: unable to find touch point 0<br />
and backtraces that causes X11 to crash. This might apply to Version 5,2 assuming they use the same trackpad.<br />
<br />
===== Installing using the Archboot 2012.06 image =====<br />
<br />
Several people have reported problems installing Arch Linux on the MBA version 5,2 (See [https://bbs.archlinux.org/viewtopic.php?id=144089 problems booting archlinux on a MacBook Air Mid 2012]). A common problem is that the screen is not detected and therefore goes black when the installer boots. To fix this problem one has to select the normal install (Not the LTS) during boot and press tab to edit the boot flags. Then add noapic flag to the boot line. This should fix the screen going black. Install the system as you normally would. It may help later in the configuration process if the support packages are installed already at this stage.<br />
<br />
When the install has finished again add the noapic flag to the GRUB boot line (if you use GRUB) and also add i915.diescreaming=1 (or perhaps i915.die). This should keep the screen from going black when booting the new system. After you enter the system the wireless driver should be loaded. If you installed the support packages during installation you should have the wifi-menu command. Run it and select the network you want to use. One could also use wpa_supplicant but wifi-menu is quite fast to use at this stage. Now you are ready to upgrade the system. As of writing there have been a lot of changes to Archlinux since the 2012.06 image of Archboot was released ([https://www.archlinux.org/news/filesystem-upgrade-manual-intervention-required-1/ filesystem] and [https://www.archlinux.org/news/the-lib-directory-becomes-a-symlink/ glibc]). Therefore the upgrade process can be a bit difficult. The current solution has sucessfully upgraded a standart archboot version to a up-to-date version as of October 2012 and this step should be obsolete in future releases of archboot.<br />
<br />
First ignore the new "big" changes to Arch Linux,<br />
<br />
pacman -Suy --ignore glibc,libarchive,curl,filesystem <br />
<br />
If this only upgrades pacman then run the command again. Remember to make sure that pacman is ignoring the packages you do not want upgraded now. Otherwise you may break the system and have to reinstall! Now upgrade to the new filesystem,<br />
<br />
pacman -S filesystem --force<br />
<br />
As described in [[DeveloperWiki:usrlib|Glibc upgrade guide]] there may be conflicts with installed packages that require the /lib directory. Follow the guide and remove any packages that use /lib. The stock 3.4.2 kernel from Archboot should be on this list so first upgrade this,<br />
<br />
pacman -S linux<br />
<br />
This may give some errors saying that the system may not boot because of missing modules. Ignore this warning for now. The stock install may also contain gcc in the /lib directory so also remove this if needed and any other packages that have conflicts. Now Glibc should be the only package in /lib so run the system upgrade and accept all changes, <br />
<br />
pacman -Su<br />
<br />
Finally reinstall the kernel so that it can find the correct modules.<br />
<br />
Now this command should not give any errors like last time. You can also reinstall gcc at this point. After a rebooted the system should startup and the new kernel should have fixed the problem with the screen going black. If want to boot Xorg then you may need to remove the i915.diescreaming=1 line from GRUB. If not then attach a external screen and try to fix the problem that way. Some people have reported commands that may help on the [https://bbs.archlinux.org/viewtopic.php?id=144089 forum].<br />
<br />
==== Mid 2011 — version 4,x ====<br />
<br />
Works out-of-the-box since kernel 3.2. It is recommended to use [[Archboot]], install [[GRUB]] and use EFI.<br />
<br />
==== Early 2008 — version 1,1 ====<br />
<br />
Everything works out of the box though you will need [https://www.archlinux.org/packages/core/x86_64/b43-fwcutter/ b43-fwcutter] (or simply [https://aur.archlinux.org/packages/b43-firmware/ b43-firmware]) for the wireless adapter to work.<br />
<br />
Since this model has only one USB port, you may find it easiest to install Arch with a powered USB hub. Plug a USB network adapter (wireless or ethernet adapter to plug into a USB port) and your Arch installation media into the USB hub.<br />
<br />
If you can't get any result by scanning wireless network after boot, unload modules <code>b43</code> and <code>ssb</code> and load them again:<br />
<br />
rmmod ssb<br />
rmmod b43<br />
modprobe b43<br />
<br />
There is a good chance you will find what's wrong with DMA from the dmesg log.<br />
<br />
Even if you can scan wireless networks after reloading the modules, it's still possible that you will only be able to connect to some networks, but not all of them. According to a more detailed discussion here: http://crunchbang.org/forums/viewtopic.php?id=17368, adding <code>pio=1,qos=0</code> options to the b43 module can solve this problem.<br />
<br />
I tested this for a 13' MacBook Air 1,1 with a BCM4321 chipset, and it works.<br />
<br />
== See also ==<br />
<br />
* http://www.netsoc.tcd.ie/~theorie/interblag/2010/01/30/installing-arch-linux-on-a-mac-pro/<br />
* http://allanmcrae.com/2010/04/installing-arch-on-a-macbook-pro-5-5/<br />
* http://allanmcrae.com/2012/04/installing-arch-on-a-macbook-pro-8-1/<br />
* http://linux-junky.blogspot.com/2011/08/triple-boot-archlinux-windows-7-and-mac.html</div>Codemachttps://wiki.archlinux.org/index.php?title=MacBookPro10,x&diff=263789MacBookPro10,x2013-06-21T22:45:47Z<p>Codemac: /* Using the Thunderbolt to Ethernet adapter */</p>
<hr />
<div>[[Category:Apple]]<br />
{{Article summary start}}<br />
{{Article summary text|This wiki page should help you in getting your [[Wikipedia:MacBook_Pro#Third_generation_.28Retina.29|MacBook Pro with Retina Display]] to work with Arch Linux.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Official Arch Linux Install Guide}}<br />
{{Article summary wiki|Beginners Guide}}<br />
{{Article summary wiki|General Recommendations}}<br />
{{Article summary wiki|MacBook}}<br />
{{Article summary end}}<br />
<br />
== Overview ==<br />
This page should help you setting up ArchLinux on a MacBook Pro 10,1 with Retina display. Most of the steps are the same or very similar to the regular ArchLinux installation. However, because this is very new hardware, the setup requires a few different steps. <br />
The general installation guidelines are descibed in [[MacBook]].<br />
<br />
{{Note| To have all hardware supported, you should run this Notebook with Kernel 3.7 or newer. }}<br />
<br />
== Preparing for the Installation ==<br />
=== Preparing the Hard drive ===<br />
Assuming you want to dual boot with OS X, you have to shrink its partition with the Disk Utility. You can either create your Linux partition directly here, or do that later in Linux during the installation (using {{ic|parted}} and {{ic|mkfs}}).<br />
<br />
=== Using the Thunderbolt to Ethernet adapter ===<br />
The adapter should work out of the box if connected before booting. Thunderbolt hotplugging is not supported (yet?).<br />
<br />
''NB: Thunderbolt is seen as a PCIe device to the kernel, all of it being handled by the boot loader. In the case of the MacBook however, they handle Thunderbolt as part of their OS. This means that hotplug support isn't what's missing, a reimplementation of Thunderbolt->pcie interface in Linux is missing. GKH was working on some thunderbolt support last year, but if anyone has more recent information, please add it here.'' -- [[User:Codemac|Codemac]] ([[User talk:Codemac|talk]]) 22:45, 21 June 2013 (UTC)<br />
<br />
=== Getting wireless firmware ===<br />
In order for the WiFi chip to work, you need to get the firmware for it. You can just copy it from another b43 enabled Arch, extract it from Broadcom's driver using {{Pkg|b43-fwcutter}} or get them through the {{AUR|b43-firmware}} available in the [[AUR]]. In the end you should have a folder called {{ic|b43}} with lots of {{ic|.fw}} files in it.<br />
<br />
== Installation ==<br />
<br />
=== Booting the live image ===<br />
Now, download the latest [[Archboot]] iso, write it to USB and boot from it by selecting it in the Apple boot loader. When it comes to the syslinux boot loader, press {{Keypress|Tab}} to edit the entry and append {{ic|noapic}} or {{ic|nointremap}} to the end to prevent a kernel panic during bootup. Currently (Aug 4, 2012), you also have to add {{ic|nomodeset}}.<br />
<br />
=== Connecting WiFi ===<br />
{{Note| You can skip this if you use the Thunderbolt to ethernet adapter for the installation.}}<br />
After it has finished booting, enter a command line. Copy the entire folder with the firmware for your wireless card to {{ic|(/usr)/lib/firmware/}}. Now you should be able to use {{Pkg|wpa_supplicant}} to connect to your WiFi network.<br />
<br />
=== The installation ===<br />
{{Note|Refer to the [[MacBook]] page if you don't want to have a separate partition for GRUB but rather prefer to use [http://www.rodsbooks.com/refind/ rEFInd] (or [[MacBook#rEFIt|rEFIt]]).}}<br />
Run the installation wizard. When asked to partition your hard drive, create a small HFS partition. This is where you put the standalone GRUB package after the installation.<br />
The rest of the installation is pretty much the same as usual. When choosing the bootloader, select GRUB and install it. Don't worry about any errors, we will create the bootable efi image on our own afterwards.<br />
<br />
After the installation has completed, directly copy the WiFi firmware to the installed system to {{ic|/tmp/install/usr/lib/firmware/}}.<br />
<br />
=== Bootloader ===<br />
<br />
==== Direct EFI booting ====<br />
''See: [[UEFI_Bootloaders]]''<br />
<br />
==== GRUB ====<br />
<br />
Another solution is to install [[GRUB]]. Edit {{ic|/tmp/install/boot/grub/grub.cfg}} and edit the boot entry to load linux-mainline instead of the normal one. Also append {{ic|noapic}} to the kernel line again.<br />
<br />
Now cd into {{ic|/tmp/install/}} and create the GRUB image by calling:<br />
grub-mkstandalone -o grub-standalone-x86_64.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi -C xz boot/grub/grub.cfg<br />
This will create file called {{ic|grub-standalone-x86_64.efi}} which contains GRUB and the config file. It is important to {{ic|cd}} into the right directory to make it pick up the config file and put it into the right place within the image.<br />
Copy this file to the HFS partition you have created earlier. Downside of this method is that you need to repeat this step whenever you want to change the GRUB config.<br />
<br />
Reboot the machine and boot into OS X. The HFS partition should be mounted and the GRUB standalone image in there. Follow the steps on this page to create the files needed to make the Apple boot loader pick up GRUB: http://mjg59.dreamwidth.org/7468.html.<br />
After creating the files, use {{ic|bless}} on the GRUB image on the partition, if you want to boot automatically to Arch, append {{ic|--setBoot}}.<br />
<br />
After another reboot, you should be able to select your installed Arch Linux by keeping the alt button pressed while booting in case you haven't used{{ic| --setBoot}} while blessing.<br />
<br />
== Post installation ==<br />
=== Graphics ===<br />
The Laptop comes with an nVidia and an Intel chip. The Nouveau, the i915 (from 3.6-rc5) and proprietary nvidia (from 302.17) drivers work.<br />
You can install the nvidia driver through {{Pkg|nvidia}} or the AUR package {{AUR|nvidia-beta-all}}.<br />
<br />
Since this device comes with a Retina (HiDPI) display, things are really small with native resolution. There are different ways to work around this "issue":<br />
# Increase the DPI value to get larger fonts (other things like icons may not look great that way)<br />
# Some desktop managers like [[KDM]] offer fine grained control over the size of icons, fonts, window controls, panels, etc... <br />
#* KDM is a great choice because the stock UI elements are vectors (not rasters which look terrible on Retina and don't scale infinitely). In addition the [[Wayland|KWin compositor]] does a remarkable job on the Retina display.<br />
# Lower the screen resolution to 1680x1050 (works fine at least with nouveau drivers), but things look a little bit blurry, of course<br />
# Use xrandr scale option with nvidia driver to scale the resolution down to what you want. Take a look at: http://linuxmacbookproretina.blogspot.no/<br />
<br />
=== Sound ===<br />
<br />
On the MacBookPro10,2 you must use the 'snd_hda_intel' driver with the model option 'mbp101'. This model option goes in the modprobe configuration and is undocumented in the list of models available online, but it work admirably. (Until you do this, it will look it is working because you'll be able to get sound out through HDMI, but /not/ the built-in speakers.)<br />
<br />
=== Touchpad ===<br />
Because of the integrated button, the synaptics touchpad driver can cause some issues. Adjusting {{AUR|xf86-input-mtrack-git}} should lead to a better end result.<br />
<br />
The following config uses a single touch for left, two for middle, three for right:<br />
Section "InputClass"<br />
MatchIsTouchpad "on"<br />
Identifier "Touchpads"<br />
Driver "mtrack"<br />
Option "Sensitivity" "0.65"<br />
Option "IgnoreThumb" "true"<br />
Option "IgnorePalm" "true"<br />
Option "TapButton1" "1" <br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
Option "ClickFinger1" "1"<br />
Option "ClickFinger2" "3"<br />
Option "ClickFinger3" "2"<br />
Option "BottomEdge" "25"<br />
EndSection<br />
<br />
== What doesn't work (early September 2012, 3.6-rc6) ==<br />
<br />
* Suspend mode on lid close with nouveau <s>and i915</s> (does not come out of suspend; blank screen).<br />
* Thunderbolt ethernet controller is not hot pluggable as of the 3.8.11-1 kernel. The controller cannot<br />
** be connected and used after boot<br />
** be used if the controller is logically or physically disconnected and reconnected during an active session<br />
** survive suspend and resume states because the kernel is not able to successfully change the power state<br />
<br />
== Discussions ==<br />
<br />
Here are a couple of interesting threads:<br />
* http://ubuntuforums.org/showthread.php?t=2006475<br />
* https://bbs.archlinux.org/viewtopic.php?id=144255&p=1</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=46897User:Codemac2008-08-02T19:13:24Z<p>Codemac: /* Goals */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Developer Roadmap ==<br />
{{User:Codemac/Roadmap}}<br />
== Package Ownership ==<br />
Update anything you want. I do not believe in code / package ownership. If you have been approved to be a TU, then update my community packages as you see fit. If you are a Dev, then update my extra and current packages as you see fit. Let me know if you do it; otherwise, thank you for your help.<br />
<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More -- '''''Done!'''''<br />
* Make money -- '''''Done!'''''<br />
* MF-ing graduate -- '''''Done!'''''<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Emacs]] > [[Vim]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > [[Gnus]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > [[Buckeyes]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://dev.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:jeff@archlinux.org jeff@archlinux.org]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=46657User:Codemac2008-07-29T04:05:05Z<p>Codemac: </p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Developer Roadmap ==<br />
{{User:Codemac/Roadmap}}<br />
== Package Ownership ==<br />
Update anything you want. I do not believe in code / package ownership. If you have been approved to be a TU, then update my community packages as you see fit. If you are a Dev, then update my extra and current packages as you see fit. Let me know if you do it; otherwise, thank you for your help.<br />
<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Emacs]] > [[Vim]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > [[Gnus]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > [[Buckeyes]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://dev.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:jeff@archlinux.org jeff@archlinux.org]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac/Roadmap&diff=41604User:Codemac/Roadmap2008-05-19T18:01:32Z<p>Codemac: /* New Archlinux SCM */</p>
<hr />
<div>=== Packaging ===<br />
Any comments here? Any problems with my packages? Anything you would like me to package? I don't have much here.<br />
<br />
=== New Archlinux SCM ===<br />
* We switched to SVN! It's better than nothing.<br />
<br />
=== Release Coordinator ===<br />
* Cooridnate releases, make sure everything gets done.<br />
* Make sure other people want me as one :P</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=41603User:Codemac2008-05-19T18:00:26Z<p>Codemac: /* Religious Positions */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Developer Roadmap ==<br />
{{User:Codemac/Roadmap}}<br />
<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Emacs]] > [[Vim]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > [[Gnus]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > [[Buckeyes]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://dev.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:jeff@archlinux.org jeff@archlinux.org]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=41602User:Codemac2008-05-19T17:58:36Z<p>Codemac: /* Web */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Developer Roadmap ==<br />
{{User:Codemac/Roadmap}}<br />
<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://dev.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:jeff@archlinux.org jeff@archlinux.org]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=Mirrors&diff=35880Mirrors2008-01-29T13:37:14Z<p>Codemac: /* United States */</p>
<hr />
<div>[[Category:Package management (English)]]<br />
[[Category:HOWTOs (English)]]<br />
== Enabling your favorite mirror ==<br />
<br />
The default pacman configuration for ''core'' looks like this:<br />
<br />
[core]<br />
Include = /etc/pacman.d/core<br />
<br />
If you want to use the HostEurope mirror as your default mirror, just add it before the <tt>Include</tt> line:<br />
<br />
[core]<br />
Server = <nowiki>ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/core/os/i686</nowiki><br />
Include = /etc/pacman.d/core<br />
<br><br />
'''edit:''' The release of pacman 3.1 introduced the /etc/pacman.d/mirrorlist with the variable $repo, no need to maintain separate list for each repository.<br />
<br />
Pacman will now try to connect to this mirror first. You can do the same for ''testing'', ''extra'', ''community'' and ''unstable''.<br />
<br />
'''Use the same mirror for all repositories. Otherwise packages may get installed that are incompatible to each other (like kernel26 from ''core'' and another (older) kernel module from ''extra'').'''<br />
<br />
== Mirror List ==<br />
<br />
This is a list of all known ArchLinux mirrors, that's more up to date than the [http://www.archlinux.org/download/ official download page] or the [http://cvs.archlinux.org/cgi-bin/viewcvs.cgi/base/pacman/ files in <tt>/etc/pacman.d/</tt>]. If you know of a mirror that is not listed, please add it. Mirrors which are no longer updated or have been unavailable for a long time can be deleted.<br />
<br />
Here is a hint to check just how up-to-date your chosen mirror is:<br />
# pick a server and browse to "extra/os/"<br />
# load [http://www.archlinux.org/ ArchLinux.org] in another tab or window<br />
# compare the last-modified date of the "i686" directory on the mirror to the "Extra" date on the homepage, in the "Package Repositories" box to the right.<br />
<br><br />
Many sites also provide http service, but keep in mind that pacman relies on ftp to determine if a repository got updated. With http it fetches the repository database each time you run <tt>pacman -Sy</tt>, even if it didn't change since the last run.<br />
<br />
'''Attention: Do not add new mirrors to the list below. If you want your mirror to be added to official list - file a feature request. In the meantime add it to the "Unofficial mirrors" list at the end of this page.'''<br />
<br />
=== Australia ===<br />
*ftp://mirror.pacific.net.au/linux/archlinux/ <sub>[http://mirror.pacific.net.au/linux/archlinux/ http]</sub><br />
*ftp://mirror.aarnet.edu.au/pub/archlinux/ <sub>[http://mirror.aarnet.edu.au/pub/archlinux/ http]</sub><br />
<br />
=== Austria ===<br />
*ftp://gd.tuwien.ac.at/opsys/linux/archlinux/ <sub>[http://gd.tuwien.ac.at/opsys/linux/archlinux/ http]</sub><br />
*ftp://mirror.internode.on.net/pub/archlinux/ <sub>[http://mirror.internode.on.net/pub/archlinux/ http]</sub><br />
<br />
=== Belgium ===<br />
*ftp://ftp.belnet.be/mirror/archlinux.org/ <sub>[http://ftp.belnet.be/mirror/archlinux.org/ http]</sub><br />
<br />
=== Brazil ===<br />
*ftp://archlinux.c3sl.ufpr.br/archlinux/ <sub>[http://archlinux.c3sl.ufpr.br/ http]</sub><br />
<br />
=== Czech Republic ===<br />
*ftp://ftp.sh.cvut.cz/MIRRORS/arch/ <sub>[http://ftp.sh.cvut.cz/MIRRORS/arch/ http]</sub><br />
<br />
=== Estonia ===<br />
*ftp://ftp.estpak.ee/pub/archlinux/ <sub>[http://ftp.estpak.ee/pub/archlinux/ http]</sub><br />
<br />
=== Finland ===<br />
*ftp://ftp.sixnix.net/pub/archlinux/<br />
<br />
=== France ===<br />
*ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/ <sub>[http://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/ http]</sub> <sub>[rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/ rsync]</sub><br />
*ftp://mir1.archlinuxfr.org/archlinux <sub>[http://mir1.archlinuxfr.org/archlinux http]</sub> <sub>[rsync://mir1.archlinuxfr.org/archlinux rsync]</sub><br />
*ftp://mir2.archlinuxfr.org/archlinux <sub>[http://mir2.archlinuxfr.org/archlinux http]</sub> <sub>[rsync://mir2.archlinuxfr.org/archlinux rsync]</sub><br />
*http://mir.archlinux.fr/<br />
*ftp://ftp.free.fr/mirrors/ftp.archlinux.org/<br />
<br />
=== Germany ===<br />
*ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/ <sub>[http://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/ http]</sub><br />
*ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/ <sub>[http://ftp.hosteurope.de/mirror/ftp.archlinux.org/ http]</sub><br />
*ftp://ftp.archlinuxppc.org/i686/<br />
<br />
=== Great Britain ===<br />
*http://www.mirrorservice.org/sites/ftp.archlinux.org/<br />
<br />
=== Greece ===<br />
*ftp://ftp.ntua.gr/pub/linux/archlinux/ <sub>[http://ftp.ntua.gr/pub/linux/archlinux/ http]</sub><br />
<br />
=== Hungary ===<br />
*ftp://ftp.mfa.kfki.hu/pub/mirrors/ftp.archlinux.org/<br />
<br />
=== Ireland ===<br />
*ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/ <sub>[http://ftp.heanet.ie/mirrors/ftp.archlinux.org/ http]</sub><br />
<br />
=== Israel ===<br />
*http://mirror.isoc.org.il/pub/archlinux/<br />
<br />
=== Italy ===<br />
*ftp://mi.mirror.garr.it/mirrors/archlinux/ <sub>[http://mi.mirror.garr.it/mirrors/archlinux/ http]</sub><br />
<br />
=== Netherlands ===<br />
*ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/ <sub>[http://ftp.nluug.nl/pub/metalab/distributions/archlinux/ http]</sub><br />
*ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/ <sub>[http://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/ http]</sub><br />
<br />
=== Poland ===<br />
*ftp://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/archlinux/ [http://ftp.icm.edu.pl/pub/Linux/sunsite/distributions/archlinux/ http]<br />
*ftp://mirror.icis.pcz.pl/archlinux/<br />
*ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.archlinux.org/ [http://piotrkosoft.net/pub/mirrors/ftp.archlinux.org/ http]<br />
<br />
=== Portugal ===<br />
*ftp://cesium.di.uminho.pt/pub/archlinux/ <sub>[http://cesium.di.uminho.pt/pub/archlinux/ http]</sub><br />
<br />
=== Romania ===<br />
*ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/ <sub>[http://ftp.iasi.roedu.net/mirrors/archlinux.org/ http]</sub><br />
<br />
=== Russia ===<br />
*ftp://archlinux.org.ru/pub/archlinux/ (rsync available)<br />
*ftp://mirror.yandex.ru/archlinux/ <sub>[http://mirror.yandex.ru/archlinux/ http]</sub> (rsync available)<br />
<br />
=== Sweden ===<br />
*ftp://ftp.ds.hj.se/pub/os/linux/archlinux/ <sub>[http://ftp.ds.hj.se/pub/os/linux/archlinux/ http]</sub><br />
*ftp://ftp.gigabit.nu/ <sub>[http://ftp.gigabit.nu/ http]</sub><br />
<br />
=== Switzerland ===<br />
*ftp://archlinux.puzzle.ch/ <sub>[http://archlinux.puzzle.ch/ http]</sub><br />
<br />
=== Turkey ===<br />
*http://server.elsistech.com/archlinux/<br />
<br />
=== Ukraine ===<br />
*ftp://hell.org.ua/archlinux/ (rsync available)<br />
*ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/ <sub>[http://ftp.linux.kiev.ua/pub/Linux/ArchLinux/ http]</sub> (i686 only, no new isos)<br />
<br />
=== United States ===<br />
*ftp://ftp.archlinux.org/<br />
*ftp://ftp.nethat.com/pub/linux/archlinux/<br />
*ftp://locke.suu.edu/linux/dist/archlinux/<br />
*ftp://mirrors.unixheads.org/archlinux <sub>[http://mirrors.unixheads.org/archlinux http]</sub> (rsync available)<br />
*ftp://mirrors.easynews.com/linux/archlinux/ <sub>[http://mirrors.easynews.com/linux/archlinux/ http]</sub><br />
*ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/archlinux/ [http://ftp-linux.cc.gatech.edu/pub/linux/distributions/archlinux/ http]<br />
*ftp://mirror.cs.vt.edu/pub/ArchLinux/ <sub>[http://mirror.cs.vt.edu/pub/ArchLinux/ http]</sub> (rsync available)<br />
*ftp://ibiblio.org/pub/linux/distributions/archlinux/ <sub>[http://distro.ibiblio.org/pub/linux/distributions/archlinux/ http]</sub><br />
*http://holmes.umflint.edu/archlinux/<br />
<br />
== Unofficial mirrors ==<br />
'''These mirrors are not listed in <code>/etc/pacman.d/*</code>.'''<br />
<br />
=== Global ===<br />
*http://prdownloads.sourceforge.net/archlinux/ ( Doesn't have recent ISO releases. Use it only if for some reason you want to use an older ISO. )<br />
<br />
=== Malaysia ===<br />
*http://oss.mmu.edu.my/distro/arch (ISOs only)<br />
<br />
=== Norway ===<br />
*ftp://jane.tihlde.org/pub/archlinux/ <sub>[http://jane.tihlde.org/pub/archlinux/ http] </sub> <sub> [rsync://jane.tihlde.org/pub/archlinux/ rsync] </sub><br />
<br />
=== Taiwan ===<br />
*ftp://cle.linux.org.tw/pub/ArchLinux/ (no ''testing'' and ''unstable'', no new isos)<br />
=== China ===<br />
http://mirrors.lcuc.org.cn/archlinux/<br />
<br><br />
http://mirror.lupaworld.com/archlinux/<br />
<br />
=== United States ===<br />
*ftp://ftp.osuosl.org/pub/archlinux/ <sub>[http://ftp.osuosl.org/pub/archlinux/ http]</sub> (i686 only - ''current'' and ''extra'') - outdated<br />
<br />
== IPv6-ready mirrors ==<br />
*niue.belnet.be (Belgium)<br />
*ftp.estpak.ee (Estonia)<br />
*patroklos.noc.ntua.gr (Greece)<br />
*ftp.heanet.ie (Ireland)<br />
*ftp.nluug.nl (Netherlands)<br />
*ftp.surfnet.nl (Netherlands)<br />
*ftp.sixnix.net/ftp6.sixnix.net (Finland)</div>Codemachttps://wiki.archlinux.org/index.php?title=Improving_performance/Boot_process&diff=32314Improving performance/Boot process2007-11-11T23:52:18Z<p>Codemac: /* Rc.sysinit */ Told people to not do stupid things.</p>
<hr />
<div>[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Speedup boot}}<br />
{{i18n_entry|Česky|Rychlejší boot (Česky)}}<br />
{{i18n_links_end}}<br />
<br />
This article contains some tips on how you can improve your boot performance.<br />
<br />
== Tweaking Boot Files ==<br />
<br />
=== Mkinitcpio.conf ===<br />
<br />
Open /etc/mkinitcpio.conf as root and delete the HOOKS you don't need.<br />
HOOKS="base udev autodetect sata usbinput filesystems"<br />
[[Mkinitcpio | Read more]] about which HOOKS you can remove.<br />
<br />
=== Rc.conf ===<br />
<br />
Open /etc/rc.conf as root, scroll to the hardware section.<br />
MOD_AUTOLOAD="yes"<br />
If you autoload your modules, there is no point of manually selecting modules. <br />
So clear out MODULES like this.<br />
MODULES=()<br />
<br />
On the other hand, you can get a speed increase by disabling udev autoloading<br />
MOD_AUTOLOAD="no"<br />
and manually populate your MODULES=() line with the modules you need/use. <br />
<br />
In the network section, make sure you only load the network interface you need. Manually configuring your network is also faster then using dhcp.<br />
<br />
Then find remove all DAEMONS you don't need.<br />
DAEMONS=(alsa network gdm)<br />
Then move your Xdm to front, and background all DAEMONS.<br />
DAEMONS=(@gdm @alsa @network)<br />
<br />
=== Rc.sysinit ===<br />
<br />
<center>'''''THIS IS A BAD IDEA'''''</center><br />
Not letting your modules load before you go off trying to set up your network etc is just not going to work as expected. I'd attribute any success to this method as pure luck, and suggest you remove the ampersand immediately even if it is working. -- [[User:Codemac|Codemac]] 18:52, 11 November 2007 (EST)<br />
<br />
<br />
Open /etc/rc.sysinit as root and find<br />
/sbin/modprobe $mod<br />
By adding a '&' to the end, all modules will be loaded in background.<br />
/sbin/modprobe $mod &<br />
<br />
Note that this can potentially cause your system to not boot if certain modules are needed. Have a live-cd handy in case this happens to you.<br />
<br />
=== Inittab ===<br />
<br />
Open /etc/inittab as root and find the agetty terminal lines.<br />
c1:2345:respawn:/sbin/agetty 38400 vc/1 linux<br />
c2:2345:respawn:/sbin/agetty 38400 vc/2 linux<br />
c3:2345:respawn:/sbin/agetty 38400 vc/3 linux<br />
c4:2345:respawn:/sbin/agetty 38400 vc/4 linux<br />
c5:2345:respawn:/sbin/agetty 38400 vc/5 linux<br />
c6:2345:respawn:/sbin/agetty 38400 vc/6 linux<br />
Agetty terminals are what you see when you press Ctrl+Alt+F1-6<br />
Now, if you only need 2 or 3 then comment out the rest.<br />
<br />
c1:2345:respawn:/sbin/agetty 38400 vc/1 linux<br />
c2:2345:respawn:/sbin/agetty 38400 vc/2 linux<br />
#c3:2345:respawn:/sbin/agetty 38400 vc/3 linux<br />
#c4:2345:respawn:/sbin/agetty 38400 vc/4 linux<br />
#c5:2345:respawn:/sbin/agetty 38400 vc/5 linux<br />
#c6:2345:respawn:/sbin/agetty 38400 vc/6 linux<br />
<br />
== Compile a kernel ==<br />
<br />
To decrease boot time, a stripped kernel is a must.<br />
[[Kernel_Compilation_From_Source | Read more about compiling a kernel. ]]<br />
<br />
Here are some tips from XxX Owned XxX ( http://ubuntuforums.org/showpost.php?p=1174954&postcount=507 ).<br />
Warning: Some of these tips may cause your kernel to not compile properly. Use them at you own risk.<br />
<br />
S=Select<br />
U=Unselect<br />
<br />
Feel free to add some!<br />
<br />
===General Setup===<br />
<br />
S: Support for paging of anonymous memory. (swap)<br />
<br />
===Loadable Module Support===<br />
<br />
U: Module Versioning Support<br />
U: Source checksum for all modules<br />
<br />
===Block Layer===<br />
<br />
U: Large Block Devices (Uncheck all if possible)<br />
// IO Schedulers // <br />
U: Anticipatory I/O Schedulers<br />
U: Deadline I/O Schedulers<br />
<br />
===Processor type and features===<br />
<br />
U: Symmetric processing support (Unless your processor(s) support(s) it)<br />
U: Generic x86 support<br />
S: HPET Timer Support<br />
S: Voluntary Kernel Preemption (Desktop) (Under Preemption Model)<br />
S: Local APCI support on uniprocessors<br />
S: IOAPCI support on uniprocessors (Under Local APCI support)<br />
S: Off (Under High Memory support if you have under 1 gig of ram)<br />
S: Sparse Memory (Under Memory Model, some computers will not have this option)<br />
S: MTRR support<br />
S: Use register arguements<br />
S: Enable seccomp to compute untrusted bytecode<br />
S: 1000hz (Under Timer Frequency)<br />
// Firmware Drivers // <br />
U: Anything that you don't need.<br />
<br />
===Bus Options===<br />
<br />
S: Message Signaled Interrupts (MSI and MSIX) (PCI_MSI)<br />
<br />
===Network===<br />
<br />
U: Anything/Everything in Amateur Radio, IrDA, and Bluetooth if you don't need it.<br />
// Network Options // <br />
S: Packet socket:mmapped IO<br />
<br />
===Device Drivers===<br />
<br />
// ATA/ATAP/MFR/RLL support // <br />
S: Use PCI DMA by Default<br />
U: IDE Taskfile Acess<br />
// Raid and LVM // <br />
U: Unselect if you do not need it.<br />
// I2O support // <br />
U: Unselect if you do not need it. Most people do not.<br />
<br />
===Network Device support===<br />
U: EQL support<br />
U: Universial TUN/TAP device driver support<br />
U: FDDI Driver support<br />
U: HIPPI driver support<br />
U: SLIP (serial line) support<br />
U: Traffic Support<br />
U: Network console loggin support<br />
// ARCnet support // <br />
U: Unselect if you do not require/need it.<br />
// Ethernet Support (1000 MB) // <br />
U: Uselect the cards that you don't have.<br />
// Ethernet Support (10000 MB) // <br />
U: Unselect what you do not need.<br />
// Token Ring Devices // <br />
U: Unselect if you are not connected to a Token ring network.<br />
// WAN interfaces support // <br />
U: Unselect the some cards/the whole thing if you do not need it.<br />
// ISDN subsystem // <br />
U: ISDN support (If you do not require it)<br />
<br />
===Input device support===<br />
<br />
U: Touchscreen interface<br />
U: Touchscreens (Under the TouchScreens subcatergory)<br />
<br />
===Character Devices===<br />
<br />
U: Any video cards that you do not need.<br />
// Watchdog cards // <br />
U: Watch Dog Timer support<br />
<br />
===Misc Devices===<br />
<br />
U: Device driver for IBM/RSA service drivers<br />
// Video Capture Adapters // <br />
U: Unselect anything that you don't need.<br />
// Radio Adapters // <br />
U: Unselect anything that you don't need.<br />
// Digital Video Broadcasting Devices // <br />
U: DVB for Linux<br />
<br />
===Graphics support===<br />
<br />
U: Unselect any graphics cards that you don't have.<br />
// Logo Configuration // <br />
S: Bootup Logo (and anything under it)<br />
<br />
===File systems===<br />
<br />
U: Unselect any file systems that you are NOT going to use. (Minix, ROM, Quota, etc.)<br />
// DOS/FAT/NT Filesystems // <br />
S: NTFS write support<br />
// Network File Systems // <br />
U: NFS file system support<br />
U: NFS server support<br />
U: NCP file system support<br />
U: Coda file system support<br />
U: Andrew file system support<br />
U: Plan 9 resource sharing support<br />
// Partition Types // <br />
U: Advanced partition selection<br />
// Native Language Support // <br />
U: Unselect all but your native language<br />
<br />
===Instrumentation Support===<br />
<br />
U: Profiling Support<br />
U: Kprobes<br />
<br />
===Kernel Hacking===<br />
<br />
U: Show timing information on printks<br />
U: Magic SysRq Key<br />
U: Kernel Hacking<br />
U: Debug Filesystem<br />
U: Compile the kernel with frame unwind information</div>Codemachttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=23574Package Maintainers2007-04-30T19:39:34Z<p>Codemac: /* Contact Info */</p>
<hr />
<div>==brain0==<br />
==bjorn==<br />
==codemac==<br />
===Contact Info===<br />
{|border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Email || Jabber || IRC || Forum || AUR ||<br />
|-<br />
| [mailto:jeff@archlinux.org jeff@archlinux.org] || j@xmpp.us || [irc://irc.freenode.net/archlinux codemac@freenode#archlinux] || [http://bbs.archlinux.org/profile.php?id=3725 codemac] || [http://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]<br />
|}<br />
<br />
==DaNiMoTh==<br />
==dejari==<br />
==dsa==<br />
==dtw==<br />
==ganja_guru==<br />
==encelo==<br />
==filoktetes==<br />
==iphitus==<br />
==mOLOk==<br />
==Neverth==<br />
==Pierre==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Pierre Schmitz<br />
|-<br />
|E-Mail<br />
|pierre@archlinux.de<br />
|-<br />
|Jabber<br />
|pierre@jabber.archlinux.de<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=1760 Pierre]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=16 Pierre]<br />
|}<br />
==phrakture==<br />
==pjmattal==<br />
==Romashka==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Roman Kyrylych<br />
|-<br />
|E-Mail<br />
|Roman.Kyrylych@gmail.com<br />
|-<br />
|Jabber<br />
|Romashka@amessage.info<br>Roman.Kyrylych@gmail.com<br />
|-<br />
|ICQ<br />
|Romashka<br>295208414<br />
|-<br />
|IRC<br />
|Romashka<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=4852 Romashka]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=DisplayAccount&ID=1214 Romashka]<br />
|}<br />
<br />
==sergej==<br />
==shastry==<br />
==Snowman==<br />
==swiergot==<br />
==vegai==<br />
==voidnull==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Giovanni Scafora<br />
|-<br />
|E-Mail<br />
|linuxmania@gmail.com<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=3497 voidnull]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=61 voidnull]<br />
|}<br />
<br />
==wizzomafizzo==<br />
==xterminus==</div>Codemachttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=23573Package Maintainers2007-04-30T19:37:00Z<p>Codemac: /* Contact Info */</p>
<hr />
<div>==brain0==<br />
==bjorn==<br />
==codemac==<br />
===Contact Info===<br />
{|border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Email || Jabber || IRC || Forum || AUR ||<br />
|-<br />
| [mailto:jeff@archlinux.org jeff@archlinux.org] || j@xmpp.us || [irc://irc.freenode.net/archlinux codemac@freenode#archlinux] || [http://bbs.archlinux.org/profile.php?id=3725 codemac] || [http://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]<br />
|-<br />
|}<br />
<br />
==DaNiMoTh==<br />
==dejari==<br />
==dsa==<br />
==dtw==<br />
==ganja_guru==<br />
==encelo==<br />
==filoktetes==<br />
==iphitus==<br />
==mOLOk==<br />
==Neverth==<br />
==Pierre==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Pierre Schmitz<br />
|-<br />
|E-Mail<br />
|pierre@archlinux.de<br />
|-<br />
|Jabber<br />
|pierre@jabber.archlinux.de<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=1760 Pierre]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=16 Pierre]<br />
|}<br />
==phrakture==<br />
==pjmattal==<br />
==Romashka==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Roman Kyrylych<br />
|-<br />
|E-Mail<br />
|Roman.Kyrylych@gmail.com<br />
|-<br />
|Jabber<br />
|Romashka@amessage.info<br>Roman.Kyrylych@gmail.com<br />
|-<br />
|ICQ<br />
|Romashka<br>295208414<br />
|-<br />
|IRC<br />
|Romashka<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=4852 Romashka]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=DisplayAccount&ID=1214 Romashka]<br />
|}<br />
<br />
==sergej==<br />
==shastry==<br />
==Snowman==<br />
==swiergot==<br />
==vegai==<br />
==voidnull==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Giovanni Scafora<br />
|-<br />
|E-Mail<br />
|linuxmania@gmail.com<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=3497 voidnull]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=61 voidnull]<br />
|}<br />
<br />
==wizzomafizzo==<br />
==xterminus==</div>Codemachttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=23571Package Maintainers2007-04-30T19:32:34Z<p>Codemac: /* codemac */</p>
<hr />
<div>==brain0==<br />
==bjorn==<br />
==codemac==<br />
===Contact Info===<br />
{|border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Email || Jabber || IRC || Forum || AUR ||<br />
|-<br />
| jeff@archlinux.org || j@xmpp.us || codemac || http://bbs.archlinux.org/profile.php?id=3725 || aoeu<br />
|-<br />
|}<br />
<br />
==DaNiMoTh==<br />
==dejari==<br />
==dsa==<br />
==dtw==<br />
==ganja_guru==<br />
==encelo==<br />
==filoktetes==<br />
==iphitus==<br />
==mOLOk==<br />
==Neverth==<br />
==Pierre==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Pierre Schmitz<br />
|-<br />
|E-Mail<br />
|pierre@archlinux.de<br />
|-<br />
|Jabber<br />
|pierre@jabber.archlinux.de<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=1760 Pierre]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=16 Pierre]<br />
|}<br />
==phrakture==<br />
==pjmattal==<br />
==Romashka==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Roman Kyrylych<br />
|-<br />
|E-Mail<br />
|Roman.Kyrylych@gmail.com<br />
|-<br />
|Jabber<br />
|Romashka@amessage.info<br>Roman.Kyrylych@gmail.com<br />
|-<br />
|ICQ<br />
|Romashka<br>295208414<br />
|-<br />
|IRC<br />
|Romashka<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=4852 Romashka]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=DisplayAccount&ID=1214 Romashka]<br />
|}<br />
<br />
==sergej==<br />
==shastry==<br />
==Snowman==<br />
==swiergot==<br />
==vegai==<br />
==voidnull==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Giovanni Scafora<br />
|-<br />
|E-Mail<br />
|linuxmania@gmail.com<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=3497 voidnull]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=61 voidnull]<br />
|}<br />
<br />
==wizzomafizzo==<br />
==xterminus==</div>Codemachttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=23570Package Maintainers2007-04-30T19:30:49Z<p>Codemac: /* =Contact Info */</p>
<hr />
<div>==brain0==<br />
==bjorn==<br />
==codemac==<br />
===Contact Info===<br />
{|border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Email || Jabber || IRC<br />
|-<br />
| jeff@archlinux.org || j@xmpp.us || codemac on freenode and oftc<br />
|-<br />
|}<br />
<br />
==DaNiMoTh==<br />
==dejari==<br />
==dsa==<br />
==dtw==<br />
==ganja_guru==<br />
==encelo==<br />
==filoktetes==<br />
==iphitus==<br />
==mOLOk==<br />
==Neverth==<br />
==Pierre==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Pierre Schmitz<br />
|-<br />
|E-Mail<br />
|pierre@archlinux.de<br />
|-<br />
|Jabber<br />
|pierre@jabber.archlinux.de<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=1760 Pierre]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=16 Pierre]<br />
|}<br />
==phrakture==<br />
==pjmattal==<br />
==Romashka==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Roman Kyrylych<br />
|-<br />
|E-Mail<br />
|Roman.Kyrylych@gmail.com<br />
|-<br />
|Jabber<br />
|Romashka@amessage.info<br>Roman.Kyrylych@gmail.com<br />
|-<br />
|ICQ<br />
|Romashka<br>295208414<br />
|-<br />
|IRC<br />
|Romashka<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=4852 Romashka]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=DisplayAccount&ID=1214 Romashka]<br />
|}<br />
<br />
==sergej==<br />
==shastry==<br />
==Snowman==<br />
==swiergot==<br />
==vegai==<br />
==voidnull==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Giovanni Scafora<br />
|-<br />
|E-Mail<br />
|linuxmania@gmail.com<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=3497 voidnull]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=61 voidnull]<br />
|}<br />
<br />
==wizzomafizzo==<br />
==xterminus==</div>Codemachttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=23568Package Maintainers2007-04-30T19:30:11Z<p>Codemac: </p>
<hr />
<div>==brain0==<br />
==bjorn==<br />
==codemac==<br />
====Contact Info===<br />
{|-<br />
! Email || Jabber || IRC<br />
|-<br />
| jeff@archlinux.org || j@xmpp.us || codemac on freenode and oftc<br />
|-<br />
|}<br />
<br />
==DaNiMoTh==<br />
==dejari==<br />
==dsa==<br />
==dtw==<br />
==ganja_guru==<br />
==encelo==<br />
==filoktetes==<br />
==iphitus==<br />
==mOLOk==<br />
==Neverth==<br />
==Pierre==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Pierre Schmitz<br />
|-<br />
|E-Mail<br />
|pierre@archlinux.de<br />
|-<br />
|Jabber<br />
|pierre@jabber.archlinux.de<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=1760 Pierre]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=16 Pierre]<br />
|}<br />
==phrakture==<br />
==pjmattal==<br />
==Romashka==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Roman Kyrylych<br />
|-<br />
|E-Mail<br />
|Roman.Kyrylych@gmail.com<br />
|-<br />
|Jabber<br />
|Romashka@amessage.info<br>Roman.Kyrylych@gmail.com<br />
|-<br />
|ICQ<br />
|Romashka<br>295208414<br />
|-<br />
|IRC<br />
|Romashka<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=4852 Romashka]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=DisplayAccount&ID=1214 Romashka]<br />
|}<br />
<br />
==sergej==<br />
==shastry==<br />
==Snowman==<br />
==swiergot==<br />
==vegai==<br />
==voidnull==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Giovanni Scafora<br />
|-<br />
|E-Mail<br />
|linuxmania@gmail.com<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=3497 voidnull]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=61 voidnull]<br />
|}<br />
<br />
==wizzomafizzo==<br />
==xterminus==</div>Codemachttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=23566Package Maintainers2007-04-30T19:28:55Z<p>Codemac: /* codemac */</p>
<hr />
<div>==brain0==<br />
==bjorn==<br />
==codemac==<br />
=Contact Info=<br />
{|-<br />
! Email || Jabber || IRC<br />
|-<br />
| jeff@archlinux.org || j@xmpp.us || codemac on freenode and oftc |<br />
|-<br />
|}<br />
<br />
==DaNiMoTh==<br />
==dejari==<br />
==dsa==<br />
==dtw==<br />
==ganja_guru==<br />
==encelo==<br />
==filoktetes==<br />
==iphitus==<br />
==mOLOk==<br />
==Neverth==<br />
==Pierre==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Pierre Schmitz<br />
|-<br />
|E-Mail<br />
|pierre@archlinux.de<br />
|-<br />
|Jabber<br />
|pierre@jabber.archlinux.de<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=1760 Pierre]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=16 Pierre]<br />
|}<br />
==phrakture==<br />
==pjmattal==<br />
==Romashka==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Roman Kyrylych<br />
|-<br />
|E-Mail<br />
|Roman.Kyrylych@gmail.com<br />
|-<br />
|Jabber<br />
|Romashka@amessage.info<br>Roman.Kyrylych@gmail.com<br />
|-<br />
|ICQ<br />
|Romashka<br>295208414<br />
|-<br />
|IRC<br />
|Romashka<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=4852 Romashka]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=DisplayAccount&ID=1214 Romashka]<br />
|}<br />
<br />
==sergej==<br />
==shastry==<br />
==Snowman==<br />
==swiergot==<br />
==vegai==<br />
==voidnull==<br />
{|<br />
|style="padding-right:20px;"|Name<br />
|Giovanni Scafora<br />
|-<br />
|E-Mail<br />
|linuxmania@gmail.com<br />
|-<br />
|Forum<br />
|[http://bbs.archlinux.org/profile.php?id=3497 voidnull]<br />
|-<br />
|AUR<br />
|[http://aur.archlinux.org/account.php?Action=AccountInfo&ID=61 voidnull]<br />
|}<br />
<br />
==wizzomafizzo==<br />
==xterminus==</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac/Roadmap&diff=22000User:Codemac/Roadmap2007-03-17T20:26:17Z<p>Codemac: New page: === Packaging === Any comments here? Any problems with my packages? Anything you would like me to package? I don't have much here. === New Archlinux SCM === * Push for monotone * Other...</p>
<hr />
<div>=== Packaging ===<br />
Any comments here? Any problems with my packages? Anything you would like me to package? I don't have much here.<br />
<br />
=== New Archlinux SCM ===<br />
* Push for monotone<br />
* Otherwise whatever!<br />
<br />
=== Release Coordinator ===<br />
* Cooridnate releases, make sure everything gets done.<br />
* Make sure other people want me as one :P</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=21999User:Codemac2007-03-17T20:23:44Z<p>Codemac: </p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Developer Roadmap ==<br />
{{User:Codemac/Roadmap}}<br />
<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://hg.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:jeff@archlinux.org jeff@archlinux.org]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=21998User:Codemac2007-03-17T20:20:44Z<p>Codemac: /* Contact */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://hg.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:jeff@archlinux.org jeff@archlinux.org]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=21997User:Codemac2007-03-17T20:20:14Z<p>Codemac: /* Web */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://hg.codemac.net/ code]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=Unofficial_user_repositories&diff=21262Unofficial user repositories2007-02-22T23:31:40Z<p>Codemac: /* List of PUR (unofficial user repositories) | i686 */</p>
<hr />
<div>[[Category: Package management (English)]]<br />
[[Category: General (English)]]<br />
<br />
== Why unofficial user repositories ==<br />
Since the AUR only allows users to upload PKGBUILD and other package build related files, but does not provide a means for distributing a binary package, a user may want to create a binary repository of their packages elsewhere.<br />
<br />
'''However:''' Be advised, if you only put your packages in your private repo and neglect AUR, your package will never make it into community repo nor a central storage space(AUR) which is bad for users, since they will have to add 'YetAnotherThird-party-Repo'(YATR) to their /etc/pacman.conf which will make it slower to update. But the main reason you should not have repo-only packages is that not having packages in a central place confuses and gives users a second job in that they now have to search for ''Repositories'' in addition to ''Packages''.<br />
<br />
Thus the best way to have a private repo is to offer it as a ''supplement'' to the AUR for those users who don't want to compile. You should try to avoid to offer it as a ''substitute''.<br />
<br />
== The community repository, maintained by the TUs==<br />
<nowiki>[community]<br />
Server = ftp://ftp.archlinux.org/community/os/i686/</nowiki><br />
<br />
The community repository is included in pacman's default configuration, but disabled. You can enable it by removing the # in these two lines:<br />
<br />
[community]<br />
Include = /etc/pacman.d/community<br />
<br />
== List of PUR (unofficial user repositories) | i686 ==<br />
<nowiki><br />
[AqD]<br />
## aqd's hacked apps, see http://aquila.deus.googlepages.com/archlinuxpackages<br />
Server = http://aquila.deus.googlepages.com/<br />
<br />
[archlinuxfr]<br />
## The french Archlinux communities packages<br />
Server = http://www.archlinux.fr/os/i686<br />
<br />
[Victor]<br />
Server = http://personales.ya.com/vmromanos/arch/pkgs<br />
<br />
[archie]<br />
Server = ftp://ftp.sunsite.dk/projects/archie/packages<br />
<br />
[blub]<br />
## by bobrik<br />
Server = http://bobrik.hovel.ru/archlinux/blub<br />
<br />
[brain0]<br />
## gcc2, gvpe, siefs<br />
Server = http://www-users.rwth-aachen.de/thomas.baechler/arch/brain0/os/i686<br />
<br />
[chman]<br />
Server = http://arch.shakebox.org/pkg/<br />
<br />
[cjdj]<br />
Server = http://www.cjdj.org/arch/pkg <br />
<br />
[danimoth]<br />
## Xgl and dependencies<br />
Server = http://jjdanimoth.altervista.org/arch/i686<br />
<br />
[darwin]<br />
Server = http://darwin.info.tm/arch/i686<br />
<br />
[dibble]<br />
Server = http://dtw.jiwe.org/pkgs/dibble<br />
<br />
[dma147]<br />
Server = http://arch.linux-stats.org/pkgs<br />
<br />
[dsa]<br />
Server = http://sistemas.unilestemg.br/douglas/downloads/arch<br />
<br />
[fatsobob]<br />
Server = http://www.animeroot.com/fatsobob/Repo<br />
<br />
[fubar]<br />
Server = http://marcosaxo.madoka.be/files/arch<br />
<br />
[janitux]<br />
Server = http://janitux.mortals.dy.fi <br />
<br />
[karsten] <br />
## 32-bit<br />
Server = http://arch.os-zen.net/pkg/karsten/i686 <br />
<br />
[kde-split]<br />
Server = http://gotux.altervista.org/arch/i686/<br />
<br />
[Lapis]<br />
## Linux-sevenler packages.Zemberek , virtualbox and other stuff<br />
Server = http://arch.linux-sevenler.org/pkgs <br />
<br />
[marfis]<br />
Server = http://arch.marfis.org/binaries<br />
<br />
[nooms]<br />
## mpd/gmpc-svn, gmpc plugins, ...<br />
Server = http://arch.nooms.de/pkg/i686<br />
<br />
[n0yd]<br />
## Misc pkg's (Songbird,kiba-dock,other "goodies":D) Note: Possible non-free contents<br />
Server = http://www.n0yd.net/arch<br />
<br />
[nvidia-beta]<br />
## nvidia 0.9.* beta drivers<br />
Server = http://box.decemplex.net/~thomas/nvidia-beta/<br />
<br />
[obarchie]<br />
Server = http://dtw.jiwe.org/pkgs/obarchie<br />
<br />
[perlcpan]<br />
## More info here: http://wiki.archlinux.org/index.php/PerlCPAN_Repository<br />
Server = http://arch.os-zen.net/perlcpan/packages<br />
<br />
[pharfox]<br />
Server = http://arch.debianbox.be<br />
<br />
[takhis] <br />
## e17, ...<br />
Server = ftp://takhis.net/arch<br />
<br />
[vegai]<br />
Server = http://people.jyu.fi/~vpkaihla/arch<br />
<br />
[venox]<br />
Server = http://arch.lworks.cjb.net/<br />
<br />
[wael]<br />
Server = http://wael.nasreddine.com/files/arch/repo/wael/os/i686/ <br />
<br />
[kdemod]<br />
# splitted KDE... take a look here: http://bbs.archlinux.org/viewtopic.php?t=23319<br />
Server = http://kdemod.ath.cx/repo/current<br />
<br />
[garbage]<br />
Server = http://exire.dyndns.org:8081/arch/repo<br />
</nowiki><br />
<br />
== List of PUR (unofficial user repositories) | x86-64 ==<br />
<nowiki><br />
[stalwart64]<br />
## Few good programs official arch64 repos lack. See http://stalwart.hopto.org/~stalwart/?page_id=95 for more info<br />
Server = http://stalwart.hopto.org/~stalwart/arch64<br />
<br />
[olympus]<br />
## by zeus<br />
## see http://archlinux.org.ru/forum/index.php/topic,39.0.html for more info<br />
Server = http://zeus.hovel.ru/archlinux/olympus/<br />
<br />
</nowiki><br />
<br />
== Add your own repository to this list ==<br />
If you have your own repository, please add this to this list, so that all other users knows where to find your packages.</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac/Bio&diff=15762User:Codemac/Bio2006-10-16T01:19:03Z<p>Codemac: </p>
<hr />
<div>Born in 1986 and raised in Dublin, Ohio, until coming to study Computer Science at Virginia Polytechnic Institute and State University.<br />
<br />
Been using linux since middle school, and is currently a developer for ArchLinux.</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14983User:Codemac2006-08-29T19:33:45Z<p>Codemac: /* Web */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://codemac.net/config/ configs]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14360User:Codemac2006-07-22T06:32:16Z<p>Codemac: /* Religious Positions */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
* * > [[userspace]]<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://people.cs.vt.edu/~codemac/config/ configs]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14359User:Codemac2006-07-22T06:29:55Z<p>Codemac: </p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== IRC Quotes ==<br />
* <iamsthitha> you do not tell codemac to rtfm.. he is tfm<br />
* <cactus> in open source, you are only as important as what you contribute.<br />
* <iamsthitha> if there was a McDonalds in my CS department.. they'd serve codemacs<br />
* <AqD> codemac: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://people.cs.vt.edu/~codemac/config/ configs]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14358User:Codemac2006-07-22T06:27:42Z<p>Codemac: /* Web */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace] [http://people.cs.vt.edu/~codemac/shots/ screenshots] [http://people.cs.vt.edu/~codemac/config/ configs]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14357User:Codemac2006-07-22T06:26:41Z<p>Codemac: /* Projects */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org web.py] based blog<br />
* [http://cstatus.sf.net Cstatus] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14356User:Codemac2006-07-22T06:25:47Z<p>Codemac: /* Projects */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* [http://www.webpy.org link web.py] based blog<br />
* [http://cstatus.sf.net link Cstats] is a C++ status bar for screen (under heavy development, don't expect anything final too soon)<br />
* Building new amp<br />
* retire @ 25<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=14355User:Codemac2006-07-22T06:23:35Z<p>Codemac: /* Religious Positions */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > [[dwm]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=Mkinitcpio&diff=13910Mkinitcpio2006-06-27T12:35:52Z<p>Codemac: /* = Problem */</p>
<hr />
<div>[[Category:Boot_Process]]<br />
[[Category:Kernel]]<br />
<br />
= About =<br />
<br />
'''mkinitcpio''' is the next generation of '''initramfs creation'''. It has many advantages above the old '''mkinitrd''' and '''mkinitramfs''' scripts.<br />
<br />
* It uses '''klibc''' and '''kinit''' which are developed by Linux kernel devs to provide a small and lightweight base for early userspace.<br />
* It can use '''udev''' for hardware autodetection at runtime, thus prevents you from having tons of unnecessary modules loaded.<br />
* Its hook-based init script is easily extendable with custom hooks, which can easily be included in pacman packages without having to modifiy mkinitcpio itself.<br />
* It already supports '''lvm2''', '''dm-crypt''' for both legacy and luks volumes, '''raid''', '''swsusp''' and '''suspend2''' resuming and booting from '''usb mass storage''' devices.<br />
* Many features can be configured from the kernel command line without having to rebuild the image.<br />
* The '''mkinitcpio''' script makes it possible to include the image in a kernel, thus making a self-contained kernel image is possible.<br />
<br />
'''mkinitcpio''' has been developed by '''phrakture''' and '''tpowa''' with some help from the community.<br />
<br />
It is currently in '''beta stage'''. To use it, you have to generate the image yourself and add it to the bootloader. Please always keep your old initrd or initramfs images intact so you will be able to boot if you hit bugs in mkinitcpio.<br />
The '''2.6.17''' kernel packages already added mkinitcpio support.<br />
<br />
= Installing mkinitcpio =<br />
== From the current repository ==<br />
<br />
The '''mkinitcpio''' script has made its move to the current repository. You can install with the command<br />
# pacman -Sy mkinitcpio<br />
<br />
== From svn ==<br />
<br />
If you want the latest development version of '''mkinitcpio''', check out phrakture's svn repository using<br />
# svn co http://phraktured.net/initramfs<br />
The newest scripts are now in the '''initramfs/mkinitcpio''' directory.<br />
<br />
= Activation for >=2.6.17 kernels =<br />
There will be 2 images created during kernel installation/upgrade:<br />
<br />
- '''kernel26'''<br />
/boot/kernel26.img --> stripped down in size by autodetect<br />
/boot/kernel26-fallback.img --> contains all modules of subsystems<br />
- '''kernel26beyond''' (2.6.17 not yet available)<br />
/boot/kernel26beyond.img --> stripped down in size by autodetect<br />
/boot/kernel26beyond-fallback.img --> contains all modules of subsystems<br />
Please change your bootloader to load the correct image you need.<br />
== '''Modifying fallback image''' ==<br />
To change the defaults edit the following files:<br />
kernel26 --> '/boot/mkinitcpio-kernel26.conf' <br />
kernel26beyond --> '/boot/mkinitcpio-kernel26beyond.conf'<br />
and set them to NoUpgrade = in '/etc/pacman.conf'<br />
<br />
== ATTENTION => '''lvm2''', '''raid''' and '''encrypt''' are NOT enabled by default == <br />
'''lvm2''', '''raid''' and '''encrypt''' are not! enabled by default.<br />
Please read this wiki carefully on how to setup those stuff, and configure it <br />
for your system.<br />
<br />
= Customizing the configuration file =<br />
<br />
'''mkinitcpio''' is configured in the '''/etc/mkinitcpio.conf''' file.<br />
<br />
== Configuring the HOOKS ==<br />
<br />
This is the most important part of mkinitcpio configuration. The HOOKS line contains the hooks that are executed on image creating and on runtime in the exact order they are executed. The format is like this:<br />
<br />
HOOKS="foo1 foo2 foo3 bar1 bar2"<br />
<br />
=== Available hooks ===<br />
<br />
{| border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Hook || Installation || Runtime<br />
|-<br />
| '''base''' || Sets up all initial directories and installs base klibc utilities and libraries. Always add this hook unless you know what you are doing. || <br />
|-<br />
| '''udev''' || Adds udev to your image || Udev will be used to create your root device node and detect the needed modules for your root device. As it simplifies things, using the udev hook is recommended.<br />
|-<br />
| '''modload''' || || An alternative autodetecion method which is much slower than udev. Using this hook is discouraged. Use udev instead.<br />
|-<br />
| '''autodetect''' || Shrinks your initramfs to a smaller size by autodetecting your needed modules. Be sure to verify included modules are correct and none are missing. This hook must be run before other subsystem hooks in order to take advantage of auto-detection. Any hooks placed before 'autodetect' will be installed in full. || <br />
|-<br />
| '''ide''' || Adds IDE modules to the image. Use this if your root device is on a IDE disk. Also use the '''autodetect''' hook if you want to minimize your image size || Loads IDE modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''sata''' || Adds serial ATA modules to the image. Use this if your root device is on a SATA disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SATA modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''scsi''' || Adds SCSI modules to the image. Use this if your root device is on a SCSI disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SCSI modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usb''' || Adds USB modules to the image. Use this if your root device is on a USB mass storage device. || Loads USB modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usbinput''' || Adds USB HID modules to the image. Use this if you have an USB keyboard and need it in early userspace (either for entering encryption passphrases or for failsafe mode) || Loads USB HID modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''fw''' || Adds Firewire modules to the image. Use this if your root device is on a FW mass storage device. || Loads FW modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''net''' || Adds the necessary modules for a network device. For pcmcia net devices please add pcmcia hook too. || Loads network modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below). See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''pcmcia''' || Adds the necessary modules for pcmcia devices. You need to have pcmciautils installed to use this.|| Loads pcmcia modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''dsdt''' || Loads a custom acpi dsdt file during boot. Place your custom dsdt file for inclusion at /lib/initcpio/custom.dsdt || The custom dsdt file is automatically used by the kernel if it is present in initramfs.<br />
|-<br />
| '''filesystems''' || This includes necessary filesystem modules into your image. This hook is necessary if you want to be able to boot || This will detect the filesystem type at runtime, load the module and pass it to kinit. NOTE: it will NOT detect reiser4, it must be added to modules list.<br />
|-<br />
| '''lvm2''' || Adds the device mapper kernel module and the lvm tool to the image. You need to have the lvm2 package installed to use this. || Enables all lvm2 volume groups. This is necessary if you have your root filesystem on lvm.<br />
|-<br />
| '''raid''' || Adds the modules and mdassamble for a software raid setup. You need to have mdadm installed to use this.|| Loads the necessary modules for software raid devices, and assembles the raid devices when run. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''encrypt''' || Adds the dm-crypt kernel module and the cryptsetup tool to the image. You need to have the cryptsetup package installed to use this. || Detects and unlocks an encrypted root partition. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''resume''' || || This tries to resume from "suspend to disk" state. Works with both swsusp and suspend2. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''firmware''' || Adds /lib/firmware files. || Loads firmware. You will need the '''udev''' hook to get firmware loaded. <br />
|-<br />
| '''keymap''' || Adds keymap and consolefonts from rc.conf. || Loads the specified keymap and consolefont from rc.conf during early userspace.<br />
|}<br />
<br />
=== Examples ===<br />
<br />
This configuration will work for most users with a standard setup:<br />
<br />
HOOKS="base udev autodetect ide scsi sata filesystems"<br />
<br />
If you want to use the image on more than one machine, use this configuration:<br />
<br />
HOOKS="base udev ide scsi sata filesystems"<br />
<br />
You can use encrypted volumes on top of lvm2 volume groups:<br />
<br />
HOOKS="base udev autodetect ide scsi sata lvm2 encrypt filesystems"<br />
<br />
== Configuring the MODULES ==<br />
<br />
You can use the MODULES in the configuration file to load a module before anything else is done. For example, if you don't want to use '''udev''' or '''modload''', you can add all necessary modules manually and make booting faster:<br />
<br />
MODULES="piix ide_disk reiserfs"<br />
HOOKS="base autodetect ide filesystems"<br />
<br />
NOTE: if you're using '''reiser4''', you MUST add it to the modules list.<br />
<br />
== Configuring the BINARIES and FILES ==<br />
<br />
These options allow you to add files to the image. The only difference is that BINARIES checks binaries and libraries for dependencies, while FILES simply adds the file.<br />
<br />
Examples:<br />
<br />
FILES="/etc/modprobe.conf"<br />
<br />
BINARIES="/usr/bin/somefile"<br />
<br />
= Creating the image =<br />
<br />
Create the image with the command<br />
<br />
mkinitcpio -g /boot/initcpio.img<br />
<br />
This will save the image at '''/boot/initcpio.img'''. If you are creating an image for a kernel other than the one you are currently running, add the kernel version to the command line<br />
<br />
mkinitcpio -g /boot/initcpio.img -k 2.6.16-ARCH<br />
<br />
See '''mkinitcpio -h''' for more options.<br />
<br />
Don't forget to add a new bootloader entry. Just make a copy of your old one and change the initrd to your new image. As long as mkinitcpio is beta, please always leave the old one intact, so that you can boot it if something goes wrong. You can use mkinitcpio with any kernel, so kernel26 and kernel26-beyond users are encouraged to try it.<br />
<br />
= Customizing the kernel command line =<br />
<br />
Just like without initramfs, some options need to be passed on the kernel command line to configure your kernel, like the root device. Some of the mkinitcpio hooks have special options. These are discussed below.<br />
<br />
If you don't know what a kernel command line is, please refer to the [[GRUB]] or [[Lilo]] documentation.<br />
<br />
== Entering failsafe mode ==<br />
<br />
If you add the option<br />
break=y<br />
to the kernel command line, init stops after the setup is completed and you are left with a ''dash'' shell. This can be used to verify that everything went fine. If you logout, normal boot continues.<br />
<br />
== Disabling hooks ==<br />
<br />
You can disable a hook at runtime by adding the ''disablehooks'' option to the kernel command line like this:<br />
<br />
disablehooks=hook1,hook2,hook2<br />
<br />
for example<br />
<br />
disablehooks=resume<br />
<br />
== Blacklisting modules ==<br />
<br />
You can blacklist modules by adding the ''disablemodules'' option to the kernel command line like this:<br />
<br />
disablemodules=mod1,mod2,mod3<br />
<br />
for example<br />
<br />
disablemodules=ata_piix<br />
<br />
'''THIS FEATURE IS CURRENTLY BROKEN'''<br />
<br />
== Using raid ==<br />
First add the raid hook to the HOOKS list in /etc/mkinitcpio.conf<br />
<br />
'''Kernel Parameters: '''<br />
Specify all your md arrays with md= parameter: (only adding the raid array you're booting from is enough)<br />
<br />
add the following to the kernel line in grub/menu.lst:<br />
Example: md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1<br />
working example: kernel /vmlinuz26beyond root=/dev/md0 ro md=0,/dev/sda1,/dev/sdb1<br />
This will setup 2 md arrays with persistent superblocks<br />
<br />
'''Setup:'''<br />
- for old raid arrays without persistent superblocks:<br />
md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1<br />
- for raid arrays with persistent superblocks:<br />
md=<md device no.>,dev0,dev1,...,devn<br />
- for, to assemble a partitionable array:<br />
md=d<md device no.>,dev0,dev1,...,devn<br />
<br />
'''Parameters:'''<br />
- <md device no.> = the number of the md device: <br />
0 means md0, 1 means md1, ...<br />
- <raid level> = -1 linear mode, 0 striped mode<br />
other modes are only supported with persistent super block<br />
- <chunk size factor> = (raid-0 and raid-1 only):<br />
Set the chunk size as 4k << n.<br />
- <fault level> = totally ignored<br />
- <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1<br />
<br />
== Using net ==<br />
<br />
'''Kernel Parameters:''' <br />
<br />
'''ip=''' <br />
<br />
An interface spec can be either short form, which is just the name of<br />
an interface (eth0 or whatever), or long form. The long form consists<br />
of up to seven elements, separated by colons:<br />
<br />
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf><br />
nfsaddrs= is an alias to ip= and can be used too.<br />
<br />
''Parameter explanation:''<br />
<client-ip> IP address of the client. If empty, the address will<br />
either be determined by RARP/BOOTP/DHCP. What protocol<br />
is used de- pends on the <autoconf> parameter. If this<br />
parameter is not empty, autoconf will be used.<br />
<br />
<server-ip> IP address of the NFS server. If RARP is used to<br />
determine the client address and this parameter is NOT<br />
empty only replies from the specified server are<br />
accepted. To use different RARP and NFS server,<br />
specify your RARP server here (or leave it blank), and<br />
specify your NFS server in the `nfsroot' parameter<br />
(see above). If this entry is blank the address of the<br />
server is used which answered the RARP/BOOTP/DHCP<br />
request.<br />
<br />
<gw-ip> IP address of a gateway if the server is on a different<br />
subnet. If this entry is empty no gateway is used and the<br />
server is assumed to be on the local network, unless a<br />
value has been received by BOOTP/DHCP.<br />
<br />
<netmask> Netmask for local network interface. If this is empty,<br />
the netmask is derived from the client IP address assuming<br />
classful addressing, unless overridden in BOOTP/DHCP reply.<br />
<br />
<hostname> Name of the client. If empty, the client IP address is<br />
used in ASCII notation, or the value received by<br />
BOOTP/DHCP.<br />
<br />
<device> Name of network device to use. If this is empty, all<br />
devices are used for RARP/BOOTP/DHCP requests, and the<br />
first one we receive a reply on is configured. If you<br />
have only one device, you can safely leave this blank.<br />
<br />
<autoconf> Method to use for autoconfiguration. If this is either<br />
'rarp', 'bootp', or 'dhcp' the specified protocol is<br />
used. If the value is 'both', 'all' or empty, all<br />
protocols are used. 'off', 'static' or 'none' means<br />
no autoconfiguration.<br />
''Examples:''<br />
ip=127.0.0.1:::::lo:none --> Enable the loopback interface.<br />
ip=192.168.1.1:::::eth2:none --> Enable static eth2 interface.<br />
ip=:::::eth0:dhcp --> Enable dhcp protcol for eth0 configuration.<br />
'''nfsroot='''<br />
<br />
If the 'nfsroot' parameter is NOT given on the command line, the default<br />
"/tftpboot/%s" will be used.<br />
<br />
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]<br />
<br />
''Parameter explanation:''<br />
<br />
<server-ip> Specifies the IP address of the NFS server. If this field<br />
is not given, the default address as determined by the<br />
`ip' variable (see below) is used. One use of this<br />
parameter is for example to allow using different servers<br />
for RARP and NFS. Usually you can leave this blank.<br />
<br />
<root-dir> Name of the directory on the server to mount as root. If<br />
there is a "%s" token in the string, the token will be<br />
replaced by the ASCII-representation of the client's IP<br />
address.<br />
<br />
<nfs-options> Standard NFS options. All options are separated by commas.<br />
If the options field is not given, the following defaults<br />
will be used:<br />
port = as given by server portmap daemon<br />
rsize = 1024<br />
wsize = 1024<br />
timeo = 7<br />
retrans = 3<br />
acregmin = 3<br />
acregmax = 60<br />
acdirmin = 30<br />
acdirmax = 60<br />
flags = hard, nointr, noposix, cto, ac<br />
<br />
'''root=/dev/nfs'''<br />
If you don't use nfsroot= parameter you need to set root=/dev/nfs <br />
to boot from a nfs root by autoconfiguration.<br />
<br />
== Using lvm ==<br />
<br />
If your root device is on lvm, you have to add the '''lvm2''' hook. You have to pass your root device on the kernel command line in the format<br />
<br />
root=/dev/mapper/<volume group name>-<logical volume name><br />
<br />
for exmaple<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
== Using encrypted root ==<br />
<br />
If your root volume is encrypted, you need to add the '''encrypt''' hook. Then specify your root device on the kernel command line, just as if it was unencrypted, for example<br />
<br />
root=/dev/sda5<br />
<br />
for an encrypted partition on an sata or scsi disk or<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
for an encrypted lvm volume. The root device will be automatically changed to ''/dev/mapper/root''.<br />
<br />
=== Using LUKS volumes ===<br />
<br />
If you use LUKS for hard disk encryption, the init script will detect the encryption automatically if the '''encrypt''' hook is enabled. It will then ask for a passphrase and try to unlock the volume.<br />
<br />
=== Using legacy cryptsetup volumes ===<br />
<br />
If you are using a legacy cryptsetup volume, you have to specify all cryptsetup options necessary to unlock it on the kernel command line. The option format is<br />
<br />
crypto=hash:cipher:keysize:offset:skip<br />
<br />
representing cryptsetup's --hash, --cipher, --keysize, --offset and --skip options. If you omit an option, cryptsetup's default value is used, so you can just specify<br />
<br />
crypto=::::<br />
<br />
if you created your volume with the default settings.<br />
<br />
'''NOTE:''' For technical reasons, it is not possible to verify the correctness of your passphrase with legacy cryptsetup volumes. If you typed it wrong, mounting will simply fail. It is recommended that you use LUKS instead.<br />
<br />
=== Using loop-aes volumes ===<br />
<br />
'''mkinitcpio''' does not support loop-aes yet.<br />
<br />
== Using Suspend to Disk ==<br />
<br />
If you want to use suspend to disk, you have to add the '''resume''' hook.<br />
<br />
=== swsusp ===<br />
<br />
''TODO''<br />
<br />
=== µswsusp ===<br />
<br />
µswsusp is not supported yet.<br />
<br />
=== suspend2 ===<br />
<br />
If you are using [http://www.suspend2.net suspend2], you have to specify the ''resume2'' kernel commandline option. If you are using the swap writer, use<br />
<br />
resume2=swap:/dev/hda3<br />
<br />
where ''/dev/hda3'' is your swap partition. If you want to use the filewriter, use<br />
<br />
resume2=file:/dev/hda2:0x123456<br />
<br />
where ''/dev/hda2'' is the partition where the suspend2 image is stored (most likely the root partition) and ''0x123456'' is the file offset. You can get the exact value with the commands<br />
<br />
echo "/suspend2_file" > /proc/suspend2/filewriter_target<br />
cat /proc/suspend2/resume2<br />
<br />
where /suspend2_file is the path to your suspend image file. This - of course - works for lvm volumes as well. You can also use a suspend file on an encrypted root partition with the option<br />
<br />
resume2=file:/dev/mapper/root:0x123456<br />
<br />
where ''0x123456'' is the offset again. Resuming from an encrypted swap partition is not supported.<br />
<br />
== Example bootloader configuration files ==<br />
<br />
If you use the beyond kernel, the filenames are ''kernel26beyond.img'' and ''kernel26beyond-fallback.img'' instead of ''kernel26.img'' and ''kernel26-fallback.img'', respectively.<br />
<br />
=== GRUB ===<br />
<br />
For those who have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26-fallback.img<br />
<br />
For those who do _not_ have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26-fallback.img<br />
<br />
=== LILO ===<br />
<br />
If you use LILO, it is recommended that you use ''append="root=/dev/XYZ"'' instead of ''root=/dev/XYZ''. If you already have a global ''append'' option, then use ''addappend''.<br />
<br />
boot=/dev/hdX <br />
default = <Label of default image><br />
timeout=50 <br />
lba32<br />
prompt<br />
<br />
# for the hardware-autodetecting image<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinux<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26.img<br />
read-only<br />
<br />
# fallback image if the other doesnt work (Will most prob. never be used)<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinuxFallBack<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26-fallback.img<br />
read-only<br />
<br />
= Troubleshooting =<br />
== piix ide controllers and beyond kernel ==<br />
=== Problem ===<br />
If you are having problems getting mkinitcpio to detect your hard drive giving errors akin to "Can't find device dev(0,0)" when switching to kinit, then this could be because of a conflict that the ata_piix and piix drivers have. The beyond kernel has some libata patches that cause ata_piix to *conflict* with piix.<br />
<br />
=== Solution ===<br />
Edit /etc/mkinitcpio.conf to only have ide or sata or scsi depending on what your system actually needs to boot.</div>Codemachttps://wiki.archlinux.org/index.php?title=Mkinitcpio&diff=13909Mkinitcpio2006-06-27T12:35:39Z<p>Codemac: /* Troubleshooting */</p>
<hr />
<div>[[Category:Boot_Process]]<br />
[[Category:Kernel]]<br />
<br />
= About =<br />
<br />
'''mkinitcpio''' is the next generation of '''initramfs creation'''. It has many advantages above the old '''mkinitrd''' and '''mkinitramfs''' scripts.<br />
<br />
* It uses '''klibc''' and '''kinit''' which are developed by Linux kernel devs to provide a small and lightweight base for early userspace.<br />
* It can use '''udev''' for hardware autodetection at runtime, thus prevents you from having tons of unnecessary modules loaded.<br />
* Its hook-based init script is easily extendable with custom hooks, which can easily be included in pacman packages without having to modifiy mkinitcpio itself.<br />
* It already supports '''lvm2''', '''dm-crypt''' for both legacy and luks volumes, '''raid''', '''swsusp''' and '''suspend2''' resuming and booting from '''usb mass storage''' devices.<br />
* Many features can be configured from the kernel command line without having to rebuild the image.<br />
* The '''mkinitcpio''' script makes it possible to include the image in a kernel, thus making a self-contained kernel image is possible.<br />
<br />
'''mkinitcpio''' has been developed by '''phrakture''' and '''tpowa''' with some help from the community.<br />
<br />
It is currently in '''beta stage'''. To use it, you have to generate the image yourself and add it to the bootloader. Please always keep your old initrd or initramfs images intact so you will be able to boot if you hit bugs in mkinitcpio.<br />
The '''2.6.17''' kernel packages already added mkinitcpio support.<br />
<br />
= Installing mkinitcpio =<br />
== From the current repository ==<br />
<br />
The '''mkinitcpio''' script has made its move to the current repository. You can install with the command<br />
# pacman -Sy mkinitcpio<br />
<br />
== From svn ==<br />
<br />
If you want the latest development version of '''mkinitcpio''', check out phrakture's svn repository using<br />
# svn co http://phraktured.net/initramfs<br />
The newest scripts are now in the '''initramfs/mkinitcpio''' directory.<br />
<br />
= Activation for >=2.6.17 kernels =<br />
There will be 2 images created during kernel installation/upgrade:<br />
<br />
- '''kernel26'''<br />
/boot/kernel26.img --> stripped down in size by autodetect<br />
/boot/kernel26-fallback.img --> contains all modules of subsystems<br />
- '''kernel26beyond''' (2.6.17 not yet available)<br />
/boot/kernel26beyond.img --> stripped down in size by autodetect<br />
/boot/kernel26beyond-fallback.img --> contains all modules of subsystems<br />
Please change your bootloader to load the correct image you need.<br />
== '''Modifying fallback image''' ==<br />
To change the defaults edit the following files:<br />
kernel26 --> '/boot/mkinitcpio-kernel26.conf' <br />
kernel26beyond --> '/boot/mkinitcpio-kernel26beyond.conf'<br />
and set them to NoUpgrade = in '/etc/pacman.conf'<br />
<br />
== ATTENTION => '''lvm2''', '''raid''' and '''encrypt''' are NOT enabled by default == <br />
'''lvm2''', '''raid''' and '''encrypt''' are not! enabled by default.<br />
Please read this wiki carefully on how to setup those stuff, and configure it <br />
for your system.<br />
<br />
= Customizing the configuration file =<br />
<br />
'''mkinitcpio''' is configured in the '''/etc/mkinitcpio.conf''' file.<br />
<br />
== Configuring the HOOKS ==<br />
<br />
This is the most important part of mkinitcpio configuration. The HOOKS line contains the hooks that are executed on image creating and on runtime in the exact order they are executed. The format is like this:<br />
<br />
HOOKS="foo1 foo2 foo3 bar1 bar2"<br />
<br />
=== Available hooks ===<br />
<br />
{| border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Hook || Installation || Runtime<br />
|-<br />
| '''base''' || Sets up all initial directories and installs base klibc utilities and libraries. Always add this hook unless you know what you are doing. || <br />
|-<br />
| '''udev''' || Adds udev to your image || Udev will be used to create your root device node and detect the needed modules for your root device. As it simplifies things, using the udev hook is recommended.<br />
|-<br />
| '''modload''' || || An alternative autodetecion method which is much slower than udev. Using this hook is discouraged. Use udev instead.<br />
|-<br />
| '''autodetect''' || Shrinks your initramfs to a smaller size by autodetecting your needed modules. Be sure to verify included modules are correct and none are missing. This hook must be run before other subsystem hooks in order to take advantage of auto-detection. Any hooks placed before 'autodetect' will be installed in full. || <br />
|-<br />
| '''ide''' || Adds IDE modules to the image. Use this if your root device is on a IDE disk. Also use the '''autodetect''' hook if you want to minimize your image size || Loads IDE modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''sata''' || Adds serial ATA modules to the image. Use this if your root device is on a SATA disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SATA modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''scsi''' || Adds SCSI modules to the image. Use this if your root device is on a SCSI disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SCSI modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usb''' || Adds USB modules to the image. Use this if your root device is on a USB mass storage device. || Loads USB modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usbinput''' || Adds USB HID modules to the image. Use this if you have an USB keyboard and need it in early userspace (either for entering encryption passphrases or for failsafe mode) || Loads USB HID modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''fw''' || Adds Firewire modules to the image. Use this if your root device is on a FW mass storage device. || Loads FW modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''net''' || Adds the necessary modules for a network device. For pcmcia net devices please add pcmcia hook too. || Loads network modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below). See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''pcmcia''' || Adds the necessary modules for pcmcia devices. You need to have pcmciautils installed to use this.|| Loads pcmcia modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''dsdt''' || Loads a custom acpi dsdt file during boot. Place your custom dsdt file for inclusion at /lib/initcpio/custom.dsdt || The custom dsdt file is automatically used by the kernel if it is present in initramfs.<br />
|-<br />
| '''filesystems''' || This includes necessary filesystem modules into your image. This hook is necessary if you want to be able to boot || This will detect the filesystem type at runtime, load the module and pass it to kinit. NOTE: it will NOT detect reiser4, it must be added to modules list.<br />
|-<br />
| '''lvm2''' || Adds the device mapper kernel module and the lvm tool to the image. You need to have the lvm2 package installed to use this. || Enables all lvm2 volume groups. This is necessary if you have your root filesystem on lvm.<br />
|-<br />
| '''raid''' || Adds the modules and mdassamble for a software raid setup. You need to have mdadm installed to use this.|| Loads the necessary modules for software raid devices, and assembles the raid devices when run. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''encrypt''' || Adds the dm-crypt kernel module and the cryptsetup tool to the image. You need to have the cryptsetup package installed to use this. || Detects and unlocks an encrypted root partition. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''resume''' || || This tries to resume from "suspend to disk" state. Works with both swsusp and suspend2. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''firmware''' || Adds /lib/firmware files. || Loads firmware. You will need the '''udev''' hook to get firmware loaded. <br />
|-<br />
| '''keymap''' || Adds keymap and consolefonts from rc.conf. || Loads the specified keymap and consolefont from rc.conf during early userspace.<br />
|}<br />
<br />
=== Examples ===<br />
<br />
This configuration will work for most users with a standard setup:<br />
<br />
HOOKS="base udev autodetect ide scsi sata filesystems"<br />
<br />
If you want to use the image on more than one machine, use this configuration:<br />
<br />
HOOKS="base udev ide scsi sata filesystems"<br />
<br />
You can use encrypted volumes on top of lvm2 volume groups:<br />
<br />
HOOKS="base udev autodetect ide scsi sata lvm2 encrypt filesystems"<br />
<br />
== Configuring the MODULES ==<br />
<br />
You can use the MODULES in the configuration file to load a module before anything else is done. For example, if you don't want to use '''udev''' or '''modload''', you can add all necessary modules manually and make booting faster:<br />
<br />
MODULES="piix ide_disk reiserfs"<br />
HOOKS="base autodetect ide filesystems"<br />
<br />
NOTE: if you're using '''reiser4''', you MUST add it to the modules list.<br />
<br />
== Configuring the BINARIES and FILES ==<br />
<br />
These options allow you to add files to the image. The only difference is that BINARIES checks binaries and libraries for dependencies, while FILES simply adds the file.<br />
<br />
Examples:<br />
<br />
FILES="/etc/modprobe.conf"<br />
<br />
BINARIES="/usr/bin/somefile"<br />
<br />
= Creating the image =<br />
<br />
Create the image with the command<br />
<br />
mkinitcpio -g /boot/initcpio.img<br />
<br />
This will save the image at '''/boot/initcpio.img'''. If you are creating an image for a kernel other than the one you are currently running, add the kernel version to the command line<br />
<br />
mkinitcpio -g /boot/initcpio.img -k 2.6.16-ARCH<br />
<br />
See '''mkinitcpio -h''' for more options.<br />
<br />
Don't forget to add a new bootloader entry. Just make a copy of your old one and change the initrd to your new image. As long as mkinitcpio is beta, please always leave the old one intact, so that you can boot it if something goes wrong. You can use mkinitcpio with any kernel, so kernel26 and kernel26-beyond users are encouraged to try it.<br />
<br />
= Customizing the kernel command line =<br />
<br />
Just like without initramfs, some options need to be passed on the kernel command line to configure your kernel, like the root device. Some of the mkinitcpio hooks have special options. These are discussed below.<br />
<br />
If you don't know what a kernel command line is, please refer to the [[GRUB]] or [[Lilo]] documentation.<br />
<br />
== Entering failsafe mode ==<br />
<br />
If you add the option<br />
break=y<br />
to the kernel command line, init stops after the setup is completed and you are left with a ''dash'' shell. This can be used to verify that everything went fine. If you logout, normal boot continues.<br />
<br />
== Disabling hooks ==<br />
<br />
You can disable a hook at runtime by adding the ''disablehooks'' option to the kernel command line like this:<br />
<br />
disablehooks=hook1,hook2,hook2<br />
<br />
for example<br />
<br />
disablehooks=resume<br />
<br />
== Blacklisting modules ==<br />
<br />
You can blacklist modules by adding the ''disablemodules'' option to the kernel command line like this:<br />
<br />
disablemodules=mod1,mod2,mod3<br />
<br />
for example<br />
<br />
disablemodules=ata_piix<br />
<br />
'''THIS FEATURE IS CURRENTLY BROKEN'''<br />
<br />
== Using raid ==<br />
First add the raid hook to the HOOKS list in /etc/mkinitcpio.conf<br />
<br />
'''Kernel Parameters: '''<br />
Specify all your md arrays with md= parameter: (only adding the raid array you're booting from is enough)<br />
<br />
add the following to the kernel line in grub/menu.lst:<br />
Example: md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1<br />
working example: kernel /vmlinuz26beyond root=/dev/md0 ro md=0,/dev/sda1,/dev/sdb1<br />
This will setup 2 md arrays with persistent superblocks<br />
<br />
'''Setup:'''<br />
- for old raid arrays without persistent superblocks:<br />
md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1<br />
- for raid arrays with persistent superblocks:<br />
md=<md device no.>,dev0,dev1,...,devn<br />
- for, to assemble a partitionable array:<br />
md=d<md device no.>,dev0,dev1,...,devn<br />
<br />
'''Parameters:'''<br />
- <md device no.> = the number of the md device: <br />
0 means md0, 1 means md1, ...<br />
- <raid level> = -1 linear mode, 0 striped mode<br />
other modes are only supported with persistent super block<br />
- <chunk size factor> = (raid-0 and raid-1 only):<br />
Set the chunk size as 4k << n.<br />
- <fault level> = totally ignored<br />
- <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1<br />
<br />
== Using net ==<br />
<br />
'''Kernel Parameters:''' <br />
<br />
'''ip=''' <br />
<br />
An interface spec can be either short form, which is just the name of<br />
an interface (eth0 or whatever), or long form. The long form consists<br />
of up to seven elements, separated by colons:<br />
<br />
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf><br />
nfsaddrs= is an alias to ip= and can be used too.<br />
<br />
''Parameter explanation:''<br />
<client-ip> IP address of the client. If empty, the address will<br />
either be determined by RARP/BOOTP/DHCP. What protocol<br />
is used de- pends on the <autoconf> parameter. If this<br />
parameter is not empty, autoconf will be used.<br />
<br />
<server-ip> IP address of the NFS server. If RARP is used to<br />
determine the client address and this parameter is NOT<br />
empty only replies from the specified server are<br />
accepted. To use different RARP and NFS server,<br />
specify your RARP server here (or leave it blank), and<br />
specify your NFS server in the `nfsroot' parameter<br />
(see above). If this entry is blank the address of the<br />
server is used which answered the RARP/BOOTP/DHCP<br />
request.<br />
<br />
<gw-ip> IP address of a gateway if the server is on a different<br />
subnet. If this entry is empty no gateway is used and the<br />
server is assumed to be on the local network, unless a<br />
value has been received by BOOTP/DHCP.<br />
<br />
<netmask> Netmask for local network interface. If this is empty,<br />
the netmask is derived from the client IP address assuming<br />
classful addressing, unless overridden in BOOTP/DHCP reply.<br />
<br />
<hostname> Name of the client. If empty, the client IP address is<br />
used in ASCII notation, or the value received by<br />
BOOTP/DHCP.<br />
<br />
<device> Name of network device to use. If this is empty, all<br />
devices are used for RARP/BOOTP/DHCP requests, and the<br />
first one we receive a reply on is configured. If you<br />
have only one device, you can safely leave this blank.<br />
<br />
<autoconf> Method to use for autoconfiguration. If this is either<br />
'rarp', 'bootp', or 'dhcp' the specified protocol is<br />
used. If the value is 'both', 'all' or empty, all<br />
protocols are used. 'off', 'static' or 'none' means<br />
no autoconfiguration.<br />
''Examples:''<br />
ip=127.0.0.1:::::lo:none --> Enable the loopback interface.<br />
ip=192.168.1.1:::::eth2:none --> Enable static eth2 interface.<br />
ip=:::::eth0:dhcp --> Enable dhcp protcol for eth0 configuration.<br />
'''nfsroot='''<br />
<br />
If the 'nfsroot' parameter is NOT given on the command line, the default<br />
"/tftpboot/%s" will be used.<br />
<br />
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]<br />
<br />
''Parameter explanation:''<br />
<br />
<server-ip> Specifies the IP address of the NFS server. If this field<br />
is not given, the default address as determined by the<br />
`ip' variable (see below) is used. One use of this<br />
parameter is for example to allow using different servers<br />
for RARP and NFS. Usually you can leave this blank.<br />
<br />
<root-dir> Name of the directory on the server to mount as root. If<br />
there is a "%s" token in the string, the token will be<br />
replaced by the ASCII-representation of the client's IP<br />
address.<br />
<br />
<nfs-options> Standard NFS options. All options are separated by commas.<br />
If the options field is not given, the following defaults<br />
will be used:<br />
port = as given by server portmap daemon<br />
rsize = 1024<br />
wsize = 1024<br />
timeo = 7<br />
retrans = 3<br />
acregmin = 3<br />
acregmax = 60<br />
acdirmin = 30<br />
acdirmax = 60<br />
flags = hard, nointr, noposix, cto, ac<br />
<br />
'''root=/dev/nfs'''<br />
If you don't use nfsroot= parameter you need to set root=/dev/nfs <br />
to boot from a nfs root by autoconfiguration.<br />
<br />
== Using lvm ==<br />
<br />
If your root device is on lvm, you have to add the '''lvm2''' hook. You have to pass your root device on the kernel command line in the format<br />
<br />
root=/dev/mapper/<volume group name>-<logical volume name><br />
<br />
for exmaple<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
== Using encrypted root ==<br />
<br />
If your root volume is encrypted, you need to add the '''encrypt''' hook. Then specify your root device on the kernel command line, just as if it was unencrypted, for example<br />
<br />
root=/dev/sda5<br />
<br />
for an encrypted partition on an sata or scsi disk or<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
for an encrypted lvm volume. The root device will be automatically changed to ''/dev/mapper/root''.<br />
<br />
=== Using LUKS volumes ===<br />
<br />
If you use LUKS for hard disk encryption, the init script will detect the encryption automatically if the '''encrypt''' hook is enabled. It will then ask for a passphrase and try to unlock the volume.<br />
<br />
=== Using legacy cryptsetup volumes ===<br />
<br />
If you are using a legacy cryptsetup volume, you have to specify all cryptsetup options necessary to unlock it on the kernel command line. The option format is<br />
<br />
crypto=hash:cipher:keysize:offset:skip<br />
<br />
representing cryptsetup's --hash, --cipher, --keysize, --offset and --skip options. If you omit an option, cryptsetup's default value is used, so you can just specify<br />
<br />
crypto=::::<br />
<br />
if you created your volume with the default settings.<br />
<br />
'''NOTE:''' For technical reasons, it is not possible to verify the correctness of your passphrase with legacy cryptsetup volumes. If you typed it wrong, mounting will simply fail. It is recommended that you use LUKS instead.<br />
<br />
=== Using loop-aes volumes ===<br />
<br />
'''mkinitcpio''' does not support loop-aes yet.<br />
<br />
== Using Suspend to Disk ==<br />
<br />
If you want to use suspend to disk, you have to add the '''resume''' hook.<br />
<br />
=== swsusp ===<br />
<br />
''TODO''<br />
<br />
=== µswsusp ===<br />
<br />
µswsusp is not supported yet.<br />
<br />
=== suspend2 ===<br />
<br />
If you are using [http://www.suspend2.net suspend2], you have to specify the ''resume2'' kernel commandline option. If you are using the swap writer, use<br />
<br />
resume2=swap:/dev/hda3<br />
<br />
where ''/dev/hda3'' is your swap partition. If you want to use the filewriter, use<br />
<br />
resume2=file:/dev/hda2:0x123456<br />
<br />
where ''/dev/hda2'' is the partition where the suspend2 image is stored (most likely the root partition) and ''0x123456'' is the file offset. You can get the exact value with the commands<br />
<br />
echo "/suspend2_file" > /proc/suspend2/filewriter_target<br />
cat /proc/suspend2/resume2<br />
<br />
where /suspend2_file is the path to your suspend image file. This - of course - works for lvm volumes as well. You can also use a suspend file on an encrypted root partition with the option<br />
<br />
resume2=file:/dev/mapper/root:0x123456<br />
<br />
where ''0x123456'' is the offset again. Resuming from an encrypted swap partition is not supported.<br />
<br />
== Example bootloader configuration files ==<br />
<br />
If you use the beyond kernel, the filenames are ''kernel26beyond.img'' and ''kernel26beyond-fallback.img'' instead of ''kernel26.img'' and ''kernel26-fallback.img'', respectively.<br />
<br />
=== GRUB ===<br />
<br />
For those who have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26-fallback.img<br />
<br />
For those who do _not_ have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26-fallback.img<br />
<br />
=== LILO ===<br />
<br />
If you use LILO, it is recommended that you use ''append="root=/dev/XYZ"'' instead of ''root=/dev/XYZ''. If you already have a global ''append'' option, then use ''addappend''.<br />
<br />
boot=/dev/hdX <br />
default = <Label of default image><br />
timeout=50 <br />
lba32<br />
prompt<br />
<br />
# for the hardware-autodetecting image<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinux<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26.img<br />
read-only<br />
<br />
# fallback image if the other doesnt work (Will most prob. never be used)<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinuxFallBack<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26-fallback.img<br />
read-only<br />
<br />
= Troubleshooting =<br />
== piix ide controllers and beyond kernel ==<br />
=== Problem ==<br />
If you are having problems getting mkinitcpio to detect your hard drive giving errors akin to "Can't find device dev(0,0)" when switching to kinit, then this could be because of a conflict that the ata_piix and piix drivers have. The beyond kernel has some libata patches that cause ata_piix to *conflict* with piix.<br />
=== Solution ===<br />
Edit /etc/mkinitcpio.conf to only have ide or sata or scsi depending on what your system actually needs to boot.</div>Codemachttps://wiki.archlinux.org/index.php?title=Mkinitcpio&diff=13908Mkinitcpio2006-06-27T12:34:29Z<p>Codemac: /* Troubleshooting */</p>
<hr />
<div>[[Category:Boot_Process]]<br />
[[Category:Kernel]]<br />
<br />
= About =<br />
<br />
'''mkinitcpio''' is the next generation of '''initramfs creation'''. It has many advantages above the old '''mkinitrd''' and '''mkinitramfs''' scripts.<br />
<br />
* It uses '''klibc''' and '''kinit''' which are developed by Linux kernel devs to provide a small and lightweight base for early userspace.<br />
* It can use '''udev''' for hardware autodetection at runtime, thus prevents you from having tons of unnecessary modules loaded.<br />
* Its hook-based init script is easily extendable with custom hooks, which can easily be included in pacman packages without having to modifiy mkinitcpio itself.<br />
* It already supports '''lvm2''', '''dm-crypt''' for both legacy and luks volumes, '''raid''', '''swsusp''' and '''suspend2''' resuming and booting from '''usb mass storage''' devices.<br />
* Many features can be configured from the kernel command line without having to rebuild the image.<br />
* The '''mkinitcpio''' script makes it possible to include the image in a kernel, thus making a self-contained kernel image is possible.<br />
<br />
'''mkinitcpio''' has been developed by '''phrakture''' and '''tpowa''' with some help from the community.<br />
<br />
It is currently in '''beta stage'''. To use it, you have to generate the image yourself and add it to the bootloader. Please always keep your old initrd or initramfs images intact so you will be able to boot if you hit bugs in mkinitcpio.<br />
The '''2.6.17''' kernel packages already added mkinitcpio support.<br />
<br />
= Installing mkinitcpio =<br />
== From the current repository ==<br />
<br />
The '''mkinitcpio''' script has made its move to the current repository. You can install with the command<br />
# pacman -Sy mkinitcpio<br />
<br />
== From svn ==<br />
<br />
If you want the latest development version of '''mkinitcpio''', check out phrakture's svn repository using<br />
# svn co http://phraktured.net/initramfs<br />
The newest scripts are now in the '''initramfs/mkinitcpio''' directory.<br />
<br />
= Activation for >=2.6.17 kernels =<br />
There will be 2 images created during kernel installation/upgrade:<br />
<br />
- '''kernel26'''<br />
/boot/kernel26.img --> stripped down in size by autodetect<br />
/boot/kernel26-fallback.img --> contains all modules of subsystems<br />
- '''kernel26beyond''' (2.6.17 not yet available)<br />
/boot/kernel26beyond.img --> stripped down in size by autodetect<br />
/boot/kernel26beyond-fallback.img --> contains all modules of subsystems<br />
Please change your bootloader to load the correct image you need.<br />
== '''Modifying fallback image''' ==<br />
To change the defaults edit the following files:<br />
kernel26 --> '/boot/mkinitcpio-kernel26.conf' <br />
kernel26beyond --> '/boot/mkinitcpio-kernel26beyond.conf'<br />
and set them to NoUpgrade = in '/etc/pacman.conf'<br />
<br />
== ATTENTION => '''lvm2''', '''raid''' and '''encrypt''' are NOT enabled by default == <br />
'''lvm2''', '''raid''' and '''encrypt''' are not! enabled by default.<br />
Please read this wiki carefully on how to setup those stuff, and configure it <br />
for your system.<br />
<br />
= Customizing the configuration file =<br />
<br />
'''mkinitcpio''' is configured in the '''/etc/mkinitcpio.conf''' file.<br />
<br />
== Configuring the HOOKS ==<br />
<br />
This is the most important part of mkinitcpio configuration. The HOOKS line contains the hooks that are executed on image creating and on runtime in the exact order they are executed. The format is like this:<br />
<br />
HOOKS="foo1 foo2 foo3 bar1 bar2"<br />
<br />
=== Available hooks ===<br />
<br />
{| border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Hook || Installation || Runtime<br />
|-<br />
| '''base''' || Sets up all initial directories and installs base klibc utilities and libraries. Always add this hook unless you know what you are doing. || <br />
|-<br />
| '''udev''' || Adds udev to your image || Udev will be used to create your root device node and detect the needed modules for your root device. As it simplifies things, using the udev hook is recommended.<br />
|-<br />
| '''modload''' || || An alternative autodetecion method which is much slower than udev. Using this hook is discouraged. Use udev instead.<br />
|-<br />
| '''autodetect''' || Shrinks your initramfs to a smaller size by autodetecting your needed modules. Be sure to verify included modules are correct and none are missing. This hook must be run before other subsystem hooks in order to take advantage of auto-detection. Any hooks placed before 'autodetect' will be installed in full. || <br />
|-<br />
| '''ide''' || Adds IDE modules to the image. Use this if your root device is on a IDE disk. Also use the '''autodetect''' hook if you want to minimize your image size || Loads IDE modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''sata''' || Adds serial ATA modules to the image. Use this if your root device is on a SATA disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SATA modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''scsi''' || Adds SCSI modules to the image. Use this if your root device is on a SCSI disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SCSI modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usb''' || Adds USB modules to the image. Use this if your root device is on a USB mass storage device. || Loads USB modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usbinput''' || Adds USB HID modules to the image. Use this if you have an USB keyboard and need it in early userspace (either for entering encryption passphrases or for failsafe mode) || Loads USB HID modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''fw''' || Adds Firewire modules to the image. Use this if your root device is on a FW mass storage device. || Loads FW modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''net''' || Adds the necessary modules for a network device. For pcmcia net devices please add pcmcia hook too. || Loads network modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below). See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''pcmcia''' || Adds the necessary modules for pcmcia devices. You need to have pcmciautils installed to use this.|| Loads pcmcia modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''dsdt''' || Loads a custom acpi dsdt file during boot. Place your custom dsdt file for inclusion at /lib/initcpio/custom.dsdt || The custom dsdt file is automatically used by the kernel if it is present in initramfs.<br />
|-<br />
| '''filesystems''' || This includes necessary filesystem modules into your image. This hook is necessary if you want to be able to boot || This will detect the filesystem type at runtime, load the module and pass it to kinit. NOTE: it will NOT detect reiser4, it must be added to modules list.<br />
|-<br />
| '''lvm2''' || Adds the device mapper kernel module and the lvm tool to the image. You need to have the lvm2 package installed to use this. || Enables all lvm2 volume groups. This is necessary if you have your root filesystem on lvm.<br />
|-<br />
| '''raid''' || Adds the modules and mdassamble for a software raid setup. You need to have mdadm installed to use this.|| Loads the necessary modules for software raid devices, and assembles the raid devices when run. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''encrypt''' || Adds the dm-crypt kernel module and the cryptsetup tool to the image. You need to have the cryptsetup package installed to use this. || Detects and unlocks an encrypted root partition. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''resume''' || || This tries to resume from "suspend to disk" state. Works with both swsusp and suspend2. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''firmware''' || Adds /lib/firmware files. || Loads firmware. You will need the '''udev''' hook to get firmware loaded. <br />
|-<br />
| '''keymap''' || Adds keymap and consolefonts from rc.conf. || Loads the specified keymap and consolefont from rc.conf during early userspace.<br />
|}<br />
<br />
=== Examples ===<br />
<br />
This configuration will work for most users with a standard setup:<br />
<br />
HOOKS="base udev autodetect ide scsi sata filesystems"<br />
<br />
If you want to use the image on more than one machine, use this configuration:<br />
<br />
HOOKS="base udev ide scsi sata filesystems"<br />
<br />
You can use encrypted volumes on top of lvm2 volume groups:<br />
<br />
HOOKS="base udev autodetect ide scsi sata lvm2 encrypt filesystems"<br />
<br />
== Configuring the MODULES ==<br />
<br />
You can use the MODULES in the configuration file to load a module before anything else is done. For example, if you don't want to use '''udev''' or '''modload''', you can add all necessary modules manually and make booting faster:<br />
<br />
MODULES="piix ide_disk reiserfs"<br />
HOOKS="base autodetect ide filesystems"<br />
<br />
NOTE: if you're using '''reiser4''', you MUST add it to the modules list.<br />
<br />
== Configuring the BINARIES and FILES ==<br />
<br />
These options allow you to add files to the image. The only difference is that BINARIES checks binaries and libraries for dependencies, while FILES simply adds the file.<br />
<br />
Examples:<br />
<br />
FILES="/etc/modprobe.conf"<br />
<br />
BINARIES="/usr/bin/somefile"<br />
<br />
= Creating the image =<br />
<br />
Create the image with the command<br />
<br />
mkinitcpio -g /boot/initcpio.img<br />
<br />
This will save the image at '''/boot/initcpio.img'''. If you are creating an image for a kernel other than the one you are currently running, add the kernel version to the command line<br />
<br />
mkinitcpio -g /boot/initcpio.img -k 2.6.16-ARCH<br />
<br />
See '''mkinitcpio -h''' for more options.<br />
<br />
Don't forget to add a new bootloader entry. Just make a copy of your old one and change the initrd to your new image. As long as mkinitcpio is beta, please always leave the old one intact, so that you can boot it if something goes wrong. You can use mkinitcpio with any kernel, so kernel26 and kernel26-beyond users are encouraged to try it.<br />
<br />
= Customizing the kernel command line =<br />
<br />
Just like without initramfs, some options need to be passed on the kernel command line to configure your kernel, like the root device. Some of the mkinitcpio hooks have special options. These are discussed below.<br />
<br />
If you don't know what a kernel command line is, please refer to the [[GRUB]] or [[Lilo]] documentation.<br />
<br />
== Entering failsafe mode ==<br />
<br />
If you add the option<br />
break=y<br />
to the kernel command line, init stops after the setup is completed and you are left with a ''dash'' shell. This can be used to verify that everything went fine. If you logout, normal boot continues.<br />
<br />
== Disabling hooks ==<br />
<br />
You can disable a hook at runtime by adding the ''disablehooks'' option to the kernel command line like this:<br />
<br />
disablehooks=hook1,hook2,hook2<br />
<br />
for example<br />
<br />
disablehooks=resume<br />
<br />
== Blacklisting modules ==<br />
<br />
You can blacklist modules by adding the ''disablemodules'' option to the kernel command line like this:<br />
<br />
disablemodules=mod1,mod2,mod3<br />
<br />
for example<br />
<br />
disablemodules=ata_piix<br />
<br />
'''THIS FEATURE IS CURRENTLY BROKEN'''<br />
<br />
== Using raid ==<br />
First add the raid hook to the HOOKS list in /etc/mkinitcpio.conf<br />
<br />
'''Kernel Parameters: '''<br />
Specify all your md arrays with md= parameter: (only adding the raid array you're booting from is enough)<br />
<br />
add the following to the kernel line in grub/menu.lst:<br />
Example: md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1<br />
working example: kernel /vmlinuz26beyond root=/dev/md0 ro md=0,/dev/sda1,/dev/sdb1<br />
This will setup 2 md arrays with persistent superblocks<br />
<br />
'''Setup:'''<br />
- for old raid arrays without persistent superblocks:<br />
md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1<br />
- for raid arrays with persistent superblocks:<br />
md=<md device no.>,dev0,dev1,...,devn<br />
- for, to assemble a partitionable array:<br />
md=d<md device no.>,dev0,dev1,...,devn<br />
<br />
'''Parameters:'''<br />
- <md device no.> = the number of the md device: <br />
0 means md0, 1 means md1, ...<br />
- <raid level> = -1 linear mode, 0 striped mode<br />
other modes are only supported with persistent super block<br />
- <chunk size factor> = (raid-0 and raid-1 only):<br />
Set the chunk size as 4k << n.<br />
- <fault level> = totally ignored<br />
- <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1<br />
<br />
== Using net ==<br />
<br />
'''Kernel Parameters:''' <br />
<br />
'''ip=''' <br />
<br />
An interface spec can be either short form, which is just the name of<br />
an interface (eth0 or whatever), or long form. The long form consists<br />
of up to seven elements, separated by colons:<br />
<br />
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf><br />
nfsaddrs= is an alias to ip= and can be used too.<br />
<br />
''Parameter explanation:''<br />
<client-ip> IP address of the client. If empty, the address will<br />
either be determined by RARP/BOOTP/DHCP. What protocol<br />
is used de- pends on the <autoconf> parameter. If this<br />
parameter is not empty, autoconf will be used.<br />
<br />
<server-ip> IP address of the NFS server. If RARP is used to<br />
determine the client address and this parameter is NOT<br />
empty only replies from the specified server are<br />
accepted. To use different RARP and NFS server,<br />
specify your RARP server here (or leave it blank), and<br />
specify your NFS server in the `nfsroot' parameter<br />
(see above). If this entry is blank the address of the<br />
server is used which answered the RARP/BOOTP/DHCP<br />
request.<br />
<br />
<gw-ip> IP address of a gateway if the server is on a different<br />
subnet. If this entry is empty no gateway is used and the<br />
server is assumed to be on the local network, unless a<br />
value has been received by BOOTP/DHCP.<br />
<br />
<netmask> Netmask for local network interface. If this is empty,<br />
the netmask is derived from the client IP address assuming<br />
classful addressing, unless overridden in BOOTP/DHCP reply.<br />
<br />
<hostname> Name of the client. If empty, the client IP address is<br />
used in ASCII notation, or the value received by<br />
BOOTP/DHCP.<br />
<br />
<device> Name of network device to use. If this is empty, all<br />
devices are used for RARP/BOOTP/DHCP requests, and the<br />
first one we receive a reply on is configured. If you<br />
have only one device, you can safely leave this blank.<br />
<br />
<autoconf> Method to use for autoconfiguration. If this is either<br />
'rarp', 'bootp', or 'dhcp' the specified protocol is<br />
used. If the value is 'both', 'all' or empty, all<br />
protocols are used. 'off', 'static' or 'none' means<br />
no autoconfiguration.<br />
''Examples:''<br />
ip=127.0.0.1:::::lo:none --> Enable the loopback interface.<br />
ip=192.168.1.1:::::eth2:none --> Enable static eth2 interface.<br />
ip=:::::eth0:dhcp --> Enable dhcp protcol for eth0 configuration.<br />
'''nfsroot='''<br />
<br />
If the 'nfsroot' parameter is NOT given on the command line, the default<br />
"/tftpboot/%s" will be used.<br />
<br />
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]<br />
<br />
''Parameter explanation:''<br />
<br />
<server-ip> Specifies the IP address of the NFS server. If this field<br />
is not given, the default address as determined by the<br />
`ip' variable (see below) is used. One use of this<br />
parameter is for example to allow using different servers<br />
for RARP and NFS. Usually you can leave this blank.<br />
<br />
<root-dir> Name of the directory on the server to mount as root. If<br />
there is a "%s" token in the string, the token will be<br />
replaced by the ASCII-representation of the client's IP<br />
address.<br />
<br />
<nfs-options> Standard NFS options. All options are separated by commas.<br />
If the options field is not given, the following defaults<br />
will be used:<br />
port = as given by server portmap daemon<br />
rsize = 1024<br />
wsize = 1024<br />
timeo = 7<br />
retrans = 3<br />
acregmin = 3<br />
acregmax = 60<br />
acdirmin = 30<br />
acdirmax = 60<br />
flags = hard, nointr, noposix, cto, ac<br />
<br />
'''root=/dev/nfs'''<br />
If you don't use nfsroot= parameter you need to set root=/dev/nfs <br />
to boot from a nfs root by autoconfiguration.<br />
<br />
== Using lvm ==<br />
<br />
If your root device is on lvm, you have to add the '''lvm2''' hook. You have to pass your root device on the kernel command line in the format<br />
<br />
root=/dev/mapper/<volume group name>-<logical volume name><br />
<br />
for exmaple<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
== Using encrypted root ==<br />
<br />
If your root volume is encrypted, you need to add the '''encrypt''' hook. Then specify your root device on the kernel command line, just as if it was unencrypted, for example<br />
<br />
root=/dev/sda5<br />
<br />
for an encrypted partition on an sata or scsi disk or<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
for an encrypted lvm volume. The root device will be automatically changed to ''/dev/mapper/root''.<br />
<br />
=== Using LUKS volumes ===<br />
<br />
If you use LUKS for hard disk encryption, the init script will detect the encryption automatically if the '''encrypt''' hook is enabled. It will then ask for a passphrase and try to unlock the volume.<br />
<br />
=== Using legacy cryptsetup volumes ===<br />
<br />
If you are using a legacy cryptsetup volume, you have to specify all cryptsetup options necessary to unlock it on the kernel command line. The option format is<br />
<br />
crypto=hash:cipher:keysize:offset:skip<br />
<br />
representing cryptsetup's --hash, --cipher, --keysize, --offset and --skip options. If you omit an option, cryptsetup's default value is used, so you can just specify<br />
<br />
crypto=::::<br />
<br />
if you created your volume with the default settings.<br />
<br />
'''NOTE:''' For technical reasons, it is not possible to verify the correctness of your passphrase with legacy cryptsetup volumes. If you typed it wrong, mounting will simply fail. It is recommended that you use LUKS instead.<br />
<br />
=== Using loop-aes volumes ===<br />
<br />
'''mkinitcpio''' does not support loop-aes yet.<br />
<br />
== Using Suspend to Disk ==<br />
<br />
If you want to use suspend to disk, you have to add the '''resume''' hook.<br />
<br />
=== swsusp ===<br />
<br />
''TODO''<br />
<br />
=== µswsusp ===<br />
<br />
µswsusp is not supported yet.<br />
<br />
=== suspend2 ===<br />
<br />
If you are using [http://www.suspend2.net suspend2], you have to specify the ''resume2'' kernel commandline option. If you are using the swap writer, use<br />
<br />
resume2=swap:/dev/hda3<br />
<br />
where ''/dev/hda3'' is your swap partition. If you want to use the filewriter, use<br />
<br />
resume2=file:/dev/hda2:0x123456<br />
<br />
where ''/dev/hda2'' is the partition where the suspend2 image is stored (most likely the root partition) and ''0x123456'' is the file offset. You can get the exact value with the commands<br />
<br />
echo "/suspend2_file" > /proc/suspend2/filewriter_target<br />
cat /proc/suspend2/resume2<br />
<br />
where /suspend2_file is the path to your suspend image file. This - of course - works for lvm volumes as well. You can also use a suspend file on an encrypted root partition with the option<br />
<br />
resume2=file:/dev/mapper/root:0x123456<br />
<br />
where ''0x123456'' is the offset again. Resuming from an encrypted swap partition is not supported.<br />
<br />
== Example bootloader configuration files ==<br />
<br />
If you use the beyond kernel, the filenames are ''kernel26beyond.img'' and ''kernel26beyond-fallback.img'' instead of ''kernel26.img'' and ''kernel26-fallback.img'', respectively.<br />
<br />
=== GRUB ===<br />
<br />
For those who have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26-fallback.img<br />
<br />
For those who do _not_ have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26-fallback.img<br />
<br />
=== LILO ===<br />
<br />
If you use LILO, it is recommended that you use ''append="root=/dev/XYZ"'' instead of ''root=/dev/XYZ''. If you already have a global ''append'' option, then use ''addappend''.<br />
<br />
boot=/dev/hdX <br />
default = <Label of default image><br />
timeout=50 <br />
lba32<br />
prompt<br />
<br />
# for the hardware-autodetecting image<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinux<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26.img<br />
read-only<br />
<br />
# fallback image if the other doesnt work (Will most prob. never be used)<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinuxFallBack<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26-fallback.img<br />
read-only<br />
<br />
== Troubleshooting ==<br />
=== piix ide controllers and beyond kernel ===<br />
If you are having problems getting mkinitcpio to detect your hard drive giving errors akin to "Can't find device dev(0,0)" when switching to kinit, then this could be because of a conflict that the ata_piix and piix drivers have. The beyond kernel has some libata patches that cause ata_piix to *conflict* with piix. SOLUTION: Edit /etc/mkinitcpio.conf to only have ide or sata or scsi depending on what your system actually needs to boot.</div>Codemachttps://wiki.archlinux.org/index.php?title=Mkinitcpio&diff=13907Mkinitcpio2006-06-27T12:33:46Z<p>Codemac: /* Troubleshooting */</p>
<hr />
<div>[[Category:Boot_Process]]<br />
[[Category:Kernel]]<br />
<br />
= About =<br />
<br />
'''mkinitcpio''' is the next generation of '''initramfs creation'''. It has many advantages above the old '''mkinitrd''' and '''mkinitramfs''' scripts.<br />
<br />
* It uses '''klibc''' and '''kinit''' which are developed by Linux kernel devs to provide a small and lightweight base for early userspace.<br />
* It can use '''udev''' for hardware autodetection at runtime, thus prevents you from having tons of unnecessary modules loaded.<br />
* Its hook-based init script is easily extendable with custom hooks, which can easily be included in pacman packages without having to modifiy mkinitcpio itself.<br />
* It already supports '''lvm2''', '''dm-crypt''' for both legacy and luks volumes, '''raid''', '''swsusp''' and '''suspend2''' resuming and booting from '''usb mass storage''' devices.<br />
* Many features can be configured from the kernel command line without having to rebuild the image.<br />
* The '''mkinitcpio''' script makes it possible to include the image in a kernel, thus making a self-contained kernel image is possible.<br />
<br />
'''mkinitcpio''' has been developed by '''phrakture''' and '''tpowa''' with some help from the community.<br />
<br />
It is currently in '''beta stage'''. To use it, you have to generate the image yourself and add it to the bootloader. Please always keep your old initrd or initramfs images intact so you will be able to boot if you hit bugs in mkinitcpio.<br />
The '''2.6.17''' kernel packages already added mkinitcpio support.<br />
<br />
= Installing mkinitcpio =<br />
== From the current repository ==<br />
<br />
The '''mkinitcpio''' script has made its move to the current repository. You can install with the command<br />
# pacman -Sy mkinitcpio<br />
<br />
== From svn ==<br />
<br />
If you want the latest development version of '''mkinitcpio''', check out phrakture's svn repository using<br />
# svn co http://phraktured.net/initramfs<br />
The newest scripts are now in the '''initramfs/mkinitcpio''' directory.<br />
<br />
= Activation for >=2.6.17 kernels =<br />
There will be 2 images created during kernel installation/upgrade:<br />
<br />
- '''kernel26'''<br />
/boot/kernel26.img --> stripped down in size by autodetect<br />
/boot/kernel26-fallback.img --> contains all modules of subsystems<br />
- '''kernel26beyond''' (2.6.17 not yet available)<br />
/boot/kernel26beyond.img --> stripped down in size by autodetect<br />
/boot/kernel26beyond-fallback.img --> contains all modules of subsystems<br />
Please change your bootloader to load the correct image you need.<br />
== '''Modifying fallback image''' ==<br />
To change the defaults edit the following files:<br />
kernel26 --> '/boot/mkinitcpio-kernel26.conf' <br />
kernel26beyond --> '/boot/mkinitcpio-kernel26beyond.conf'<br />
and set them to NoUpgrade = in '/etc/pacman.conf'<br />
<br />
== ATTENTION => '''lvm2''', '''raid''' and '''encrypt''' are NOT enabled by default == <br />
'''lvm2''', '''raid''' and '''encrypt''' are not! enabled by default.<br />
Please read this wiki carefully on how to setup those stuff, and configure it <br />
for your system.<br />
<br />
= Customizing the configuration file =<br />
<br />
'''mkinitcpio''' is configured in the '''/etc/mkinitcpio.conf''' file.<br />
<br />
== Configuring the HOOKS ==<br />
<br />
This is the most important part of mkinitcpio configuration. The HOOKS line contains the hooks that are executed on image creating and on runtime in the exact order they are executed. The format is like this:<br />
<br />
HOOKS="foo1 foo2 foo3 bar1 bar2"<br />
<br />
=== Available hooks ===<br />
<br />
{| border="2" cellspacing="0" cellpadding="4" rules="all" style="margin:1em 1em 1em 0; border-style:solid; border-width:1px; border-collapse:collapse; empty-cells:show"<br />
|-<br />
! Hook || Installation || Runtime<br />
|-<br />
| '''base''' || Sets up all initial directories and installs base klibc utilities and libraries. Always add this hook unless you know what you are doing. || <br />
|-<br />
| '''udev''' || Adds udev to your image || Udev will be used to create your root device node and detect the needed modules for your root device. As it simplifies things, using the udev hook is recommended.<br />
|-<br />
| '''modload''' || || An alternative autodetecion method which is much slower than udev. Using this hook is discouraged. Use udev instead.<br />
|-<br />
| '''autodetect''' || Shrinks your initramfs to a smaller size by autodetecting your needed modules. Be sure to verify included modules are correct and none are missing. This hook must be run before other subsystem hooks in order to take advantage of auto-detection. Any hooks placed before 'autodetect' will be installed in full. || <br />
|-<br />
| '''ide''' || Adds IDE modules to the image. Use this if your root device is on a IDE disk. Also use the '''autodetect''' hook if you want to minimize your image size || Loads IDE modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''sata''' || Adds serial ATA modules to the image. Use this if your root device is on a SATA disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SATA modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''scsi''' || Adds SCSI modules to the image. Use this if your root device is on a SCSI disk. Also use the '''autodetect''' hook if you want to minimize your image size. || Loads SCSI modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usb''' || Adds USB modules to the image. Use this if your root device is on a USB mass storage device. || Loads USB modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''usbinput''' || Adds USB HID modules to the image. Use this if you have an USB keyboard and need it in early userspace (either for entering encryption passphrases or for failsafe mode) || Loads USB HID modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''fw''' || Adds Firewire modules to the image. Use this if your root device is on a FW mass storage device. || Loads FW modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''net''' || Adds the necessary modules for a network device. For pcmcia net devices please add pcmcia hook too. || Loads network modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below). See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''pcmcia''' || Adds the necessary modules for pcmcia devices. You need to have pcmciautils installed to use this.|| Loads pcmcia modules. You will need the '''udev''' or '''modload''' hook unless you specify the needed modules manually (see MODULES section below).<br />
|-<br />
| '''dsdt''' || Loads a custom acpi dsdt file during boot. Place your custom dsdt file for inclusion at /lib/initcpio/custom.dsdt || The custom dsdt file is automatically used by the kernel if it is present in initramfs.<br />
|-<br />
| '''filesystems''' || This includes necessary filesystem modules into your image. This hook is necessary if you want to be able to boot || This will detect the filesystem type at runtime, load the module and pass it to kinit. NOTE: it will NOT detect reiser4, it must be added to modules list.<br />
|-<br />
| '''lvm2''' || Adds the device mapper kernel module and the lvm tool to the image. You need to have the lvm2 package installed to use this. || Enables all lvm2 volume groups. This is necessary if you have your root filesystem on lvm.<br />
|-<br />
| '''raid''' || Adds the modules and mdassamble for a software raid setup. You need to have mdadm installed to use this.|| Loads the necessary modules for software raid devices, and assembles the raid devices when run. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''encrypt''' || Adds the dm-crypt kernel module and the cryptsetup tool to the image. You need to have the cryptsetup package installed to use this. || Detects and unlocks an encrypted root partition. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''resume''' || || This tries to resume from "suspend to disk" state. Works with both swsusp and suspend2. See the section [[Configuring_mkinitcpio#Customizing_the_kernel_command_line|Customizing the kernel command line]] for further configuration.<br />
|-<br />
| '''firmware''' || Adds /lib/firmware files. || Loads firmware. You will need the '''udev''' hook to get firmware loaded. <br />
|-<br />
| '''keymap''' || Adds keymap and consolefonts from rc.conf. || Loads the specified keymap and consolefont from rc.conf during early userspace.<br />
|}<br />
<br />
=== Examples ===<br />
<br />
This configuration will work for most users with a standard setup:<br />
<br />
HOOKS="base udev autodetect ide scsi sata filesystems"<br />
<br />
If you want to use the image on more than one machine, use this configuration:<br />
<br />
HOOKS="base udev ide scsi sata filesystems"<br />
<br />
You can use encrypted volumes on top of lvm2 volume groups:<br />
<br />
HOOKS="base udev autodetect ide scsi sata lvm2 encrypt filesystems"<br />
<br />
== Configuring the MODULES ==<br />
<br />
You can use the MODULES in the configuration file to load a module before anything else is done. For example, if you don't want to use '''udev''' or '''modload''', you can add all necessary modules manually and make booting faster:<br />
<br />
MODULES="piix ide_disk reiserfs"<br />
HOOKS="base autodetect ide filesystems"<br />
<br />
NOTE: if you're using '''reiser4''', you MUST add it to the modules list.<br />
<br />
== Configuring the BINARIES and FILES ==<br />
<br />
These options allow you to add files to the image. The only difference is that BINARIES checks binaries and libraries for dependencies, while FILES simply adds the file.<br />
<br />
Examples:<br />
<br />
FILES="/etc/modprobe.conf"<br />
<br />
BINARIES="/usr/bin/somefile"<br />
<br />
= Creating the image =<br />
<br />
Create the image with the command<br />
<br />
mkinitcpio -g /boot/initcpio.img<br />
<br />
This will save the image at '''/boot/initcpio.img'''. If you are creating an image for a kernel other than the one you are currently running, add the kernel version to the command line<br />
<br />
mkinitcpio -g /boot/initcpio.img -k 2.6.16-ARCH<br />
<br />
See '''mkinitcpio -h''' for more options.<br />
<br />
Don't forget to add a new bootloader entry. Just make a copy of your old one and change the initrd to your new image. As long as mkinitcpio is beta, please always leave the old one intact, so that you can boot it if something goes wrong. You can use mkinitcpio with any kernel, so kernel26 and kernel26-beyond users are encouraged to try it.<br />
<br />
= Customizing the kernel command line =<br />
<br />
Just like without initramfs, some options need to be passed on the kernel command line to configure your kernel, like the root device. Some of the mkinitcpio hooks have special options. These are discussed below.<br />
<br />
If you don't know what a kernel command line is, please refer to the [[GRUB]] or [[Lilo]] documentation.<br />
<br />
== Entering failsafe mode ==<br />
<br />
If you add the option<br />
break=y<br />
to the kernel command line, init stops after the setup is completed and you are left with a ''dash'' shell. This can be used to verify that everything went fine. If you logout, normal boot continues.<br />
<br />
== Disabling hooks ==<br />
<br />
You can disable a hook at runtime by adding the ''disablehooks'' option to the kernel command line like this:<br />
<br />
disablehooks=hook1,hook2,hook2<br />
<br />
for example<br />
<br />
disablehooks=resume<br />
<br />
== Blacklisting modules ==<br />
<br />
You can blacklist modules by adding the ''disablemodules'' option to the kernel command line like this:<br />
<br />
disablemodules=mod1,mod2,mod3<br />
<br />
for example<br />
<br />
disablemodules=ata_piix<br />
<br />
'''THIS FEATURE IS CURRENTLY BROKEN'''<br />
<br />
== Using raid ==<br />
First add the raid hook to the HOOKS list in /etc/mkinitcpio.conf<br />
<br />
'''Kernel Parameters: '''<br />
Specify all your md arrays with md= parameter: (only adding the raid array you're booting from is enough)<br />
<br />
add the following to the kernel line in grub/menu.lst:<br />
Example: md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1<br />
working example: kernel /vmlinuz26beyond root=/dev/md0 ro md=0,/dev/sda1,/dev/sdb1<br />
This will setup 2 md arrays with persistent superblocks<br />
<br />
'''Setup:'''<br />
- for old raid arrays without persistent superblocks:<br />
md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1<br />
- for raid arrays with persistent superblocks:<br />
md=<md device no.>,dev0,dev1,...,devn<br />
- for, to assemble a partitionable array:<br />
md=d<md device no.>,dev0,dev1,...,devn<br />
<br />
'''Parameters:'''<br />
- <md device no.> = the number of the md device: <br />
0 means md0, 1 means md1, ...<br />
- <raid level> = -1 linear mode, 0 striped mode<br />
other modes are only supported with persistent super block<br />
- <chunk size factor> = (raid-0 and raid-1 only):<br />
Set the chunk size as 4k << n.<br />
- <fault level> = totally ignored<br />
- <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1<br />
<br />
== Using net ==<br />
<br />
'''Kernel Parameters:''' <br />
<br />
'''ip=''' <br />
<br />
An interface spec can be either short form, which is just the name of<br />
an interface (eth0 or whatever), or long form. The long form consists<br />
of up to seven elements, separated by colons:<br />
<br />
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf><br />
nfsaddrs= is an alias to ip= and can be used too.<br />
<br />
''Parameter explanation:''<br />
<client-ip> IP address of the client. If empty, the address will<br />
either be determined by RARP/BOOTP/DHCP. What protocol<br />
is used de- pends on the <autoconf> parameter. If this<br />
parameter is not empty, autoconf will be used.<br />
<br />
<server-ip> IP address of the NFS server. If RARP is used to<br />
determine the client address and this parameter is NOT<br />
empty only replies from the specified server are<br />
accepted. To use different RARP and NFS server,<br />
specify your RARP server here (or leave it blank), and<br />
specify your NFS server in the `nfsroot' parameter<br />
(see above). If this entry is blank the address of the<br />
server is used which answered the RARP/BOOTP/DHCP<br />
request.<br />
<br />
<gw-ip> IP address of a gateway if the server is on a different<br />
subnet. If this entry is empty no gateway is used and the<br />
server is assumed to be on the local network, unless a<br />
value has been received by BOOTP/DHCP.<br />
<br />
<netmask> Netmask for local network interface. If this is empty,<br />
the netmask is derived from the client IP address assuming<br />
classful addressing, unless overridden in BOOTP/DHCP reply.<br />
<br />
<hostname> Name of the client. If empty, the client IP address is<br />
used in ASCII notation, or the value received by<br />
BOOTP/DHCP.<br />
<br />
<device> Name of network device to use. If this is empty, all<br />
devices are used for RARP/BOOTP/DHCP requests, and the<br />
first one we receive a reply on is configured. If you<br />
have only one device, you can safely leave this blank.<br />
<br />
<autoconf> Method to use for autoconfiguration. If this is either<br />
'rarp', 'bootp', or 'dhcp' the specified protocol is<br />
used. If the value is 'both', 'all' or empty, all<br />
protocols are used. 'off', 'static' or 'none' means<br />
no autoconfiguration.<br />
''Examples:''<br />
ip=127.0.0.1:::::lo:none --> Enable the loopback interface.<br />
ip=192.168.1.1:::::eth2:none --> Enable static eth2 interface.<br />
ip=:::::eth0:dhcp --> Enable dhcp protcol for eth0 configuration.<br />
'''nfsroot='''<br />
<br />
If the 'nfsroot' parameter is NOT given on the command line, the default<br />
"/tftpboot/%s" will be used.<br />
<br />
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]<br />
<br />
''Parameter explanation:''<br />
<br />
<server-ip> Specifies the IP address of the NFS server. If this field<br />
is not given, the default address as determined by the<br />
`ip' variable (see below) is used. One use of this<br />
parameter is for example to allow using different servers<br />
for RARP and NFS. Usually you can leave this blank.<br />
<br />
<root-dir> Name of the directory on the server to mount as root. If<br />
there is a "%s" token in the string, the token will be<br />
replaced by the ASCII-representation of the client's IP<br />
address.<br />
<br />
<nfs-options> Standard NFS options. All options are separated by commas.<br />
If the options field is not given, the following defaults<br />
will be used:<br />
port = as given by server portmap daemon<br />
rsize = 1024<br />
wsize = 1024<br />
timeo = 7<br />
retrans = 3<br />
acregmin = 3<br />
acregmax = 60<br />
acdirmin = 30<br />
acdirmax = 60<br />
flags = hard, nointr, noposix, cto, ac<br />
<br />
'''root=/dev/nfs'''<br />
If you don't use nfsroot= parameter you need to set root=/dev/nfs <br />
to boot from a nfs root by autoconfiguration.<br />
<br />
== Using lvm ==<br />
<br />
If your root device is on lvm, you have to add the '''lvm2''' hook. You have to pass your root device on the kernel command line in the format<br />
<br />
root=/dev/mapper/<volume group name>-<logical volume name><br />
<br />
for exmaple<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
== Using encrypted root ==<br />
<br />
If your root volume is encrypted, you need to add the '''encrypt''' hook. Then specify your root device on the kernel command line, just as if it was unencrypted, for example<br />
<br />
root=/dev/sda5<br />
<br />
for an encrypted partition on an sata or scsi disk or<br />
<br />
root=/dev/mapper/myvg-root<br />
<br />
for an encrypted lvm volume. The root device will be automatically changed to ''/dev/mapper/root''.<br />
<br />
=== Using LUKS volumes ===<br />
<br />
If you use LUKS for hard disk encryption, the init script will detect the encryption automatically if the '''encrypt''' hook is enabled. It will then ask for a passphrase and try to unlock the volume.<br />
<br />
=== Using legacy cryptsetup volumes ===<br />
<br />
If you are using a legacy cryptsetup volume, you have to specify all cryptsetup options necessary to unlock it on the kernel command line. The option format is<br />
<br />
crypto=hash:cipher:keysize:offset:skip<br />
<br />
representing cryptsetup's --hash, --cipher, --keysize, --offset and --skip options. If you omit an option, cryptsetup's default value is used, so you can just specify<br />
<br />
crypto=::::<br />
<br />
if you created your volume with the default settings.<br />
<br />
'''NOTE:''' For technical reasons, it is not possible to verify the correctness of your passphrase with legacy cryptsetup volumes. If you typed it wrong, mounting will simply fail. It is recommended that you use LUKS instead.<br />
<br />
=== Using loop-aes volumes ===<br />
<br />
'''mkinitcpio''' does not support loop-aes yet.<br />
<br />
== Using Suspend to Disk ==<br />
<br />
If you want to use suspend to disk, you have to add the '''resume''' hook.<br />
<br />
=== swsusp ===<br />
<br />
''TODO''<br />
<br />
=== µswsusp ===<br />
<br />
µswsusp is not supported yet.<br />
<br />
=== suspend2 ===<br />
<br />
If you are using [http://www.suspend2.net suspend2], you have to specify the ''resume2'' kernel commandline option. If you are using the swap writer, use<br />
<br />
resume2=swap:/dev/hda3<br />
<br />
where ''/dev/hda3'' is your swap partition. If you want to use the filewriter, use<br />
<br />
resume2=file:/dev/hda2:0x123456<br />
<br />
where ''/dev/hda2'' is the partition where the suspend2 image is stored (most likely the root partition) and ''0x123456'' is the file offset. You can get the exact value with the commands<br />
<br />
echo "/suspend2_file" > /proc/suspend2/filewriter_target<br />
cat /proc/suspend2/resume2<br />
<br />
where /suspend2_file is the path to your suspend image file. This - of course - works for lvm volumes as well. You can also use a suspend file on an encrypted root partition with the option<br />
<br />
resume2=file:/dev/mapper/root:0x123456<br />
<br />
where ''0x123456'' is the offset again. Resuming from an encrypted swap partition is not supported.<br />
<br />
== Example bootloader configuration files ==<br />
<br />
If you use the beyond kernel, the filenames are ''kernel26beyond.img'' and ''kernel26beyond-fallback.img'' instead of ''kernel26.img'' and ''kernel26-fallback.img'', respectively.<br />
<br />
=== GRUB ===<br />
<br />
For those who have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /kernel26-fallback.img<br />
<br />
For those who do _not_ have /boot on a separate partition:<br />
<br />
# (0) Arch Linux<br />
title Arch Linux<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26.img<br />
<br />
title Arch Linux Fallback<br />
root (hd0,3)<br />
kernel /boot/vmlinuz26 root=/dev/hda4 vga=791 ro<br />
initrd /boot/kernel26-fallback.img<br />
<br />
=== LILO ===<br />
<br />
If you use LILO, it is recommended that you use ''append="root=/dev/XYZ"'' instead of ''root=/dev/XYZ''. If you already have a global ''append'' option, then use ''addappend''.<br />
<br />
boot=/dev/hdX <br />
default = <Label of default image><br />
timeout=50 <br />
lba32<br />
prompt<br />
<br />
# for the hardware-autodetecting image<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinux<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26.img<br />
read-only<br />
<br />
# fallback image if the other doesnt work (Will most prob. never be used)<br />
image=/boot/vmlinuz26beyond<br />
label=ArchLinuxFallBack<br />
append="root=/dev/hdXY"<br />
initrd=/boot/kernel26-fallback.img<br />
read-only<br />
<br />
= Troubleshooting =<br />
== piix ide controllers and beyond kernel ==<br />
If you are having problems getting mkinitcpio to detect your hard drive giving errors akin to "Can't find device dev(0,0)" when switching to kinit, then this could be because of a conflict that the ata_piix and piix drivers have. The beyond kernel has some libata patches that cause ata_piix to *conflict* with piix. SOLUTION: Edit /etc/mkinitcpio.conf to only have ide or sata or scsi depending on what your system actually needs to boot.</div>Codemachttps://wiki.archlinux.org/index.php?title=Arch_terminology&diff=11510Arch terminology2006-04-14T09:28:03Z<p>Codemac: /* makepkg */</p>
<hr />
<div>=Arch Terminology/Jargon for newbies=<br />
This page is intended to be a page to demystify common terms used among the Arch Linux community. Feel free to add or modify any terms, but please use that particular section's edit option. If you decide to add one, please put it in alphabetical order. <br />
<br />
==ABS==<br />
The Arch Build System (ABS for short) is useful to<br />
* Make new packages of software for which no packages are yet available<br />
* Customize/Modify existing packages to fit your needs (enabling or disabling options)<br />
* Re-build your entire system using your compiler flags, "a la gentoo" (And getting kernel modules working with your custom kernel!) <br />
ABS is not necessary to use Arch Linux, but it is useful. <br />
<br />
For more information see the [http://wiki.archlinux.org/index.php/ABS ABS wiki]<br />
<br />
==AUR==<br />
==PKGBUILD==<br />
==TU==<br />
'''T'''rusted '''U'''ser. This is someone who the other TU's have voted into place to manage the AUR and the [community] repository.<br />
<br />
Trusted Users have the ability to mark a package as safe on the AUR, and if it has been voted as popular, move it into the [community] repository.<br />
<br />
Trusted users follow the [AUR Trusted User Guidelines] and [http://archlinux.org/~simo/TUbylaws.html TU by-laws]<br />
<br />
==TUR==<br />
==community/[community]==<br />
==current/[current]==<br />
==custom/user repository==<br />
==developer==<br />
==devfs==<br />
==/etc/network-profiles==<br />
==/etc/rc.conf==<br />
==/etc/rc.d==<br />
==/etc/rc.local==<br />
==extra/[extra]==<br />
==hotplug==<br />
==hwd==<br />
==hwdetect==<br />
==initramfs==<br />
==initrd==<br />
==makepkg==<br />
makepkg is the application that ArchLinux uses to build packages for use with pacman. makepkg will read the install instructions in a PKGBUILD file, and execute them.<br />
<br />
==package==<br />
==pacman==<br />
==pacman.conf==<br />
==release/[release]==<br />
==rtfm==<br />
'''R'''ead '''T'''he '''F'''ucking '''M'''anual. This is simple message is replied to a lot of new linux/arch users who ask about the functionality of a program, when it is clearly defined in <pre>man program</pre><br />
<br />
It is often used when a user fails to make any attempt to find a solution to the problem themselves. If someone tells you this, they are not trying to offend you, they are just frustrated with your lack of effort. <br />
<br />
The best thing to do if you are told to do this, is to do as above, and read the manual page:<br />
<br />
* Read the program man page, at a command line<br />
man program-name<br />
* Search the wiki<br />
* Search the forum<br />
* Search Google<br />
<br />
==testing/[testing]==<br />
==udev==<br />
==unstable/[unstable]==<br />
==wiki==</div>Codemachttps://wiki.archlinux.org/index.php?title=Arch_terminology&diff=11503Arch terminology2006-04-14T09:18:47Z<p>Codemac: /* ABS */</p>
<hr />
<div>=Arch Terminology/Jargon for newbies=<br />
This page is intended to be a page to demystify common terms used among the Arch Linux community. Feel free to add or modify any terms, but please use that particular section's edit option. If you decide to add one, please put it in alphabetical order. <br />
<br />
==ABS==<br />
The Arch Build System (ABS for short) is useful to<br />
* Make new packages of software for which no packages are yet available<br />
* Customize/Modify existing packages to fit your needs (enabling or disabling options)<br />
* Re-build your entire system using your compiler flags, "a la gentoo" (And getting kernel modules working with your custom kernel!) <br />
ABS is not necessary to use Arch Linux, but it is useful. <br />
<br />
For more information see the [http://wiki.archlinux.org/index.php/ABS ABS wiki]<br />
<br />
==AUR==<br />
==PKGBUILD==<br />
==TU==<br />
'''T'''rusted '''U'''ser. This is someone who the other TU's have voted into place to manage the AUR and the [community] repository.<br />
<br />
==TUR==<br />
==community/[community]==<br />
==current/[current]==<br />
==custom/user repository==<br />
==developer==<br />
==devfs==<br />
==/etc/network-profiles==<br />
==/etc/rc.conf==<br />
==/etc/rc.d==<br />
==/etc/rc.local==<br />
==extra/[extra]==<br />
==hotplug==<br />
==hwd==<br />
==hwdetect==<br />
==initramfs==<br />
==initrd==<br />
==makepkg==<br />
==package==<br />
==pacman==<br />
==pacman.conf==<br />
==release/[release]==<br />
==rtfm==<br />
'''R'''ead '''T'''he '''F'''ucking '''M'''anual. This is simple message is replied to a lot of new linux/arch users who ask about the functionality of a program, when it is clearly defined in <pre>man program</pre><br />
<br />
==testing/[testing]==<br />
==udev==<br />
==unstable/[unstable]==<br />
==wiki==</div>Codemachttps://wiki.archlinux.org/index.php?title=Arch_terminology&diff=11501Arch terminology2006-04-14T09:17:05Z<p>Codemac: /* TU */</p>
<hr />
<div>=Arch Terminology/Jargon for newbies=<br />
This page is intended to be a page to demystify common terms used among the Arch Linux community. Feel free to add or modify any terms, but please use that particular section's edit option. If you decide to add one, please put it in alphabetical order. <br />
<br />
==ABS==<br />
The Arch Build System (ABS for short) is used to<br />
<br />
* Make new packages of software for which no packages are yet available<br />
* Customize existing packages to fit your needs (enabling or disabling options)<br />
* Re-build your entire system using your compiler flags, "a la gentoo" (And getting kernel modules working with your custom kernel!) <br />
<br />
ABS is not necessary to use Arch Linux, but it is useful. <br />
<br />
For more information see the [http://wiki.archlinux.org/index.php/ABS ABS wiki]<br />
<br />
==AUR==<br />
==PKGBUILD==<br />
==TU==<br />
'''T'''rusted '''U'''ser. This is someone who the other TU's have voted into place to manage the AUR and the [community] repository.<br />
<br />
==TUR==<br />
==community/[community]==<br />
==current/[current]==<br />
==custom/user repository==<br />
==developer==<br />
==devfs==<br />
==/etc/network-profiles==<br />
==/etc/rc.conf==<br />
==/etc/rc.d==<br />
==/etc/rc.local==<br />
==extra/[extra]==<br />
==hotplug==<br />
==hwd==<br />
==hwdetect==<br />
==initramfs==<br />
==initrd==<br />
==makepkg==<br />
==package==<br />
==pacman==<br />
==pacman.conf==<br />
==release/[release]==<br />
==rtfm==<br />
'''R'''ead '''T'''he '''F'''ucking '''M'''anual. This is simple message is replied to a lot of new linux/arch users who ask about the functionality of a program, when it is clearly defined in <pre>man program</pre><br />
<br />
==testing/[testing]==<br />
==udev==<br />
==unstable/[unstable]==<br />
==wiki==</div>Codemachttps://wiki.archlinux.org/index.php?title=Arch_terminology&diff=11499Arch terminology2006-04-14T09:15:45Z<p>Codemac: /* rtfm */</p>
<hr />
<div>=Arch Terminology/Jargon for newbies=<br />
==ABS==<br />
The Arch Build System (ABS for short) is used to<br />
<br />
* Make new packages of software for which no packages are yet available<br />
* Customize existing packages to fit your needs (enabling or disabling options)<br />
* Re-build your entire system using your compiler flags, "a la gentoo" (And getting kernel modules working with your custom kernel!) <br />
<br />
ABS is not necessary to use Arch Linux, but it is useful. <br />
<br />
For more information see the [http://wiki.archlinux.org/index.php/ABS ABS wiki]<br />
<br />
==AUR==<br />
==PKGBUILD==<br />
==TU==<br />
==TUR==<br />
==community/[community]==<br />
==current/[current]==<br />
==custom/user repository==<br />
==developer==<br />
==devfs==<br />
==/etc/network-profiles==<br />
==/etc/rc.conf==<br />
==/etc/rc.d==<br />
==/etc/rc.local==<br />
==extra/[extra]==<br />
==hotplug==<br />
==hwd==<br />
==hwdetect==<br />
==initramfs==<br />
==initrd==<br />
==makepkg==<br />
==package==<br />
==pacman==<br />
==pacman.conf==<br />
==release/[release]==<br />
==rtfm==<br />
'''R'''ead '''T'''he '''F'''ucking '''M'''anual. This is simple message is replied to a lot of new linux/arch users who ask about the functionality of a program, when it is clearly defined in <pre>man program</pre><br />
<br />
==testing/[testing]==<br />
==udev==<br />
==unstable/[unstable]==<br />
==wiki==</div>Codemachttps://wiki.archlinux.org/index.php?title=User_talk:Codemac&diff=10694User talk:Codemac2006-04-03T04:22:29Z<p>Codemac: /* Auto mounting USB devices */</p>
<hr />
<div>== Auto mounting USB devices ==<br />
<br />
Hello! I read your [[Udev#Auto mounting USB devices|addition]] on the udev article and would like to use that, but I don't know, where I'd have to put the lines you have posted :) Would be nice if you could describe that a bit better in the lemma! :) [[User:Hellwoofa|hellwoofa]] [[User_talk:Hellwoofa|✉]] 11:53, 30 March 2006 (EST)<br />
<br />
better? [[User:Codemac|Codemac]] 00:22, 3 April 2006 (EDT)</div>Codemachttps://wiki.archlinux.org/index.php?title=Udev&diff=10693Udev2006-04-03T04:20:00Z<p>Codemac: /* Auto mounting USB devices */</p>
<hr />
<div>'''Note:''' If you are migrating from DevFS to Udev, see [[DevFS to Udev]].<br />
<br />
This document attempts to outline all the crazy changes that have been coming down the pipe with the latest udev updates. As of version 084, udev is responsible for ''all'' hotplug and coldplug events. The hotplug package has been deprecated and will eventually be removed from the Arch repos, since udev performs all these tasks now.<br />
<br />
== The Number One Thing ==<br />
... to remember is this. udev will not do ''any'' module loading for you (either at boot-up or later on) unless <code>MOD_AUTOLOAD</code> is enabled in your <code>/etc/rc.conf</code>. If it is disabled, then it's up to you, the admin, to manually load the modules you want. You can do this a number of ways. The favored ones are specifying them all in the <code>MODULES</code> array in <code>rc.conf</code>, or using the <code>modprobe</code> command for each module you require. Another method is to use the <code>hwdetect --modules</code> command to generate a <code>MODULES</code> suitable for your system. You can then put this array in your rc.conf to have them loaded at bootup.<br />
<br />
== General Requirements ==<br />
* You will need a later kernel: Anything earlier than '''2.6.15''' will ''not'' work.<br />
* You can no longer use DevFS style device names in your fstab or bootloader config! See [[DevFS to Udev]] for more info.<br />
<br />
== Recent Changes to Note ==<br />
* The <code>startudev</code> program has been removed. Use <code>/etc/start_udev</code> if you want to reload your udev rules.<br />
* Udev now replaces the functionality of both <code>hotplug</code> and <code>hwdetect</code>. While we still provide <code>hwdetect</code>, it is only typically used during the initrd generation with <code>mkinitrd</code>.<br />
* Udev will load modules simultaneously, which can provide a speed increase during bootup. However, the downside is that it doesn't always load modules in the same order each time, which can cause problems with things like sound cards and network cards (if you have more than one of them). See below for more info on this.<br />
<br />
== Blacklisting Modules ==<br />
Udev can often make mistakes and load the wrong modules. To prevent it from doing this, you can blacklist modules. Once blacklisted, udev will never load that module. Not at boot-time ''or'' later on when a hotplug event is received (ie, you plug in your USB flash drive).<br />
<br />
To blacklist a module, just prefix it with a bang (!) in your <code>MODULES</code> array in <code>rc.conf</code>.<br />
<br />
eg,<br />
<pre>MODULES=(!moduleA !moduleB)</pre><br />
<br />
== load_modules: A Helpful Boot Parameter ==<br />
If you pass <code>load_modules=off</code> on your kernel boot line, then udev will skip all the auto-loading business. This is to provide you with a big ripcord to pull if something goes wrong. If udev loads a problematic module that hangs your system or something equally awful, then you can bypass auto-loading with this parameter, then go in and blacklist the offensive module(s).<br />
<br />
== Known Problems with Hardware ==<br />
- BusLogic devices can be broken and will cause a freeze during startup. <br />
This is a kernel bug and no fix has been provided yet.<br />
- PCMCIA Card readers are not treated as removabel devices.<br />
To get access to them with hal's pmount backend add them to /etc/pmount.allow<br />
<br />
== Known Problems with Auto-Loading ==<br />
=== CPUFreq modules ===<br />
We don't have a good detection method for the various CPUFreq controllers out there, so this has been omitted from the auto-loading process for now. To use CPU frequency scaling, you should load the proper module explicitly in your <code>MODULES</code> array in <code>rc.conf</code>.<br />
<br />
=== Sound Problems or Some Modules Not Loaded Automatically ===<br />
Some users have traced this problem to old entries in <code>/etc/modprobe.conf</code>. Try cleaning that file out and trying again.<br />
<br />
=== Mixed Up Devices, Sound/Network Cards Changing Order Each Boot ===<br />
Because udev loads all modules at once, devices are sometimes initialized in a different order. For example, with two network cards, you may notice they switch designations between <code>eth0</code> and <code>eth1</code>.<br />
<br />
A general solution is to specify the module load order yourself by listing the modules in the <code>MODULES</code> array in <code>rc.conf</code>. Modules in this array are loaded before udev starts auto-loading stuff, so you have full control over the load order.<br />
<br />
<pre># Always load 8139too before e100<br />
MODULES=(8139too e100)</pre><br />
<br />
Another method for network card ordering is to use the udev-sanctified method of statically-naming each interface. Create a file called <code>/etc/udev/rules.d/10-network.rules</code> and bind the MAC address of each of your cards to a certain interface name:<br />
<pre>SUBSYSTEM=="net", SYSFS{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"<br />
SUBSYSTEM=="net", SYSFS{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"</pre><br />
<br />
A couple things to note:<br />
* To get the MAC address of each card, use this command: <code>udevinfo -a -p /sys/class/net/<yourdevice></code><br />
* Make sure to use the lower-case hex values in your udev rules. It doesn't like upper-case.<br />
* Some people have problems naming their interfaces after the old style: eth0, eth1, etc. Try something like "lan" or "wlan" if you experience this problem.<br />
<br />
Don't forget to update your /etc/rc.conf and other configfiles using the old ethX notation!<br />
<br />
== Known Problems for Custom Kernel Users ==<br />
=== Udev doesn't start at all ===<br />
Make sure you have a kernel version later than or equal to 2.6.15. Earlier kernels do not have the necessary uevent stuff that udev needs for auto-loading.<br />
<br />
=== CD/DVD symlinks and permissions are broken ===<br />
If you're using a 2.6.15 kernel, you'll need the uevent patch from ABS (which backports certain uevent functionality from 2.6.16). Just sync up your ABS tree with the <code>abs</code> command, then you'll find the patch in <code>/var/abs/kernels/kernel26/</code>.<br />
<br />
== Udev Tricks ==<br />
=== Auto mounting USB devices ===<br />
<pre><br />
KERNEL=="sd[a-z]", NAME="%k", SYMLINK+="usb%m", GROUP="users", OPTIONS="last_rule"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", SYMLINK+="usb%n", GROUP="users", NAME="%k"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /mnt/usb%n"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/sbin/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /mnt/usb%n", OPTIONS="last_rule"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /mnt/usb%n", OPTIONS="last_rule"<br />
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /mnt/usb%n"<br />
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /mnt/usb%n", OPTIONS="last_rule"</pre><br />
<br />
Place these udev rules in /etc/udev/rules.d/ with any file name ending in .rules For instance on my system this code is in /etc/udev/rules.d/sda.rules.</div>Codemachttps://wiki.archlinux.org/index.php?title=Udev&diff=10471Udev2006-03-30T13:54:46Z<p>Codemac: </p>
<hr />
<div>'''Note:''' If you are migrating from DevFS to Udev, see [[DevFS to Udev]].<br />
<br />
This document attempts to outline all the crazy changes that have been coming down the pipe with the latest udev updates. As of version 084, udev is responsible for ''all'' hotplug and coldplug events. The hotplug package has been deprecated and will eventually be removed from the Arch repos, since udev performs all these tasks now.<br />
<br />
== The Number One Thing ==<br />
... to remember is this. udev will not do ''any'' module loading for you (either at boot-up or later on) unless <code>MOD_AUTOLOAD</code> is enabled in your <code>/etc/rc.conf</code>. If it is disabled, then it's up to you, the admin, to manually load the modules you want. You can do this a number of ways. The favored ones are specifying them all in the <code>MODULES</code> array in <code>rc.conf</code>, or using the <code>modprobe</code> command for each module you require. Another method is to use the <code>hwdetect --modules</code> command to generate a <code>MODULES</code> suitable for your system. You can then put this array in your rc.conf to have them loaded at bootup.<br />
<br />
== General Requirements ==<br />
* You will need a later kernel: Anything earlier than '''2.6.15''' will ''not'' work.<br />
* You can no longer use DevFS style device names in your fstab or bootloader config! See [[DevFS to Udev]] for more info.<br />
<br />
== Recent Changes to Note ==<br />
* The <code>startudev</code> program has been removed. Use <code>/etc/start_udev</code> if you want to reload your udev rules.<br />
* Udev now replaces the functionality of both <code>hotplug</code> and <code>hwdetect</code>. While we still provide <code>hwdetect</code>, it is only typically used during the initrd generation with <code>mkinitrd</code>.<br />
* Udev will load modules simultaneously, which can provide a speed increase during bootup. However, the downside is that it doesn't always load modules in the same order each time, which can cause problems with things like sound cards and network cards (if you have more than one of them). See below for more info on this.<br />
<br />
== Blacklisting Modules ==<br />
Udev can often make mistakes and load the wrong modules. To prevent it from doing this, you can blacklist modules. Once blacklisted, udev will never load that module. Not at boot-time ''or'' later on when a hotplug event is received (ie, you plug in your USB flash drive).<br />
<br />
To blacklist a module, just prefix it with a bang (!) in your <code>MODULES</code> array in <code>rc.conf</code>.<br />
<br />
eg,<br />
<pre>MODULES=(!moduleA !moduleB)</pre><br />
<br />
== load_modules: A Helpful Boot Parameter ==<br />
If you pass <code>load_modules=off</code> on your kernel boot line, then udev will skip all the auto-loading business. This is to provide you with a big ripcord to pull if something goes wrong. If udev loads a problematic module that hangs your system or something equally awful, then you can bypass auto-loading with this parameter, then go in and blacklist the offensive module(s).<br />
<br />
== Known Problems with Hardware ==<br />
- BusLogic devices can be broken and will cause a freeze during startup. <br />
This is a kernel bug and no fix has been provided yet.<br />
- PCMCIA Card readers are not treated as removabel devices.<br />
To get access to them with hal's pmount backend add them to /etc/pmount.allow<br />
<br />
== Known Problems with Auto-Loading ==<br />
=== CPUFreq modules ===<br />
We don't have a good detection method for the various CPUFreq controllers out there, so this has been omitted from the auto-loading process for now. To use CPU frequency scaling, you should load the proper module explicitly in your <code>MODULES</code> array in <code>rc.conf</code>.<br />
<br />
=== Sound Problems or Some Modules Not Loaded Automatically ===<br />
Some users have traced this problem to old entries in <code>/etc/modprobe.conf</code>. Try cleaning that file out and trying again.<br />
<br />
=== Mixed Up Devices, Sound/Network Cards Changing Order Each Boot ===<br />
Because udev loads all modules at once, devices are sometimes initialized in a different order. For example, with two network cards, you may notice they switch designations between <code>eth0</code> and <code>eth1</code>.<br />
<br />
A general solution is to specify the module load order yourself by listing the modules in the <code>MODULES</code> array in <code>rc.conf</code>. Modules in this array are loaded before udev starts auto-loading stuff, so you have full control over the load order.<br />
<br />
<pre># Always load 8139too before e100<br />
MODULES=(8139too e100)</pre><br />
<br />
Another method for network card ordering is to use the udev-sanctified method of statically-naming each interface. Create a file called <code>/etc/udev/rules.d/10-network.rules</code> and bind the MAC address of each of your cards to a certain interface name:<br />
<pre>SUBSYSTEM=="net", SYSFS{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"<br />
SUBSYSTEM=="net", SYSFS{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"</pre><br />
<br />
A couple things to note:<br />
* To get the MAC address of each card, use this command: <code>udevinfo -a -p /sys/class/net/<yourdevice></code><br />
* Make sure to use the lower-case hex values in your udev rules. It doesn't like upper-case.<br />
* Some people have problems naming their interfaces after the old style: eth0, eth1, etc. Try something like "lan" or "wlan" if you experience this problem.<br />
<br />
Don't forget to update your /etc/rc.conf and other configfiles using the old ethX notation!<br />
<br />
== Known Problems for Custom Kernel Users ==<br />
=== Udev doesn't start at all ===<br />
Make sure you have a kernel version later than or equal to 2.6.15. Earlier kernels do not have the necessary uevent stuff that udev needs for auto-loading.<br />
<br />
=== CD/DVD symlinks and permissions are broken ===<br />
If you're using a 2.6.15 kernel, you'll need the uevent patch from ABS (which backports certain uevent functionality from 2.6.16). Just sync up your ABS tree with the <code>abs</code> command, then you'll find the patch in <code>/var/abs/kernels/kernel26/</code>.<br />
<br />
== Udev Tricks ==<br />
=== Auto mounting USB devices ===<br />
<pre><br />
KERNEL=="sd[a-z]", NAME="%k", SYMLINK+="usb%m", GROUP="users", OPTIONS="last_rule"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", SYMLINK+="usb%n", GROUP="users", NAME="%k"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /mnt/usb%n"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/sbin/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /mnt/usb%n", OPTIONS="last_rule"<br />
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /mnt/usb%n", OPTIONS="last_rule"<br />
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /mnt/usb%n"<br />
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /mnt/usb%n", OPTIONS="last_rule"</pre></div>Codemachttps://wiki.archlinux.org/index.php?title=User_talk:Xterminus&diff=10293User talk:Xterminus2006-03-27T07:21:32Z<p>Codemac: </p>
<hr />
<div>Where did you go?</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10292User:Codemac2006-03-27T07:18:40Z<p>Codemac: /* Religious Positions */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[catdoc]] > [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10291User:Codemac2006-03-27T07:18:15Z<p>Codemac: /* Contact */</p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@irc.freenode.net#archlinux, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=Arch_IRC_channels&diff=10290Arch IRC channels2006-03-27T07:17:07Z<p>Codemac: /* Channel Addicts */</p>
<hr />
<div>[[Category:Help]]<br />
__NOTOC__<br />
The official Archlinux channel is '''#archlinux''' on '''[http://www.freenode.net/ irc.freenode.net]''' (what is [http://www.irchelp.org/ IRC]?).<br />
If you have questions that cannot be answered by RTFM, join '''#archlinux''' and ask there.<br />
<br />
If you like, stay some time to help others by answering some questions yourself. Or even stay permanently :-)<br />
<br />
Use the above shown connection data to join with any IRC-client like [http://www.irssi.org/ irssi], [http://www.xchat.org/ XChat],<br />
[http://gaim.sourceforge.net/ Gaim] or [http://www.hacksrus.com/~ginda/chatzilla/ ChatZilla]. We collect some fortunes on the [[Wall of Quotes]].<br />
<br />
= Channel Guidelines =<br />
==after:==<br />
* When you've been served well, stay long & prosper to '''help others''' (in the channel and add to MuttWiki)!<br />
<br />
==before:==<br />
* Check '''google''', '''[http://bbs.archlinux.org the forums]''', '''[http://bugs.archlinux.org flyspray]''' and '''[[:Category:HowTos|The Wiki]]''' before you ask.<br />
* If you've '''already found''' the answers on your own by now, then '''tell us''' which docs helped you (not?).<br />
* Otherwise, if you want good & fast answers, ask '''[http://www.catb.org/~esr/faqs/smart-questions.html smart questions]'''<br />
** No mindreading here, '''state most specifically''': expected result(s) first, the ones you get, and then '''all''' circumstantial info.<br />
** Quality of answer won't exceed quality of question, you decide how helpful you are to yourself.<br />
<br />
==while:==<br />
* Just '''ask your stuff''', don't ask if we're "alive"!<br />
* '''Wait''' some time: eventually, someone will answer, don't count on instant reaction.<br />
* Be '''supportive''': we can't read minds, so be specific! See "smart-questions" above!<br />
** State your goal first, too, maybe you chose the wrong way.<br />
* Show '''commitment''': this is not a service hotline, this is a do-it-yourself environment.<br />
** Look up references yourself, use existing docs, learn to help yourself.<br />
* Be '''patient''' (with yourself & fellows): answers are favours, not your right.<br />
** You are supposed to do the actual work, you get advice and pointers.<br />
<br />
* '''Don't flood''' the channel by pasting lots of lines (up to 4 lines is ok). If you have to paste a lot of lines:<br />
** use a '''nopaste'''-website and post the URL to '''#archlinux''' channel (eg. [http://www.pastebin.com pastebin]).<br />
* Disable '''auto-away''' messages & '''nick-changes'''! Use the '''silent''' <tt>/away</tt> feature of your client manually, nothing else!<br />
<br />
= Channel Statistics =<br />
<br />
* [[User:MindTriggerz|MindTriggerz]] runs a bot which generates a [http://mindtriggerz.net/images/archlinux/archlinux-current.png graph of the channel social network].<br />
* [[User:Xterminus|Xterminus]] runs pirc on his irc logs nightly to generate some generic [http://charles.mauch.name/irc/archlinux.html stats].<br />
* [[User:Xterminus|Xterminus]] also maintains the [[ArchMap|ArchMap]]. Add yourself!<br />
<br />
= Channel Addicts =<br />
<br />
These people spend far to much time in #archlinux.<br />
<br />
[[User:WillySilly|WillySilly]], c14n, [[User:Phrackture|phrakture]], Maveric-i686-, AqD, [[User:Stonecrest|stonecrest]], msg431, [[User:jMCg|jMCg]], syamajala, [[User:Mindtriggerz|mindtriggerz]], [[User:Codemac|codemac]]<br />
<br />
= Channel Regulars =<br />
<br />
shastry_, dadexter, Luke__, bitbull, ezech, jakob_, [[User:Iphitus|iphitus]], brain0, octan, dagnachew, [[User:Neotuli|neotuli_]], [[User:Andrewski|andrewski]], Marco`, RedKennedy, criminy, gp_aaron, enightmare, [[User:Paniq|paniq]], [[User:Timtux|timtux]], [[User:Vardyr|Vardyr]], siimo, Aquila_Deu1, perry753, ZaxX, Infinitus, [[User:Xterminus|xterminus]]. LokeDK, shining_</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10155User:Codemac2006-03-25T01:29:19Z<p>Codemac: </p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@freenode, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10154User:Codemac2006-03-25T01:25:49Z<p>Codemac: </p>
<hr />
<div>[[Image:Mickeyatmiyoungs.jpg|right|50px|Studdddd]]<br />
__NOTOC__<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@freenode, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10153User:Codemac2006-03-25T01:25:11Z<p>Codemac: </p>
<hr />
<div>[[Image:Mickeyatmiyoungs.jpg|right|50px|Studdddd]]<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@freenode, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10150User:Codemac2006-03-25T01:13:17Z<p>Codemac: </p>
<hr />
<div>http://static.flickr.com/5/9864720_d7fab186cf.jpg<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@freenode, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10149User:Codemac2006-03-25T01:13:03Z<p>Codemac: </p>
<hr />
<div>[[http://static.flickr.com/5/9864720_d7fab186cf.jpg]]<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@freenode, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemachttps://wiki.archlinux.org/index.php?title=User:Codemac&diff=10148User:Codemac2006-03-25T01:12:36Z<p>Codemac: </p>
<hr />
<div>[[http://static.flickr.com/5/9864720_d7fab186cf.jpg|right|50px|codemac in his prime]]<br />
== Bio ==<br />
{{User:Codemac/Bio}}<br />
<br />
== Projects ==<br />
<br />
* Patching the AUR ? (I'm working on it before I submit, Paul)<br />
<br />
== Goals ==<br />
<br />
* Use Linux More<br />
* Make money<br />
* MF-ing graduate<br />
<br />
<br />
== [[Religious]] Positions ==<br />
<br />
* [[ArchLinux]] > *<br />
* [[Vim]] > [[emacs]]<br />
* [[ZSH]] > *<br />
* [[muttng]] > [[mutt]] > *<br />
* [[ion]] > [[ratpoison]] > [[wmii]] > *<br />
* [[xterm]] > [[urxvt]] > *<br />
* [[screen]] > *<br />
* [[Weechat]] > [[irssi]] > *<br />
* [[jabber]] > [[gtalk]] > *<br />
* [[AMD]] > [[Intel]]<br />
* [[wvWare]] > [[Microsoft Word]] > [[OpenOffice.org]] > [[Abiword]] > [[Writely]] > *<br />
* [[Apple]] > [[Microsoft]]<br />
* [[Hokies]] > *<br />
<br />
== Web ==<br />
<br />
HTTP: [http://www.codemac.net blog] [http://flickr.com/photos/codemac flickr] [http://myspace.com/codemac myspace]<br />
<br />
== Contact ==<br />
<br />
Mail: [mailto:j@codemac.net j@codemac.net]<br />
<br />
IRC: codemac@freenode, Jabber: j@xmpp.us, AIM: jcodemac, YIM: j@codemac.net, MSN: j@codemac.net, Meetro: codemac, Skype: codemac, ICQ: 347168258</div>Codemac