https://wiki.archlinux.org/api.php?action=feedcontributions&user=AndreasBWagner&feedformat=atomArchWiki - User contributions [en]2024-03-28T14:44:10ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Tmsu&diff=291627Tmsu2014-01-04T21:11:58Z<p>AndreasBWagner: /* Installation */ Added link to tmsu-bin AUR package.</p>
<hr />
<div>[[Category:Search]]<br />
[[Category:File systems]]<br />
{{Article summary start}}<br />
{{Article summary text|tmsu allows to tag files and folders and to categorise these by a label structure rather than a hierarchical file system structure.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Beagle}}<br />
{{Article summary end}}<br />
<br />
[http://tmsu.org tmsu] is a tool for tagging your files. It provides a simple command-line tool for applying tags and a virtual file-system so that you can get a tagged based view of your files from within any other program.<br />
<br />
== Installation ==<br />
tmsu can be installed with the {{AUR|tmsu}} or {{AUR|tmsu-bin}} packages.<br />
<br />
== Quick tour ==<br />
The tmsu [http://tmsu.org website] provides an excellent short quick tour on the basic usage.<br />
<br />
== Obstacles ==<br />
tmsu creates symlinks between files, folders and the related tags. That is, it cannot handle file deletions and moves very well although there is a 'repair' command that will detect file moves and renames. It also updates fingerprints for modified files. There is no automatic directory watcher and it is not planned to add this facility as it would not work across all file system types.<br />
<br />
== See also ==<br />
<br />
*[http://en.reddit.com/r/linux/comments/woear/tmsu_is_a_program_that_allows_you_to_organise/ Reddit discussion]<br />
*[https://github.com/Dieterbe/tmsu-helpers tmsu extensions]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Data-at-rest_encryption&diff=259028Data-at-rest encryption2013-05-26T20:50:24Z<p>AndreasBWagner: /* Basic principle */ Fixed typo, (lenght -> length)</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:File systems]]<br />
[[it:Disk Encryption]]<br />
{{Article summary start}}<br />
{{Article summary text|Transparent encryption/decryption software}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|dm-crypt with LUKS}}<br />
{{Article summary wiki|eCryptfs}}<br />
{{Article summary wiki|TrueCrypt}}<br />
{{Article summary wiki|EncFS}}<br />
{{Article summary wiki|Mount encrypted volumes in parallel}}<br />
{{Article summary end}}<br />
<br />
This article discusses common techniques available in Arch Linux for cryptographically protecting a logical part of a storage disk (folder, partition, whole disk, ...), so that all data that is written to it is automatically encrypted, and decrypted on-the-fly when read again.<br />
<br />
"Storage disks" in this context can be your computer's hard drive(s), external devices like USB sticks or DVD's, as well as ''virtual'' storage disks like loop-back devices or cloud storage ''(as long as Arch Linux can address it as a block device or filesystem)''.<br />
<br />
==Why use encryption?==<br />
<br />
Disk encryption ensures that files are always stored on disk in an encrypted form. The files only become available to the operating system and applications in readable form while the system is running and unlocked by a trusted user. Reading the encrypted sectors without permission will return garbled random-looking data instead of the actual files.<br />
<br />
For example, this can prevent unauthorized viewing of the data when the computer or hard-disk is:<br />
* located in a place to which non-trusted people might gain access while you're away<br />
* lost or stolen, as with laptops, netbooks or external storage devices<br />
* in the repair shop<br />
* discarded after its end-of-life<br />
<br />
In addition, disk encryption can also be used to add some security against unauthorized attempts to tamper with your operating system. For example, the installation of keyloggers or Trojan horses by attackers who can gain physical access to the system while you're away.<br />
<br />
{{Warning|Disk encryption does '''not''' protect your data from all threats.}}<br />
Including the following:<br />
* Attackers who can break into your system (e.g. over the Internet) while it is running and after you've already unlocked and mounted the encrypted parts of the disk.<br />
* Attackers who are able to gain physical access to the computer while (or very shortly after) it is running, and have the resources to perform a [[Wikipedia:Cold boot attack|cold boot attack]].<br />
* A government entity, which not only has the resources to easily pull off the above attacks, but also may simply force you to give up your keys/passphrases using various techniques of [[Wikipedia:Coercion|coercion]]. In most non-democratic countries around the world, as well as in the USA and UK, it is legal for law enforcement agencies to do so if they have suspicions that you might be hiding something of interest.<br />
<br />
A very strong disk encryption setup (e.g. full system encryption with no plaintext boot partition and authenticity checking) is required to stand a chance against professional attackers, who are able to tamper with your system before you use it. And even then it is doubtful whether it can really prevent all types of tampering (e.g. hardware keyloggers). The best remedy might be [[Wikipedia:Hardware-based full disk encryption|hardware-based full disk encryption]] (e.g. [[Wikipedia:Trusted_Computing|Trusted Computing]]).<br />
<br />
{{Warning|Disk encryption also won't protect you against someone simply [[Securely wipe disk|wiping your disk]]. [[Backup Programs|Regular backups]] are recommended to keep your data safe.}}<br />
<br />
===Data encryption vs system encryption===<br />
{{Wikipedia|Disk encryption}}<br />
'''Data encryption''', defined as encrypting only the user's data itself (often located within the {{ic|/home}} directory, or on removable media like a data DVD), is the simplest and least intrusive use of disk encryption, but has some significant drawbacks.<br>In modern computing systems, there are many background processes that may cache/store information about user data or parts of the data itself in non-encrypted areas of the hard drive, like:<br />
<br />
* swap partitions<br />
** <span style="color:#555">''(potential remedy: disable swapping)''</span><br />
* {{ic|/tmp}} (temporary files created by user applications)<br />
** <span style="color:#555">''(potential remedies: avoid such applications; mount {{ic|/tmp}} inside a [[ramdisk]])''</span><br />
* {{ic|/var}} (log files and databases and such; for example, mlocate stores an index of all file names in {{ic|/var/lib/mlocate/mlocate.db}})<br />
<br />
In addition, mere data encryption will leave the system vulnerable to offline system tampering attacks ''(see warnings above)''.<br />
<br />
<br />
'''System encryption''', defined as the encryption of the operating system ''and'' user data, helps to address some of the inadequacies of data encryption.<br />
<br />
Benefits:<br />
* Preventing unauthorized physical access to operating system files ''(but see warning above)''<br />
* Preventing unauthorized physical access to private data that may cached by the system. <br />
Disadvantages:<br />
* unlocking/locking of the encrypted parts of the disk can no longer coincide with user login/logout, because now the unlocking already needs to happen before or during boot<br />
<br />
<br />
In practice, there's not always a clear line between data encryption and system encryption, and many different compromises and customized setups are possible.<br />
<br />
In any case, disk encryption should only be viewed as an adjunct to the existing security mechanisms of the operating system - focused on securing offline physical access, while relying on ''other'' parts of the system to provide things like network security and user-based access control.<br />
<br />
==Available methods==<br />
<br />
All disk encryption methods operate in such a way that even though the disk actually holds encrypted data, the operating system and applications "see" it as the corresponding normal readable data as long as the cryptographic container (i.e. the logical part of the disk that holds the encrypted data) has been "unlocked" and mounted.<br />
<br />
For this to happen, some "secret information" (usually in the form of a keyfile and/or passphrase) needs to be supplied by the user, from which the actual encryption key can be derived (and stored in the kernel keyring for the duration of the session).<br />
<br />
If you are completely unfamiliar with this sort of operation, please first read the [[#How the encryption works]] section below.<br />
<br />
The available disk encryption methods can be separated into two types by their layer of operation:<br />
<br />
===Stacked filesystem encryption===<br />
<br />
Stacked filesystem encryption solutions are implemented as a layer that stacks on top of an existing filesystem, causing all files written to an encryption-enabled folder to be encrypted on-the-fly before the underlying filesystem writes them to disk, and decrypted whenever the filesystem reads them from disk. This way, the files are stored in the host filesystem in encrypted form (meaning that their contents, and usually also their file/folder names, are replaced by random-looking data of roughly the same length), but other than that they still exist in that filesystem as they would without encryption, as normal files / symlinks / hardlinks / etc.<br />
<br />
The way it is implemented, is that to unlock the folder storing the raw encrypted files in the host filesystem ("lower directory"), it is mounted (using a special stacked pseudo-filesystem) onto itself or optionally a different location ("upper directory"), where the same files then appear in readable form - until it is unmounted again, or the system is turned off.<br />
<br />
Available solutions in this category are:<br />
<br />
:;[[System_Encryption_with_eCryptfs|eCryptfs]]: ''...''<br />
<br />
:;[[EncFS]]: ''...''<br />
<br />
===Block device encryption===<br />
<br />
Block device encryption methods, on the other hand, operate ''below'' the filesystem layer and make sure that everything written to a certain block device (i.e. a whole disk, or a partition, or a file acting as a virtual loop-back device) is encrypted. This means that while the block device is offline, its whole content looks like a large blob of random data, with no way of determining what kind of filesystem and data it contains. Accessing the data happens, again, by mounting the protected container (in this case the block device) to an arbitrary location in a special way.<br />
<br />
The following "block device encryption" solutions are available in Arch Linux:<br />
<br />
:;[[loop-AES]]:''loop-AES is a descendant of cryptoloop and is a secure and fast solution to system encryption.''<br />
::''However loop-AES is considered less user-friendly than other options as it requires non-standard kernel support.''<br />
<br />
:;[[System_Encryption_with_LUKS|dm-crypt + LUKS]]: ''dm-crypt is the standard device-mapper encryption functionality provided by the Linux kernel. It can be used directly by those who like to have full control over all aspects of partition and key management.''<br />
::''LUKS is an additional convenience layer which stores all of the needed setup information for dm-crypt on the disk itself and abstracts partition and key management in an attempt to improve ease of use.''<br />
<br />
:;[[TrueCrypt]]: ''...''<br />
<br />
For practical implications of the chosen layer of operation, see the [[#practical_implications|comparison table]] below, as well as [http://ecryptfs.sourceforge.net/ecryptfs-faq.html#compare].<br />
<br />
===Comparison table===<br />
<br />
{| class="wikitable" style="text-align:center; cell-padding:100px; "<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
=====''summary''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent; width:20px" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
type <br />
| colspan="3" | block device encryption<br />
| colspan="2" | stacked filesystem encryption<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
main selling points<br />
| longest-existing one; possibly the fastest; works on legacy systems<br />
| de-facto standard for block device encryption on Linux; very flexible<br />
| very portable, well-polished, self-contained solution<br />
| slightly faster than EncFS; individual encrypted files portable between systems<br />
| easiest one to use; supports non-root administration<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
availability in Arch Linux<br />
| must manually compile custom kernel<br />
| ''kernel modules:'' already shipped with default kernel; ''tools:'' {{Pkg|device-mapper}}, {{Pkg|cryptsetup}} [core]<br />
| {{Pkg|truecrypt}} [extra]<br />
| ''kernel module:'' already shipped with default kernel; ''tools:'' {{Pkg|ecryptfs-utils}} [community]<br />
| {{Pkg|encfs}} [community]<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
license<br />
| GPL<br />
| GPL<br />
| custom<sup>[[#Notes_.26_References|[1]]]</sup><br />
| GPL<br />
| GPL<br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="5" style="border-right-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
=====''basic classification''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
encrypts...<br />
| colspan="3" | whole block devices<br />
| colspan="2" | files<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
container for encrypted data may be...<br />
| colspan="3" |<br />
* a disk or disk partition<br />
* a file acting as a virtual partition<br />
| colspan="2" |<br />
* a directory in an existing file system<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
relation to filesystem<br />
| colspan="3" | operates below the filesystem layer - doesn't care whether the content of the encrypted block device is a filesystem, a partition table, a LVM setup, or anything else<br />
| colspan="2" | adds an additional layer to an existing filesystem, to automatically encrypt/decrypt files whenever they're written/read<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
encryption implemented in...<br />
| colspan="4" | kernelspace<br />
| userspace<br>''(using FUSE)''<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
cryptographic metadata stored in...<br />
| ?<br />
| rowspan="2" | LUKS Header<br />
| rowspan="2" | begin/end of (decrypted) device ([http://www.truecrypt.org/docs/volume-format-specification format])<br />
| header of each encrypted file<br />
| control file at the top level of each EncFs container<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
wrapped encryption key stored in...<br />
| ?<br />
| key file that can be stored anywhere<br />
| control file at the top level of each EncFs container<br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="5" style="border-right-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
<br />
=====''practical implications''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
file metadata (number of files, dir structure, file sizes, permissions, mtimes, etc.) is encrypted<br />
| colspan="3" | <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| colspan="2" | <span style="font-size:160%; color:#CF2525;">✖</span><br>''(file and dir names can be encrypted though)''<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
can be used to encrypt whole hard drives (including partition tables)<br />
| colspan="3" | <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| colspan="2" | <span style="font-size:160%; color:#CF2525;">✖</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
can be used to encrypt swap space<br />
| colspan="3" | <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| colspan="2" | <span style="font-size:160%; color:#CF2525;">✖</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
can be used without pre-allocating a fixed amount of space for the encrypted data container<br />
| colspan="3" | <span style="font-size:160%; color:#CF2525;">✖</span><br />
| colspan="2" | <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
can be used to protect existing filesystems without block device access, e.g. NFS or Samba shares, cloud storage, etc.<br />
| colspan="3" | &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:160%; color:#CF2525;">✖</span><sup>[[#Notes_.26_References|[2]]]</sup><br />
| colspan="2" | <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
allows offline file-based backups of encrypted files<br />
| colspan="3" | <span style="font-size:160%; color:#CF2525;">✖</span><br />
| colspan="2" | <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="5" style="border-right-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
=====''usability features''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for automounting on login<br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for automatic unmounting in case of inactivity<br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
non-root users can create/destroy containers for encrypted data<br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
provides a GUI<br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="5" style="border-right-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
<br />
=====''security features''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
supported ciphers<br />
| AES<br />
| AES, Anubis, CAST5/6, Twofish, Serpent, Camellia, Blowfish, … (every cipher the kernel Crypto API offers)<br />
| AES, Twofish, Serpent<br />
| AES, Blowfish, Twofish...<br />
| AES, Twofish<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for salting<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br>(with LUKS)<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for cascading multiple ciphers<br />
| ?<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for key-slot diffusion<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br>(with LUKS)<br />
| ?<br />
| ?<br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
protection against key scrubbing<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for multiple (independently revokable) keys for the same encrypted data<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br>(with LUKS)<br />
| ?<br />
| ?<br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
|- valign="top"<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="5" style="border-right-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
<br />
=====''performance features''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
multithreading support<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><sup>[[#Notes_.26_References|[8]]]</sup><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
hardware-accelerated encryption support<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
optimised handling of sparse files<br />
| ?<br />
| ?<br />
| ?<br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| ?<br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="3" style="border-right-color:transparent" |<br />
| colspan="2" style="border-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
<br />
=====''block device encryption specific''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
| colspan="2" rowspan="2" style="border-color:transparent" |<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
support for (manually) resizing the encrypted block device in-place<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="3" style="border-color:transparent" |<br />
| colspan="2" style="border-right-color:transparent" |<br />
|-<br />
| colspan="6" style="border-left-color:transparent; text-align:left;" |<br />
=====''stacked filesystem encryption specific''=====<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
supported file systems<br />
| ext3, ext4, xfs (with caveats), jfs, nfs...<br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
ability to encrypt filenames<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="5" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
ability to ''not'' encrypt filenames<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
|-<br />
| colspan="3" style="height:20px; border-color:transparent" |<br />
| colspan="5" style="border-right-color:transparent" |<br />
|-<br />
| colspan="3" style="border-left-color:transparent; border-top-color:transparent; text-align:left;" |<br />
=====''compatibility & prevalence''=====<br />
! scope="col" style="background:#E2E2E2" | Loop-AES<br />
! scope="col" style="background:#E2E2E2" | dm-crypt + LUKS<br />
! scope="col" style="background:#E2E2E2" | Truecrypt<br />
! scope="col" style="background:#E2E2E2" | eCryptfs<br />
! scope="col" style="background:#E2E2E2" | EncFs<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
supported Linux kernel versions<br />
| 2.0 or newer<br />
| ?<br />
| ?<br />
| ?<br />
| 2.4 or newer<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" rowspan="3" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | encrypted data can also be accessed from...<br />
! scope="row" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | Windows<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span> (with <sup>[[#Notes_.26_References|[3]]]</sup>)<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span> (with <sup>[[#Notes_.26_References|[4]]]</sup>)<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
| ?<br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | Mac OS X<br />
| ?<br />
| ?<br />
| <span style="font-size:210%; color:#5F9E23;">✔</span><br />
| ?<br />
| &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:210%; color:#5F9E23;">✔</span><sup>[[#Notes_.26_References|[5]]]</sup><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" | FreeBSD<br />
| ?<br />
| ?<br />
| <span style="font-size:160%; color:#CF2525;">✖</span><br />
| ?<br />
| &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:210%; color:#5F9E23;">✔</span><sup>[[#Notes_.26_References|[6]]]</sup><br />
|- valign="top"<br />
| style="border-left-color:transparent; border-bottom-color:transparent" |<br />
! scope="row" colspan="2" style="text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px" |<br />
used by<br />
| ?<br />
| <br />
* ''Arch Linux installer'' (system encryption)<br />
* ''Ubuntu alternate installer'' (system encryption)<br />
| ?<br />
|<br />
* ''Ubuntu installer'' (home dir encryption)<br />
* ''Chromium OS'' (encryption of cached user data<sup>[[#Notes_.26_References|[7]]]</sup>)<br />
| ?<br />
|}<br />
<br />
==Preparation==<br />
<br />
===Choosing a setup===<br />
<br />
Which disk encryption setup is appropriate for you will depend on your goals (please read [[#Why_use_encryption?]] above) and system parameters.<br><br />
Among other things, you will need to answer the following questions:<br />
<br />
<ul><br />
<li>What kind of "attacker" do you want to protect against?<br />
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0"><br />
<li>Casual computer user trying to passively spy on your disk contents while your system is turned off / stolen / etc.</li><br />
<li>Professional cryptanalyst who can get repeated read/write access to your system before and after you use it</li><br />
<li>anything in between</li><br />
</ul></li><br />
</ul><br />
<br />
<ul><br />
<li>What encryption strategy shall be employed?<br />
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0"><br />
<li>data encryption</li><br />
<li>system encryption</li><br />
<li>something in between</li><br />
</ul><ul><br />
<li>How should swap, {{ic|/tmp}}, etc. be taken care of?<br />
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0"><br />
<li>ignore, and hope no data is leaked</li><br />
<li>disable or mount as ramdisk</li><br />
<li>encrypt ''(as part of full disk encryption, or separately)''</li><br />
</ul></li></ul></li><br />
</ul><br />
<br />
<ul><br />
<li>How should encrypted parts of the disk be unlocked?<br />
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0"><br />
<li>passphrase ''(same as login password, or separate)''</li><br />
<li>keyfile ''(e.g. on a USB stick, that you keep in a safe place or carry around with yourself)''</li><br />
<li>both</li><br />
</ul></li><br />
</ul><br />
<br />
<ul><br />
<li>''When'' should encrypted parts of the disk be unlocked?<br />
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0"><br />
<li>before boot</li><br />
<li>during boot</li><br />
<li>at login</li><br />
<li>manually on demand ''(after login)''</li><br />
</ul></li><br />
</ul><br />
<br />
<ul><br />
<li>How should multiple users be accomodated?<br />
<ul style="list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0"><br />
<li>not at all</li><br />
<li>using a shared passphrase/key</li><br />
<li>idependently issued and revocable passphrases/keys for the same encrypted part of the disk</li><br />
<li>separate encrypted parts of the disk for different users</li><br />
</ul></li><br />
</ul><br />
<br />
Then you can go on to make the required technical choices (see [[#Available_methods]] above, and [[#How_the_encryption_works]] below), regarding:<br />
<br />
* stacked filesystem encryption vs. blockdevice encryption<br />
* key management<br />
* cipher and mode of operation<br />
* metadata storage<br />
* location of the "lower directory" (in case of stacked filesystem encryption)<br />
<br />
In practice, it could turn out something like:<br />
<br />
<dl><dt style="font-weight:normal">'''''Example 1:''''' simple data encryption (internal hard drive)<br />
<dd><br />
&bull; '''a virtual folder called "~/Private"''' in the user's home dir encrypted with ''EncFS''<br />
<span style="color:#777">'' ├──> encrypted versions of the files stored on-disk in ~/.Private''</span><br />
<span style="color:#777">'' └──> unlocked on demand with dedicated passphrase''</span><br />
</dl><br />
<br />
<dl><dt style="font-weight:normal">'''''Example 2:''''' simple data encryption (removable media)<br />
<dd><br />
&bull; '''whole external USB drive''' encrypted with ''TrueCrypt''<br />
<span style="color:#777">'' └──> unlocked when attached to the computer''</span><br />
<span style="color:#777">'' (using dedicated passphrase + using ~/photos/2006-09-04a.jpg as covert keyfile)''</span><br />
</dl><br />
<br />
<dl><dt style="font-weight:normal">'''''Example 3:''''' partial system encryption<br />
<dd><br />
&bull; each user's '''home directory''' encrypted with ''eCryptfs''<br />
<span style="color:#777">'' └──> unlocked on login, using login passphrase''</span><br />
&bull; '''swap''' and '''/tmp''' partitions encrypted with ''dm-crypt+LUKS''<br />
<span style="color:#777">'' └──> using automatically generated per-session throwaway key''</span><br />
&bull; indexing/caching of contents of /home by slocate (and similar apps) disabled<br />
</dl><br />
<br />
<dl><dt style="font-weight:normal">'''''Example 4:''''' system encryption<br />
<dd><br />
&bull; '''whole hard drive except /boot partition''' encrypted with ''dm-crypt+LUKS''<br />
<span style="color:#777">'' └──> unlocked during boot, using USB stick with keyfile (shared by all users)''</span><br />
</dl><br />
<br />
<dl><dt style="font-weight:normal">'''''Example 5:''''' paranoid system encryption<br />
<dd><br />
&bull; '''whole hard drive''' encrypted with ''dm-crypt''<br />
<span style="color:#777">'' ├──> unlocked before boot, using dedicated passphrase + USB stick with keyfile''</span><br />
<span style="color:#777">'' │ (different one issued to each user - independently revocable)''</span><br />
<span style="color:#777">'' └──> data integrity checked before mounting''</span><br />
&bull; '''/boot partition''' located on aforementioned USB stick<br />
</dl><br />
<br />
Many other combinations are of course possible. You should carefully plan what kind of setup will be appropriate for your system.<br />
<br />
===Choosing a strong passphrase===<br />
<br />
When relying on a passphrase, it must be complex enough to not be easy to guess or break using brute-force attacks. The tenets of strong passphrases are based on ''length'' and ''randomness''.<br><br />
Refer to [http://www.iusmentis.com/security/passphrasefaq/ The passphrase FAQ] for a detailed discussion, and especially consider the [http://world.std.com/~reinhold/diceware.html Diceware Passphrase] method.<br />
<br />
Another aspect of the strength of the passphrase is that it must not be easily recoverable from other places.<br />
If you use the same passphrase for disk encryption as you use for your login password (useful e.g. to auto-mount the encrypted partition or folder on login), make sure that {{ic|/etc/shadow}} either also ends up on an encrypted partition, or uses a strong hash algorithm (i.e. sha512/bcrypt, not md5) for the stored password hash (see [[SHA_password_hashes]] for more info).<br />
<br />
===Preparing the disk===<br />
<br />
Before setting up disk encryption on a (part of a) disk, consider securely wiping it first. This consists of overwriting the entire drive or partition with a stream of zero bytes or random bytes, and is done for one or both of the following reasons:<br />
<br />
<ul><br />
<li><p>'''prevent recovery of previously stored data'''</p><br />
Disk encryption doesn't change the fact that individual sectors are only overwritten on demand, when the file system creates or modifies the data those particular sectors hold (see [[#How_the_encryption_works]] below). Sectors which the filesystem considers "not currently used" are not touched, and may still contain remnants of data from previous filesystems. The only way to make sure that all data which you previously stored on the drive can not be [[Wikipedia:Data_recovery|recovered]], is to manually erase it.<br><br />
For this purpose it does not matter whether zero bytes or random bytes are used (although wiping with zero bytes will be much faster).<br />
</li><br />
<br />
<li><p>'''prevent disclosure of usage patterns on the encrypted drive'''</p><br />
Ideally, the whole encrypted part of the disk should be indistinguishable from uniformly random data. This way, no unauthorized person can know which and how many sectors actually contain encrypted data - which may be a desirable goal in itself (as part of true confidentiality), and also serves as an additional barrier against attackers trying to break the encryption.<br><br />
For this purpose, wiping the disk using high-quality random data is crucial.<br />
</li><br />
</ul><br />
<br />
The second reason only makes sense in combination with block device encryptions, because in the case of stacked filesystem encryption the encrypted data is easily identifiable anyways (in the form of distinct encrypted files in the host filesystem). Also note that even if you only intend to encrypt a particular folder, you will have to erase the whole partition if you want to get rid of files that were previously stored in that folder in unencrypted form. If there are other folders on the same partition, you will have to back them up and move them back afterwards.<br />
<br />
Once you have decided which kind of disk erasure you want to perform, refer to the [[Securely_wipe_disk]] article for technical instructions.<br />
<br />
{{Tip|In deciding which method to use for secure erasure of a hard disk drive, remember that this will not need to be performed more than once for as long as the drive is used as an encrypted drive.}}<br />
<br />
==How the encryption works==<br />
<br />
This section is intended as a high-level introduction to the concepts and processes which are at the heart of usual disk encryption setups.<br />
<br />
It does not go into technical or mathematical details (consult the appropriate literature for that), but should provide a system administrator with a rough understanding of how different setup choices (especially regarding key management) can affect usability and security.<br />
<br />
===Basic principle===<br />
<br />
For the purposes of disk encryption, each blockdevice (or individual file in the case of stacked filesystem encryption) is divided into '''sectors''' of equal length, for example 512 bytes (4,096 bits). The encryption/decryption then happens on a per-sector basis, so the n'th sector of the blockdevice/file on disk will store the encrypted version of the n'th sector of the original data.<br />
<br />
Whenever the operating system or an application requests a certain fragment of data from the blockdevice/file, the whole sector (or sectors) that contains the data will be read from disk, decrypted on-the-fly, and temporarily stored in memory:<br />
<br />
╔═══════╗<br />
sector 1 ║"???.."║<br />
╠═══════╣ ╭┈┈┈┈┈╮<br />
sector 2 ║"???.."║ ┊ key ┊<br />
╠═══════╣ ╰┈┈┬┈┈╯<br />
⁝ ⁝ │<br />
╠═══════╣ ▼ ┣┉┉┉┉┉┉┉┫<br />
sector n ║"???.."║━━━━━━━(decryption)━━━━━━▶┋"abc.."┋ sector n<br />
╠═══════╣ ┣┉┉┉┉┉┉┉┫<br />
⁝ ⁝<br />
╚═══════╝<br />
<br />
encrypted unencrypted<br />
blockdevice or data in memory<br />
file on disk<br />
<br />
Similarly, on each write operation, all sectors that are affected must be re-encrypted complelety (while the rest of the sectors remain untouched).<br />
<br />
===Keys, keyfiles and passphrases===<br />
<br />
In order to be able to de/encrypt data, the disk encryption system needs to know the unique secret "key" associated with it. This is a randomly generated byte string of a certain length, for example 32 bytes (256 bits).<br />
<br />
Whenever the encrypted block device or folder in question is to be mounted, its corresponding key (called henceforth its "master key") must be retrieved - usually from one of the following locations:<br />
<br />
<ul><br />
<li><p>'''''stored in a plaintext keyfile'''''</p><br />
<br />
Simply storing the master key in a file (in readable form) is the simplest option. The file - called a "keyfile" - can be placed on a USB stick that you keep in a secure location and only connect to the computer when you want to mount the encrypted parts of the disk (e.g. during boot or login).<br />
</li><br />
<br />
<li><p>'''''stored in passphrase-protected form in a keyfile or on the disk itself'''''</p><br />
<br />
The master key (and thus the encrypted data) can be protected with a secret passphrase, which you will have to remember and enter each time you want to mount the encrypted block device or folder.<br />
<br />
A common setup is to apply so-called "key stretching" to the passphrase (via a "key derivation function"), and use the resulting enhanced passphrase as the mount key for decrypting the actual master key (which has been previously stored in encrypted form):<br />
<br />
<pre><br />
╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮ ╭┈┈┈┈┈┈┈┈┈┈┈╮<br />
┊ mount passphrase ┊━━━━━⎛key derivation⎞━━━▶┊ mount key ┊<br />
╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯ ,───⎝ function ⎠ ╰┈┈┈┈┈┬┈┈┈┈┈╯<br />
╭──────╮ ╱ │<br />
│ salt │───────────´ │<br />
╰──────╯ │<br />
╭─────────────────────╮ ▼ ╭┈┈┈┈┈┈┈┈┈┈┈┈╮<br />
│ encrypted master key│━━━━━━━━━━━━━━━━━━━━━━(decryption)━━━▶┊ master key ┊<br />
╰─────────────────────╯ ╰┈┈┈┈┈┈┈┈┈┈┈┈╯<br />
</pre><br />
<br />
The '''key derivation function''' (e.g. PBKDF2 or scrypt) is deliberately slow (it applies many iterations of a hash function, e.g. 1000 iterations of HMAC-SHA-512), so that brute-force attacks to find the passphrase are rendered infeasible. For the normal use-case of an authorized user, it will only need to be calculated once per session, so the small slowdown is not a problem.<br>It also takes an additional blob of data, the so-called "'''salt'''", as an argument - this is randomly generated once during set-up of the disk encryption and stored unprotected as part of the cryptographic metadata. Because it will be a different value for each setup, this makes it infeasible for attackers to speed up brute-force attacks using precomputed tables for the key derivation function.<br />
<br />
The '''encrypted master key''' can be stored on disk together with the encrypted data. This way, the confidentiality of the encrypted data depends completely on the secret passphrase.<br />
<br />
Additional security can be attained by instead storing the encrypted master key in a keyfile on e.g. a USB stick. This provides '''two-factor authentication''': Accessing the encrypted data now requires something only you ''know'' (the passphrase), and additionally something only you ''have'' (the keyfile).<br />
<br />
Another way of achieving two-factor authentication is to augment the above key retrieval scheme to mathematically "combine" the passphrase with byte data read from one or more external files (located on a USB stick or similar), before passing it to the key derivation function.<br>The files in question can be anything, e.g. normal JPEG images, which can be beneficial for [[#Plausible Deniability]]. They are still called "keyfiles" in this context, though.</li><br />
<br />
<li><p>'''''randomly generated on-the-fly for each session'''''</p><br />
<br />
In some cases, e.g. when encrypting swap space or a {{ic|/tmp}} partition, it is not necessary to keep a persistent master key at all. A new throwaway key can be randomly generated for each session, without requiring any user interaction. This means that once unmounted, all files written to the partition in question can never be decrypted again by ''anyone'' - which in those particular use-cases is perfectly fine.<br />
</li><br />
</ul><br />
<br />
<br>After it has been derived, the master key is securely stored in memory (e.g. in a kernel keyring), for as long as the encrypted block device or folder is mounted.<br />
<br />
It is usually not used for de/encrypting the disk data directly, though.<br />
For example, in the case of stacked filesystem encryption, each file can be automatically assigned its own encryption key. Whenever the file is to be read/modified, this file key first needs to be decrypted using the main key, before it can itself be used to de/encrypt the file contents:<br />
<br />
╭┈┈┈┈┈┈┈┈┈┈┈┈╮<br />
┊ master key ┊<br />
''file on disk:'' ╰┈┈┈┈┈┬┈┈┈┈┈┈╯<br />
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │<br />
╎╭───────────────────╮╎ ▼ ╭┈┈┈┈┈┈┈┈┈┈╮<br />
╎│ encrypted file key│━━━━(decryption)━━━▶┊ file key ┊<br />
╎╰───────────────────╯╎ ╰┈┈┈┈┬┈┈┈┈┈╯<br />
╎┌───────────────────┐╎ ▼ ┌┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┐<br />
╎│ encrypted file │◀━━━━━━━━━━━━━━━━━(de/encryption)━━━▶┊ readable file ┊<br />
╎│ contents │╎ ┊ contents ┊<br />
╎└───────────────────┘╎ └┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┘<br />
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘<br />
<br />
In a similar manner, a separate key (e.g. one per folder) may be used for the encryption of file names in the case of stacked filesystem encryption.<br />
<br />
In the case of block device encryption, ...<br />
{{Expansion|}}<br />
<br />
''Further reading:''<br />
* [[Wikipedia:Passphrase]]<br />
* [[Wikipedia:Key_(cryptography)]]<br />
* [[Wikipedia:Key_management]]<br />
* [[Wikipedia:Key_derivation_function]]<br />
<br />
===Ciphers and modes of operation===<br />
<br />
The actual algorithm used for translating between pieces of unencrypted and encrypted data (so-called "plaintext" and "ciphertext") which correspond to each other with respect to a given encryption key, is called a "'''cipher'''".<br />
<br />
Disk encryption employs "block ciphers", which operate on fixed-length blocks of data, e.g. 16 bytes (128 bits). At the time of this writing, the predominantly used ones are:<br />
{| class="wikitable" style="margin:0 5em 1.5em 5em;"<br />
! scope="col" style="text-align:left" | <br />
! scope="col" style="text-align:left" | block&nbsp;size<br />
! scope="col" style="text-align:left" | key&nbsp;size<br />
! scope="col" style="text-align:left" | comment<br />
|-<br />
! scope="row" style="text-align:right" | [[Wikipedia:Advanced_Encryption_Standard|AES]]<br />
| 128 bits<br />
| 128, 192 or 256 bits<br />
| ''approved by the NSA for protecting "SECRET" and "TOP SECRET" classified US-government information (when used with a key size of 192 or 256 bits)''<br />
|-<br />
! scope="row" style="text-align:right" | [[Wikipedia:Blowfish_%28cipher%29|Blowfish]]<br />
| 64 bits<br />
| 32–448 bits<br />
| ''one of the first patent-free secure ciphers that became publicly available, hence very well established on Linux''<br />
|-<br />
! scope="row" style="text-align:right" | [[Wikipedia:Twofish|Twofish]]<br />
| 128 bits<br />
| 128, 192 or 256 bits<br />
| ''developed as successor of Blowfish, but has not attained as much widespread usage''<br />
|}<br />
<br />
Encrypting/decrypting a sector ([[#Basic principle|see above]]) is achieved by dividing it into small blocks matching the cipher's block-size, and following a certain rule-set (a so-called "'''mode of operation'''") for how to consecutively apply the cipher to the individual blocks.<br />
<br />
Simply applying it to each block separately without modification (dubbed the "''electronic codebook (ECB)''" mode) would not be secure, because if the same 16 bytes of plaintext always produce the same 16 bytes of ciphertext, an attacker could easily recognize patterns in the ciphertext that is stored on disk.<br />
<br />
The most basic (and common) mode of operation used in practice is "''cipher-block chaining (CBC)''". When encrypting a sector with this mode, each block of plaintext data is combined in a mathematical way with the ciphertext of the previous block, before encrypting it using the cipher. For the first block, since it has no previous ciphertext to use, a special pre-generated data block stored with the sector's cryptographic metadata and called an "'''initialization vector (IV)'''" is used:<br />
<br />
╭──────────────╮<br />
│initialization│<br />
│vector │<br />
╰────────┬─────╯<br />
╭ ╠══════════╣ ╭─key │ ┣┉┉┉┉┉┉┉┉┉┉┫ <br />
│ ║ ║ ▼ ▼ ┋ ┋ . START<br />
┴ ║"????????"║◀━━━━(cipher)━━━━(+)━━━━━┋"Hello, W"┋ block ╱╰────┐<br />
sector n ║ ║ ┋ ┋ 1 ╲╭────┘<br />
of file or ║ ║──────────────────╮ ┋ ┋ ' <br />
blockdevice ╟──────────╢ ╭─key │ ┠┈┈┈┈┈┈┈┈┈┈┨<br />
┬ ║ ║ ▼ ▼ ┋ ┋<br />
│ ║"????????"║◀━━━━(cipher)━━━━(+)━━━━━┋"orld !!!"┋ block<br />
│ ║ ║ ┋ ┋ 2<br />
│ ║ ║──────────────────╮ ┋ ┋<br />
│ ╟──────────╢ │ ┠┈┈┈┈┈┈┈┈┈┈┨<br />
│ ║ ║ ▼ ┋ ┋<br />
⁝ ⁝ ... ⁝ ... ... ⁝ ... ⁝ ...<br />
<br />
ciphertext plaintext<br />
on disk in memory<br />
<br />
When decrypting, the procedure is reversed analogously.<br />
<br />
One thing worth noting is the generation of the unique initialization vector for each sector. The simplest choice is to calculate it in a predictable fashion from a readily available value such as the sector number. However, this might allow an attacker with repeated access to the system to perform a so-called [http://en.wikipedia.org/wiki/Watermarking_attack watermarking attack]. To prevent that, a method called "Encrypted salt-sector initialization vector ('''ESSIV''')" can be used to generate the initialization vectors in a way that makes them look completely random to a potential attacker.<br />
<br />
There are also a number of other, more complicated modes of operation available for disk encryption, which already provide built-in security agains such attacks.<br />
Some can also additionally guarantee authenticity ([[#Data integrity/authenticity|see below]]) of the encrypted data.<br />
<br />
''Further reading:''<br />
* [[Wikipedia:Disk_encryption_theory]]<br />
* [[Wikipedia:Block_cipher]]<br />
* [[Wikipedia:Block_cipher_modes_of_operation]]<br />
<br />
===Cryptographic metadata===<br />
<br />
{{Expansion|}}<br />
<br />
===Data integrity/authenticity===<br />
<br />
{{Expansion|}}<br />
<br />
''Further reading:''<br />
* [[Wikipedia:Authenticated_encryption]]<br />
<br />
===Plausible deniability===<br />
<br />
{{Expansion|}}<br />
<br />
==Notes & References==<br />
<small><br />
# [[#summary|^]] see http://www.truecrypt.org/legal/license<br />
# [[#practical_implications|^]] well, a single file in those filesystems could be used as a container (virtual loop-back device!) but then one wouldn't actually be using the filesystem (and the features it provides) anymore<br />
# [[#compatibility_.26_prevalence|^]] [http://www.scherrer.cc/crypt CrossCrypt] - Open Source AES and TwoFish Linux compatible on the fly encryption for Windows XP and Windows 2000<br />
# [[#compatibility_.26_prevalence|^]] [http://www.freeotfe.org FreeOTFE] - supports Windows 2000 and later (for PC), and Windows Mobile 2003 and later (for PDA)<br />
# [[#compatibility_.26_prevalence|^]] see [http://www.arg0.net/encfs-mac-build EncFs build instructions for Mac]<br />
# [[#compatibility_.26_prevalence|^]] see http://www.freshports.org/sysutils/fusefs-encfs/<br />
# [[#compatibility_.26_prevalence|^]] see http://www.chromium.org/chromium-os/chromiumos-design-docs/protecting-cached-user-data<br />
# [[#compatibility_.26_prevalence|^]] http://kernelnewbies.org/Linux_2_6_38#head-49f5f735853f8cc7c4d89e5c266fe07316b49f4c<br />
</small></div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Rvm&diff=187106Rvm2012-03-01T23:15:23Z<p>AndreasBWagner: Redirected page to RVM</p>
<hr />
<div>#REDIRECT [[RVM]]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=AUR_helpers/Graphical&diff=181740AUR helpers/Graphical2012-02-02T23:33:51Z<p>AndreasBWagner: /* pkgnotify.sh */</p>
<hr />
<div>[[Category:Arch User Repository (English)]]<br />
[[Category:Package management (English)]]<br />
{{i18n|Pacman GUI Frontends}}<br />
<br />
This is a list of frontends for the [[pacman]] CLI tool. The list includes full featured GUI frontends, informational tools, and a variety of system tray notifiers. The list also includes categories for Gtk2 based and Qt based software.<br />
<br />
{{Warning|None of these tools are officially supported by Arch Linux/Pacman developers.}}<br />
<br />
== Pacman Frontends ==<br />
=== X11 ===<br />
====PacmanXG====<br />
PacmanXG is a GUI front-end for pacman. Not depends either GTK nor Qt. Just X. This graphical tool allows to do the following:<br />
* Install/remove/upgrade packages<br />
* Search packages / filter packages<br />
* Retrieve package info include screenshots<br />
* Downgrade packages (need downgrade utility from AUR)<br />
* Refresh package database, synchronize mirrors.<br />
* Update system in one click<br />
* YAOURT support (in testing)<br />
<br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=52039 <br><br />
'''Screenshots''' http://almin-soft.nx0.ru/photo-cat-photo-cat-pacmanxg.html <br><br />
'''Direct link to binary:''' http://almin-soft.nx0.ru/media/files/binaries/download.php?get=pacmanXG.tar.bz2<br />
<br />
=== GNOME/GTK+ ===<br />
====Wakka====<br />
Wakka is a gtk based package manager for Arch Linux, derived from the work done on GtkPacman. The goal is to clean up the code and rework the program to be stable and extensible.<br />
<br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=47037 <br><br />
'''Project:''' http://code.google.com/p/wakka-package-manager/<br />
<br />
====GNOME PackageKit====<br />
GNOME PackageKit is a distribution-agnostic collection of utilities for managing packages. Using the alpm backend, it supports the following features:<br />
<br />
*Install and remove packages from the repos.<br />
*Periodically refresh package databases and prompt for updates.<br />
*Install packages from tarballs.<br />
*Search for packages by name, description, category or file.<br />
*Show package dependencies, files and reverse dependencies.<br />
*Ignore IgnorePkgs and hold HoldPkgs.<br />
*Report optional dependencies, .pacnew files, etc.<br />
<br />
You can change the remove operation from -Rc to -Rsc by setting the DConf key org.gnome.packagekit.enable-autoremove.<br />
<br />
Packages:<br />
pacman -S gnome-packagekit gnome-settings-daemon-updates<br />
<br />
If you do not wish to install PulseAudio, you can install {{Package AUR|gnome-settings-daemon-nopulse}} from the AUR.<br />
<br />
=== KDE/Qt ===<br />
====KPackageKit/Apper====<br />
KPackageKit or Apper as it is now called is a GUI front-end for [http://www.packagekit.org/ PackageKit]. Pacman integration is accomplished via the {{Package Official|packagekit}} package in [community] which gained upstream support for pacman. This graphical tool allows to do the following from KDE's systemsettings:<br />
* Install/remove/upgrade packages<br />
* Search packages / filter packages<br />
* Retrieve package info<br />
* Refresh package database<br />
* Choose which repositories will be updated<br />
* Automatically refresh database (Hourly, daily etc.)<br />
* Automatically update packages<br />
<br />
While pacman support in PackageKit is relatively new, it works with no major problems, providing ease of use, simplicity, and good integration with KDE (and PolicyKit).<br />
<br />
'''Homepage:''' http://kde-apps.org/content/show.php/Apper?content=84745 <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=53061 <br><br />
'''Screenshots:''' http://kde-apps.org/content/show.php/Apper?content=84745<br />
<br />
====AppSet====<br />
AppSet is an advanced and feature rich GUI front-end for Package Managers. AppSet has the following features:<br />
* Software sections (games, office, multimedia, internet etc.)<br />
* Shows homepages for selected packages in an embedded web browser<br />
* Shows distributions news with an embedded feed reader<br />
* Upgrades, installs and removes packages<br />
* Shows available upgrades with a Tray Icon<br />
* Updates database periodically<br />
* Informs about dependencies (for example when trying to remove a package needed by others)<br />
* Cache clean command (to free disk space)<br />
* Intelligent launcher that uses what is already installed to get administrative privileges (by searching for kdesu, gksu or at last for an xterm where it starts with a sudo command)<br />
* Now with AUR support with Packer as backend<br />
<br />
AppSet needs only QT libs as dependence for installation. It can be used in any desktop environment. Currently only works for Archlinux using pacman.<br />
<br />
'''Homepage:''' http://appset.sourceforge.net/ <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=43869 <br><br />
'''Screenshots''' http://sourceforge.net/project/screenshots.php?group_id=376825<br />
<br />
=== NCurses ===<br />
====pcurses====<br />
Package management in a curses frontend, including:<br />
<br />
* regexp filtering and searching any package property<br />
* customizable colorcoding<br />
* customizable sorting<br />
* external command execution with package list string replacements<br />
* user defined macros and hotkeys<br />
<br />
'''Homepage:''' https://github.com/schuay/pcurses <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=42685 <br><br />
'''Screenshots''' https://bbs.archlinux.org/viewtopic.php?id=122749<br />
<br />
== Pacman / AUR Package Browser ==<br />
===PkgBrowser===<br />
Pkgbrowser is an application for searching and browsing Arch packages, showing details on selected packages.<br />
<br />
*Search and browse Arch packages including the AUR<br />
*Purely an informational application that cannot be used to install, remove or update packages <br />
*By design, is an accessory to CLI package management via pacman<br />
*Further details on use via manual accessed from help menu<br />
<br />
<br />
'''Forum:''' https://bbs.archlinux.org/viewtopic.php?id=117297 <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=48372 <br><br />
'''Screenshot and source code:''' http://code.google.com/p/pkgbrowser/ <br><br />
<br />
===Pacinfo===<br />
Pacinfo is an application to browse the installed packages and show information like screenshot, installed files, installation date and others.<br />
Written in Mono/GTK#<br />
<br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=46065 <br><br />
'''Website:''' http://code.google.com/p/pacinfo/ <br><br />
<br />
== System Tray Notifiers ==<br />
===Aarchup===<br />
aarchup is a fork of archup. Has the same options as archup plus a few other features. For differences between both please check changelog at the topic https://bbs.archlinux.org/viewtopic.php?id=119129<br />
<br />
*Homepage: https://github.com/aericson/aarchup/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=49100<br />
*Screenshots: http://i.imgur.com/yTNvg.png<br />
<br />
===pacman-notifier===<br />
Written in Ruby, uses Gtk. Shows an icon in the system tray and popup notifications (using libnotify) for new packages.<br />
<br />
*Homepage: https://github.com/v01d/pacman-notifier/wiki<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=15193<br />
*Screenshots: https://github.com/v01d/pacman-notifier/wiki<br />
<br />
===Pacupdate===<br />
Pacupdate is a small application that notifies the user about new updates for Arch Linux. If Pacupdate finds out that a update is available, it will display a notification in SystemTray.<br />
<br />
*Homepage (out of date): http://code.google.com/p/pacupdate/ '''Do not''' install packages with 'pacman -Sy foo' as [https://bbs.archlinux.org/viewtopic.php?id=89328 it may lead to breakage].<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=25082<br />
*Screenshots:<br />
<br />
===Yapan===<br />
Yapan - Yet Another Package mAnager Notifier - is written in C++ and Qt. It shows an icon in the system tray and popup notifications for new packages and supports other package manager like clyde or yaourt.<br />
<br />
*Homepage: https://bitbucket.org/otsug/yapan/wiki/Home , https://bbs.archlinux.org/viewtopic.php?id=113078<br />
*AUR Package Details: https://aur.archlinux.org/packages.php?ID=46213<br />
*Screenshots: https://bitbucket.org/otsug/yapan/wiki/Home<br />
<br />
===ZenMan===<br />
PacMan frontend (tray update notifier) for GTK/GNOME/zenity/libnotify.<br />
<br />
*Homepage:<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=25948<br />
*Screenshots: http://show.harvie.cz/screenshots/zenman-screenshot-2.png<br />
<br />
===pkgnotify.sh===<br />
A very simple 14 line shell script that displays the number of available updates in the dzen2 title window and a list of these updates in the slave window. Depends on dzen2, inotify-tools, package-query and optionally an AUR helper (yaourt by default).<br />
<br />
*Homepage: http://pointfree.net/repo/?r=dzen2_scripts;a=headblob;f=/src/pkgnotify/pkgnotify.sh<br />
*AUR Package Details:<br />
*Screenshots: http://andreasbwagner.tumblr.com/post/853471635/arch-linux-update-notifier-for-dzen2<br />
<br />
== Inactive Software Packages ==<br />
*[http://gtkpacman.berlios.de/ GtkPacman]<br />
*[http://guzuta.berlios.de/ Guzuta]<br />
*[http://chakra-project.org/wiki/index.php/Shaman Shaman]<br />
*[http://code.google.com/p/pacmon/ pacmon]<br />
*[https://gna.org/projects/paku/ Paku]<br />
*[http://www.kde-apps.org/content/show.php/YAPG+-+Yet+Another+Pacman+Gui+?content=60052 YAPG]<br />
*[http://sourceforge.net/projects/zenitypacgui/ zenity_pacgui]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Jumanji&diff=170677Jumanji2011-11-20T14:28:47Z<p>AndreasBWagner: /* Tabs */ other default next tab, prev tab bindings</p>
<hr />
<div>[[Category:Web Browser (English)]]<br />
{{i18n|Jumanji}}<br />
<br />
[http://pwmt.org/projects/jumanji/ jumanji] is a web browser that provides a minimalistic and space saving interface as well as an easy usage that mainly focuses on keyboard interaction like vimperator does<br />
<br />
==Installation==<br />
===Method 1: AUR (Recommended)===<br />
[http://aur.archlinux.org/packages.php?ID=38684 jumanji] is available from the [[Arch User Repository]].<br />
<br />
===Method 2: From Source===<br />
Grab the source from git, change the config.h as desired, compile and install as follows: <br />
git clone git://pwmt.org/jumanji.git<br />
cd jumanji<br />
make install<br />
<br />
==Configuration==<br />
===config.h===<br />
To modify config.h:<br />
* get jumanji-git PKGBUILD from AUR<br />
* {{Codeline|makepkg}}<br />
* {{Codeline|git --git-dir src/jumanji/ init}}<br />
* change src/jumanji/config.def.h<br />
* {{Codeline|makepkg -e}}<br />
<br />
===rc file configuration===<br />
jumanji allows for a lot of user configuration either by modifying the config.def.h file or through a rc file located at '''~/.config/jumanji/jumanjirc'''. you can set searchengines, homepages, custom stylesheets, user scripts, proxy. Change the default download directory and much more. A sample configuration file below shows how to customize jumanji.<br />
# jumanji configuration<br />
# search engines<br />
searchengine ggl http://www.google.com/search?q=%s<br />
searchengine wiki http://en.wikipedia.org/w/index.php?search=%s<br />
# browser settings<br />
set homepage http://www.google.com/ig<br />
set auto_save 60<br />
set single_instance false<br />
# Use privoxy for adblocking<br />
set proxy localhost:8118 <br />
# look n feel<br />
set font monospace normal 9<br />
set stylesheet file:///home/inxs/.config/jumanji/style.css <br />
# follow hints<br />
script ~/.config/jumanji/scripts/hinting.js<br />
# downloads<br />
set download_dir ~/downloads/<br />
set download_command urxvt -e sh -c "wget --load-cookies ~/.config/jumanji/cookies '%s' -O '%s'";<br />
# keybindings<br />
map <C-,> nav_history previous<br />
map <C-.> nav_history next<br />
bmap ^DD$ quit<br />
<br />
==Commands==<br />
Below are some basic commands that can be used with jumanji <br />
<br />
===Look and Feel===<br />
C-m = Toggle status bar<br />
C-n = Toggle tab bar<br />
<br />
===Page Navigation===<br />
o = enter url to open in same tab<br />
t = enter url to open in new tab<br />
j = scroll down<br />
k = scroll up<br />
h = scroll left<br />
l = scroll right<br />
C-d = scroll down (half the screen)<br />
C-u = scroll up (half the screen)<br />
space = page down<br />
gg = beginning<br />
G = end<br />
C-o = back<br />
C-i = forward<br />
:stop = stop<br />
r = reload<br />
<br />
===Zooming===<br />
zI = zoom_in<br />
zO = zoom_out<br />
z0 = zoom to original size<br />
<br />
===Searching====<br />
/ = search %s<br />
? = search reverse %s<br />
:open = start a search with your search engine %s (the first one in your jumanjirc is used)<br />
<br />
===Bookmarks and History===<br />
:bmark = insert bookmark (bookmarks are saved in ~/.config/jumanji/bookmarks)<br />
o <tab> = show bookmarks and history to open in same tab<br />
t <tab> = show bookmarks and history to open in new tab<br />
<br />
===Link Following===<br />
f = spawn numbers next to each hyperlink. Type the number after typing f to follow the link in the same tab [http://www.pwmt.org/jumanji/faq/]<br />
F = spawn numbers next to each hyperlink. Type the number after typing F to follow the link in a new tab<br />
gh = Go to homepage in the same tab<br />
gH = open homepage in a new tab<br />
gf, C-s = view source<br />
gF = view source in a new tab<br />
<br />
===Tabs===<br />
gt or C-Tab or S-k = go to next tab<br />
gT or C-S-Tab or S-j = go to previous tab<br />
xgt = go to tab number x, where x is any number 0-9<br />
C-w = close tab<br />
<br />
===Exit===<br />
ZZ = exit<br />
C-q = exit<br />
<br />
==Links==<br />
http://www.pwmt.org/projects/jumanji<br />
<br />
http://bbs.archlinux.org/viewtopic.php?id=100505<br />
<br />
===sources===<br />
[http://www.pwmt.org/projects/jumanji jumanji]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=RVM&diff=169820RVM2011-11-12T22:20:33Z<p>AndreasBWagner: /* Ruby 1.8.x won't compile with RVM */ another fix that worked for me.</p>
<hr />
<div>[[Category:Development (English)]]<br />
[http://rvm.beginrescueend.com/ RVM] (Ruby Version Manager) is a command line tool which allows us to easily install, manage and work with multiple [[Ruby]] environments from interpreters to sets of gems.<br />
<br />
=== Installing RVM ===<br />
<br />
The install process is very easy, and is the very same for any distro, including ArchLinux. You have two choices, one system-wide, another as a user. The first is for production servers, or if your are alone on your machine. You'll need root privileges. The second is the recommended for multiple users on the same machine (like a development test box). If you do not know which to choose, start with a single user installation.<br />
<br />
The upstream instructions for installing RVM should just work. The install script is aware enough to tell you what packages you need to install on Archlinux to make different rubies work. This usually involves gcc and some other stuff needed to compile ruby.<br />
<br />
As an observation, installing RVM with gem is not recommended anymore. This article uses the [http://rvm.beginrescueend.com/rvm/install/ recommended documentation] with minor tweaks to make work on ArchLinux.<br />
<br />
==== Pre-requisites ====<br />
<br />
Before we start, we'll need the following to get the installation process going:<br />
<br />
$ pacman -S git curl<br />
<br />
==== User installation ====<br />
<br />
{{Note|This will install to your home directory only, and won't touch the standard Arch ruby package, which is in /usr.}}<br />
<br />
We will use the script that rvm docs recommends to install. Make sure to run this script as the user for whom you want RVM installed (i.e. your normal user that you use for development).<br />
<br />
$ bash < <( curl -s https://rvm.beginrescueend.com/install/rvm )<br />
<br />
'''If''' instead you want to check the script before running it, do:<br />
<br />
$ curl -L https://rvm.beginrescueend.com/install/rvm > rvm-install<br />
<br />
Inspect the file, then run it with:<br />
<br />
$ bash < ./rvm-install<br />
<br />
After the script has finished, then add the following line to the end of your ~/.bash_profile or ~/.bashrc (or ~/.zprofile or whatever):<br />
<br />
$ <nowiki>[[ -s "$HOME/.rvm/scripts/rvm" ]]</nowiki> && source "$HOME/.rvm/scripts/rvm"<br />
<br />
==== System-wide installation ====<br />
<br />
{{Note|This will install to /usr/local, and won't touch the standard Arch ruby package, which is in /usr.}}<br />
<br />
System-wide installation is a similar procedure to the single user install. However, instead we run the install script as root. Become root, then do:<br />
<br />
# bash < <( curl -L https://rvm.beginrescueend.com/install/rvm )<br />
<br />
After the script has finished, there should be a script called rvm.sh in /etc/profile.d/ that configures the rvm environment. By default, /etc/profile should include it. To setup the rvm environment without logging out, use<br />
<br />
<nowiki>. /etc/profile.d/rvm.sh</nowiki><br />
<br />
To avoid using rvm.sh, you will need to add<br />
<br />
<nowiki>[[ -s '/usr/local/rvm/scripts/rvm' ]] && source '/usr/local/rvm/scripts/rvm'</nowiki><br />
<br />
to the necessary user's ~/.bash_profile or ~/.bashrc (or ~/.zprofile or whatever).<br />
<br />
=== Post installation ===<br />
<br />
After the installation, check everything worked with this command:<br />
<br />
$ type rvm | head -n1<br />
<br />
The response should be:<br />
<br />
$ rvm is a function<br />
<br />
If you receive rvm: not found, you may need to source your .bash_profile (or wherever you put the line above):<br />
<br />
$ . ~/.bash_profile<br />
<br />
Check if the rvm function is working:<br />
<br />
$ rvm notes<br />
<br />
=== Using RVM ===<br />
<br />
The RVM documentation is quite comprehensive and explanatory. However, here are some RVM usage examples to get you started.<br />
<br />
==== Installing an environment ====<br />
<br />
To see what Ruby environments are available to install, run:<br />
<br />
$ rvm list known<br />
<br />
To install one, run:<br />
<br />
$ rvm install <ruby version><br />
<br />
For example, to install Ruby 1.8.7 one would run the following command:<br />
<br />
$ rvm install 1.8.7<br />
<br />
This should download, configure and install Ruby 1.8.7 in the place you installed RVM. For example, if you did a single user install, it will be in ~/.rvm/rubies/1.8.7.<br />
<br />
==== Switching Environment ====<br />
<br />
To switch from one environment, to another simply run:<br />
<br />
$ rvm use <ruby version><br />
<br />
For example to switch to Ruby 1.8.7 one would run the following command:<br />
<br />
$ rvm 1.8.7<br />
<br />
You should get a message telling you the switch worked. It can be confirmed by running:<br />
<br />
$ ruby --version<br />
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]<br />
<br />
Note that this environment will only be used in the current shell. You can open another shell and select a different environment for that one in parallel. Also, the default environment will be the system ruby in /usr. This can be changed using RVM if you wish; for more details consult the RVM documentation.<br />
<br />
==== Listing Ruby Environments ====<br />
<br />
To see all installed Ruby environments, run the following command:<br />
<br />
$ rvm list<br />
<br />
If you've installed a few rubies, this might generate a list like so:<br />
<br />
rvm Rubies<br />
jruby-1.5.0 [ [i386-java] ]<br />
=> ruby-1.8.7-p249 [ i386 ]<br />
ruby-1.9.2-head [ i386 ]<br />
System Ruby<br />
system [ i386 ]<br />
<br />
The ASCII arrow indicates which environment is currently enabled. In this case, it is Ruby 1.8.7. This could be confirmed by running:<br />
<br />
$ ruby --version<br />
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]<br />
<br />
==== RVM update ====<br />
<br />
Simply use:<br />
<br />
$ rvm update<br />
<br />
==== Revert the default ruby to system ruby ====<br />
<br />
If you want to use the system ruby, i.e. the one installed in /usr by the standard Archlinux package, run<br />
<br />
$ rvm use system<br />
<br />
<br />
=== Further Reading ===<br />
<br />
This is just a simple introduction to switching ruby versions with RVM. There is lots more that you can do with it, including managing different set of gems in different environments. For more information, consult the very comprehensive RVM documentation. [https://rvm.beginrescueend.com/rvm/basics/ This page] is a good place to start.<br />
<br />
<br />
=== Troubleshooting ===<br />
<br />
You'll need to take care with rvm installations, since ArchLinux is very well updated, and some earlier ruby's patchlevels do not like it. RVM many times do not choose the latest patchlevel version to install, and you'll need to check manually on the [http://www.ruby-lang.org/en/news/ ruby website], and force RVM to install it.<br />
<br />
==== "data definition has no type or storage class" ====<br />
<br />
This appears to be specific to 1.8.7, but if you get this error while compiling the following steps will fix your problem:<br />
<br />
$ cd src/ruby-1.8.7-p334/ext/dl<br />
$ rm callback.func<br />
$ touch callback.func<br />
$ ruby mkcallback.rb >> callback.func<br />
$ rm cbtable.func<br />
$ touch cbtable.func<br />
$ ruby mkcbtable.rb >> cbtable.func<br />
<br />
Naturally, substitute the actual build path to your source, which will be something like ~/.rvm/src/.<br />
<br />
==== Ruby 1.8.x won't compile with RVM ====<br />
<br />
This is a known issue on Arch Linux, and is caused by a problem with openssl. Arch uses openssl 1.0, lower patchlevels of 1.8.7 assumes 0.9. <br />
<br />
You can use newer patchlevels, like p299 '''or newer''' with:<br />
<br />
$ rvm remove 1.8.7<br />
$ rvm install 1.8.7-p299<br />
<br />
Another approach is to install local openssl via RVM:<br />
<br />
$ rvm pkg install openssl<br />
$ rvm remove 1.8.7<br />
$ rvm install 1.8.7 -C --with-openssl-dir=$HOME/.rvm/usr<br />
<br />
It may be necessary to patch 1.8.7:<br />
<br />
$ wget http://redmine.ruby-lang.org/attachments/download/1931/stdout-rouge-fix.patch<br />
$ rvm remove 1.8.7<br />
$ rvm install --patch Downloads/stdout-rouge-fix.patch ruby-1.8.7-p352<br />
<br />
==== Ruby 1.9.1 won't compile with RVM ====<br />
<br />
Like with 1.8.x, earlier patchlevels do not like the OpenSSL 1.0. Then you can use the very same solution above, by installing openssl locally on RVM.<br />
<br />
$ rvm pkg install openssl<br />
$ rvm remove 1.9.1<br />
$ rvm install 1.9.1 -C --with-openssl-dir=$HOME/./rvm/usr<br />
<br />
The patchlevels >p378 have a problem with gem paths, when $GEM_HOME is set. The problem is known and fixed in 1.9.2. (http://redmine.ruby-lang.org/issues/3584). If you really need 1.9.1 please use p378.<br />
<br />
$ rvm install 1.9.1-p378 -C --with-openssl-dir=$HOME/./rvm/usr</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=TeX_Live&diff=158607TeX Live2011-09-08T19:41:05Z<p>AndreasBWagner: /* Installing .sty using PKGBUILDs */ fixed typo</p>
<hr />
<div>[[Category:TeX (English)]]<br />
{{i18n|TeXLive|TeX Live}}<br />
<br />
From [http://www.tug.org/texlive/ TeX Live - TeX Users Group]:<br />
<br />
:''TeX Live is an easy way to get up and running with the [[:Category:TeX (English)|TeX]] document production system. It provides a comprehensive TeX system with binaries for most flavors of Unix, including GNU/Linux, and also Windows. It includes all the major TeX-related programs, macro packages, and fonts that are free software, including support for many languages around the world.''<br />
<br />
See [[:Category:TeX (English)]] for more information.<br />
<br />
Since September 12, 2008, TeX Live packages have been available in [extra] for both architectures, hence replacing the obsolete [http://www.tug.org/tetex/ teTeX]. Packages for the 2009 release of TeX Live have been available since early September 2009 (thus before the official upstream release). By installing the packages {{Package Official|texlive-core}} and its dependency {{Package Official|texlive-bin}}, you will have a very solid and bleeding-edge typesetting system at your disposal!<br />
<br />
== Important information ==<br />
<br />
* The way to handle font mappings for updmap has been improved in Sept. 2009, and installation should now be much more reliable than in the past. In the meanwhile, if you encounter error messages about unavailable map file, simply remove them by hand from the {{Filename|updmap.cfg}} file (ideally using {{Codeline|updmap-sys --edit}}). You can also run {{Codeline|updmap-sys --syncwithtrees}} to automatically comment out outdated map lines from the config file.<br />
<br />
* The ConTeXt formats (for MKII and MKIV) are not automatically generated upon installation. See [http://wiki.contextgarden.net '''the ConTeXT wiki'''] for instructions on how to do this.<br />
<br />
* The packages containing the documentation and sources are available in the [community] repository. You can also consult it online at http://tug.org/texlive/Contents/live/doc.html or on CTAN. <br />
<br />
* TeX Live (upstream) now provides a tool for incremental updates of CTAN packages. On that basis, we also plan to update our packages on a regular basis (we have written tools that almost automate that task).<br />
<br />
* Some tools and utilities included in TeX Live rely on {{Package Official|ghostscript}}, {{Package Official|perl}}, and {{Package Official|ruby}}. <br />
<br />
* For help and information about TeX Live see: http://tug.org/texlive/doc.html and http://tug.org/texlive/doc/texlive-en/texlive-en.html<br />
<br />
* System-wide configuration files are under {{Filename|/usr/share/texmf-config}}. User-specific ones should be put under {{Filename|~/.texlive/texmf-config}}. {{Codeline|$TEXMFHOME}} is {{Filename|~/texmf}} and {{Codeline|$TEXMFVAR}} is {{Filename|~/.texlive/texmf-var}}.<br />
<br />
* A skeleton of a local texmf tree is at {{Filename|/usr/local/share/texmf}}: this directory is writable for members of the group '''tex'''.<br />
<br />
===Paper Size===<br />
American users are advised to run<br />
texconfig<br />
in order to set the default page size to "Letter", as opposed to A4, the current default. This command is also capable of changing other useful settings. Not changing this setting can result in slightly flawed output, as the right margin will be bigger than the left.<br />
<br />
===Error with "formats not generated" upon update===<br />
<br />
See [http://bugs.archlinux.org/task/16467 this bug report]. ('''Note that if you don't use the experimental engine ''LuaTeX'', you can ignore this.''') This situation typically occurs when the configuration files {{Filename|language.def}} and/or {{Filename|language.dat}} for hyphenation patterns contain references to files from earlier releases of {{Codeline|texlive-core}}, in particular to the latest experimental hyphenation patterns for German, whose file name changes frequently. Currently they should point to {{Filename|dehyph{n,t}-x-2009-06-19.tex}}. <br />
<br />
To solve this, you need to either remove these files: {{Filename|/usr/share/texmf-config/tex/generic/config/language.<nowiki>{def,dat}</nowiki>}}<br />
or update them using the newest version under: {{Filename|/usr/share/texmf/tex/generic/config/language.<nowiki>{def,dat}</nowiki>}}<br />
and then run<br />
# fmtutil-sys --missing<br />
<br />
===Fonts===<br />
<br />
By default, the fonts that come with the various TeX Live packages are not automatically available to fontconfig. If you want to use them with, say XeTeX or OpenOffice, the easiest approach is to make symlinks as follows:<br />
ln -s /usr/share/texmf-dist/fonts/opentype/public/<some_fonts_you_want> ~/.fonts/OTF/ (or TTF or Type1) <br />
To make them available to fontconfig, run: <br />
fc-cache ~/.fonts<br />
mkfontscale ~/.fonts/OTF (or TTF or Type1) <br />
mkfontdir ~/.fonts/OTF (or TTF or Type1)<br />
Alternatively, you can also add a file {{Filename|/etc/fonts/texlive.conf}} that contains a list of the font directories you want to make available system-wide, with a content similar to this:<br />
<?xml version="1.0"?><br />
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br />
<fontconfig><br />
<dir>/usr/share/texmf-dist/fonts/opentype</dir><br />
<dir>/usr/share/texmf-dist/fonts/truetype</dir><br />
<dir>/usr/local/share/texmf/fonts/opentype</dir><br />
<dir>/usr/local/share/texmf/fonts/truetype</dir><br />
</fontconfig><br />
<br />
{{Note|This may cause conflicts with XeTeX/XeLaTeX if the same fonts are (separately) available to both TeX and fontconfig, i.e. if multiple copies of the same font are available on the search path.}}<br />
<br />
== List of all texlive-* packages ==<br />
<br />
The texlive packages are arranged into two groups: '''texlive-most''' and '''texlive-lang''' <br />
(NB: the groups '''texlive-most-doc''' and '''texlive-lang-doc''' are provided in [http://www.archlinux.org/packages/?sort=&arch=&repo=Community&q=texlive community]). <br />
<br />
The essential package '''texlive-core''' contains the basic texmf-dist tree, while '''texlive-bin''' contains the binaries, libraries, and the texmf tree. '''texlive-core''' is based on the “medium” install scheme of the upstream distribution. All other packages are based on the eponymous collections in TeXLive. To determine which CTAN packages are included in each package, lookup the files <br />
/usr/share/texmf-var/arch/installedpkgs/<package>_<revnr>.pkgs<br />
<br />
=== Group texlive-most ===<br />
* texlive-bin <br />
* texlive-core <br />
* texlive-bibtexextra <br />
* texlive-fontsextra <br />
* texlive-formatsextra <br />
* texlive-games <br />
* texlive-genericextra <br />
* texlive-htmlxml <br />
* texlive-humanities <br />
* texlive-latex3 <br />
* texlive-latexextra <br />
* texlive-music <br />
* texlive-pictures <br />
* texlive-plainextra <br />
* texlive-pstricks <br />
* texlive-publishers <br />
* texlive-science<br />
<br />
=== Group texlive-lang ===<br />
* texlive-langcjk <br />
* texlive-langcyrillic<br />
* texlive-langgreek <br />
* texlive-langextra<br />
<br />
NB: The latter replaces and provides texlive-lang{african, arab, armenian, croatian, hebrew, indic, mongolian, tibetan, vietnamese}.<br />
<br />
== TeXLive Local Manager ==<br />
<br />
There is now a new utility provided by Firmicus which allows to conveniently manage a TeXLive installation on Arch Linux. <br />
See http://aur.archlinux.org/packages.php?ID=23776 in AUR.<br />
<br />
'''NB: The tool is not yet updated for the 2010 packages in testing.''' <br />
<br />
Usage: tllocalmgr <br />
tllocalmgr [options] [command] [args]<br />
<br />
Running tllocalmgr alone starts the TeXLive local manager shell <br />
for Arch Linux. This shell is capable of command-line completion!<br />
There you can look at the available updates with the command 'status' <br />
and you can install individual CTAN packages using 'install' or 'update'<br />
under $TEXMFLOCAL. This is done by creating a package texlive-local-<pkg><br />
and installing it with pacman. Note that this won’t interfere with your <br />
standard texlive installation, but files under $TEXMFLOCAL will take<br />
precedence. <br />
<br />
Here are the commands available in the shell:<br />
<br />
Commands: <br />
status -- Current status of TeXLive installation<br />
shortinfo * -- Print a one-liner description of CTAN packages<br />
info * -- Print info on CTAN packages<br />
update * -- Locally update CTAN packages<br />
install * -- Locally install new CTAN packages<br />
installdoc * -- Locally install documentation of CTAN packages<br />
installsrc * -- Locally install sources of CTAN packages<br />
listfiles * -- List all files in CTAN packages<br />
search * -- Search info on CTAN packages<br />
searchfiles * -- Search for files in CTAN packages<br />
texhash -- Refresh the TeX file database<br />
clean -- Clean local build tree<br />
help -- Print helpful information<br />
quit -- Quit tllocalmgr<br />
<br />
The commands followed by * take one of more package names as arguments.<br />
Note that these can be completed automatically by pressing TAB.<br />
<br />
You can also run tllocalmgr as a standard command-line program, with<br />
one of the above commands as argument, then the corresponding task will<br />
be performed and the program will exit (except when the command is 'status').<br />
<br />
tllocalmgr accepts the following options:<br />
<br />
Options: --help Shows this help<br />
--version Show the version number<br />
--forceupdate Force updating the TeXLive database<br />
--skipupdate Skip updating the TeXLive database<br />
--localsearch Search only installed packages<br />
--location #TODO?<br />
--mirror CTAN mirror to use (default is mirror.ctan.org)<br />
--nocolor #TODO<br />
<br />
=== Recent "langukenglish" errors ===<br />
For issues involving this error when trying to run {{Codeline|tllocalmgr}} commands,<br />
Can't get object for collection-langukenglish at /usr/bin/tllocalmgr line 103<br />
See ary0's solution at the AUR: http://aur.archlinux.org/packages.php?ID=23776. In summary, edit {{Filename|/usr/share/texmf-var/arch/tlpkg/TeXLive/Arch.pm}} and remove "langukenglish" from the section of the file shown here:<br />
my @core_colls =<br />
qw/ basic context genericrecommended fontsrecommended langczechslovak<br />
langdutch langfrench langgerman langitalian langpolish langportuguese<br />
langspanish **langukenglish** latex latexrecommended luatex mathextra metapost<br />
texinfo xetex /;<br />
<br />
== Manually installing .sty files ==<br />
Normally, new .sty files go in {{Filename|~/texmf/tex/latex/<package name>/*}}. Create this directory if you do not have it. This directory will automatically be searched when *tex is executed. Further discussion can be found at http://bbs.archlinux.org/viewtopic.php?id=85757.<br />
<br />
== Installing .sty using PKGBUILDs ==<br />
To install a latex package on a global level you should use a PKGBUILD for the sake of simplicity and maintenance. Look at this example.<br />
<pre><br />
# Original autor: Martin Kumm <pluto@ls68.de> <br />
# Maintainer: masterkorp <masterkorp@gmail.com> irc: masterkorp at freenode.org<br />
# Last edited: 2nd April 2011<br />
<br />
pkgname=texlive-gantt<br />
pkgver=1.3<br />
pkgrel=1<br />
license=('GPL')<br />
depends=('texlive-core')<br />
pkgdesc="A LaTeX package for drawing gantt plots using pgf/tikz"<br />
url="http://www.martin-kumm.de/tex_gantt_package.php"<br />
arch=('any')<br />
install=texlive-gantt.install<br />
source=(http://www.martin-kumm.de/tex/gantt.sty)<br />
md5sums=('e942191eb0024633155aa3188b4bbc06')<br />
<br />
build()<br />
{<br />
mkdir -p $pkgdir/usr/share/texmf/tex/latex/gantt<br />
cp $srcdir/gantt.sty $pkgdir/usr/share/texmf/tex/latex/gantt<br />
}<br />
</pre><br />
<br />
And the .install file:<br />
<pre><br />
post_install() {<br />
post_remove<br />
echo "The file was installed in:"<br />
kpsewhich gantt.sty<br />
}<br />
<br />
post_upgrade() {<br />
post_install<br />
}<br />
<br />
post_remove() {<br />
echo "Upgrading package database..."<br />
mktexlsr<br />
}<br />
</pre><br />
<br />
From [https://aur.archlinux.org/packages.php?ID=47872 texlive-gantt] aur package<br />
<br />
== Alternative: TeX Live network install ==<br />
Information about making TexLive network install : http://tug.org/texlive/doc/texlive-en/texlive-en.html#x1-140003<br />
<br />
A [https://bbs.archlinux.org/viewtopic.php?id=109427 discussion] of the pros and cons of making the TeX Live network install.<br />
<br />
== See also ==<br />
<br />
For frequently asked qustions about TeX, TeXLive, and how it is packaged on arch, see the [[TeX Live FAQ]]. For basic information on LaTeX see [[LaTeX]]. If you are interested in using CJK (Chinese, Japanese, Korean) characters, see [[TeX Live and CJK]]<br />
<!-- vim: set ft=Wikipedia: --></div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=AUR_helpers/Graphical&diff=154276AUR helpers/Graphical2011-08-30T01:59:40Z<p>AndreasBWagner: /* Yaourt-Dzen Notifier */</p>
<hr />
<div>[[Category:Package management (English)]]<br />
[[Category:Utilities (English)]]<br />
{{i18n|Pacman GUI Frontends}}<br />
<br />
This is a list of Pacman GUI frontends for the pacman CLI tool, a Pacman / AUR Package Browser, and a variety of System Tray Notifiers. The list also includes catagories for Gtk2 based and Qt based software.<br />
{{Warning|None of these tools are officially supported by Arch devs.}}<br />
<br />
= Pacman Frontends =<br />
<br />
== GNOME/GTK+ ==<br />
<br />
===Wakka===<br />
<br />
Wakka is a gtk based package manager for Arch Linux, derived from the work done on GtkPacman. The goal is to clean up the code and rework the program to be stable and extensible.<br />
<br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=47037 <br><br />
'''Project:''' http://code.google.com/p/wakka-package-manager/<br />
<br />
===GNOME PackageKit===<br />
<br />
GNOME PackageKit is a distribution-agnostic collection of utilities for managing packages. Using the pacman-glib backend (still in development), it supports the following features:<br />
<br />
*Install and remove packages from the repos.<br />
*Periodically refresh package databases and prompt for updates.<br />
*Install packages from tarballs.<br />
*Search for packages by name, description, category or file.<br />
*Show package dependencies, files and reverse dependencies.<br />
*Ignore IgnorePkgs and hold HoldPkgs.<br />
*Report optional dependencies, .pacnew files, etc.<br />
<br />
You can change the remove operation from -Rc to -Rsc by setting the GConf key /apps/gnome-packagekit/enable_autoremove.<br />
<br />
Known issues:<br />
*Occasionally the packagekit daemon will hang when install scripts are being processed. If this happens, the packagekitd process should have a child process also named packagekitd, which has another child named sh. It is safe to kill the child packagekitd process provided that the sh process is a zombie. However, the output of the install script will be lost. This problem will be resolved in pacman 3.5.<br />
*Sometimes an error will occur but won't be reported by GNOME PackageKit.<br />
*PackageKit does not find the repositories if the <code>Architecture</code> option is set to <code>auto</code> in <code>/etc/pacman.conf</code>. Change this option to <code>Architecture = i686</code> resp. <code>Architecture = x86_64</code> to fix this.<br />
<br />
Packages:<br />
pacman -S gnome-packagekit gnome-settings-daemon-updates<br />
<br />
If you do not wish to install PulseAudio, you can install {{Package AUR|gnome-settings-daemon-nopulse}} from the AUR.<br />
<br />
== KDE/Qt ==<br />
<br />
===KPackageKit===<br />
KPackageKit is a GUI front-end for pacman. It interfaces pacman through pacman-glib and packagekit-qt. This graphical tool allows to do the following from KDE's systemsettings:<br />
* Install/remove/upgrade packages<br />
* Search packages / filter packages<br />
* Retrieve package info<br />
* Refresh package database<br />
* Choose which repositories will be updated<br />
* Automatically refresh database (Hourly, daily etc.)<br />
* Automatically update packages<br />
<br />
KPackageKit is relatively new as a front-end for pacman, and it works with no major problems, providing ease of use, simplicity and good integration with KDE (and PolicyKit).<br />
<br />
Known Issues:<br />
*See [[#GNOME PackageKit]]<br />
<br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=20413 <br><br />
'''Screenshots''' http://kde-apps.org/content/show.php/KPackageKit?content=84745<br />
<br />
===AppSet===<br />
AppSet is an advanced and feature rich GUI front-end for Package Managers. AppSet has the following features:<br />
* Software sections (games, office, multimedia, internet etc.)<br />
* Shows homepages for selected packages in an embedded web browser<br />
* Shows distributions news with an embedded feed reader<br />
* Upgrades, installs and removes packages<br />
* Shows available upgrades with a Tray Icon<br />
* Updates database periodically<br />
* Informs about dependencies (for example when trying to remove a package needed by others)<br />
* Cache clean command (to free disk space)<br />
* Intelligent launcher that uses what is already installed to get administrative privileges (by searching for kdesu, gksu or at last for an xterm where it starts with a sudo command)<br />
* Now with AUR support with Packer as backend<br />
<br />
AppSet needs only QT libs as dependence for installation. It can be used in any desktop environment. Currently only works for Archlinux using pacman.<br />
<br />
'''Homepage:''' http://appset.sourceforge.net/ <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=43869 <br><br />
'''Screenshots''' http://sourceforge.net/project/screenshots.php?group_id=376825<br />
<br />
== NCurses ==<br />
<br />
===pcurses===<br />
<br />
Package management in a curses frontend, including:<br />
<br />
* regexp filtering and searching any package property<br />
* customizable colorcoding<br />
* customizable sorting<br />
* external command execution with package list string replacements<br />
* user defined macros and hotkeys<br />
<br />
'''Homepage:''' https://github.com/schuay/pcurses <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=42685 <br><br />
'''Screenshots''' https://bbs.archlinux.org/viewtopic.php?id=122749<br />
<br />
= Pacman / AUR Package Browser =<br />
<br />
===PkgBrowser===<br />
<br />
Pkgbrowser is an application for searching and browsing Arch packages, showing details on selected packages.<br />
<br />
*Search and browse Arch packages including the AUR<br />
*Purely an informational application that cannot be used to install, remove or update packages <br />
*By design, is an accessory to CLI package management via pacman<br />
*Further details on use via manual accessed from help menu<br />
<br />
<br />
'''Forum:''' https://bbs.archlinux.org/viewtopic.php?id=117297 <br><br />
'''AUR Package:''' https://aur.archlinux.org/packages.php?ID=48372 <br><br />
'''Screenshot and source code:''' http://code.google.com/p/pkgbrowser/ <br><br />
<br />
= System Tray Notifiers =<br />
<br />
===Archup===<br />
<br />
archup is a small C application which informs the user when system-updates for Archlinux are available. Archup uses GTk+ and libnotify to show a desktop notification if updates are available.<br />
<br />
*Homepage: [[archup]], http://www.nongnu.org/archup/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=35792<br />
*Screenshots: http://www.nongnu.org/archup/, http://developer.berlios.de/dbimage.php?id=4687 , http://developer.berlios.de/dbimage.php?id=4688<br />
<br />
===Aarchup===<br />
<br />
aarchup is a fork of archup. Has the same options as archup plus a few other features. For differences between both please check changelog at the topic https://bbs.archlinux.org/viewtopic.php?id=119129<br />
<br />
*Homepage: https://github.com/aericson/aarchup/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=49100<br />
*Screenshots: http://i.imgur.com/yTNvg.png<br />
<br />
===pacman-notifier===<br />
<br />
Written in Ruby, uses Gtk. Shows an icon in the system tray and popup notifications (using libnotify) for new packages.<br />
<br />
*Homepage: https://github.com/v01d/pacman-notifier/wiki<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=15193<br />
*Screenshots: https://github.com/v01d/pacman-notifier/wiki<br />
<br />
===Pacupdate===<br />
<br />
Pacupdate is a small application that notifies the user about new updates for Arch Linux. If Pacupdate finds out that a update is available, it will display a notification in SystemTray.<br />
<br />
*Homepage: http://code.google.com/p/pacupdate/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=25082<br />
*Screenshots: <br />
<br />
===Yapan===<br />
<br />
Yapan - Yet Another Package mAnager Notifier - is written in C++ and Qt. It shows an icon in the system tray and popup notifications for new packages and supports other package manager like clyde or yaourt.<br />
<br />
*Homepage: https://bitbucket.org/otsug/yapan/wiki/Home , https://bbs.archlinux.org/viewtopic.php?id=113078<br />
*AUR Package Details: https://aur.archlinux.org/packages.php?ID=46213<br />
*Screenshots: https://bitbucket.org/otsug/yapan/wiki/Home<br />
<br />
===ZenMan===<br />
<br />
PacMan frontend (tray update notifier) for GTK/GNOME/zenity/libnotify.<br />
<br />
*Homepage:<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=25948<br />
*Screenshots: http://show.harvie.cz/screenshots/zenman-screenshot-2.png<br />
<br />
===pkgnotify.sh===<br />
<br />
A very simple 14 line shell script that displays the number of available updates in the dzen2 title window and a list of these updates in the slave window. Depends on yaourt, dzen2 and inotify-tools.<br />
<br />
*Homepage: http://pointfree.net/repo/?r=dzen2_scripts;a=headblob;f=/src/pkgnotify/pkgnotify.sh<br />
*AUR Package Details:<br />
*Screenshots: http://andreasbwagner.tumblr.com/post/853471635/arch-linux-update-notifier-for-dzen2<br />
<br />
= Inactive Software Packages =<br />
*[http://gtkpacman.berlios.de/ GtkPacman]<br />
*[http://guzuta.berlios.de/ Guzuta]<br />
*[http://chakra-project.org/wiki/index.php/Shaman Shaman]<br />
*[https://opensvn.csie.org/PacmanManager/ PacmanManager]<br />
*[http://code.google.com/p/pacmon/ pacmon]<br />
*[https://gna.org/projects/paku/ Paku]<br />
*[http://www.kde-apps.org/content/show.php/YAPG+-+Yet+Another+Pacman+Gui+?content=60052 YAPG]<br />
*[http://sourceforge.net/projects/zenitypacgui/ zenity_pacgui]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Jumanji&diff=154265Jumanji2011-08-30T01:52:00Z<p>AndreasBWagner: /* Method 1: AUR (Recommended) */</p>
<hr />
<div>[[Category:Web Browser (English)]]<br />
<br />
==Overview==<br />
<br />
jumanji is a web browser that provides a minimalistic and space saving interface as well as an easy usage that mainly focuses on keyboard interaction like vimperator does<br />
<br />
===Installation===<br />
====Method 1: AUR (Recommended)====<br />
[http://aur.archlinux.org/packages.php?ID=38684 jumanji] is available from the Arch User Repository.<br />
<br />
====Method 2: From Source====<br />
Grab the source from git, change the config.h as desired, compile and install as follows: <br />
git clone git://pwmt.org/jumanji.git<br />
cd jumanji<br />
make install<br />
<br />
===Configuration===<br />
====config.h====<br />
To modify config.h:<br />
* get jumanji-git PKGBUILD from AUR<br />
* {{Codeline|makepkg}}<br />
* {{Codeline|git --git-dir src/jumanji/ init}}<br />
* change src/jumanji/config.def.h<br />
* {{Codeline|makepkg -e}}<br />
<br />
====rc file configuration====<br />
jumanji allows for a lot of user configuration either by modifying the config.def.h file or through a rc file located at '''~/.config/jumanji/jumanjirc'''. you can set searchengines, homepages, custom stylesheets, user scripts, proxy. Change the default download directory and much more. A sample configuration file below shows how to customize jumanji.<br />
# jumanji configuration<br />
# search engines<br />
searchengine ggl http://www.google.com/search?q=%s<br />
searchengine wiki http://en.wikipedia.org/w/index.php?search=%s<br />
# browser settings<br />
set homepage http://www.google.com/ig<br />
set auto_save 60<br />
set single_instance false<br />
# Use privoxy for adblocking<br />
set proxy localhost:8118 <br />
# look n feel<br />
set font monospace normal 9<br />
set stylesheet file:///home/inxs/.config/jumanji/style.css <br />
# follow hints<br />
script ~/.config/jumanji/scripts/hinting.js<br />
# downloads<br />
set download_dir ~/downloads/<br />
set download_command urxvt -e sh -c "wget --load-cookies ~/.config/jumanji/cookies '%s' -O '%s'";<br />
# keybindings<br />
map <C-,> nav_history previous<br />
map <C-.> nav_history next<br />
bmap ^DD$ quit<br />
<br />
===Commands===<br />
Below are some basic commands that can be used with jumanji <br />
<br />
====Look and Feel====<br />
C-m = Toggle status bar<br />
C-n = Toggle tab bar<br />
<br />
====Page Navigation====<br />
o = enter url to open in same tab<br />
t = enter url to open in new tab<br />
j = scroll down<br />
k = scroll up<br />
h = scroll left<br />
l = scroll right<br />
C-d = scroll down (half the screen)<br />
C-u = scroll up (half the screen)<br />
space = page down<br />
gg = beginning<br />
G = end<br />
C-o = back<br />
C-i = forward<br />
:stop = stop<br />
r = reload<br />
<br />
====Zooming====<br />
zI = zoom_in<br />
zO = zoom_out<br />
z0 = zoom to original size<br />
<br />
====Searching====<br />
/ = search %s<br />
? = search reverse %s<br />
:open = start a search with your search engine %s (the first one in your jumanjirc is used)<br />
<br />
====Bookmarks and History====<br />
:bmark = insert bookmark (bookmarks are saved in ~/.config/jumanji/bookmarks)<br />
o <tab> = show bookmarks and history to open in same tab<br />
t <tab> = show bookmarks and history to open in new tab<br />
<br />
====Link Following====<br />
f = spawn numbers next to each hyperlink. Type the number after typing f to follow the link in the same tab [http://www.pwmt.org/jumanji/faq/]<br />
F = spawn numbers next to each hyperlink. Type the number after typing F to follow the link in a new tab<br />
gh = Go to homepage in the same tab<br />
gH = open homepage in a new tab<br />
gf, C-s = view source<br />
gF = view source in a new tab<br />
<br />
====Tabs====<br />
gt or C-Tab = go to next tab<br />
gT or C-S-Tab = go to previous tab<br />
xgt = go to tab number x, where x is any number 0-9<br />
C-w = close tab<br />
<br />
====Exit====<br />
ZZ = exit<br />
C-q = exit<br />
<br />
===Links===<br />
http://www.pwmt.org/projects/jumanji<br />
<br />
http://bbs.archlinux.org/viewtopic.php?id=100505<br />
<br />
====sources====<br />
[http://www.pwmt.org/projects/jumanji jumanji]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Talk:Dzen&diff=143194Talk:Dzen2011-05-30T15:54:21Z<p>AndreasBWagner: aggregate dzen scripts</p>
<hr />
<div>== aggregate dzen scripts ==<br />
<br />
How about a page of links to all dzen2 scripts of use to Arch users with brief descriptions? Right now a few are on rob's apparently private wiki and the rest are scattered over forum posts --[[User:AndreasBWagner|AndreasBWagner]] 11:54, 30 May 2011 (EDT)</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=QEMU&diff=141037QEMU2011-05-10T21:40:34Z<p>AndreasBWagner: /* Alternative method */ grammar</p>
<hr />
<div>[[Category:Emulators (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[fr:Qemu]]<br />
{{i18n|QEMU}}<br />
<br />
From the [http://wiki.qemu.org/Main_Page QEMU about page],<br />
<blockquote><br />
QEMU is a generic and open source machine emulator and virtualizer.<br />
<br /><br /><br />
When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performances.<br />
<br /><br /><br />
When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. A host driver called the QEMU accelerator (also known as KQEMU) is needed in this case. QEMU supports virtualization when executing under the Xen hypervisor or using the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, server and embedded PowerPC, and S390 guests. The virtualizer mode requires that both the host and guest machine use x86 compatible processors.<br />
<br /><br />
</blockquote><br />
<br />
=== Difference between qemu and qemu-kvm ===<br />
<br />
Depending on your needs, you can choose either to install upstream qemu or qemu-kvm from the [extra] repository. Upstream qemu is a pure emulator, with no hardware acceleration (actually, it does have initial KVM support when qemu is started with -enable-kvm parameter, but this implementation is still buggy and nowhere as complete as in qemu-kvm, many functions still doesn't work). Upstream qemu is capable of emulating many different platforms (arm, i386, m68k, mips, ppc, sparc, x86_64, etc). On the other hand you have qemu-kvm, which is qemu (i386 and x86_64 architecture support only) with KVM (kernel virtual machine) additions, allowing you to run virtual machines at close to native speed. qemu-kvm is the version you want if you have a capable CPU and only need to run virtual machines for the i386 and x86_64 architecture (Linux, Windows, BSD, etc).<br />
<br />
Not all processor supports kvm. You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list ] of compatible processors. For Intel processors, see also the [http://ark.intel.com/VTList.aspx Intel® Virtualization Technology List].<br />
<br />
=== Installing QEMU ===<br />
<br />
To install the machine emulator version:<br />
<pre><br />
$ sudo pacman -S qemu<br />
</pre><br />
To install the KVM version (please see the page on [[Kvm]] for more details):<br />
<pre><br />
$ sudo pacman -S qemu-kvm<br />
</pre><br />
<br />
=== Choosing Windows version===<br />
Qemu can run any version of Windows. However, 98, Me and XP will run at quite a low speed. You should choose either Windows 95 or Windows 2000. Surprisingly, 2000 seems to run faster than 98. The fastest one is 95, which can from time to time make you forget that you are running an emulator :)<br />
<br />
If you own both Win95 and win98/winme, then 98lite (from http://www.litepc.com) might be worth trying. It decouples Internet Explorer from operating system and replaces it with original Windows 95 Explorer. It also enables you to do a minimal Windows installation, without all the bloat you normally cannot disable. This might be the best option, because you get the smallest, fastest and most stable Windows this way.<br />
<br />
=== Creating the hard disk image===<br />
To run qemu you will probably need a hard disk image. This is a file which stores the contents of the emulated hard disk.<br />
<br />
Use the command:<br />
<pre><br />
qemu-img create -f qcow2 win.qcow 4G<br />
</pre><br />
to create the image file named "win.qcow". The "4G" parameter specifies the size of the disk - in this case 4 GB. You can use suffix M for megabytes (for example "256M"). You shouldn't worry too much about the size of the disk - the qcow2 format compresses the image so that the empty space doesn't add up to the size of the file.<br />
<br />
=== Preparing the installation media===<br />
The installation CD-ROM/floppy shouldn't be mounted, because Qemu accesses the media directly. It is a good idea to dump CD-ROM and/or floppy to a file, because it both improves performance and doesn't require you to have direct access to the devices (that is, you can run Qemu as a regular user). For example, if the CD-ROM device node is named "/dev/cdrom", you can dump it to a file with the command:<br />
<pre><br />
dd if=/dev/cdrom of=win98icd.iso<br />
</pre><br />
<br />
Do the same for floppies:<br />
<br />
<pre><br />
dd if=/dev/fd of=win95d1.img<br />
...<br />
</pre><br />
<br />
When you need to replace floppies within qemu, just copy the contents of one floppy over another. For this reason, it is useful to create a special file that will hold the current floppy:<br />
<br />
<pre><br />
touch floppy.img<br />
</pre><br />
<br />
=== Installing the operating system===<br />
<br />
This is the first time you will need to start the emulator.<br />
One thing to keep in mind: when you click inside qemu window, the mouse pointer is grabbed. To release it press Ctrl+Alt.<br />
<br />
If you need to use a bootable floppy, run Qemu with:<br />
<pre><br />
qemu -cdrom [[cdrom''image]] -fda [[floppy''image]] -boot a [[hd_image]]<br />
</pre><br />
or if you are on a x86_64 system (will avoid many problems afterwards):<br />
<pre><br />
qemu-system-x86_64 -cdrom [[cdrom''image]] -fda [[floppy''image]] -boot a [[hd_image]]<br />
</pre><br />
<br />
If your CD-ROM is bootable or you are using iso files, run Qemu with:<br />
<pre><br />
qemu -cdrom [[cdrom''image]] -boot d [[hd''image]]<br />
</pre><br />
or if you are on a x86_64 system (will avoid many problems afterwards):<br />
<pre><br />
qemu-system-x86_64 -cdrom [[cdrom''image]] -boot d [[hd''image]]<br />
</pre><br />
Now partition the virtual hard disk, format the partitions and install the OS.<br />
<br />
A few hints:<br />
# If you are using Windows 95 boot floppy, then choosing SAMSUNG as the type of CD-ROM seems to work<br />
# There are problems when installing Windows 2000. Windows setup will generate a lot of edb*.log files, one after the other containing nothing but blank spaces in C:\WINNT\SECURITY which quickly fill the virtual harddisk. A workaround is to open a Windows command prompt as early as possible during setup (by pressing Shift-F10) which will allow you to remove these log files as they appear by typing :<br />
<pre><br />
del %windir%\security\*.log<br />
</pre><br />
<br />
{{Note| According to the official QEMU website, "Windows 2000 has a bug which gives a disk full problem during its installation. When installing it, use the `-win2k-hack' QEMU option to enable a specific workaround. After Windows 2000 is installed, you no longer need this option (this option slows down the IDE transfers)."}}<br />
<br />
=== Running the system===<br />
<br />
To run the system simply type:<br />
<pre><br />
qemu [hd_image]<br />
</pre><br />
<br />
A good idea is to use overlay images. This way you can create hard disk image once and tell Qemu to store changes in external file.<br />
You get rid of all the instability, because it is so easy to revert to previous system state :)<br />
<br />
To create an overlay image, type:<br />
<pre><br />
qemu-img create -b [[base''image]] -f qcow [[overlay''image]]<br />
</pre>2<br />
Substitute the hard disk image for base_image (in our case win.qcow). After that you can run qemu with:<br />
<pre><br />
qemu [overlay_image]<br />
</pre><br />
or if you are on a x86_64 system:<br />
<pre><br />
qemu-system-x86_64 [overlay_image]<br />
</pre><br />
and the original image will be left untouched. One hitch, the base image cannot be renamed or moved, the overlay remembers the base's full path.<br />
<br />
=== Moving data between host and guest OS===<br />
<br />
If you have servers on your host OS they will be accessible with the ip-address 10.0.2.2 without any further configuration. So you could just FTP or SSH, etc to 10.0.2.2 from windows to share data, or if you would like to use samba:<br />
<br />
==== Samba====<br />
<br />
Qemu supports SAMBA which allows you to mount host directories during the emulation. It seems that there is an incompatibility with SAMBA 3.x. and some versions of qemu. But at least with a current snapshot of qemu it should be working.<br />
<br />
First, you need to have a working samba installation. Then add the following section to your smb.conf:<br />
<pre><br />
[qemu]<br />
comment = Temporary file space<br />
path = /tmp<br />
read only = no<br />
public = yes<br />
</pre><br />
<br />
Now start qemu with:<br />
<pre><br />
qemu [hd_image] -smb qemu<br />
</pre><br />
<br />
Then you should be able to access your host's smb-server with the ip-address 10.0.2.2. If you're running Win9x as guest OS, you may need to add<br />
<pre><br />
10.0.2.2 smbserver<br />
</pre><br />
to c:\windows\lmhosts (Win9x has Lmhosts.sam as a SAMple, rename it!).<br />
<br />
==== Mounting the hard disk image====<br />
<br />
Fortunately there is a way to mount the hard disk image with a loopback device. Login as root, make a temporary directory and mount the image with the command:<br />
<pre><br />
mount -o loop,offset=32256 [[hd''image]] [[tmp''dir]]<br />
</pre><br />
Now you can copy data in both directions. When you are done, umount with:<br />
<pre><br />
umount [hd_image]<br />
</pre><br />
The drawback of this solution is that you cannot use it with qcow images (including overlay images). So you need to create you images without \"-f qcow\" option. Tip: create a second, raw harddrive image. This way you'll be able to transfer data easily and use qcow overlay images for the primary drive.<br />
<br />
REMEMBER: never run qemu when the image is mounted!<br />
<br />
==== Using any real partition as the single primary partition of a hard disk image ====<br />
<br />
Sometimes, you may wish to use one of your system partition from within qemu (for instance, if you wish booting both your real machine or qemu using a given partition as root). You can do this using software RAID in linear mode (you need the linear.ko kernel driver) and a loopback device: the trick is to dynamically prepend a master boot record (MBR) to the real partition you wish to embed in a qemu raw disk image.<br />
<br />
Suppose you have a plain, unmounted /dev/hdaN partition with some filesystem on it you wish to make part of a qemu disk image. First, you create some small file to hold the MBR:<br />
<br />
dd if=/dev/zero of=/path/to/mbr count=32<br />
<br />
Here, a 16 KB (32 * 512 bytes) file is created. It is important not to make it too small (even if the MBR only needs a single 512 bytes block), since the smaller it will be, the smaller the chunk size of the software RAID device will have to be, which could have an impact on performance. Then, you setup a loopback device to the MBR file:<br />
<br />
losetup -f /path/to/mbr<br />
<br />
Let's assume the resulting device is /dev/loop0, because we woudn't already have been using other loopbacks. Next step is to create the "merged" MBR + /dev/hdaN disk image using software RAID:<br />
<br />
modprobe linear<br />
mdadm --build --verbose /dev/md0 --chunk=16 --level=linear --raid-devices=2 /dev/loop0 /dev/hdaN<br />
<br />
The resulting /dev/md0 is what you will use as a qemu raw disk image (don't forget to set the permissions so that the emulator can access it). The last (and somewhat tricky) step is to set the disk configuration (disk geometry and partitions table) so that the primary partition start point in the MBR matches the one of /dev/hdaN inside /dev/md0 (an offset of exactly 16 * 512 = 16384 bytes in this example). Do this using fdisk on the host machine, not in the emulator: the default raw disc detection routine from qemu often results in non kilobyte-roundable offsets (such as 31.5 KB, as in the previous section) that cannot be managed by the software RAID code. Hence, from the the host:<br />
<br />
fdisk /dev/md0<br />
<br />
Press 'x' to enter the expert menu. Set number of 's'ectors per track so that the size of one<br />
cylinder matches the size of your mbr file. For two heads and the sector size is 512, the number of<br />
sectors per track should be 16, so we get cylinders of size 2x16x512=16k. Now, press 'r' to return<br />
to the main menu. Press 'p' and check that now the cylinder size is 16k.<br />
Now, create a single primary partition corresponding to /dev/hdaN. It should start at cylinder 2 and end at the end of the disk (note that the number of cylinders now differs from what it was when you entered fdisk. Finally, 'w'rite the result to the file: you are done. You know have a partition you can mount directly from your host, as well as part of a qemu disk image: <br />
<br />
qemu -hdc /dev/md0 [...]<br />
<br />
You can of course safely set any bootloader on this disk image using qemu, provided the original /boot/hdaN partition contains the necessary tools.<br />
<br />
=== Optimizing Windows 9x CPU usage===<br />
<br />
Windows 9x doesn't use hlt instruction, so the emulator always eats up 100% CPU even if no computation is being done. Grab the file http://www.user.cityline.ru/~maxamn/amnhltm.zip, unpack it, copy it to the image and run the .bat file.<br />
<br />
=== Using the QEmu Accelerator Module===<br />
<br />
{{Note|This method is no longer supported. The [[Kvm]] module should be used instead.}}<br />
<br />
The developers of qemu have created an optional kernel module to accelerate qemu to sometimes near native levels. This should be loaded with the option<br />
major=0<br />
to automate the creation of the required /dev/kqemu device. The following command<br />
echo "options kqemu major=0" >> /etc/modprobe.d/modprobe.conf<br />
will amend modprobe.conf to ensure that the module option is added every time the module is loaded.<br />
<br />
Append kqemu to the list of modules in /etc/rc.conf to have it loaded the next time the your system starts. To load it now without rebooting, do the following as root<br />
modprobe kqemu<br />
<br />
If you are using Linux, Windows 2000 or Windows XP as guest OS, start qemu with the command line option<br />
qemu [...] -kernel-kqemu<br />
or, if you are on a x86_64 system (will not work otherwise):<br />
qemu-system-x86_64 [...] -kernel-kqemu<br />
This enables full virtualization and thus improves speed considerably.<br />
<br />
=== Using the Kernel-based Virtual Machine ===<br />
<br />
[[Kvm]] is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. Using [[Kvm]], one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.<br />
<br />
This technology requires an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions. It is included in the mainline linux kernel since 2.6.20 and is enabled by default in the Arch Linux kernel.<br />
<br />
Even though qemu in recent versions do have initial KVM support (qemu --enable-kvm), it is not recommended to use this, as many KVM-related functions still haven't been implemented in upstream qemu. Instead, you should go for the qemu-kvm package in extra, which is released by the KVM development team and contain all of the latest features (and bugfixes) of KVM userspace. Please refer to the [[Kvm]] page itself, for more information on using QEMU with KVM on Arch Linux.<br />
<br />
To take advantage of [[Kvm]], you simply need a compatible processor (the following command must return something on screen)<br />
<br />
egrep '^flags.*(vmx|svm)' /proc/cpuinfo<br />
<br />
And load the appropriate module from your rc.conf<br />
<br />
* For Intel® processors add this module to your MODULES array in /etc/rc.conf<br />
<br />
kvm-intel<br />
<br />
* for AMD® processors add this module to your MODULES array in /etc/rc.conf<br />
<br />
kvm-amd<br />
<br />
Also, you will need to yourself to the group 'kvm'.<br />
<br />
===Basic Networking===<br />
To add basic networking to your virtual machine, you may have to simply load qemu with those options: -net nic,vlan=1 -net user,vlan=1. For example, to load a cdrom, you could use:<br />
qemu -kernel-kqemu -no-acpi -net nic,vlan=1 -net user,vlan=1 -cdrom dsl-4.3rc1.iso<br />
Note that this only supports the TCP and UDP protocols. In particular ICMP and thus ping will not work.<br />
<br />
=== Tap Networking with QEMU ===<br />
<br />
==== Basic Idea ====<br />
<br />
Tap networking in QEMU lets virtual machines register themselves as though with separate ethernet adapters and have their traffic bridged directly onto your local area network. This is sometimes very desireable, if you want your virtual machines to be able to talk to each other, or for other machines on your LAN to talk to virtual machines.<br />
<br />
==== Security Warning ====<br />
<br />
You probably <b>should not</b> use this networking method if your host Arch machine is directly on the Internet. It can expose your virtual machines directly to attack!<br />
<br />
In general, Arch disclaims any responsibility for security implications (or implications of any kind, really) from following these instructions.<br />
<br />
==== Nitty Gritty ====<br />
<br />
To set all this up, you'll need to install the following packages:<br />
bridge-utils (for brctl, to manipulate bridges)<br />
uml_utilities (for tunctl, to manipulate taps)<br />
sudo (for manipulating bridges and tunnels as root)<br />
<br />
# pacman -S bridge-utils uml_utilities sudo<br />
<br />
We will replace the normal ethernet adapter with a bridge adapter and bind the normal ethernet adapter to it. See http://en.gentoo-wiki.com/wiki/KVM#Networking_2 .<br />
<br />
Make sure IPv4 forwarding is set. You should have the line "systcl net.ipv4.ip_forward=1" in your /etc/sysctl.conf.<br />
<br />
Take the following steps:<br />
<br />
1. Add <code>bridge</code> and <code>tun</code> to your <code>MODULES</code> line in <code>/etc/rc.conf</code>:<br />
<br />
MODULES=( ... bridge tun)<br />
<br />
2. Configure your bridge <code>br0</code> to have your real ethernet adapter (herein assumed <code>eth0</code>) in it, in <code>/etc/conf.d/bridges</code>:<br />
bridge_br0="eth0"<br />
control_br0="setfd br0 0"<br />
BRIDGE_INTERFACES=(br0)<br />
<br />
{{Note|This is not described anywhere, but adding the control_br0 line is vital for the bridge to work! For more details look here: https://bugs.archlinux.org/task/16625}}<br />
<br />
3. Change your networking configuration so that you just bring up your real ethernet adapter without configuring it, allowing real configuration to happen on the bridge interface. In <code>/etc/rc.conf</code>:<br />
<br />
eth0="eth0 up"<br />
br0="dhcp"<br />
INTERFACES=(eth0 br0)<br />
<br />
Remember, especially if you're doing DHCP, it's essential that the bridge comes up AFTER the real adapter, otherwise the bridge won't be able to talk to anything to get a DHCP address!<br />
<br />
If DHCP does not work, try with a static IP address in <code>/etc/rc.conf</code>:<br />
<br />
eth0="eth0 0.0.0.0"<br />
br0="br0 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255"<br />
INTERFACES=(eth0 br0)<br />
gateway="default gw 192.168.0.1"<br />
ROUTES=(gateway)<br />
<br />
and then in <code>/etc/resolv.conf</code>:<br />
<br />
domain lan<br />
nameserver 192.168.0.1<br />
<br />
4. Install the script that QEMU uses to bring up the tap adapter in <code>/etc/qemu-ifup</code> with root:kvm 750 permissions:<br />
<br />
#!/bin/sh<br />
<br />
echo "Executing /etc/qemu-ifup"<br />
echo "Bringing up $1 for bridged mode..."<br />
sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br />
echo "Adding $1 to br0..."<br />
sudo /usr/sbin/brctl addif br0 $1<br />
sleep 2<br />
<br />
5. Use <code>visudo</code> to add the following to your <code>sudoers</code> file:<br />
<br />
Cmnd_Alias QEMU=/sbin/ifconfig,/sbin/modprobe,/usr/sbin/brctl,/usr/bin/tunctl<br />
%kvm ALL=NOPASSWD: QEMU<br />
<br />
6. Make sure the user(s) wishing to use this new functionality are in the kvm group. Exit and log in again if necessary.<br />
<br />
7. You launch qemu using the following <code>run-qemu</code> script:<br />
<br />
#!/bin/bash<br />
USERID=`whoami`<br />
IFACE=$(sudo tunctl -b -u $USERID)<br />
<br />
qemu-kvm -net nic -net tap,ifname="$IFACE" $*<br />
<br />
sudo tunctl -d $IFACE &> /dev/null<br />
<br />
Then to launch a VM, do something like this<br />
$ run-qemu -hda myvm.img -m 512 -vga std<br />
<br />
8. If you can't get a DHCP address in the host, it might be because the iptables are up by default in the bridge. In that case (from http://www.linux-kvm.org/page/Networking ):<br />
<br />
# cd /proc/sys/net/bridge<br />
# ls<br />
bridge-nf-call-arptables bridge-nf-call-iptables<br />
bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged<br />
# for f in bridge-nf-*; do echo 0 > $f; done<br />
<br />
And when you still can't get networking to work, see: http://wiki.archlinux.org/index.php/Linux_Containers#Bridge_device_setup<br />
<br />
=== Networking with [[VDE2]] ===<br />
<br />
==== What is VDE? ====<br />
<br />
VDE stands for Virtual Distributed Ethernet. It started as an enhancement of [[User-mode Linux|uml]]_switch. It's a toolbox to manage virtual networks.<br />
<br />
The idea is to create virtual switches, which are basically sockets, and to "plug" both physical and virtual machines in them. The configuration I show here is quite simple; However, VDE is much more powerfull than this, it can plug virtual switches together, run them on different hosts and monitor the traffic in the switches. I let you read [http://wiki.virtualsquare.org/wiki/index.php/Main_Page the documentation of the project].<br />
<br />
The advantage of this method is you don't have to add sudo privileges to your users. Regular users should not be allowed to run modprobe.<br />
<br />
==== Basics ====<br />
<br />
VDE is in extra, so...<br />
<br />
# pacman vde2<br />
<br />
In my config, i use tun/tap to create a virtual interface on my host. Load the tun module ( or add it to your rc.conf ):<br />
<br />
# modprobe tun<br />
<br />
Let's create the virtual switch:<br />
<br />
# vde_switch -tap tap0 -daemon -mod 660 -group kvm<br />
<br />
This line creates the switch, create tap0, "plugs" it, and allows the users of the group kvm to use it.<br />
<br />
The interface is pluged, but not configured yet. Just do it:<br />
<br />
# ifconfig tap0 192.168.100.254 netmask 255.255.255.0<br />
<br />
That's all! Now, you just have to run kvm with this -net options as a normal user:<br />
<br />
$ qemu-kvm -net nic -net vde -hda ...<br />
<br />
Configure your guest as you would do in a physical network. I gave them static addresses and let them access the WAN using ip forwarding and masquerade on my host:<br />
<br />
# echo "1" > /proc/sys/net/ipv4/ip_forward<br />
# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE<br />
<br />
==== Putting it together ====<br />
<br />
I added this init script to run all this at startup :<br />
<br />
#!/bin/bash <br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
case "$1" in<br />
start)<br />
stat_busy "Starting VDE Switch"<br />
vde_switch -tap tap0 -daemon -mod 660 -pidfile $PIDFILE -group kvm<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
echo "1" > /proc/sys/net/ipv4/ip_forward && \<br />
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE && \<br />
ifconfig tap0 192.168.100.254 netmask 255.255.255.0 && \<br />
stat_done || stat_fail<br />
fi<br />
;;<br />
stop)<br />
stat_busy "Stopping VDE Switch"<br />
# err.. well, i should remove the switch here...<br />
stat_done<br />
;;<br />
restart)<br />
$0 stop<br />
sleep 1<br />
# Aem.. As long as stop) isn't implemented, this just fails<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {start|stop|restart}" <br />
esac<br />
exit 0<br />
<br />
Well, i know it is dirty and could be more configurable. Feel free to improve it. Vde has a rc srcipt too, but i had to make one anyway for the ip forwarding stuff.<br />
<br />
====Alternative method====<br />
<br />
If the above method doesn't work or you don't want to mess with kernel configs, TUN, dnsmasq and iptables you can do the following for the same result.<br />
<br />
vde_switch -daemon<br />
<br />
slirpvde --dhcp --daemon<br />
<br />
Then to start the vm with a connection to the network of the host:<br />
<br />
kvm -net nic,macaddr=52:54:00:00:EE:03 -net vde whatever.qcow<br />
<br />
=== Graphics ===<br />
QEMU can use different graphic outputs, std,cirrus,vmware,qxl,xenfs and vnc.<br />
With the vnc option you can run your guest standalone and connect to it via vnc. Other options are using std,vmware,cirrus:<br />
====std====<br />
With -vga std you can get a resolution up to 2560 x 1600 pixels.<br />
<br />
====vmware====<br />
Althought it's a bit buggy, it performances better than std and cirrus, on the guest install the vmware drivers<br />
pacman -S xf86-video-vmware xf86-input-vmmouse<br />
====windows guest====<br />
If you use a windows guest you might want to use rdp to connect to your guest vm. Use: (if you are using a vlan or aren't in the same network as the guest)<br />
qemu -nographic -net user,hostfwd=tcp::5555-:3389<br />
The connect with either rdesktop or freerdp to the guest, for example:<br />
xfreerdp -g 2048x1152 localhost:5555 -z -x lan<br />
<br />
=== Front-ends for Qemu ===<br />
<br />
There are a few GUI Front-ends for Qemu:<br />
<br />
* community/qemu-launcher<br />
* community/qemulator<br />
* community/qtemu<br />
<br />
===Keyboard seems broken / Arrow keys don't work===<br />
<br />
Should you find that some of your keys do not work or "press" the wrong key (in particular, the arrow keys), you likely need to specify your keyboard layout as an option. The keyboard layouts can be found in /usr/share/qemu/keymaps.<br />
<br />
<pre><br />
qemu -k [keymap] [disk_image]<br />
</pre><br />
<br />
===Starting qemu virtual machines on boot===<br />
To run qemu VM's on boot you can use following rc-script and config.<br />
<br />
{| border="1"<br />
|+ Config file options<br />
|-<br />
| QEMU_MACHINES || List of VMs to start<br />
|-<br />
| qemu_${vm}_type || QEMU binary to call. If specified will be prepended with '/usr/bin/qemu-' and that binary will be used to start VM. I.e. you can boot e.g. qemu-system-arm images with qemu_my_arm_vm_type="system-arm". If not specified, '/usr/bin/qemu' will be used.<br />
|-<br />
| qemu_${vm} || QEMU command line to start with. Will always be prepended with '-name ${vm} -pidfile /var/run/qemu/${vm}.pid -daemonize -nographic'.<br />
|-<br />
| qemu_${vm}_haltcmd || Command to shutdown VM safely. I'm using '-monitor telnet:..' and poweroff my VMs via acpi by sending 'system_powerdown' to monitor. You can use ssh or some other ways.<br />
|-<br />
| qemu_${vm}_haltcmd_wait || How much time to wait for safe VM shutdown. Default is 30 seconds. rc-script will kill qemu process after this timeout.<br />
|}<br />
<br />
Config file example:<br />
{{File|name=/etc/conf.d/qemu.conf|content=<nowiki><br />
# VM's that should be started on boot<br />
# use the ! prefix to disable starting/stopping a VM<br />
QEMU_MACHINES=(vm1 vm2)<br />
<br />
# NOTE: following options will be prepended to qemu_${vm}<br />
# -name ${vm} -pidfile /var/run/qemu/${vm}.pid -daemonize -nographic<br />
<br />
qemu_vm1_type="system-x86_64"<br />
<br />
qemu_vm1="-enable-kvm -m 512 -hda /dev/mapper/vg0-vm1 -net nic,macaddr=DE:AD:BE:EF:E0:00 \<br />
-net tap,ifname=tap0 -serial telnet:localhost:7000,server,nowait,nodelay \<br />
-monitor telnet:localhost:7100,server,nowait,nodelay -vnc :0"<br />
<br />
qemu_vm1_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7100" # or netcat/ncat<br />
<br />
# You can use other ways to shutdown your VM correctly<br />
#qemu_vm1_haltcmd="ssh powermanager@vm1 sudo poweroff"<br />
<br />
# By default rc-script will wait 30 seconds before killing VM. Here you can change this timeout.<br />
#qemu_vm1_haltcmd_wait="30"<br />
<br />
qemu_vm2="-enable-kvm -m 512 -hda /srv/kvm/vm2.img -net nic,macaddr=DE:AD:BE:EF:E0:01 \<br />
-net tap,ifname=tap1 -serial telnet:localhost:7001,server,nowait,nodelay \<br />
-monitor telnet:localhost:7101,server,nowait,nodelay -vnc :1"<br />
<br />
qemu_vm2_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7101"<br />
</nowiki>}}<br />
<br />
rc-script:<br />
{{File|name=/etc/rc.d/qemu|content=<nowiki><br />
#!/bin/bash<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
[ -f /etc/conf.d/qemu.conf ] && source /etc/conf.d/qemu.conf<br />
<br />
PIDDIR=/var/run/qemu<br />
QEMU_DEFAULT_FLAGS='-name ${vm} -pidfile ${PIDDIR}/${vm}.pid -daemonize -nographic'<br />
QEMU_HALTCMD_WAIT=30<br />
<br />
case "$1" in<br />
start)<br />
[ -d "${PIDDIR}" ] || mkdir -p "${PIDDIR}"<br />
for vm in "${QEMU_MACHINES[@]}"; do<br />
if [ "${vm}" = "${vm#!}" ]; then<br />
stat_busy "Starting QEMU vm: ${vm}"<br />
eval vm_cmdline="\$qemu_${vm}"<br />
eval vm_type="\$qemu_${vm}_type"<br />
<br />
if [ -n "${vm_type}" ]; then<br />
vm_cmd="/usr/bin/qemu-${vm_type}"<br />
else<br />
vm_cmd='/usr/bin/qemu'<br />
fi<br />
<br />
eval "qemu_flags=\"${QEMU_DEFAULT_FLAGS}\""<br />
<br />
${vm_cmd} ${qemu_flags} ${vm_cmdline} >/dev/null<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
stat_done<br />
fi<br />
fi<br />
done<br />
add_daemon qemu<br />
;;<br />
<br />
stop)<br />
for vm in "${QEMU_MACHINES[@]}"; do<br />
if [ "${vm}" = "${vm#!}" ]; then<br />
# check pidfile presence and permissions<br />
if [ ! -r "${PIDDIR}/${vm}.pid" ]; then<br />
continue<br />
fi<br />
<br />
stat_busy "Stopping QEMU vm: ${vm}"<br />
<br />
eval vm_haltcmd="\$qemu_${vm}_haltcmd"<br />
eval vm_haltcmd_wait="\$qemu_${vm}_haltcmd_wait"<br />
vm_haltcmd_wait=${vm_haltcmd_wait:-${QEMU_HALTCMD_WAIT}}<br />
vm_pid=$(cat ${PIDDIR}/${vm}.pid)<br />
<br />
# check process existence<br />
if ! kill -0 ${vm_pid} 2>/dev/null; then<br />
stat_done<br />
rm -f "${PIDDIR}/${vm}.pid"<br />
continue<br />
fi<br />
<br />
# Try to shutdown VM safely<br />
_vm_running='yes'<br />
if [ -n "${vm_haltcmd}" ]; then<br />
eval ${vm_haltcmd} >/dev/null<br />
<br />
_w=0<br />
while [ "${_w}" -lt "${vm_haltcmd_wait}" ]; do<br />
sleep 1<br />
if ! kill -0 ${vm_pid} 2>/dev/null; then<br />
# no such process<br />
_vm_running=''<br />
break<br />
fi<br />
_w=$((_w + 1))<br />
done<br />
<br />
else<br />
# No haltcmd - kill VM unsafely<br />
_vm_running='yes'<br />
fi<br />
<br />
if [ -n "${_vm_running}" ]; then<br />
# kill VM unsafely<br />
kill ${vm_pid} 2>/dev/null<br />
sleep 1<br />
fi<br />
<br />
# report status<br />
if kill -0 ${vm_pid} 2>/dev/null; then<br />
# VM is still alive<br />
#kill -9 ${vm_pid}<br />
stat_fail<br />
else<br />
stat_done<br />
fi<br />
<br />
# remove pidfile<br />
rm -f "${PIDDIR}/${vm}.pid"<br />
fi<br />
done<br />
rm_daemon qemu<br />
;;<br />
<br />
restart)<br />
$0 stop<br />
sleep 1<br />
$0 start<br />
;;<br />
<br />
*)<br />
echo "usage: $0 {start|stop|restart}"<br />
<br />
esac<br />
</nowiki>}}<br />
<br />
===External links===<br />
A very good qemu guide by AlienBOB: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:qemu</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Dzen&diff=140491Dzen2011-05-08T16:34:25Z<p>AndreasBWagner: /* Enabling Xft support for dzen */ spelling</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Eye candy (English)]]<br />
{{Stub}}<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dzen}}<br />
{{i18n_links_end}}<br />
<br />
=Introduction=<br />
From the [http://gotmor.googlepages.com/dzen dzen] website:<br />
<br />
''"Dzen is a general purpose messaging, notification and menuing program for X11. It was designed to be scriptable in any language and integrate well with window managers like dwm, wmii and xmonad though it will work with any window manager."''<br />
<br />
See also the Arch Linux [https://bbs.archlinux.org/viewtopic.php?id=40637 forum thread].<br />
<br />
=Installation=<br />
dzen is available from the community repository:<br />
# pacman -S dzen2<br />
<br />
And also in the [[AUR|AUR]], you can find [http://aur.archlinux.org/packages.php?ID=31899 dzen2-xft-xpm-xinerama-svn 267-2]. <br><br />
This version has all the bells & whistles enabled in the PKGBUILD. <br />
With Xft and XPM support you can use nice fonts and xpm images in your bar.<br />
<br />
=Tips & Tricks=<br />
<br />
== Using custom fonts with Dzen ==<br />
<br />
If you wish to use custom fonts with dzen2 (like the popular Terminus font), you need to add the path to your local fonts folder in xorg.conf.<br />
<br />
Section "Files"<br />
...<br />
FontPath "/usr/share/fonts/local"<br />
...<br />
EndSection<br />
<br />
If you do not have permission or do not want to change xorg.conf, you may add this to ~/.xinitrc:<br />
<br />
xset +fp /usr/share/fonts/local<br />
xset fp rehash<br />
<br />
== Dzen & Conky ==<br />
Conky can be used to pipe information directly to dzen for output in a statusbar. <br />
This can be done with Conky in the Extra repository and also with [http://aur.archlinux.org/packages.php?do_Details=1&ID=11884&O=0&L=0&C=0&K=conky-cli&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd conky-cli], a stripped-down version of the Conky status utility from [[AUR | AUR]] . <br><br />
The following example displays the the loadavg values in red and the current time in the default dzen foreground colour:<br />
<br />
'''~/.conkyrc:'''<br />
background no<br />
out_to_console yes<br />
out_to_x no<br />
update_interval 1.0<br />
total_run_times 0<br />
use_spacer none<br />
<br />
TEXT<br />
^fg(\#ff0000)${loadavg 1 2 3} ^fg()${time %a %b %d %I:%M%P}<br />
<br />
<br />
'''~/bin/dzconky:'''<br />
<br />
#!/bin/sh<br />
<br />
FG='#aaaaaa'<br />
BG='#1a1a1a'<br />
FONT='-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*'<br />
conky | dzen2 -e - -h '16' -w '600' -ta r -fg $FG -bg $BG -fn $FONT<br />
<br />
Simply execute ''dzconky'' in your startup scripts.<br />
<br />
== Enabling Xft support for dzen ==<br />
<br />
{{Note|You need to install '''libxft''' package.}}<br />
As of revision 241 (development), dzen2 has optional support for Xft. To enable Xft, you should build dzen2 with these options: ('''edit''' {{filename|config.mk}})<br />
<br />
## Option: With Xinerama and XPM and XFT<br />
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lXinerama -lXpm `pkg-config --libs xft`<br />
CFLAGS = -Wall -Os ${INCS} -DVERSION=\"${VERSION}\" -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT `pkg-config --cflags xft`<br />
<br />
To check libxft support, you can use this command:<br />
<br />
echo "hello world" | dzen2 -fn 'Times New Roman' -p</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=QEMU&diff=137678QEMU2011-04-19T10:54:08Z<p>AndreasBWagner: /* Putting it together */ fixed header level on VDE alternative method</p>
<hr />
<div>[[Category:Emulators (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[fr:Qemu]]<br />
{{i18n|QEMU}}<br />
<br />
From the [http://wiki.qemu.org/Main_Page QEMU about page],<br />
<blockquote><br />
QEMU is a generic and open source machine emulator and virtualizer.<br />
<br /><br /><br />
When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performances.<br />
<br /><br /><br />
When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. A host driver called the QEMU accelerator (also known as KQEMU) is needed in this case. QEMU supports virtualization when executing under the Xen hypervisor or using the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, server and embedded PowerPC, and S390 guests. The virtualizer mode requires that both the host and guest machine use x86 compatible processors.<br />
<br /><br />
</blockquote><br />
<br />
=== Difference between qemu and qemu-kvm ===<br />
<br />
Depending on your needs, you can choose either to install upstream qemu or qemu-kvm from the [extra] repository. Upstream qemu is a pure emulator, with no hardware acceleration (actually, it does have initial KVM support when qemu is started with -enable-kvm parameter, but this implementation is still buggy and nowhere as complete as in qemu-kvm, many functions still doesn't work). Upstream qemu is capable of emulating many different platforms (arm, i386, m68k, mips, ppc, sparc, x86_64, etc). On the other hand you have qemu-kvm, which is qemu (i386 and x86_64 architecture support only) with KVM (kernel virtual machine) additions, allowing you to run virtual machines at close to native speed. qemu-kvm is the version you want if you have a capable CPU and only need to run virtual machines for the i386 and x86_64 architecture (Linux, Windows, BSD, etc).<br />
<br />
Not all processor supports kvm. You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list ] of compatible processors. For Intel processors, see also the [http://ark.intel.com/VTList.aspx Intel® Virtualization Technology List].<br />
<br />
=== Installing QEMU ===<br />
<br />
To install the machine emulator version:<br />
<pre><br />
$ sudo pacman -S qemu<br />
</pre><br />
To install the KVM version (please see the page on [[Kvm]] for more details):<br />
<pre><br />
$ sudo pacman -S qemu-kvm<br />
</pre><br />
<br />
=== Choosing Windows version===<br />
Qemu can run any version of Windows. However, 98, Me and XP will run at quite a low speed. You should choose either Windows 95 or Windows 2000. Surprisingly, 2000 seems to run faster than 98. The fastest one is 95, which can from time to time make you forget that you are running an emulator :)<br />
<br />
If you own both Win95 and win98/winme, then 98lite (from http://www.litepc.com) might be worth trying. It decouples Internet Explorer from operating system and replaces it with original Windows 95 Explorer. It also enables you to do a minimal Windows installation, without all the bloat you normally cannot disable. This might be the best option, because you get the smallest, fastest and most stable Windows this way.<br />
<br />
=== Creating the hard disk image===<br />
To run qemu you will probably need a hard disk image. This is a file which stores the contents of the emulated hard disk.<br />
<br />
Use the command:<br />
<pre><br />
qemu-img create -f qcow2 win.qcow 4G<br />
</pre><br />
to create the image file named "win.qcow". The "4G" parameter specifies the size of the disk - in this case 4 GB. You can use suffix M for megabytes (for example "256M"). You shouldn't worry too much about the size of the disk - the qcow2 format compresses the image so that the empty space doesn't add up to the size of the file.<br />
<br />
=== Preparing the installation media===<br />
The installation CD-ROM/floppy shouldn't be mounted, because Qemu accesses the media directly. It is a good idea to dump CD-ROM and/or floppy to a file, because it both improves performance and doesn't require you to have direct access to the devices (that is, you can run Qemu as a regular user). For example, if the CD-ROM device node is named "/dev/cdrom", you can dump it to a file with the command:<br />
<pre><br />
dd if=/dev/cdrom of=win98icd.iso<br />
</pre><br />
<br />
Do the same for floppies:<br />
<br />
<pre><br />
dd if=/dev/fd of=win95d1.img<br />
...<br />
</pre><br />
<br />
When you need to replace floppies within qemu, just copy the contents of one floppy over another. For this reason, it is useful to create a special file that will hold the current floppy:<br />
<br />
<pre><br />
touch floppy.img<br />
</pre><br />
<br />
=== Installing the operating system===<br />
<br />
This is the first time you will need to start the emulator.<br />
One thing to keep in mind: when you click inside qemu window, the mouse pointer is grabbed. To release it press Ctrl+Alt.<br />
<br />
If you need to use a bootable floppy, run Qemu with:<br />
<pre><br />
qemu -cdrom [[cdrom''image]] -fda [[floppy''image]] -boot a [[hd_image]]<br />
</pre><br />
or if you are on a x86_64 system (will avoid many problems afterwards):<br />
<pre><br />
qemu-system-x86_64 -cdrom [[cdrom''image]] -fda [[floppy''image]] -boot a [[hd_image]]<br />
</pre><br />
<br />
If your CD-ROM is bootable or you are using iso files, run Qemu with:<br />
<pre><br />
qemu -cdrom [[cdrom''image]] -boot d [[hd''image]]<br />
</pre><br />
or if you are on a x86_64 system (will avoid many problems afterwards):<br />
<pre><br />
qemu-system-x86_64 -cdrom [[cdrom''image]] -boot d [[hd''image]]<br />
</pre><br />
Now partition the virtual hard disk, format the partitions and install the OS.<br />
<br />
A few hints:<br />
# If you are using Windows 95 boot floppy, then choosing SAMSUNG as the type of CD-ROM seems to work<br />
# There are problems when installing Windows 2000. Windows setup will generate a lot of edb*.log files, one after the other containing nothing but blank spaces in C:\WINNT\SECURITY which quickly fill the virtual harddisk. A workaround is to open a Windows command prompt as early as possible during setup (by pressing Shift-F10) which will allow you to remove these log files as they appear by typing :<br />
<pre><br />
del %windir%\security\*.log<br />
</pre><br />
<br />
{{Note| According to the official QEMU website, "Windows 2000 has a bug which gives a disk full problem during its installation. When installing it, use the `-win2k-hack' QEMU option to enable a specific workaround. After Windows 2000 is installed, you no longer need this option (this option slows down the IDE transfers)."}}<br />
<br />
=== Running the system===<br />
<br />
To run the system simply type:<br />
<pre><br />
qemu [hd_image]<br />
</pre><br />
<br />
A good idea is to use overlay images. This way you can create hard disk image once and tell Qemu to store changes in external file.<br />
You get rid of all the instability, because it is so easy to revert to previous system state :)<br />
<br />
To create an overlay image, type:<br />
<pre><br />
qemu-img create -b [[base''image]] -f qcow [[overlay''image]]<br />
</pre>2<br />
Substitute the hard disk image for base_image (in our case win.qcow). After that you can run qemu with:<br />
<pre><br />
qemu [overlay_image]<br />
</pre><br />
or if you are on a x86_64 system:<br />
<pre><br />
qemu-system-x86_64 [overlay_image]<br />
</pre><br />
and the original image will be left untouched. One hitch, the base image cannot be renamed or moved, the overlay remembers the base's full path.<br />
<br />
=== Moving data between host and guest OS===<br />
<br />
If you have servers on your host OS they will be accessible with the ip-address 10.0.2.2 without any further configuration. So you could just FTP or SSH, etc to 10.0.2.2 from windows to share data, or if you would like to use samba:<br />
<br />
==== Samba====<br />
<br />
Qemu supports SAMBA which allows you to mount host directories during the emulation. It seems that there is an incompatibility with SAMBA 3.x. and some versions of qemu. But at least with a current snapshot of qemu it should be working.<br />
<br />
First, you need to have a working samba installation. Then add the following section to your smb.conf:<br />
<pre><br />
[qemu]<br />
comment = Temporary file space<br />
path = /tmp<br />
read only = no<br />
public = yes<br />
</pre><br />
<br />
Now start qemu with:<br />
<pre><br />
qemu [hd_image] -smb qemu<br />
</pre><br />
<br />
Then you should be able to access your host's smb-server with the ip-address 10.0.2.2. If you're running Win9x as guest OS, you may need to add<br />
<pre><br />
10.0.2.2 smbserver<br />
</pre><br />
to c:\windows\lmhosts (Win9x has Lmhosts.sam as a SAMple, rename it!).<br />
<br />
==== Mounting the hard disk image====<br />
<br />
Fortunately there is a way to mount the hard disk image with a loopback device. Login as root, make a temporary directory and mount the image with the command:<br />
<pre><br />
mount -o loop,offset=32256 [[hd''image]] [[tmp''dir]]<br />
</pre><br />
Now you can copy data in both directions. When you are done, umount with:<br />
<pre><br />
umount [hd_image]<br />
</pre><br />
The drawback of this solution is that you cannot use it with qcow images (including overlay images). So you need to create you images without \"-f qcow\" option. Tip: create a second, raw harddrive image. This way you'll be able to transfer data easily and use qcow overlay images for the primary drive.<br />
<br />
REMEMBER: never run qemu when the image is mounted!<br />
<br />
==== Using any real partition as the single primary partition of a hard disk image ====<br />
<br />
Sometimes, you may wish to use one of your system partition from within qemu (for instance, if you wish booting both your real machine or qemu using a given partition as root). You can do this using software RAID in linear mode (you need the linear.ko kernel driver) and a loopback device: the trick is to dynamically prepend a master boot record (MBR) to the real partition you wish to embed in a qemu raw disk image.<br />
<br />
Suppose you have a plain, unmounted /dev/hdaN partition with some filesystem on it you wish to make part of a qemu disk image. First, you create some small file to hold the MBR:<br />
<br />
dd if=/dev/zero of=/path/to/mbr count=32<br />
<br />
Here, a 16 KB (32 * 512 bytes) file is created. It is important not to make it too small (even if the MBR only needs a single 512 bytes block), since the smaller it will be, the smaller the chunk size of the software RAID device will have to be, which could have an impact on performance. Then, you setup a loopback device to the MBR file:<br />
<br />
losetup -f /path/to/mbr<br />
<br />
Let's assume the resulting device is /dev/loop0, because we woudn't already have been using other loopbacks. Next step is to create the "merged" MBR + /dev/hdaN disk image using software RAID:<br />
<br />
modprobe linear<br />
mdadm --build --verbose /dev/md0 --chunk=16 --level=linear --raid-devices=2 /dev/loop0 /dev/hdaN<br />
<br />
The resulting /dev/md0 is what you will use as a qemu raw disk image (don't forget to set the permissions so that the emulator can access it). The last (and somewhat tricky) step is to set the disk configuration (disk geometry and partitions table) so that the primary partition start point in the MBR matches the one of /dev/hdaN inside /dev/md0 (an offset of exactly 16 * 512 = 16384 bytes in this example). Do this using fdisk on the host machine, not in the emulator: the default raw disc detection routine from qemu often results in non kilobyte-roundable offsets (such as 31.5 KB, as in the previous section) that cannot be managed by the software RAID code. Hence, from the the host:<br />
<br />
fdisk /dev/md0<br />
<br />
Press 'x' to enter the expert menu. Set number of 's'ectors per track so that the size of one<br />
cylinder matches the size of your mbr file. For two heads and the sector size is 512, the number of<br />
sectors per track should be 16, so we get cylinders of size 2x16x512=16k. Now, press 'r' to return<br />
to the main menu. Press 'p' and check that now the cylinder size is 16k.<br />
Now, create a single primary partition corresponding to /dev/hdaN. It should start at cylinder 2 and end at the end of the disk (note that the number of cylinders now differs from what it was when you entered fdisk. Finally, 'w'rite the result to the file: you are done. You know have a partition you can mount directly from your host, as well as part of a qemu disk image: <br />
<br />
qemu -hdc /dev/md0 [...]<br />
<br />
You can of course safely set any bootloader on this disk image using qemu, provided the original /boot/hdaN partition contains the necessary tools.<br />
<br />
=== Optimizing Windows 9x CPU usage===<br />
<br />
Windows 9x doesn't use hlt instruction, so the emulator always eats up 100% CPU even if no computation is being done. Grab the file http://www.user.cityline.ru/~maxamn/amnhltm.zip, unpack it, copy it to the image and run the .bat file.<br />
<br />
=== Using the QEmu Accelerator Module===<br />
<br />
{{Note|This method is no longer supported. The [[Kvm]] module should be used instead.}}<br />
<br />
The developers of qemu have created an optional kernel module to accelerate qemu to sometimes near native levels. This should be loaded with the option<br />
major=0<br />
to automate the creation of the required /dev/kqemu device. The following command<br />
echo "options kqemu major=0" >> /etc/modprobe.d/modprobe.conf<br />
will amend modprobe.conf to ensure that the module option is added every time the module is loaded.<br />
<br />
Append kqemu to the list of modules in /etc/rc.conf to have it loaded the next time the your system starts. To load it now without rebooting, do the following as root<br />
modprobe kqemu<br />
<br />
If you are using Linux, Windows 2000 or Windows XP as guest OS, start qemu with the command line option<br />
qemu [...] -kernel-kqemu<br />
or, if you are on a x86_64 system (will not work otherwise):<br />
qemu-system-x86_64 [...] -kernel-kqemu<br />
This enables full virtualization and thus improves speed considerably.<br />
<br />
=== Using the Kernel-based Virtual Machine ===<br />
<br />
[[Kvm]] is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. Using [[Kvm]], one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.<br />
<br />
This technology requires an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions. It is included in the mainline linux kernel since 2.6.20 and is enabled by default in the Arch Linux kernel.<br />
<br />
Even though qemu in recent versions do have initial KVM support (qemu --enable-kvm), it is not recommended to use this, as many KVM-related functions still haven't been implemented in upstream qemu. Instead, you should go for the qemu-kvm package in extra, which is released by the KVM development team and contain all of the latest features (and bugfixes) of KVM userspace. Please refer to the [[Kvm]] page itself, for more information on using QEMU with KVM on Arch Linux.<br />
<br />
To take advantage of [[Kvm]], you simply need a compatible processor (the following command must return something on screen)<br />
<br />
egrep '^flags.*(vmx|svm)' /proc/cpuinfo<br />
<br />
And load the appropriate module from your rc.conf<br />
<br />
* For Intel® processors add this module to your MODULES array in /etc/rc.conf<br />
<br />
kvm-intel<br />
<br />
* for AMD® processors add this module to your MODULES array in /etc/rc.conf<br />
<br />
kvm-amd<br />
<br />
Also, you will need to yourself to the group 'kvm'.<br />
<br />
===Basic Networking===<br />
To add basic networking to your virtual machine, you may have to simply load qemu with those options: -net nic,vlan=1 -net user,vlan=1. For example, to load a cdrom, you could use:<br />
qemu -kernel-kqemu -no-acpi -net nic,vlan=1 -net user,vlan=1 -cdrom dsl-4.3rc1.iso<br />
Note that this only supports the TCP and UDP protocols. In particular ICMP and thus ping will not work.<br />
<br />
=== Tap Networking with QEMU ===<br />
<br />
==== Basic Idea ====<br />
<br />
Tap networking in QEMU lets virtual machines register themselves as though with separate ethernet adapters and have their traffic bridged directly onto your local area network. This is sometimes very desireable, if you want your virtual machines to be able to talk to each other, or for other machines on your LAN to talk to virtual machines.<br />
<br />
==== Security Warning ====<br />
<br />
You probably <b>should not</b> use this networking method if your host Arch machine is directly on the Internet. It can expose your virtual machines directly to attack!<br />
<br />
In general, Arch disclaims any responsibility for security implications (or implications of any kind, really) from following these instructions.<br />
<br />
==== Nitty Gritty ====<br />
<br />
To set all this up, you'll need to install the following packages:<br />
bridge-utils (for brctl, to manipulate bridges)<br />
uml_utilities (for tunctl, to manipulate taps)<br />
sudo (for manipulating bridges and tunnels as root)<br />
<br />
# pacman -S bridge-utils uml_utilities sudo<br />
<br />
We will replace the normal ethernet adapter with a bridge adapter and bind the normal ethernet adapter to it. See http://en.gentoo-wiki.com/wiki/KVM#Networking_2 .<br />
<br />
Make sure IPv4 forwarding is set. You should have the line "systcl net.ipv4.ip_forward=1" in your /etc/sysctl.conf.<br />
<br />
Take the following steps:<br />
<br />
1. Add <code>bridge</code> and <code>tun</code> to your <code>MODULES</code> line in <code>/etc/rc.conf</code>:<br />
<br />
MODULES=( ... bridge tun)<br />
<br />
2. Configure your bridge <code>br0</code> to have your real ethernet adapter (herein assumed <code>eth0</code>) in it, in <code>/etc/conf.d/bridges</code>:<br />
bridge_br0="eth0"<br />
control_br0="setfd br0 0"<br />
BRIDGE_INTERFACES=(br0)<br />
<br />
{{Note|This is not described anywhere, but adding the control_br0 line is vital for the bridge to work! For more details look here: https://bugs.archlinux.org/task/16625}}<br />
<br />
3. Change your networking configuration so that you just bring up your real ethernet adapter without configuring it, allowing real configuration to happen on the bridge interface. In <code>/etc/rc.conf</code>:<br />
<br />
eth0="eth0 up"<br />
br0="dhcp"<br />
INTERFACES=(eth0 br0)<br />
<br />
Remember, especially if you're doing DHCP, it's essential that the bridge comes up AFTER the real adapter, otherwise the bridge won't be able to talk to anything to get a DHCP address!<br />
<br />
If DHCP does not work, try with a static IP address in <code>/etc/rc.conf</code>:<br />
<br />
eth0="eth0 0.0.0.0"<br />
br0="br0 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255"<br />
INTERFACES=(eth0 br0)<br />
gateway="default gw 192.168.0.1"<br />
ROUTES=(gateway)<br />
<br />
and then in <code>/etc/resolv.conf</code>:<br />
<br />
domain lan<br />
nameserver 192.168.0.1<br />
<br />
4. Install the script that QEMU uses to bring up the tap adapter in <code>/etc/qemu-ifup</code> with root:kvm 750 permissions:<br />
<br />
#!/bin/sh<br />
<br />
echo "Executing /etc/qemu-ifup"<br />
echo "Bringing up $1 for bridged mode..."<br />
sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br />
echo "Adding $1 to br0..."<br />
sudo /usr/sbin/brctl addif br0 $1<br />
sleep 2<br />
<br />
5. Use <code>visudo</code> to add the following to your <code>sudoers</code> file:<br />
<br />
Cmnd_Alias QEMU=/sbin/ifconfig,/sbin/modprobe,/usr/sbin/brctl,/usr/bin/tunctl<br />
%kvm ALL=NOPASSWD: QEMU<br />
<br />
6. Make sure the user(s) wishing to use this new functionality are in the kvm group. Exit and log in again if necessary.<br />
<br />
7. You launch qemu using the following <code>run-qemu</code> script:<br />
<br />
#!/bin/bash<br />
USERID=`whoami`<br />
IFACE=$(sudo tunctl -b -u $USERID)<br />
<br />
qemu-kvm -net nic -net tap,ifname="$IFACE" $*<br />
<br />
sudo tunctl -d $IFACE &> /dev/null<br />
<br />
Then to launch a VM, do something like this<br />
$ run-qemu -hda myvm.img -m 512 -vga std<br />
<br />
8. If you can't get a DHCP address in the host, it might be because the iptables are up by default in the bridge. In that case (from http://www.linux-kvm.org/page/Networking ):<br />
<br />
# cd /proc/sys/net/bridge<br />
# ls<br />
bridge-nf-call-arptables bridge-nf-call-iptables<br />
bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged<br />
# for f in bridge-nf-*; do echo 0 > $f; done<br />
<br />
And when you still can't get networking to work, see: http://wiki.archlinux.org/index.php/Linux_Containers#Bridge_device_setup<br />
<br />
=== Networking with [[VDE2]] ===<br />
<br />
==== What is VDE? ====<br />
<br />
VDE stands for Virtual Distributed Ethernet. It started as an enhancement of [[User-mode Linux|uml]]_switch. It's a toolbox to manage virtual networks.<br />
<br />
The idea is to create virtual switches, which are basically sockets, and to "plug" both physical and virtual machines in them. The configuration I show here is quite simple; However, VDE is much more powerfull than this, it can plug virtual switches together, run them on different hosts and monitor the traffic in the switches. I let you read [http://wiki.virtualsquare.org/wiki/index.php/Main_Page the documentation of the project].<br />
<br />
The advantage of this method is you don't have to add sudo privileges to your users. Regular users should not be allowed to run modprobe.<br />
<br />
==== Basics ====<br />
<br />
VDE is in extra, so...<br />
<br />
# pacman vde2<br />
<br />
In my config, i use tun/tap to create a virtual interface on my host. Load the tun module ( or add it to your rc.conf ):<br />
<br />
# modprobe tun<br />
<br />
Let's create the virtual switch:<br />
<br />
# vde_switch -tap tap0 -daemon -mod 660 -group kvm<br />
<br />
This line creates the switch, create tap0, "plugs" it, and allows the users of the group kvm to use it.<br />
<br />
The interface is pluged, but not configured yet. Just do it:<br />
<br />
# ifconfig tap0 192.168.100.254 netmask 255.255.255.0<br />
<br />
That's all! Now, you just have to run kvm with this -net options as a normal user:<br />
<br />
$ qemu-kvm -net nic -net vde -hda ...<br />
<br />
Configure your guest as you would do in a physical network. I gave them static addresses and let them access the WAN using ip forwarding and masquerade on my host:<br />
<br />
# echo "1" > /proc/sys/net/ipv4/ip_forward<br />
# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE<br />
<br />
==== Putting it together ====<br />
<br />
I added this init script to run all this at startup :<br />
<br />
#!/bin/bash <br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
case "$1" in<br />
start)<br />
stat_busy "Starting VDE Switch"<br />
vde_switch -tap tap0 -daemon -mod 660 -pidfile $PIDFILE -group kvm<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
echo "1" > /proc/sys/net/ipv4/ip_forward && \<br />
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE && \<br />
ifconfig tap0 192.168.100.254 netmask 255.255.255.0 && \<br />
stat_done || stat_fail<br />
fi<br />
;;<br />
stop)<br />
stat_busy "Stopping VDE Switch"<br />
# err.. well, i should remove the switch here...<br />
stat_done<br />
;;<br />
restart)<br />
$0 stop<br />
sleep 1<br />
# Aem.. As long as stop) isn't implemented, this just fails<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {start|stop|restart}" <br />
esac<br />
exit 0<br />
<br />
Well, i know it is dirty and could be more configurable. Feel free to improve it. Vde has a rc srcipt too, but i had to make one anyway for the ip forwarding stuff.<br />
<br />
====Alternative method====<br />
<br />
If the above method doesn't work or you don't want to mess with kernel configs, TUN, dnsmasq and iptables. You can do the following for the same result.<br />
<br />
vde_switch -daemon<br />
<br />
slirpvde --dhcp --daemon<br />
<br />
Then to start the vm with a connection to the network of the host:<br />
<br />
kvm -net nic,macaddr=52:54:00:00:EE:03 -net vde whatever.qcow<br />
<br />
=== Graphics ===<br />
QEMU can use different graphic outputs, std,cirrus,vmware,qxl,xenfs and vnc.<br />
With the vnc option you can run your guest standalone and connect to it via vnc. Other options are using std,vmware,cirrus:<br />
====std====<br />
With -vga std you can get a resolution up to 2560 x 1600 pixels.<br />
<br />
====vmware====<br />
Althought it's a bit buggy, it performances better than std and cirrus, on the guest install the vmware drivers<br />
pacman -S xf86-video-vmware xf86-input-vmmouse<br />
====windows guest====<br />
If you use a windows guest you might want to use rdp to connect to your guest vm. Use: (if you are using a vlan or aren't in the same network as the guest)<br />
qemu -nographic -net user,hostfwd=tcp::5555-:3389<br />
The connect with either rdesktop or freerdp to the guest, for example:<br />
xfreerdp -g 2048x1152 localhost:5555 -z -x lan<br />
<br />
=== Front-ends for Qemu ===<br />
<br />
There are a few GUI Front-ends for Qemu:<br />
<br />
* community/qemu-launcher<br />
* community/qemulator<br />
* community/qtemu<br />
<br />
===Keyboard seems broken / Arrow keys don't work===<br />
<br />
Should you find that some of your keys do not work or "press" the wrong key (in particular, the arrow keys), you likely need to specify your keyboard layout as an option. The keyboard layouts can be found in /usr/share/qemu/keymaps.<br />
<br />
<pre><br />
qemu -k [keymap] [disk_image]<br />
</pre><br />
<br />
===Starting qemu virtual machines on boot===<br />
To run qemu VM's on boot you can use following rc-script and config.<br />
<br />
{| border="1"<br />
|+ Config file options<br />
|-<br />
| QEMU_MACHINES || List of VMs to start<br />
|-<br />
| qemu_${vm}_type || QEMU binary to call. If specified will be prepended with '/usr/bin/qemu-' and that binary will be used to start VM. I.e. you can boot e.g. qemu-system-arm images with qemu_my_arm_vm_type="system-arm". If not specified, '/usr/bin/qemu' will be used.<br />
|-<br />
| qemu_${vm} || QEMU command line to start with. Will always be prepended with '-name ${vm} -pidfile /var/run/qemu/${vm}.pid -daemonize -nographic'.<br />
|-<br />
| qemu_${vm}_haltcmd || Command to shutdown VM safely. I'm using '-monitor telnet:..' and poweroff my VMs via acpi by sending 'system_powerdown' to monitor. You can use ssh or some other ways.<br />
|-<br />
| qemu_${vm}_haltcmd_wait || How much time to wait for safe VM shutdown. Default is 30 seconds. rc-script will kill qemu process after this timeout.<br />
|}<br />
<br />
Config file example:<br />
{{File|name=/etc/conf.d/qemu.conf|content=<nowiki><br />
# VM's that should be started on boot<br />
# use the ! prefix to disable starting/stopping a VM<br />
QEMU_MACHINES=(vm1 vm2)<br />
<br />
# NOTE: following options will be prepended to qemu_${vm}<br />
# -name ${vm} -pidfile /var/run/qemu/${vm}.pid -daemonize -nographic<br />
<br />
qemu_vm1_type="system-x86_64"<br />
<br />
qemu_vm1="-enable-kvm -m 512 -hda /dev/mapper/vg0-vm1 -net nic,macaddr=DE:AD:BE:EF:E0:00 \<br />
-net tap,ifname=tap0 -serial telnet:localhost:7000,server,nowait,nodelay \<br />
-monitor telnet:localhost:7100,server,nowait,nodelay -vnc :0"<br />
<br />
qemu_vm1_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7100" # or netcat/ncat<br />
<br />
# You can use other ways to shutdown your VM correctly<br />
#qemu_vm1_haltcmd="ssh powermanager@vm1 sudo poweroff"<br />
<br />
# By default rc-script will wait 30 seconds before killing VM. Here you can change this timeout.<br />
#qemu_vm1_haltcmd_wait="30"<br />
<br />
qemu_vm2="-enable-kvm -m 512 -hda /srv/kvm/vm2.img -net nic,macaddr=DE:AD:BE:EF:E0:01 \<br />
-net tap,ifname=tap1 -serial telnet:localhost:7001,server,nowait,nodelay \<br />
-monitor telnet:localhost:7101,server,nowait,nodelay -vnc :1"<br />
<br />
qemu_vm2_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7101"<br />
</nowiki>}}<br />
<br />
rc-script:<br />
{{File|name=/etc/rc.d/qemu|content=<nowiki><br />
#!/bin/bash<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
[ -f /etc/conf.d/qemu.conf ] && source /etc/conf.d/qemu.conf<br />
<br />
PIDDIR=/var/run/qemu<br />
QEMU_DEFAULT_FLAGS='-name ${vm} -pidfile ${PIDDIR}/${vm}.pid -daemonize -nographic'<br />
QEMU_HALTCMD_WAIT=30<br />
<br />
case "$1" in<br />
start)<br />
[ -d "${PIDDIR}" ] || mkdir -p "${PIDDIR}"<br />
for vm in "${QEMU_MACHINES[@]}"; do<br />
if [ "${vm}" = "${vm#!}" ]; then<br />
stat_busy "Starting QEMU vm: ${vm}"<br />
eval vm_cmdline="\$qemu_${vm}"<br />
eval vm_type="\$qemu_${vm}_type"<br />
<br />
if [ -n "${vm_type}" ]; then<br />
vm_cmd="/usr/bin/qemu-${vm_type}"<br />
else<br />
vm_cmd='/usr/bin/qemu'<br />
fi<br />
<br />
eval "qemu_flags=\"${QEMU_DEFAULT_FLAGS}\""<br />
<br />
${vm_cmd} ${qemu_flags} ${vm_cmdline} >/dev/null<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
stat_done<br />
fi<br />
fi<br />
done<br />
add_daemon qemu<br />
;;<br />
<br />
stop)<br />
for vm in "${QEMU_MACHINES[@]}"; do<br />
if [ "${vm}" = "${vm#!}" ]; then<br />
# check pidfile presence and permissions<br />
if [ ! -r "${PIDDIR}/${vm}.pid" ]; then<br />
continue<br />
fi<br />
<br />
stat_busy "Stopping QEMU vm: ${vm}"<br />
<br />
eval vm_haltcmd="\$qemu_${vm}_haltcmd"<br />
eval vm_haltcmd_wait="\$qemu_${vm}_haltcmd_wait"<br />
vm_haltcmd_wait=${vm_haltcmd_wait:-${QEMU_HALTCMD_WAIT}}<br />
vm_pid=$(cat ${PIDDIR}/${vm}.pid)<br />
<br />
# check process existence<br />
if ! kill -0 ${vm_pid} 2>/dev/null; then<br />
stat_done<br />
rm -f "${PIDDIR}/${vm}.pid"<br />
continue<br />
fi<br />
<br />
# Try to shutdown VM safely<br />
_vm_running='yes'<br />
if [ -n "${vm_haltcmd}" ]; then<br />
eval ${vm_haltcmd} >/dev/null<br />
<br />
_w=0<br />
while [ "${_w}" -lt "${vm_haltcmd_wait}" ]; do<br />
sleep 1<br />
if ! kill -0 ${vm_pid} 2>/dev/null; then<br />
# no such process<br />
_vm_running=''<br />
break<br />
fi<br />
_w=$((_w + 1))<br />
done<br />
<br />
else<br />
# No haltcmd - kill VM unsafely<br />
_vm_running='yes'<br />
fi<br />
<br />
if [ -n "${_vm_running}" ]; then<br />
# kill VM unsafely<br />
kill ${vm_pid} 2>/dev/null<br />
sleep 1<br />
fi<br />
<br />
# report status<br />
if kill -0 ${vm_pid} 2>/dev/null; then<br />
# VM is still alive<br />
#kill -9 ${vm_pid}<br />
stat_fail<br />
else<br />
stat_done<br />
fi<br />
<br />
# remove pidfile<br />
rm -f "${PIDDIR}/${vm}.pid"<br />
fi<br />
done<br />
rm_daemon qemu<br />
;;<br />
<br />
restart)<br />
$0 stop<br />
sleep 1<br />
$0 start<br />
;;<br />
<br />
*)<br />
echo "usage: $0 {start|stop|restart}"<br />
<br />
esac<br />
</nowiki>}}<br />
<br />
===External links===<br />
A very good qemu guide by AlienBOB: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:qemu</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=QEMU&diff=137677QEMU2011-04-19T10:52:59Z<p>AndreasBWagner: alternative VDE method</p>
<hr />
<div>[[Category:Emulators (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[fr:Qemu]]<br />
{{i18n|QEMU}}<br />
<br />
From the [http://wiki.qemu.org/Main_Page QEMU about page],<br />
<blockquote><br />
QEMU is a generic and open source machine emulator and virtualizer.<br />
<br /><br /><br />
When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performances.<br />
<br /><br /><br />
When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. A host driver called the QEMU accelerator (also known as KQEMU) is needed in this case. QEMU supports virtualization when executing under the Xen hypervisor or using the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, server and embedded PowerPC, and S390 guests. The virtualizer mode requires that both the host and guest machine use x86 compatible processors.<br />
<br /><br />
</blockquote><br />
<br />
=== Difference between qemu and qemu-kvm ===<br />
<br />
Depending on your needs, you can choose either to install upstream qemu or qemu-kvm from the [extra] repository. Upstream qemu is a pure emulator, with no hardware acceleration (actually, it does have initial KVM support when qemu is started with -enable-kvm parameter, but this implementation is still buggy and nowhere as complete as in qemu-kvm, many functions still doesn't work). Upstream qemu is capable of emulating many different platforms (arm, i386, m68k, mips, ppc, sparc, x86_64, etc). On the other hand you have qemu-kvm, which is qemu (i386 and x86_64 architecture support only) with KVM (kernel virtual machine) additions, allowing you to run virtual machines at close to native speed. qemu-kvm is the version you want if you have a capable CPU and only need to run virtual machines for the i386 and x86_64 architecture (Linux, Windows, BSD, etc).<br />
<br />
Not all processor supports kvm. You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list ] of compatible processors. For Intel processors, see also the [http://ark.intel.com/VTList.aspx Intel® Virtualization Technology List].<br />
<br />
=== Installing QEMU ===<br />
<br />
To install the machine emulator version:<br />
<pre><br />
$ sudo pacman -S qemu<br />
</pre><br />
To install the KVM version (please see the page on [[Kvm]] for more details):<br />
<pre><br />
$ sudo pacman -S qemu-kvm<br />
</pre><br />
<br />
=== Choosing Windows version===<br />
Qemu can run any version of Windows. However, 98, Me and XP will run at quite a low speed. You should choose either Windows 95 or Windows 2000. Surprisingly, 2000 seems to run faster than 98. The fastest one is 95, which can from time to time make you forget that you are running an emulator :)<br />
<br />
If you own both Win95 and win98/winme, then 98lite (from http://www.litepc.com) might be worth trying. It decouples Internet Explorer from operating system and replaces it with original Windows 95 Explorer. It also enables you to do a minimal Windows installation, without all the bloat you normally cannot disable. This might be the best option, because you get the smallest, fastest and most stable Windows this way.<br />
<br />
=== Creating the hard disk image===<br />
To run qemu you will probably need a hard disk image. This is a file which stores the contents of the emulated hard disk.<br />
<br />
Use the command:<br />
<pre><br />
qemu-img create -f qcow2 win.qcow 4G<br />
</pre><br />
to create the image file named "win.qcow". The "4G" parameter specifies the size of the disk - in this case 4 GB. You can use suffix M for megabytes (for example "256M"). You shouldn't worry too much about the size of the disk - the qcow2 format compresses the image so that the empty space doesn't add up to the size of the file.<br />
<br />
=== Preparing the installation media===<br />
The installation CD-ROM/floppy shouldn't be mounted, because Qemu accesses the media directly. It is a good idea to dump CD-ROM and/or floppy to a file, because it both improves performance and doesn't require you to have direct access to the devices (that is, you can run Qemu as a regular user). For example, if the CD-ROM device node is named "/dev/cdrom", you can dump it to a file with the command:<br />
<pre><br />
dd if=/dev/cdrom of=win98icd.iso<br />
</pre><br />
<br />
Do the same for floppies:<br />
<br />
<pre><br />
dd if=/dev/fd of=win95d1.img<br />
...<br />
</pre><br />
<br />
When you need to replace floppies within qemu, just copy the contents of one floppy over another. For this reason, it is useful to create a special file that will hold the current floppy:<br />
<br />
<pre><br />
touch floppy.img<br />
</pre><br />
<br />
=== Installing the operating system===<br />
<br />
This is the first time you will need to start the emulator.<br />
One thing to keep in mind: when you click inside qemu window, the mouse pointer is grabbed. To release it press Ctrl+Alt.<br />
<br />
If you need to use a bootable floppy, run Qemu with:<br />
<pre><br />
qemu -cdrom [[cdrom''image]] -fda [[floppy''image]] -boot a [[hd_image]]<br />
</pre><br />
or if you are on a x86_64 system (will avoid many problems afterwards):<br />
<pre><br />
qemu-system-x86_64 -cdrom [[cdrom''image]] -fda [[floppy''image]] -boot a [[hd_image]]<br />
</pre><br />
<br />
If your CD-ROM is bootable or you are using iso files, run Qemu with:<br />
<pre><br />
qemu -cdrom [[cdrom''image]] -boot d [[hd''image]]<br />
</pre><br />
or if you are on a x86_64 system (will avoid many problems afterwards):<br />
<pre><br />
qemu-system-x86_64 -cdrom [[cdrom''image]] -boot d [[hd''image]]<br />
</pre><br />
Now partition the virtual hard disk, format the partitions and install the OS.<br />
<br />
A few hints:<br />
# If you are using Windows 95 boot floppy, then choosing SAMSUNG as the type of CD-ROM seems to work<br />
# There are problems when installing Windows 2000. Windows setup will generate a lot of edb*.log files, one after the other containing nothing but blank spaces in C:\WINNT\SECURITY which quickly fill the virtual harddisk. A workaround is to open a Windows command prompt as early as possible during setup (by pressing Shift-F10) which will allow you to remove these log files as they appear by typing :<br />
<pre><br />
del %windir%\security\*.log<br />
</pre><br />
<br />
{{Note| According to the official QEMU website, "Windows 2000 has a bug which gives a disk full problem during its installation. When installing it, use the `-win2k-hack' QEMU option to enable a specific workaround. After Windows 2000 is installed, you no longer need this option (this option slows down the IDE transfers)."}}<br />
<br />
=== Running the system===<br />
<br />
To run the system simply type:<br />
<pre><br />
qemu [hd_image]<br />
</pre><br />
<br />
A good idea is to use overlay images. This way you can create hard disk image once and tell Qemu to store changes in external file.<br />
You get rid of all the instability, because it is so easy to revert to previous system state :)<br />
<br />
To create an overlay image, type:<br />
<pre><br />
qemu-img create -b [[base''image]] -f qcow [[overlay''image]]<br />
</pre>2<br />
Substitute the hard disk image for base_image (in our case win.qcow). After that you can run qemu with:<br />
<pre><br />
qemu [overlay_image]<br />
</pre><br />
or if you are on a x86_64 system:<br />
<pre><br />
qemu-system-x86_64 [overlay_image]<br />
</pre><br />
and the original image will be left untouched. One hitch, the base image cannot be renamed or moved, the overlay remembers the base's full path.<br />
<br />
=== Moving data between host and guest OS===<br />
<br />
If you have servers on your host OS they will be accessible with the ip-address 10.0.2.2 without any further configuration. So you could just FTP or SSH, etc to 10.0.2.2 from windows to share data, or if you would like to use samba:<br />
<br />
==== Samba====<br />
<br />
Qemu supports SAMBA which allows you to mount host directories during the emulation. It seems that there is an incompatibility with SAMBA 3.x. and some versions of qemu. But at least with a current snapshot of qemu it should be working.<br />
<br />
First, you need to have a working samba installation. Then add the following section to your smb.conf:<br />
<pre><br />
[qemu]<br />
comment = Temporary file space<br />
path = /tmp<br />
read only = no<br />
public = yes<br />
</pre><br />
<br />
Now start qemu with:<br />
<pre><br />
qemu [hd_image] -smb qemu<br />
</pre><br />
<br />
Then you should be able to access your host's smb-server with the ip-address 10.0.2.2. If you're running Win9x as guest OS, you may need to add<br />
<pre><br />
10.0.2.2 smbserver<br />
</pre><br />
to c:\windows\lmhosts (Win9x has Lmhosts.sam as a SAMple, rename it!).<br />
<br />
==== Mounting the hard disk image====<br />
<br />
Fortunately there is a way to mount the hard disk image with a loopback device. Login as root, make a temporary directory and mount the image with the command:<br />
<pre><br />
mount -o loop,offset=32256 [[hd''image]] [[tmp''dir]]<br />
</pre><br />
Now you can copy data in both directions. When you are done, umount with:<br />
<pre><br />
umount [hd_image]<br />
</pre><br />
The drawback of this solution is that you cannot use it with qcow images (including overlay images). So you need to create you images without \"-f qcow\" option. Tip: create a second, raw harddrive image. This way you'll be able to transfer data easily and use qcow overlay images for the primary drive.<br />
<br />
REMEMBER: never run qemu when the image is mounted!<br />
<br />
==== Using any real partition as the single primary partition of a hard disk image ====<br />
<br />
Sometimes, you may wish to use one of your system partition from within qemu (for instance, if you wish booting both your real machine or qemu using a given partition as root). You can do this using software RAID in linear mode (you need the linear.ko kernel driver) and a loopback device: the trick is to dynamically prepend a master boot record (MBR) to the real partition you wish to embed in a qemu raw disk image.<br />
<br />
Suppose you have a plain, unmounted /dev/hdaN partition with some filesystem on it you wish to make part of a qemu disk image. First, you create some small file to hold the MBR:<br />
<br />
dd if=/dev/zero of=/path/to/mbr count=32<br />
<br />
Here, a 16 KB (32 * 512 bytes) file is created. It is important not to make it too small (even if the MBR only needs a single 512 bytes block), since the smaller it will be, the smaller the chunk size of the software RAID device will have to be, which could have an impact on performance. Then, you setup a loopback device to the MBR file:<br />
<br />
losetup -f /path/to/mbr<br />
<br />
Let's assume the resulting device is /dev/loop0, because we woudn't already have been using other loopbacks. Next step is to create the "merged" MBR + /dev/hdaN disk image using software RAID:<br />
<br />
modprobe linear<br />
mdadm --build --verbose /dev/md0 --chunk=16 --level=linear --raid-devices=2 /dev/loop0 /dev/hdaN<br />
<br />
The resulting /dev/md0 is what you will use as a qemu raw disk image (don't forget to set the permissions so that the emulator can access it). The last (and somewhat tricky) step is to set the disk configuration (disk geometry and partitions table) so that the primary partition start point in the MBR matches the one of /dev/hdaN inside /dev/md0 (an offset of exactly 16 * 512 = 16384 bytes in this example). Do this using fdisk on the host machine, not in the emulator: the default raw disc detection routine from qemu often results in non kilobyte-roundable offsets (such as 31.5 KB, as in the previous section) that cannot be managed by the software RAID code. Hence, from the the host:<br />
<br />
fdisk /dev/md0<br />
<br />
Press 'x' to enter the expert menu. Set number of 's'ectors per track so that the size of one<br />
cylinder matches the size of your mbr file. For two heads and the sector size is 512, the number of<br />
sectors per track should be 16, so we get cylinders of size 2x16x512=16k. Now, press 'r' to return<br />
to the main menu. Press 'p' and check that now the cylinder size is 16k.<br />
Now, create a single primary partition corresponding to /dev/hdaN. It should start at cylinder 2 and end at the end of the disk (note that the number of cylinders now differs from what it was when you entered fdisk. Finally, 'w'rite the result to the file: you are done. You know have a partition you can mount directly from your host, as well as part of a qemu disk image: <br />
<br />
qemu -hdc /dev/md0 [...]<br />
<br />
You can of course safely set any bootloader on this disk image using qemu, provided the original /boot/hdaN partition contains the necessary tools.<br />
<br />
=== Optimizing Windows 9x CPU usage===<br />
<br />
Windows 9x doesn't use hlt instruction, so the emulator always eats up 100% CPU even if no computation is being done. Grab the file http://www.user.cityline.ru/~maxamn/amnhltm.zip, unpack it, copy it to the image and run the .bat file.<br />
<br />
=== Using the QEmu Accelerator Module===<br />
<br />
{{Note|This method is no longer supported. The [[Kvm]] module should be used instead.}}<br />
<br />
The developers of qemu have created an optional kernel module to accelerate qemu to sometimes near native levels. This should be loaded with the option<br />
major=0<br />
to automate the creation of the required /dev/kqemu device. The following command<br />
echo "options kqemu major=0" >> /etc/modprobe.d/modprobe.conf<br />
will amend modprobe.conf to ensure that the module option is added every time the module is loaded.<br />
<br />
Append kqemu to the list of modules in /etc/rc.conf to have it loaded the next time the your system starts. To load it now without rebooting, do the following as root<br />
modprobe kqemu<br />
<br />
If you are using Linux, Windows 2000 or Windows XP as guest OS, start qemu with the command line option<br />
qemu [...] -kernel-kqemu<br />
or, if you are on a x86_64 system (will not work otherwise):<br />
qemu-system-x86_64 [...] -kernel-kqemu<br />
This enables full virtualization and thus improves speed considerably.<br />
<br />
=== Using the Kernel-based Virtual Machine ===<br />
<br />
[[Kvm]] is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. Using [[Kvm]], one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.<br />
<br />
This technology requires an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions. It is included in the mainline linux kernel since 2.6.20 and is enabled by default in the Arch Linux kernel.<br />
<br />
Even though qemu in recent versions do have initial KVM support (qemu --enable-kvm), it is not recommended to use this, as many KVM-related functions still haven't been implemented in upstream qemu. Instead, you should go for the qemu-kvm package in extra, which is released by the KVM development team and contain all of the latest features (and bugfixes) of KVM userspace. Please refer to the [[Kvm]] page itself, for more information on using QEMU with KVM on Arch Linux.<br />
<br />
To take advantage of [[Kvm]], you simply need a compatible processor (the following command must return something on screen)<br />
<br />
egrep '^flags.*(vmx|svm)' /proc/cpuinfo<br />
<br />
And load the appropriate module from your rc.conf<br />
<br />
* For Intel® processors add this module to your MODULES array in /etc/rc.conf<br />
<br />
kvm-intel<br />
<br />
* for AMD® processors add this module to your MODULES array in /etc/rc.conf<br />
<br />
kvm-amd<br />
<br />
Also, you will need to yourself to the group 'kvm'.<br />
<br />
===Basic Networking===<br />
To add basic networking to your virtual machine, you may have to simply load qemu with those options: -net nic,vlan=1 -net user,vlan=1. For example, to load a cdrom, you could use:<br />
qemu -kernel-kqemu -no-acpi -net nic,vlan=1 -net user,vlan=1 -cdrom dsl-4.3rc1.iso<br />
Note that this only supports the TCP and UDP protocols. In particular ICMP and thus ping will not work.<br />
<br />
=== Tap Networking with QEMU ===<br />
<br />
==== Basic Idea ====<br />
<br />
Tap networking in QEMU lets virtual machines register themselves as though with separate ethernet adapters and have their traffic bridged directly onto your local area network. This is sometimes very desireable, if you want your virtual machines to be able to talk to each other, or for other machines on your LAN to talk to virtual machines.<br />
<br />
==== Security Warning ====<br />
<br />
You probably <b>should not</b> use this networking method if your host Arch machine is directly on the Internet. It can expose your virtual machines directly to attack!<br />
<br />
In general, Arch disclaims any responsibility for security implications (or implications of any kind, really) from following these instructions.<br />
<br />
==== Nitty Gritty ====<br />
<br />
To set all this up, you'll need to install the following packages:<br />
bridge-utils (for brctl, to manipulate bridges)<br />
uml_utilities (for tunctl, to manipulate taps)<br />
sudo (for manipulating bridges and tunnels as root)<br />
<br />
# pacman -S bridge-utils uml_utilities sudo<br />
<br />
We will replace the normal ethernet adapter with a bridge adapter and bind the normal ethernet adapter to it. See http://en.gentoo-wiki.com/wiki/KVM#Networking_2 .<br />
<br />
Make sure IPv4 forwarding is set. You should have the line "systcl net.ipv4.ip_forward=1" in your /etc/sysctl.conf.<br />
<br />
Take the following steps:<br />
<br />
1. Add <code>bridge</code> and <code>tun</code> to your <code>MODULES</code> line in <code>/etc/rc.conf</code>:<br />
<br />
MODULES=( ... bridge tun)<br />
<br />
2. Configure your bridge <code>br0</code> to have your real ethernet adapter (herein assumed <code>eth0</code>) in it, in <code>/etc/conf.d/bridges</code>:<br />
bridge_br0="eth0"<br />
control_br0="setfd br0 0"<br />
BRIDGE_INTERFACES=(br0)<br />
<br />
{{Note|This is not described anywhere, but adding the control_br0 line is vital for the bridge to work! For more details look here: https://bugs.archlinux.org/task/16625}}<br />
<br />
3. Change your networking configuration so that you just bring up your real ethernet adapter without configuring it, allowing real configuration to happen on the bridge interface. In <code>/etc/rc.conf</code>:<br />
<br />
eth0="eth0 up"<br />
br0="dhcp"<br />
INTERFACES=(eth0 br0)<br />
<br />
Remember, especially if you're doing DHCP, it's essential that the bridge comes up AFTER the real adapter, otherwise the bridge won't be able to talk to anything to get a DHCP address!<br />
<br />
If DHCP does not work, try with a static IP address in <code>/etc/rc.conf</code>:<br />
<br />
eth0="eth0 0.0.0.0"<br />
br0="br0 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255"<br />
INTERFACES=(eth0 br0)<br />
gateway="default gw 192.168.0.1"<br />
ROUTES=(gateway)<br />
<br />
and then in <code>/etc/resolv.conf</code>:<br />
<br />
domain lan<br />
nameserver 192.168.0.1<br />
<br />
4. Install the script that QEMU uses to bring up the tap adapter in <code>/etc/qemu-ifup</code> with root:kvm 750 permissions:<br />
<br />
#!/bin/sh<br />
<br />
echo "Executing /etc/qemu-ifup"<br />
echo "Bringing up $1 for bridged mode..."<br />
sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br />
echo "Adding $1 to br0..."<br />
sudo /usr/sbin/brctl addif br0 $1<br />
sleep 2<br />
<br />
5. Use <code>visudo</code> to add the following to your <code>sudoers</code> file:<br />
<br />
Cmnd_Alias QEMU=/sbin/ifconfig,/sbin/modprobe,/usr/sbin/brctl,/usr/bin/tunctl<br />
%kvm ALL=NOPASSWD: QEMU<br />
<br />
6. Make sure the user(s) wishing to use this new functionality are in the kvm group. Exit and log in again if necessary.<br />
<br />
7. You launch qemu using the following <code>run-qemu</code> script:<br />
<br />
#!/bin/bash<br />
USERID=`whoami`<br />
IFACE=$(sudo tunctl -b -u $USERID)<br />
<br />
qemu-kvm -net nic -net tap,ifname="$IFACE" $*<br />
<br />
sudo tunctl -d $IFACE &> /dev/null<br />
<br />
Then to launch a VM, do something like this<br />
$ run-qemu -hda myvm.img -m 512 -vga std<br />
<br />
8. If you can't get a DHCP address in the host, it might be because the iptables are up by default in the bridge. In that case (from http://www.linux-kvm.org/page/Networking ):<br />
<br />
# cd /proc/sys/net/bridge<br />
# ls<br />
bridge-nf-call-arptables bridge-nf-call-iptables<br />
bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged<br />
# for f in bridge-nf-*; do echo 0 > $f; done<br />
<br />
And when you still can't get networking to work, see: http://wiki.archlinux.org/index.php/Linux_Containers#Bridge_device_setup<br />
<br />
=== Networking with [[VDE2]] ===<br />
<br />
==== What is VDE? ====<br />
<br />
VDE stands for Virtual Distributed Ethernet. It started as an enhancement of [[User-mode Linux|uml]]_switch. It's a toolbox to manage virtual networks.<br />
<br />
The idea is to create virtual switches, which are basically sockets, and to "plug" both physical and virtual machines in them. The configuration I show here is quite simple; However, VDE is much more powerfull than this, it can plug virtual switches together, run them on different hosts and monitor the traffic in the switches. I let you read [http://wiki.virtualsquare.org/wiki/index.php/Main_Page the documentation of the project].<br />
<br />
The advantage of this method is you don't have to add sudo privileges to your users. Regular users should not be allowed to run modprobe.<br />
<br />
==== Basics ====<br />
<br />
VDE is in extra, so...<br />
<br />
# pacman vde2<br />
<br />
In my config, i use tun/tap to create a virtual interface on my host. Load the tun module ( or add it to your rc.conf ):<br />
<br />
# modprobe tun<br />
<br />
Let's create the virtual switch:<br />
<br />
# vde_switch -tap tap0 -daemon -mod 660 -group kvm<br />
<br />
This line creates the switch, create tap0, "plugs" it, and allows the users of the group kvm to use it.<br />
<br />
The interface is pluged, but not configured yet. Just do it:<br />
<br />
# ifconfig tap0 192.168.100.254 netmask 255.255.255.0<br />
<br />
That's all! Now, you just have to run kvm with this -net options as a normal user:<br />
<br />
$ qemu-kvm -net nic -net vde -hda ...<br />
<br />
Configure your guest as you would do in a physical network. I gave them static addresses and let them access the WAN using ip forwarding and masquerade on my host:<br />
<br />
# echo "1" > /proc/sys/net/ipv4/ip_forward<br />
# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE<br />
<br />
==== Putting it together ====<br />
<br />
I added this init script to run all this at startup :<br />
<br />
#!/bin/bash <br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
case "$1" in<br />
start)<br />
stat_busy "Starting VDE Switch"<br />
vde_switch -tap tap0 -daemon -mod 660 -pidfile $PIDFILE -group kvm<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
echo "1" > /proc/sys/net/ipv4/ip_forward && \<br />
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE && \<br />
ifconfig tap0 192.168.100.254 netmask 255.255.255.0 && \<br />
stat_done || stat_fail<br />
fi<br />
;;<br />
stop)<br />
stat_busy "Stopping VDE Switch"<br />
# err.. well, i should remove the switch here...<br />
stat_done<br />
;;<br />
restart)<br />
$0 stop<br />
sleep 1<br />
# Aem.. As long as stop) isn't implemented, this just fails<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {start|stop|restart}" <br />
esac<br />
exit 0<br />
<br />
Well, i know it is dirty and could be more configurable. Feel free to improve it. Vde has a rc srcipt too, but i had to make one anyway for the ip forwarding stuff.<br />
<br />
=====Alternative method=====<br />
<br />
If the above method doesn't work or you don't want to mess with kernel configs, TUN, dnsmasq and iptables. You can do the following for the same result.<br />
<br />
vde_switch -daemon<br />
<br />
slirpvde --dhcp --daemon<br />
<br />
Then to start the vm with a connection to the network of the host:<br />
<br />
kvm -net nic,macaddr=52:54:00:00:EE:03 -net vde whatever.qcow<br />
<br />
=== Graphics ===<br />
QEMU can use different graphic outputs, std,cirrus,vmware,qxl,xenfs and vnc.<br />
With the vnc option you can run your guest standalone and connect to it via vnc. Other options are using std,vmware,cirrus:<br />
====std====<br />
With -vga std you can get a resolution up to 2560 x 1600 pixels.<br />
<br />
====vmware====<br />
Althought it's a bit buggy, it performances better than std and cirrus, on the guest install the vmware drivers<br />
pacman -S xf86-video-vmware xf86-input-vmmouse<br />
====windows guest====<br />
If you use a windows guest you might want to use rdp to connect to your guest vm. Use: (if you are using a vlan or aren't in the same network as the guest)<br />
qemu -nographic -net user,hostfwd=tcp::5555-:3389<br />
The connect with either rdesktop or freerdp to the guest, for example:<br />
xfreerdp -g 2048x1152 localhost:5555 -z -x lan<br />
<br />
=== Front-ends for Qemu ===<br />
<br />
There are a few GUI Front-ends for Qemu:<br />
<br />
* community/qemu-launcher<br />
* community/qemulator<br />
* community/qtemu<br />
<br />
===Keyboard seems broken / Arrow keys don't work===<br />
<br />
Should you find that some of your keys do not work or "press" the wrong key (in particular, the arrow keys), you likely need to specify your keyboard layout as an option. The keyboard layouts can be found in /usr/share/qemu/keymaps.<br />
<br />
<pre><br />
qemu -k [keymap] [disk_image]<br />
</pre><br />
<br />
===Starting qemu virtual machines on boot===<br />
To run qemu VM's on boot you can use following rc-script and config.<br />
<br />
{| border="1"<br />
|+ Config file options<br />
|-<br />
| QEMU_MACHINES || List of VMs to start<br />
|-<br />
| qemu_${vm}_type || QEMU binary to call. If specified will be prepended with '/usr/bin/qemu-' and that binary will be used to start VM. I.e. you can boot e.g. qemu-system-arm images with qemu_my_arm_vm_type="system-arm". If not specified, '/usr/bin/qemu' will be used.<br />
|-<br />
| qemu_${vm} || QEMU command line to start with. Will always be prepended with '-name ${vm} -pidfile /var/run/qemu/${vm}.pid -daemonize -nographic'.<br />
|-<br />
| qemu_${vm}_haltcmd || Command to shutdown VM safely. I'm using '-monitor telnet:..' and poweroff my VMs via acpi by sending 'system_powerdown' to monitor. You can use ssh or some other ways.<br />
|-<br />
| qemu_${vm}_haltcmd_wait || How much time to wait for safe VM shutdown. Default is 30 seconds. rc-script will kill qemu process after this timeout.<br />
|}<br />
<br />
Config file example:<br />
{{File|name=/etc/conf.d/qemu.conf|content=<nowiki><br />
# VM's that should be started on boot<br />
# use the ! prefix to disable starting/stopping a VM<br />
QEMU_MACHINES=(vm1 vm2)<br />
<br />
# NOTE: following options will be prepended to qemu_${vm}<br />
# -name ${vm} -pidfile /var/run/qemu/${vm}.pid -daemonize -nographic<br />
<br />
qemu_vm1_type="system-x86_64"<br />
<br />
qemu_vm1="-enable-kvm -m 512 -hda /dev/mapper/vg0-vm1 -net nic,macaddr=DE:AD:BE:EF:E0:00 \<br />
-net tap,ifname=tap0 -serial telnet:localhost:7000,server,nowait,nodelay \<br />
-monitor telnet:localhost:7100,server,nowait,nodelay -vnc :0"<br />
<br />
qemu_vm1_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7100" # or netcat/ncat<br />
<br />
# You can use other ways to shutdown your VM correctly<br />
#qemu_vm1_haltcmd="ssh powermanager@vm1 sudo poweroff"<br />
<br />
# By default rc-script will wait 30 seconds before killing VM. Here you can change this timeout.<br />
#qemu_vm1_haltcmd_wait="30"<br />
<br />
qemu_vm2="-enable-kvm -m 512 -hda /srv/kvm/vm2.img -net nic,macaddr=DE:AD:BE:EF:E0:01 \<br />
-net tap,ifname=tap1 -serial telnet:localhost:7001,server,nowait,nodelay \<br />
-monitor telnet:localhost:7101,server,nowait,nodelay -vnc :1"<br />
<br />
qemu_vm2_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7101"<br />
</nowiki>}}<br />
<br />
rc-script:<br />
{{File|name=/etc/rc.d/qemu|content=<nowiki><br />
#!/bin/bash<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
[ -f /etc/conf.d/qemu.conf ] && source /etc/conf.d/qemu.conf<br />
<br />
PIDDIR=/var/run/qemu<br />
QEMU_DEFAULT_FLAGS='-name ${vm} -pidfile ${PIDDIR}/${vm}.pid -daemonize -nographic'<br />
QEMU_HALTCMD_WAIT=30<br />
<br />
case "$1" in<br />
start)<br />
[ -d "${PIDDIR}" ] || mkdir -p "${PIDDIR}"<br />
for vm in "${QEMU_MACHINES[@]}"; do<br />
if [ "${vm}" = "${vm#!}" ]; then<br />
stat_busy "Starting QEMU vm: ${vm}"<br />
eval vm_cmdline="\$qemu_${vm}"<br />
eval vm_type="\$qemu_${vm}_type"<br />
<br />
if [ -n "${vm_type}" ]; then<br />
vm_cmd="/usr/bin/qemu-${vm_type}"<br />
else<br />
vm_cmd='/usr/bin/qemu'<br />
fi<br />
<br />
eval "qemu_flags=\"${QEMU_DEFAULT_FLAGS}\""<br />
<br />
${vm_cmd} ${qemu_flags} ${vm_cmdline} >/dev/null<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
stat_done<br />
fi<br />
fi<br />
done<br />
add_daemon qemu<br />
;;<br />
<br />
stop)<br />
for vm in "${QEMU_MACHINES[@]}"; do<br />
if [ "${vm}" = "${vm#!}" ]; then<br />
# check pidfile presence and permissions<br />
if [ ! -r "${PIDDIR}/${vm}.pid" ]; then<br />
continue<br />
fi<br />
<br />
stat_busy "Stopping QEMU vm: ${vm}"<br />
<br />
eval vm_haltcmd="\$qemu_${vm}_haltcmd"<br />
eval vm_haltcmd_wait="\$qemu_${vm}_haltcmd_wait"<br />
vm_haltcmd_wait=${vm_haltcmd_wait:-${QEMU_HALTCMD_WAIT}}<br />
vm_pid=$(cat ${PIDDIR}/${vm}.pid)<br />
<br />
# check process existence<br />
if ! kill -0 ${vm_pid} 2>/dev/null; then<br />
stat_done<br />
rm -f "${PIDDIR}/${vm}.pid"<br />
continue<br />
fi<br />
<br />
# Try to shutdown VM safely<br />
_vm_running='yes'<br />
if [ -n "${vm_haltcmd}" ]; then<br />
eval ${vm_haltcmd} >/dev/null<br />
<br />
_w=0<br />
while [ "${_w}" -lt "${vm_haltcmd_wait}" ]; do<br />
sleep 1<br />
if ! kill -0 ${vm_pid} 2>/dev/null; then<br />
# no such process<br />
_vm_running=''<br />
break<br />
fi<br />
_w=$((_w + 1))<br />
done<br />
<br />
else<br />
# No haltcmd - kill VM unsafely<br />
_vm_running='yes'<br />
fi<br />
<br />
if [ -n "${_vm_running}" ]; then<br />
# kill VM unsafely<br />
kill ${vm_pid} 2>/dev/null<br />
sleep 1<br />
fi<br />
<br />
# report status<br />
if kill -0 ${vm_pid} 2>/dev/null; then<br />
# VM is still alive<br />
#kill -9 ${vm_pid}<br />
stat_fail<br />
else<br />
stat_done<br />
fi<br />
<br />
# remove pidfile<br />
rm -f "${PIDDIR}/${vm}.pid"<br />
fi<br />
done<br />
rm_daemon qemu<br />
;;<br />
<br />
restart)<br />
$0 stop<br />
sleep 1<br />
$0 start<br />
;;<br />
<br />
*)<br />
echo "usage: $0 {start|stop|restart}"<br />
<br />
esac<br />
</nowiki>}}<br />
<br />
===External links===<br />
A very good qemu guide by AlienBOB: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:qemu</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Talk:QEMU&diff=137568Talk:QEMU2011-04-18T02:02:34Z<p>AndreasBWagner: /* vde networking */ my sig</p>
<hr />
<div>To get Qemu Acceleration you must run '''qemu-system-x86_64''' (with the '''-kernel-kqemu''' option), not the default launcher (qemu). --[[User:Nak|Nak]] 0:48, 11 May 2007 (GMT+1)<br />
<br />
== starting qemu using a real partition ==<br />
<br />
I made the description more detailed<br />
<br />
Yurac 29/1/08<br />
<br />
== thoughts / suggestions on networking nitty gritty section ==<br />
<br />
I followed the beginner's guide to installing Arch and setting up rc.conf. I have also installed 'dnsmasq'. When following the QEMU/KVM how-to I was unable to get my bridge interface to see the dhcp server of my modem until I amended my rc.conf to include and bring up the loopback interface i.e. <br />
<pre>lo="lo up"<br />
eth0="eth0 up"<br />
br0="dhcp"<br />
INTERFACES=(lo eth0 br0)<br />
gateway="default gw 192.168.0.1"<br />
ROUTES=(gateway)<br />
</pre><br />
<br />
As this is not part of the beginners rc.conf it might help others that have got stuck with this part to read this and maybe considered, if correct, a useful addition to the how-to. It would be good to get confirmation from those-that-know if this is the best foot forward, so to speak.<br />
<br />
Ed 17/05/10<br />
<br />
== vde networking ==<br />
<br />
The instructions provided for vde networking did not work. Instead I did the following which ''did'' work:<br />
<br />
<code><br />
vde_switch -daemon<br />
<br />
slirpvde --dhcp --daemon<br />
</code><br />
<br />
Then to start the vm with a connection to the network of the host:<br />
<br />
<code><br />
kvm -net nic,macaddr=52:54:00:00:EE:03 -net vde whatever.qcow<br />
</code><br />
<br />
The above method is also less invasive. Any support/objections to replacing the vde networking instructions in the article with these? If the current instructions bring attention to features that the above method does not, how can they integrated?<br />
--[[User:AndreasBWagner|AndreasBWagner]] 22:02, 17 April 2011 (EDT)</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Talk:QEMU&diff=137567Talk:QEMU2011-04-18T02:01:57Z<p>AndreasBWagner: /* vde networking */ new section</p>
<hr />
<div>To get Qemu Acceleration you must run '''qemu-system-x86_64''' (with the '''-kernel-kqemu''' option), not the default launcher (qemu). --[[User:Nak|Nak]] 0:48, 11 May 2007 (GMT+1)<br />
<br />
== starting qemu using a real partition ==<br />
<br />
I made the description more detailed<br />
<br />
Yurac 29/1/08<br />
<br />
== thoughts / suggestions on networking nitty gritty section ==<br />
<br />
I followed the beginner's guide to installing Arch and setting up rc.conf. I have also installed 'dnsmasq'. When following the QEMU/KVM how-to I was unable to get my bridge interface to see the dhcp server of my modem until I amended my rc.conf to include and bring up the loopback interface i.e. <br />
<pre>lo="lo up"<br />
eth0="eth0 up"<br />
br0="dhcp"<br />
INTERFACES=(lo eth0 br0)<br />
gateway="default gw 192.168.0.1"<br />
ROUTES=(gateway)<br />
</pre><br />
<br />
As this is not part of the beginners rc.conf it might help others that have got stuck with this part to read this and maybe considered, if correct, a useful addition to the how-to. It would be good to get confirmation from those-that-know if this is the best foot forward, so to speak.<br />
<br />
Ed 17/05/10<br />
<br />
== vde networking ==<br />
<br />
The instructions provided for vde networking did not work. Instead I did the following which ''did'' work:<br />
<br />
<code><br />
vde_switch -daemon<br />
<br />
slirpvde --dhcp --daemon<br />
</code><br />
<br />
Then to start the vm with a connection to the network of the host:<br />
<br />
<code><br />
kvm -net nic,macaddr=52:54:00:00:EE:03 -net vde whatever.qcow<br />
</code><br />
<br />
The above method is also less invasive. Any support/objections to replacing the vde networking instructions in the article with these? If the current instructions bring attention to features that the above method does not, how can they integrated?</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Jumanji&diff=137213Jumanji2011-04-13T16:55:41Z<p>AndreasBWagner: /* rc file configuration */</p>
<hr />
<div>[[Category:Web Browser (English)]]<br />
<br />
==Overview==<br />
<br />
jumanji is a web browser that provides a minimalistic and space saving interface as well as an easy usage that mainly focuses on keyboard interaction like vimperator does<br />
<br />
===Installation===<br />
====Method 1: AUR (Recommended)====<br />
[http://aur.archlinux.org/packages.php?ID=38684 jumanji] is available from the Arch User Community Repositories.<br />
<br />
====Method 2: From Source====<br />
Grab the source from git, change the config.h as desired, compile and install as follows: <br />
git clone git://pwmt.org/jumanji.git<br />
cd jumanji<br />
make install<br />
<br />
===Commands===<br />
Below are some basic commands that can be used with jumanji <br />
<br />
====Look and Feel====<br />
C-m = Toggle status bar<br />
C-n = Toggle tab bar<br />
<br />
====Page Navigation====<br />
o = enter url to open in same tab<br />
t = enter url to open in new tab<br />
j = scroll down<br />
k = scroll up<br />
h = scroll left<br />
l = scroll right<br />
gg = beginning<br />
G or space = end<br />
C-o = back<br />
C-i = forward<br />
:stop = stop<br />
r = reload<br />
<br />
====Zooming====<br />
zI = zoom_in<br />
zO = zoom_out<br />
z0 = zoom to original size<br />
<br />
====Searching====<br />
/ = search %s<br />
? = search_reverse %s<br />
<br />
====Bookmarks and History====<br />
:bmark = insert bookmark (bookmarks are saved in ~/.config/jumanji/bookmarks)<br />
o <tab> = show bookmarks and history to open in same tab<br />
t <tab> = show bookmarks and history to open in new tab<br />
<br />
====Link Following====<br />
f = spawn numbers next to each hyperlink. Type the number after typing f to follow the link in the same tab [http://www.pwmt.org/jumanji/faq/]<br />
F = spawn numbers next to each hyperlink. Type the number after typing F to follow the link in a new tab<br />
gh = Go to homepage in the same tab<br />
gH = open homepage in a new tab<br />
gf, C-s = view source<br />
gF = view source in a new tab<br />
<br />
====Tabs====<br />
gt or C-Tab = go to next tab<br />
gT or C-S-Tab = go to previous tab<br />
xgt = go to tab number x, where x is any number 0-9<br />
C-w = close tab<br />
<br />
====Exit====<br />
ZZ = exit<br />
C-q = exit<br />
<br />
====rc file configuration====<br />
jumanji allows for a lot of user configuration either by modifying the config.def.h file or through a rc file located at '''~/.config/jumanji/jumanjirc'''. you can set searchengines, homepages, custom stylesheets, user scripts, proxy. Change the default download directory and much more. A sample configuration file below shows how to customize jumanji.<br />
# jumanji configuration<br />
# search engines<br />
searchengine ggl http://www.google.com/search?q=%s<br />
searchengine wiki http://en.wikipedia.org/w/index.php?search=%s<br />
# browser settings<br />
set homepage http://www.google.com/ig<br />
set auto_save 60<br />
set single_instance false<br />
# Use privoxy for adblocking<br />
set proxy localhost:8118 <br />
# look n feel<br />
set font monospace normal 9<br />
set stylesheet file:///home/inxs/.config/jumanji/style.css <br />
# follow hints<br />
script ~/.config/jumanji/scripts/hinting.js<br />
# downloads<br />
set download_dir ~/downloads/<br />
set download_command urxvt -e sh -c "wget --load-cookies ~/.config/jumanji/cookies '%s' -O %s";<br />
# keybindings<br />
map <C-,> nav_history previous<br />
map <C-.> nav_history next<br />
bmap ^DD$ quit<br />
<br />
===Links===<br />
http://www.pwmt.org/projects/jumanji<br />
<br />
http://bbs.archlinux.org/viewtopic.php?id=100505<br />
<br />
====sources====<br />
[http://www.pwmt.org/projects/jumanji jumanji]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Arch_based_distributions_(active)&diff=127885Arch based distributions (active)2011-01-12T20:18:45Z<p>AndreasBWagner: /* Arch Linux Mobile */ fixed broken screenshots link</p>
<hr />
<div>[[Category:About Arch (English)]][[Category:General (English)]]<br />
{{i18n|Arch Based Distributions (Active)}}<br />
<br />
=Specialty Distributions=<br />
== ArchBang ==<br />
ArchBang[http://wiki.archlinux.org/index.php/ArchBang] LIVE CD = Arch Linux w/ OpenBox (inspired from #!) so ArchBang!!!<br />
<br />
*Homepage: http://www.archbang.org/<br />
*Forums: http://archbang.47.forumer.com/<br />
*External Links: http://pdg86.wordpress.com/2010/02/02/release-archbang-1-03/<br />
*Screenshot: http://omploader.org/vM2g3ZA<br />
<br />
An installer is now available with version 2.00 onwards.<br />
<br />
== Arch Hurd ==<br />
Arch Hurd is a port of Arch Linux to the GNU Hurd platform<br />
<br />
*Homepage: http://www.archhurd.org/<br />
*Forums: http://bbs.archhurd.org/<br />
*Wiki: http://wiki.archhurd.org<br />
*Mailing Lists: http://lists.archhurd.org/<br />
<br />
Most discussions happens in #archhurd on irc.freenode.net.<br />
<br />
== Arch Linux Mobile ==<br />
<br />
Arch Linux Mobile provides an ARM optimised port to run on the OpenMoko Freerunner, an open-source smartphone. It is currently undergoing early but active development.<br />
<br />
*Homepage: http://www.archmobile.org/<br />
*Forums: http://bbs.archlinux.org/viewforum.php?id=35<br />
*Documentation: http://www.archmobile.org/trac/wiki<br />
*Screenshots: http://www.archmobile.org/trac/wiki/AM/SuccessStories<br />
*DistroWatch Entry:<br />
<br />
== ArchLinux PPC ==<br />
<br />
''"The goal of the Archlinux PPC porting project is to make our favourite distribution, Arch Linux, available for the PPC architecture. Our strong community is diverse and helpful, and we pride ourselves on the range of skillsets and uses for Arch that stem from it. Please check out the forums and mailing list to get your feet wet. Also glance through the wiki if you want to learn more about Arch."''<br><br />
:<small>Source: [http://archlinuxppc.org/ Arch Linux PPC]</small><br />
<br />
*Homepage: http://archlinuxppc.org/<br />
*Forums: http://bbs.archlinux.org/<br />
*Documentation: http://wiki.archlinux.org/index.php/Main_Page<br />
*Screenshots: <br />
*DistroWatch Entry:<br />
<br />
== ArchPwn ==<br />
<br />
ArchPwn is a security based Linux Live CD/DVD system that aims to be a fully working swiss army knife for pentesting purpose. It is based on the Arch Linux distribution, and follows the Arch philosophy. It keeps the original system intact, and creates on top of it a package repository with all tools that a pentester needs.<br />
<br />
*Homepage: http://www.archpwn.org/index.php/Main_Page<br />
*Forums: <br />
*Documentation: http://www.archpwn.org/index.php/Main_Page<br />
*Screenshots: http://www.archpwn.org/index.php/Screenshots<br />
*DistroWatch Entry:<br />
<br />
== ArchServer ==<br />
<br />
ArchServer is a derivative work of Arch Linux designed to be more stable in order to be suitable for server use.<br />
<br />
*Homepage: http://www.archserver.org<br />
*Forums: http://bbs.archserver.org<br />
*Documentation: http://docs.archserver.org<br />
*Screenshots: TBA<br />
*DistroWatch Entry: TBA<br />
<br />
== archboot ==<br />
<br />
Archboot is designed for installation or rescue operations. It provides both the i686 and x86_64 architectures on one CD. It uses hwdetect and a different install script from the official Arch Linux install images. It runs in RAM using iniramfs, without any special filesystems like squashfs,<br />
thus it is limited to the RAM which is installed in your system.<br />
<br />
*Homepage: http://projects.archlinux.org/?p=archboot.git;a=summary<br />
*Forums: http://bbs.archlinux.org/<br />
*Documentation: ftp://ftp.archlinux.org/iso/archboot/Readme.txt<br />
*Screenshots: <br />
*DistroWatch Entry: <br />
<br />
== archlive ==<br />
<br />
Archlive is a Simple-Chinese live system based on Arch GNU/Linux. It is distinct from the Arch Live! distribution, adding Chinese language software and packages, but it is based upon Arch Live!<br />
<br />
*Homepage: http://code.google.com/p/archlive/<br />
*Forums: http://bbs.linuxeye.cn/forum-70-1.html<br />
*Documentation: http://code.google.com/p/archlive/w/list<br />
*Screenshots: <br />
*DistroWatch Entry: <br />
<br />
== CDN Linux ==<br />
<br />
CDN Linux is a system based on Arch GNU/Linux. CDN is designed to servers and routers. It is developed by Polish Freesco Group.<br />
<br />
*Homepage: http://cdn.freesco.pl<br />
*Forums: http://forum.freesco.pl<br />
*Documentation: http://cdn.freesco.pl<br />
*Screenshots: http://cdn.freesco.pl<br />
*DistroWatch Entry: <br />
<br />
== Chakra ==<br />
<br />
"''Our goal with Chakra is to provide an operating system for desktops that is easy to use, but still has all the functionality, clarity, power and speediness of a KISS operating system. In the long term, we want to build an operating system based on Arch Linux that meets most requirements desktop users have today, like easy installation of software, graphical system administration, configuring power management on mobile devices, or sharing an internet connection.''"<br><br />
:<small>Source: [http://chakra-project.org/about.html The Chakra Project - About]</small><br />
<br />
The creators of the [[KDEmod]] project have created Chakra, based on Arch and KDEMod (of course). Tools like [http://chakra-project.org/tools-shaman.html Shaman] and [http://chakra-project.org/tools-arxin.html Arxin] show the gradual shift towards a more graphical UI oriented Arch derivative. Nonetheless, the project maintains the KISS principle of Arch, even though the [http://chakra-project.org/tools-tribe.html Tribe installer] on the Live CD provides more of the 'you don't have to know what's inside' philosophy. The installed system however is a pure Arch Linux + KDE4 + Shaman, with some artistic touches.<br />
<br />
*Homepage: http://chakra-project.org/<br />
*Forums: http://chakra-project.org/bbs/<br />
*Documentation: http://chakra-project.org/wiki/index.php/Main_Page<br />
*Screenshots: http://chakra-project.org/about-screenshots.html<br />
*DistroWatch Entry: http://distrowatch.com/table.php?distribution=chakra<br />
<br />
== ConnochaetOS ==<br />
<br />
"''ConnochaetOS will be a free operating system for the desktop with old computers in mind but with modern software. ConnochaetOS will contain only free software, according to the GNU Guidelines for Free System Distributions, follow the KISS principle (Keep it small and simple), need as few resources as possible, be modern, but stable. We aim for minimal hardware requirements, as low as a Pentium I processor and 64 MB RAM for a graphical desktop. We decided to base ConnochaetOS on Arch Linux, but completely rebuild, since we want to support i586, and replace some packages with our own ones, because of footprint, stability or freedom.''"<br><br />
:<small>Source: [http://www.connochaetos.org/wiki/doku.php?id=connochaetos ConnochaetOS Website]</small><br />
<br />
*Homepage: http://www.connochaetos.org<br />
*Forums: http://www.connochaetos.org/forum<br />
*Documentation: http://www.connochaetos.org/wiki/doku.php?id=mainpage<br />
*Screenshots: http://www.connochaetos.org/wiki/doku.php?id=screenshots<br />
*DistroWatch Entry: http://distrowatch.com/table.php?distribution=connochaet<br />
<br />
<br />
== CTKarchLive ==<br />
<br />
''"Un seul mot d'ordre : simple & léger. (et complet, dans la mesure du possible)<br />
Il est désormais installable !"''<br><br />
:<small>Source: [http://calimeroteknik.free.fr/ CTKarchLive]</small><br><br />
A lightweight distro using c²DE (openbox). The site is entirely in French for the time being, but you can download an [http://calimeroteknik.free.fr/ctkarchlive/0.5/addons/officiels/locale-en/ add-on] for CTKarchLive to enable English locale.<br />
*Homepage: http://calimeroteknik.free.fr/<br />
*Forums: <br />
*Documentation: http://calimeroteknik.free.fr/arch-guide/<br />
*Screenshots: <br />
*DistroWatch Entry:<br />
<br />
== Elegance ==<br />
<br />
Elegance is a Arch Linux spin-off that is heavily influenced by ArchBang[http://wiki.archlinux.org/index.php/ArchBang]. It comes with a small number of programs to start you off on building your own custom desktop.<br />
*Homepage: http://www.k2z.com<br />
*Forums: <br />
*Documentation:<br />
*Screenshots: <br />
*DistroWatch Entry:<br />
<br />
== Kahel OS ==<br />
<br />
''"Kahel OS is the first and remains to be the only Filipino Linux Distro with the rolling release model on Arch Linux + GNOME. In the community, it is the first to release (non-beta) such Linux OS on Arch Linux + GNOME."''<br><br />
:<small>Source: [http://www.kahelos.org/ Kahel OS]</small><br />
*Homepage: http://www.kahelos.org/<br />
*Forums: http://http://forum.kahelos.org/<br />
*Documentation: http://wiki.kahelos.org/index.php?title=Main_Page<br />
*Screenshots: http://www.kahelos.org/gallery.php<br />
*DistroWatch Entry: http://distrowatch.com/table.php?distribution=kahelos<br />
<br />
== LinHES ==<br />
<br />
LinHES ('''Lin'''ux '''H'''ome '''E'''ntertainment '''S'''ystem) is a distro based heavily on Arch and centered around [http://mythtv.org MythTV], with the expressed goal of being a HES-appliance. Utilizing open source software and off the shelf hardware, you'll be able to assemble a box that can serve as a PVR, Jukebox, Image Viewer, and Game Station. Users can go from a blank hard drive to fully functional MythTV system in literally 15-20 min. For more information, please see the [[LinHES]] wikipage.<br />
<br />
*Homepage: http://www.linhes.org/<br />
*Forums: http://www.linhes.org/phpBB2<br />
*Documentation: http://mysettopbox.tv/pamphlet.html<br />
*Screenshots: http://www.thecodingstudio.com/opensource/linux/screenshots/index.php?linux_distribution_sm=<br />
*DistroWatch Entry: http://distrowatch.com/table.php?distribution=knoppmyth<br />
<br />
== live.linuX-gamers.net ==<br />
<br />
The linuX-gamers Live DVD is a bootable medium with a collection of popular 3D games. It contains both the NVIDIA and ATI proprietary Linux drivers and includes the following games: BzFLag, Enemy Territory, Glest, Nexuiz, Sauerbraten, Torcs, Tremulous, True Combat: Elite, Warsow and World of Padman. Although the live DVD is based on Arch Linux, it does not offer any desktop Linux functionality except gaming.<br />
<br />
*Homepage: http://live.linux-gamers.net/<br />
*Forums: http://github.com/svenstaro/lglive<br />
*Documentation: http://github.com/svenstaro/lglive<br />
*Screenshots: http://live.linux-gamers.net/images/shot2.png<br />
*DistroWatch Entry: http://distrowatch.com/table.php?distribution=linuxgamers<br />
<br />
== Mesk Linux ==<br />
<br />
Mesk Linux is a project aiming at showcasing Arch to Arabic-speaking users . The project is also working on localizing Arch tools and documentation .<br />
<br />
*Homepage: http://www.mesklinux.org/<br />
*Forums: http://www.mesklinux.org/<br />
*Documentation: http://www.wiki.mesklinux.org/<br />
*Screenshots: http://www.mesklinux.org/shots.php<br />
*DistroWatch Entry:<br />
<br />
== Plugbox Linux ==<br />
Plugbox Linux is a light weight distro with packages natively compiled for a Sheevaplug (ARM-optimized).<br />
*Homepage: http://plugapps.com/index.php5?title=Portal:Plugbox_Linux<br />
<br />
= Meta Distributions =<br />
<br />
== archiso ==<br />
<br />
[[archiso]] is a very simple set of bash scripts that allow for building live bootable CD/DVD/USB images based on Arch Linux. It uses a small uncomplicated code base and is actively developed. archiso is the tool used by Arch Linux to generate the official CD/USB images. It is a very generic tool, so it could potentially be used to generate anything from rescue systems, to install disks, to special interest live systems, and who knows what else. Simply put, if it involves Arch on a shiny coaster, it can do it. <br />
<br />
*Homepage: http://projects.archlinux.org/?p=archiso.git;a=summary<br />
*Forums http://bbs.archlinux.org/viewtopic.php?id=73878<br />
*Documentation: [[archiso|wiki article on archlinux.org]]<br />
*Screenshots:<br />
*DistroWatch Entry:<br />
<br />
== Archiso-live ==<br />
<br />
Archiso-live is a fork of archiso that has since gained a fair bit of complexity in its development. Archiso-live undergoes rapid development with fresh releases posted on the dev blog found on its homepage. It uses a modular design approach based on slax. It even uses the slax initrd as a base module to get the system going. This allows archiso-live to be used in an everyday fashion since it has a full xfce desktop. It can also be greatly customized since it uses modules.<br />
<br />
*Homepage: http://godane.wordpress.com/ (GIT: http://github.com/godane/archiso-live/tree/master)<br />
*Forums: http://arch-live.2kool4u.net/forum/index.php<br />
*Documentation: http://arch-live.2kool4u.net/articles.php<br />
*Screenshots: http://arch-live.2kool4u.net/photogallery.php?album_id=1<br />
*DistroWatch Entry:<br />
<br />
== larch ==<br />
<br />
larch is a collection of scripts used to create live CD/DVD/USB-stick versions of Arch Linux. One design aim is easy customization, so that even relatively inexperienced users can build personalized live CDs, containing whatever packages they want and with their own personal configurations. The resulting medium should also be usable for installation purposes, so that one has a customized Arch Linux installation/rescue medium. As the content can be chosen freely, a comfortable working environment is possible, in contrast to the rather Spartan standard Arch installation CD.<br />
<br />
*Homepage: http://larch.berlios.de/<br />
*Forums: <br />
*Documentation: http://larch.berlios.de/doc/index.html<br />
*Screenshots:<br />
*DistroWatch Entry:<br />
<br />
= Arch Influenced Distros =<br />
<br />
==Alpine Linux==<br />
<br />
Alpine Linux is a run-from-RAM linux distribution. Its original target was small appliances like routers, VPN gateways, or embedded x86 devices. However, it supports hosting other Linux guest OSes under VServer control, making it an attractive hosting solution as well. Though Alpine Linux may not actually be based on Arch, its [http://git.alpinelinux.org/cgit/aports/tree/main/abuild/APKBUILD build system] is undoubtably inspired by Arch. [http://lists.busybox.net/pipermail/busybox/2009-January/068280.html 2][http://wiki.alpinelinux.org/w/index.php?title=Creating_an_Alpine_package&oldid=2701#depends_.26_makedepends 3]<br />
<br />
*Homepage: http://alpinelinux.org<br />
*Documentation: http://wiki.alpinelinux.org/w/index.php?title=Documentation<br />
<br />
== Enlisy ==<br />
<br />
Enlisy is an i686 optimized Linux distribution for Pentium 2 based processors and higher. It is also as simple as possible when it comes to the construction of its underlying core. Enlisy uses its own package manager Apport, which is is based on Libpysrc and Libpypac, which are inspired by Arch's package manager Pacman. Enlisy also uses InitNG for the init system.<br />
<br />
*Homepage: http://enlisy.com/<br />
*Forums: http://enlisy.com/en/forum/<br />
*Documentation: http://enlisy.org/ewiki/Documentation<br />
*Screenshots: <br />
*DistroWatch Entry:<br />
<br />
== Frugalware ==<br />
<br />
''"Frugalware Linux is a general-purpose Linux distribution designed for intermediate users who are familiar with command-line operations. It is based on Slackware, but uses a different package management system, Pacman."''<br><br />
:<small>Source: [[Wikipedia:Frugalware|Wikipedia]]</small><br />
<br />
*Homepage: http://frugalware.org<br />
*Forums: http://forums.frugalware.org<br />
*Documentation: http://frugalware.org/docs<br />
*Screenshots: http://frugalware.org/screenshots<br />
*DistroWatch Entry: http://distrowatch.com/frugalware</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Pastebin_Clients&diff=126735Pastebin Clients2011-01-03T03:17:49Z<p>AndreasBWagner: /* Gist */</p>
<hr />
<div>[[Category:General (English)]]<br />
[[Category:Utilities (English)]]<br />
Pastebin clients allow you to upload files to pastebin sites from the comfort of your command line.<br />
<br />
==Curlpaste==<br />
A utility to post text files to a number of pastebin sites using curl and Lua. Available in [community].<br />
<br />
For usage instructions run<br />
curlpaste -h<br />
<br />
To change the defaults, edit<br />
/etc/curlpaste.conf<br />
<br />
Works with:<br />
*pastebin.ca<br />
*codepad.org<br />
*paste.pocoo.org (LodgeIt)<br />
*dpaste.com<br />
*fpaste.org<br />
<br />
==extra/kdeplasma-addons-applets-pastebin==<br />
TODO<br />
<br />
==WebBoard==<br />
A pygtk frontend to pastebin. Available in [community].<br />
<br />
Depends on gnome-panel, as it seems to be intended to work as an applet.<br />
<br />
A demonstration can be found [http://pimpzkru.de/sebi/webboard/webboard-demo.gif here].<br />
<br />
==wgetpaste==<br />
A bash script that automates pasting to a number of pastebin services. Available in [community].<br />
<br />
Works with:<br />
*pastebin.ca<br />
*codepad.org<br />
*dpaste.com<br />
*pastebin.osuosl.org<br />
*paste.pocoo.org<br />
<br />
==Gist==<br />
A commandline interface for the gist.github.com pastebin service. Available in [http://aur.archlinux.org/packages.php?ID=22721 AUR].<br />
<br />
A vimscript for gist is [http://www.archlinux.org/packages/community/any/vim-gist/ available in community].<br />
<br />
==haste==<br />
A universal pastebin tool, written in Haskell. Available in [http://aur.archlinux.org/packages.php?ID=31468 AUR].<br />
<br />
Works with:<br />
*hpaste.org<br />
*paste2.org<br />
*pastebin.com<br />
and others.<br />
<br />
==hg-paste==<br />
Paste extension for Mercurial which can send diffs to various pastebin websites for easy sharing. Available in [http://aur.archlinux.org/packages.php?ID=30400 AUR].<br />
<br />
Works with:<br />
*dpaste.com<br />
*dpaste.org<br />
<br />
==ix==<br />
Client for the ix.io pastebin. Available in [http://www.archlinux.org/packages/community/any/ix/ Community].<br />
<br />
==npaste-client==<br />
Client for the npaste.de pastebin. Available in [http://aur.archlinux.org/packages.php?ID=33345 AUR].<br />
<br />
==fb-client==<br />
Client for the paste.xinu.at pastebin. Available in [http://www.archlinux.org/packages/community/any/fb-client Community].<br />
<br />
==pastebinit==<br />
A really small piece of Python that acts as a Pastebin client. Available in [http://aur.archlinux.org/packages.php?ID=14710 AUR].<br />
<br />
(Version 1.0) Works with:<br />
*pastebin.com<br />
*pastebin.ca<br />
*rafb.net<br />
*slexy.org<br />
*fpaste.org<br />
*paste2.org<br />
*pastey.net<br />
*stikked.com<br />
*yourpaste.net<br />
*gist.github.com<br />
*paste.ubuntu.com<br />
*paste.debian.net<br />
<br />
==vim-paster==<br />
VIM plugin to paste to any pastebin service. Available in [http://aur.archlinux.org/packages.php?ID=28687 AUR].<br />
<br />
==elmer==<br />
A pastebin client similar to wgetpaste and curlpaste, except written in perl and usable with wget or curl. Available from [http://github.com/sudokode/elmer github] and the [http://aur.archlinux.org/packages.php?ID=43605 AUR].<br />
<br />
Services:<br />
*codepad.org<br />
*pastebin.com<br />
*pastebin.org<br />
*paste.pocoo.org (lodgeit)<br />
*rafb.me<br />
*sprunge.us<br />
*ompldr.org (requires curl)<br />
*sudokode.net (requires curl)<br />
*filebin.ca (requires curl)<br />
<br />
For help and to display current defaults:<br />
elmer -h<br />
<br />
To change the defaults, you can edit any of several environment variables (available in the README), which will help speed up the process of pasting.<br />
<br />
For temporary changes:<br />
export THEVARIABLE="thevalue"<br />
For permanent changes, put the following in your ~/.bashrc or similar and source it:<br />
THEVARIABLE="thevalue"<br />
<br />
==Lodgeit==<br />
<br />
A pastebin console client for the site http://paste.pocoo.org/ aka "Lodge It", on AUR at https://aur.archlinux.org/packages.php?ID=36523<br />
<br />
You can find also other client/library and a vim plugin on AUR.</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Pastebin_Clients&diff=122809Pastebin Clients2010-11-27T22:12:49Z<p>AndreasBWagner: /* Gist */</p>
<hr />
<div>[[Category:General (English)]]<br />
[[Category:Utilities (English)]]<br />
Pastebin clients allow you to upload files to pastebin sites from the comfort of your command line.<br />
<br />
==Curlpaste==<br />
A utility to post text files to a number of pastebin sites using curl and Lua. Available in [community].<br />
<br />
For usage instructions run<br />
curlpaste -h<br />
<br />
To change the defaults, edit<br />
/etc/curlpaste.conf<br />
<br />
Works with:<br />
*pastebin.ca<br />
*codepad.org<br />
*paste.pocoo.org (LodgeIt)<br />
*dpaste.com<br />
*fpaste.org<br />
<br />
==extra/kdeplasma-addons-applets-pastebin==<br />
TODO<br />
<br />
==WebBoard==<br />
A pygtk frontend to pastebin. Available in [community].<br />
<br />
Depends on gnome-panel, as it seems to be intended to work as an applet.<br />
<br />
A demonstration can be found [http://pimpzkru.de/sebi/webboard/webboard-demo.gif here].<br />
<br />
==wgetpaste==<br />
A bash script that automates pasting to a number of pastebin services. Available in [community].<br />
<br />
Works with:<br />
*pastebin.ca<br />
*codepad.org<br />
*dpaste.com<br />
*pastebin.osuosl.org<br />
*paste.pocoo.org<br />
<br />
==Gist==<br />
A commandline interface for the gist.github.com pastebin service. Available in [http://aur.archlinux.org/packages.php?ID=22721 AUR].<br />
<br />
A vimscript for gist is available in [http://aur.archlinux.org/packages.php?ID=27935 AUR].<br />
<br />
==haste==<br />
A universal pastebin tool, written in Haskell. Available in [http://aur.archlinux.org/packages.php?ID=31468 AUR].<br />
<br />
Works with:<br />
*hpaste.org<br />
*paste2.org<br />
*pastebin.com<br />
and others.<br />
<br />
==hg-paste==<br />
Paste extension for Mercurial which can send diffs to various pastebin websites for easy sharing. Available in [http://aur.archlinux.org/packages.php?ID=30400 AUR].<br />
<br />
Works with:<br />
*dpaste.com<br />
*dpaste.org<br />
<br />
==ix==<br />
Client for the ix.io pastebin. Available in [http://www.archlinux.org/packages/community/any/ix/ Community].<br />
<br />
==npaste-client==<br />
Client for the npaste.de pastebin. Available in [http://aur.archlinux.org/packages.php?ID=33345 AUR].<br />
<br />
==pastebinit==<br />
A really small piece of Python that acts as a Pastebin client. Available in [http://aur.archlinux.org/packages.php?ID=14710 AUR].<br />
<br />
(Version 1.0) Works with:<br />
*pastebin.com<br />
*pastebin.ca<br />
*rafb.net<br />
*slexy.org<br />
*fpaste.org<br />
*paste2.org<br />
*pastey.net<br />
*stikked.com<br />
*yourpaste.net<br />
*gist.github.com<br />
*paste.ubuntu.com<br />
*paste.debian.net<br />
<br />
==vim-paster==<br />
VIM plugin to paste to any pastebin service. Available in [http://aur.archlinux.org/packages.php?ID=28687 AUR].<br />
<br />
==elmer==<br />
A pastebin client similar to wgetpaste and curlpaste, except written in perl and usable with wget or curl. Available from [http://github.com/sudokode/elmer github] and the [http://aur.archlinux.org/packages.php?ID=43605 AUR].<br />
<br />
Services:<br />
*codepad.org<br />
*pastebin.com<br />
*pastebin.org<br />
*paste.pocoo.org (lodgeit)<br />
*rafb.me<br />
*sprunge.us<br />
*ompldr.org (requires curl)<br />
*sudokode.net (requires curl)<br />
*filebin.ca (requires curl)<br />
<br />
For help and to display current defaults:<br />
elmer -h<br />
<br />
To change the defaults, you can edit any of several environment variables (available in the README), which will help speed up the process of pasting.<br />
<br />
For temporary changes:<br />
export THEVARIABLE="thevalue"<br />
For permanent changes, put the following in your ~/.bashrc or similar and source it:<br />
THEVARIABLE="thevalue"<br />
<br />
==Lodgeit==<br />
<br />
A pastebin console client for the site http://paste.pocoo.org/ aka "Lodge It", on AUR at https://aur.archlinux.org/packages.php?ID=36523<br />
<br />
You can find also other client/library and a vim plugin on AUR.</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Pastebin_Clients&diff=121991Pastebin Clients2010-11-22T14:23:07Z<p>AndreasBWagner: /* ix */</p>
<hr />
<div>[[Category:General (English)]]<br />
[[Category:Utilities (English)]]<br />
Pastebin clients allow you to upload files to pastebin sites from the comfort of your command line.<br />
<br />
==Curlpaste==<br />
A utility to post text files to a number of pastebin sites using curl and Lua. Available in [community].<br />
<br />
For usage instructions run<br />
curlpaste -h<br />
<br />
To change the defaults, edit<br />
/etc/curlpaste.conf<br />
<br />
Works with:<br />
*pastebin.ca<br />
*codepad.org<br />
*paste.pocoo.org (LodgeIt)<br />
*dpaste.com<br />
*fpaste.org<br />
<br />
==extra/kdeplasma-addons-applets-pastebin==<br />
TODO<br />
<br />
==WebBoard==<br />
A pygtk frontend to pastebin. Available in [community].<br />
<br />
Depends on gnome-panel, as it seems to be intended to work as an applet.<br />
<br />
A demonstration can be found [http://pimpzkru.de/sebi/webboard/webboard-demo.gif here].<br />
<br />
==wgetpaste==<br />
A bash script that automates pasting to a number of pastebin services. Available in [community].<br />
<br />
Works with:<br />
*pastebin.ca<br />
*codepad.org<br />
*dpaste.com<br />
*pastebin.osuosl.org<br />
*paste.pocoo.org<br />
<br />
==Gist==<br />
A commandline interface for the gist.github.com pastebin service. Available in [http://aur.archlinux.org/packages.php?ID=22721 AUR].<br />
<br />
==haste==<br />
A universal pastebin tool, written in Haskell. Available in [http://aur.archlinux.org/packages.php?ID=31468 AUR].<br />
<br />
Works with:<br />
*hpaste.org<br />
*paste2.org<br />
*pastebin.com<br />
and others.<br />
<br />
==hg-paste==<br />
Paste extension for Mercurial which can send diffs to various pastebin websites for easy sharing. Available in [http://aur.archlinux.org/packages.php?ID=30400 AUR].<br />
<br />
Works with:<br />
*dpaste.com<br />
*dpaste.org<br />
<br />
==ix==<br />
Client for the ix.io pastebin. Available in [http://www.archlinux.org/packages/community/any/ix/ Community].<br />
<br />
==npaste-client==<br />
Client for the npaste.de pastebin. Available in [http://aur.archlinux.org/packages.php?ID=33345 AUR].<br />
<br />
==pastebinit==<br />
A really small piece of Python that acts as a Pastebin client. Available in [http://aur.archlinux.org/packages.php?ID=14710 AUR].<br />
<br />
(Version 1.0) Works with:<br />
*pastebin.com<br />
*pastebin.ca<br />
*rafb.net<br />
*slexy.org<br />
*fpaste.org<br />
*paste2.org<br />
*pastey.net<br />
*stikked.com<br />
*yourpaste.net<br />
*gist.github.com<br />
*paste.ubuntu.com<br />
*paste.debian.net<br />
<br />
==vim-paster==<br />
VIM plugin to paste to any pastebin service. Available in [http://aur.archlinux.org/packages.php?ID=28687 AUR].<br />
<br />
==elmer==<br />
A pastebin client similar to wgetpaste and curlpaste, except written in perl and usable with wget or curl. Available from [http://github.com/sudokode/elmer github] and the [http://aur.archlinux.org/packages.php?ID=43605 AUR].<br />
<br />
Services:<br />
*codepad.org<br />
*pastebin.com<br />
*pastebin.org<br />
*paste.pocoo.org (lodgeit)<br />
*rafb.me<br />
*sprunge.us<br />
*ompldr.org (requires curl)<br />
*sudokode.net (requires curl)<br />
*filebin.ca (requires curl)<br />
<br />
For help and to display current defaults:<br />
elmer -h<br />
<br />
To change the defaults, you can edit any of several environment variables (available in the README), which will help speed up the process of pasting.<br />
<br />
For temporary changes:<br />
export THEVARIABLE="thevalue"<br />
For permanent changes, put the following in your ~/.bashrc or similar and source it:<br />
THEVARIABLE="thevalue"<br />
<br />
==Lodgeit==<br />
<br />
A pastebin console client for the site http://paste.pocoo.org/ aka "Lodge It", on AUR at https://aur.archlinux.org/packages.php?ID=36523<br />
<br />
You can find also other client/library and a vim plugin on AUR.</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Unofficial_user_repositories&diff=117705Unofficial user repositories2010-09-19T12:33:08Z<p>AndreasBWagner: /* x86-64 */ suckless.org</p>
<hr />
<div>[[Category: Package management (English)]]<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 />
== The future of Unofficial repos ==<br />
I'd like to see more work of this type. Sometimes there are certain projects that don't mesh well with other things, such as the community repo. The 'kdemod' project is a good example. If you want to contribute with your own builds, you can check page [[Custom local repository]].<br />
<br />
In the future, well-thought-out user repositories may be ideal for lots of supplementary things. Forming a "web of trust" is important in cases like this, so we may begin keeping a list of "recommended" repositories somewhere, in order to make it seem more official and trustworthy.<br />
<br />
[[User:Phrakture|Phrakture]] 12:50, 18 May 2007 (EDT)<br />
<br />
== The community repository, maintained by the TUs==<br />
The community repository is included in pacman's default configuration.<br />
<br />
[community]<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
== List of PUR (unofficial user repositories) ==<br />
===Any===<br />
"Any" repos are architecture-independent, i.e. they can be used on both i686 and x86_64 systems.<br />
<nowiki><br />
[xyne-any]<br />
# The home of Powerpill and Xyne's other contributions.<br />
# More info including a package list can be found at http://xyne.archlinux.ca/repos<br />
Server = http://xyne.archlinux.ca/repos/xyne-any/<br />
<br />
[herecura-stable-any]<br />
# just some stuff, few java apps, wallpapers, small scripts, xbmc-skin<br />
Server = http://herecura.be/repo/herecura-stable/any<br />
<br />
[herecura-testing-any]<br />
# some any testing stuff, xbmc-svn skin<br />
Server = http://herecura.be/repo/herecura-testing/any<br />
</nowiki><br />
<br />
==== any outdated ====<br />
[ninerepo-any]<br />
#perl packages, include Moose and Catalyst from pacpan (PKGBUILD's diff'd <br />
#against AUR/offical repos, if available).<br />
Server = http://icenine.sdf1.org/repo/ninerepo-any<br />
<br />
===i686===<br />
<nowiki><br />
[unarch]<br />
# it offers support mainly against devel packages<br />
# contains stable packages that aren't in official repo<br />
Server = http://us4all.info/unarch/arch/i686<br />
<br />
[adslgr32]<br />
#The Hellenic (Greek) archlinux unofficial repository with many interesting packages.<br />
Server = http://archlinuxgr.tiven.org/archlinux/i686/<br />
<br />
[kde4-eyecandy-32]<br />
#Useful and beautiful plasmoids and themes for KDE4<br />
Server = http://archlinuxgr.tiven.org/kde4-eyecandy/i686/<br />
<br />
[andrwe]<br />
# for a list of packages see: http://andrwe.dyndns.org/doku.php/blog/repository<br />
Server = http://andrwe.dyndns.org/repo/i686<br />
<br />
[archaudio-stable]<br />
# and/or *-testing, *-experimental<br />
# Pro-audio repo:<br />
# - http://archaudio.org<br />
# replace "stable" with repo type (testing/experimental)<br />
Server = http://repos.archaudio.org/stable/i686<br />
<br />
[archlinux-es]<br />
# Repositorio Hispano (Spanish/Hispanic Respository)<br />
Server = http://repo.archlinux-es.org/i686<br />
<br />
[archlinuxfr]<br />
## The french Arch Linux communities packages<br />
Server = http://repo.archlinux.fr/i686<br />
<br />
[archlinuxve]<br />
# Home of the splashy packages<br />
Server = http://repo.archlinux.com.ve/i686<br />
<br />
[arch-graphics]<br />
# repository aimed to provide applications mainly for 3D graphics<br />
# for more info, look at http://arch-graphics.kx.cz/<br />
Server = http://arch-graphics.kx.cz/repo/i686<br />
<br />
[blaster]<br />
# Bl@ster maintains a repo with some interesting packages from the AUR, for all the purpouses<br />
Server = http://ilportalinux.it/arch_repo/i686<br />
<br />
[blind]<br />
# Chris Brannon maintains a small repo of packages from the AUR. All are<br />
# command-line utilities that Chris and friends find useful.<br />
Server = http://the-brannons.com/blind/i686<br />
<br />
# Crapkit,dbus,hal,etc stripped packages compatible with archlinux (from http://hereticlinux.org/)<br />
[cake]<br />
Server = http://hereticlinux.org/repo/cake/i686/ <br />
<br />
[cgr-i686]<br />
# packages for some ChicoGeek's PKGBUILDs<br />
Server = http://cgr.i686.googlepages.com/<br />
<br />
[chaox-stable]<br />
# pentesting packages and custom kernel patched for wifi injection<br />
Server = http://repo.chaox.net/stable<br />
<br />
[compiz-fusion]<br />
#compiz-fusion-git <br />
#Updated to June 2008<br />
Server = http://compiz.dreamz-box.de/i686<br />
<br />
[cinan]<br />
#contains packages which aren't in official repos<br />
#info at cinan.tk or cinan6.tk<br />
Server = http://cinan.yw.sk/i686<br />
<br />
[dragonlord]<br />
# Mixed packages, I don't want to move into [community],<br />
# but are worth having them or the build time is long.<br />
Server = http://repo.dragonlord.cz/arch/i686<br />
<br />
[englab]<br />
# Packages of englab (mathematical programs), its toolboxes and dependencies<br />
Server = http://englab.bugfest.net/arch/i686<br />
<br />
[esclinux]<br />
# Mostly games, interactive fiction and abc notation stuffs already on AUR<br />
Server = http://download.tuxfamily.org/esclinuxcd/ressources/repo/i686/<br />
<br />
[gimpstudio]<br />
# Gimp Studio (http://codaset.com/foxbunny/gimp-studio) and support packages<br />
Server = http://gimpstudio.brankovukelic.com/i686<br />
<br />
[pozitpoh]<br />
Server = http://pozitpoh.is-a-geek.org/repo/i686<br />
<br />
[fukawi]<br />
# Some Nagios Stuff; molly-guard; celtx and various networking tools.<br />
Server = http://repo.fukawi2.nl/i686/<br />
Server = ftp://repo.fukawi2.nl/i686/<br />
<br />
[kdemod-core]<br />
# Provides core KDE 4.x packages.<br />
# Requires Arch community repository which provides additional packages.<br />
Server = http://chakra-project.org/repo/kdemod-core/i686<br />
Server = http://kdemod.iskrembilen.com/core/i686<br />
Server = http://archlinux.puzzle.ch/kdemod/core/i686<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/core/i686<br />
<br />
[kdemod-extragear]<br />
# Provides additional KDE 4.x packages.<br />
Server = http://chakra-project.org/repo/kdemod-extragear/i686<br />
Server = http://kdemod.iskrembilen.com/extragear/i686<br />
Server = http://archlinux.puzzle.ch/kdemod/extragear/i686<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/extragear/i686<br />
<br />
[kdemod-playground]<br />
# Provides unstable packages for testing purposes.<br />
Server = http://kdemod.iskrembilen.com/playground/i686<br />
Server = http://archlinux.puzzle.ch/kdemod/playground/i686<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/playground/i686<br />
<br />
[kpiche]<br />
# Stable OpenSync packages.<br />
Server = http://kpiche.archlinux.ca/repo<br />
<br />
[pst]<br />
# Painters Studio and support packages (http://pst.brankovukelic.com/)<br />
Server = http://pst.brankovukelic.com/i686<br />
<br />
[rfad]<br />
# Repository made by haxit | Contact at: requiem [at] archlinux.us for package suggestions!<br />
Server = http://web.ncf.ca/ey723/archlinux/repo/<br />
<br />
[sergej-repo]<br />
# ion3 and some other stuff<br />
# http://code.google.com/p/archlinux-stuff/source/browse/trunk/my-repo<br />
Server = http://arch.pp.ru/sergej-repo/i686/<br />
<br />
[xdemon-repo]<br />
#madwimax, kismet-svn and aircrack-svn, et cetera...<br />
Server=http://repo.x-demon.org/archlinux/os/i686<br />
<br />
[nightly]<br />
#nightly builds of some packages from the AUR<br />
# Repo-Tracker: http://tracker.kromonos.net/projects/show/nightlyarch<br />
Server = http://nightly.uhuc.de/i686<br />
<br />
[pozitpoh]<br />
# Fresh psi-plus, kvirc4, urtconnector, etc. More info at http://pozitpoh.is-a-geek.org:8080/wiki/index.php?title=ArchLinux_Repo_en<br />
Server = http://pozitpoh.is-a-geek.org:8080/repo/i686<br />
<br />
[herecura-stable]<br />
# additional apps not found in community<br />
Server = http://herecura.be/repo/herecura-stable/i686<br />
<br />
[herecura-testing]<br />
# additional apps for testing build against stable arch<br />
Server = http://herecura.be/repo/herecura-testing/i686<br />
<br />
[studioidefix]<br />
# precompiled boxee packages<br />
Server = http://studioidefix.googlecode.com/hg/repo/i686<br />
<br />
[mingw32]<br />
# libs & tools for crosscompiling for Win32, mainly taken from AUR.<br />
# Contact: Alexander 'hatred' Drozdov <adrozdoff [at] gmail (dot) com> (Russian-speaked guys can write on Russian :-)<br />
Server = http://hatred.homelinux.net/archlinux/mingw32/os/i686<br />
<br />
[jrepo]<br />
# Random pkgs for my friends low-end and old laptop<br />
# These pkgs are optimzed for pentium-m (i686 + sse2)<br />
# All pks that support pulseaudio have been natively complied to include it<br />
# http://dl.dropbox.com/u/3422289/README list of pkgs and info<br />
Server = http://dl.dropbox.com/u/3422289<br />
<br />
[pfkernel]<br />
# pf-kernel, nvidia-pf, squid3<br />
Server = http://dl.dropbox.com/u/11734958/i686<br />
<br />
[suckless]<br />
# suckless.org packages<br />
Server = http://dl.suckless.org/arch/i686<br />
<br />
</nowiki><br />
<br />
===x86-64===<br />
<nowiki><br />
[unarch]<br />
# it offers support mainly against devel packages<br />
# contains stable packages that aren't in official repo<br />
Server = http://us4all.info/unarch/arch/x86_64<br />
<br />
[kde4-eyecandy-64]<br />
#Useful and beautiful plasmoids and themes for KDE4<br />
Server = http://archlinuxgr.tiven.org/kde4-eyecandy/x86_64/<br />
<br />
[adslgr64]<br />
#The Hellenic (Greek) archlinux unofficial repository with many interesting packages.<br />
Server = http://archlinuxgr.tiven.org/archlinux/x86_64/<br />
<br />
[andrwe]<br />
# for a list of packages see: http://andrwe.dyndns.org/doku.php/blog/repository<br />
Server = http://andrwe.dyndns.org/repo/x86_64<br />
<br />
[archaudio-stable]<br />
# Pro-audio repo:<br />
# - http://archaudio.org<br />
# replace "stable" with repo type (testing/experimental)<br />
Server = http://repos.archaudio.org/stable/x86_64<br />
<br />
[archlinux-es]<br />
# Repositorio Hispano (Spanish/Hispanic Respository)<br />
Server = http://repo.archlinux-es.org/x86_64<br />
<br />
[archlinuxfr]<br />
## The french Archlinux communities packages<br />
Server = http://repo.archlinux.fr/x86_64<br />
<br />
[archlinuxve]<br />
# Home of the splashy packages<br />
Server = http://repo.archlinux.com.ve/x86_64<br />
<br />
[archstuff]<br />
# AUR's most voted and many bin32-* and lib32-* packages<br />
Server = http://archstuff.vs169092.vserver.de/x86_64<br />
<br />
[arch-games]<br />
# The Arch Linux Gaming repository project<br />
Server = http://arch.twilightlair.net/games/x86_64<br />
Server = http://pseudoform.org/arch-games/games/x86_64<br />
<br />
[cake]<br />
Server = http://hereticlinux.org/repo/cake/x86_64/ <br />
<br />
[compiz-fusion]<br />
#compiz-fusion-git<br />
Server = http://compiz.dreamz-box.de/x86_64<br />
<br />
[cinan]<br />
#contains packages which aren't in official repos<br />
#info at cinan.tk or cinan6.tk<br />
Server = http://cinan.yw.sk/x86_64<br />
<br />
[englab]<br />
# Packages of englab (mathematical programs), its toolboxes and dependencies<br />
Server = http://englab.bugfest.net/arch/x86_64<br />
<br />
[kdemod-core]<br />
# Provides core KDE 4.x packages.<br />
# Requires Arch community repository which provides additional packages.<br />
Server = http://chakra-project.org/repo/core/x86_64<br />
Server = http://kdemod.iskrembilen.com/core/x86_64<br />
Server = http://archlinux.puzzle.ch/kdemod/core/x86_64<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/core/x86_64<br />
<br />
[kdemod-extragear]<br />
# Provides additional KDE 4.x packages.<br />
Server = http://chakra-project.org/repo/extragear/x86_64<br />
Server = http://kdemod.iskrembilen.com/extragear/x86_64<br />
Server = http://archlinux.puzzle.ch/kdemod/extragear/x86_64<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/extragear/x86_64<br />
<br />
[kdemod-playground]<br />
# Provides unstable packages for testing purposes.<br />
Server = http://chakra-project.org/repo/playground/x86_64<br />
Server = http://kdemod.iskrembilen.com/playground/x86_64<br />
Server = http://archlinux.puzzle.ch/kdemod/playground/x86_64<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/playground/x86_64<br />
<br />
[kdemod-legacy]<br />
# Provides KDE 3.5.x packages. <br />
# Requires Arch community repository which provides additional packages.<br />
Server = http://chakra-project.org/repo/legacy/x86_64<br />
<br />
[pst]<br />
# Painters Studio and support packages (http://pst.brankovukelic.com/)<br />
Server = http://pst.brankovukelic.com/x86_64<br />
<br />
[sergej-repo]<br />
# ion3 and some other stuff<br />
# http://code.google.com/p/archlinux-stuff/source/browse/trunk/my-repo<br />
Server = http://arch.pp.ru/sergej-repo/x86_64/<br />
<br />
[dstr-repo]<br />
#qutim, psi, kdevelop with plugins dev builds and other stuff<br />
Server = http://dimon.homeftp.org/repo/x86_64<br />
<br />
[nightly]<br />
#nightly builds of some packages from the AUR<br />
# Repo-Tracker: http://tracker.kromonos.net/projects/show/nightlyarch<br />
Server = http://nightly.uhuc.de/x86_64<br />
<br />
[zen]<br />
#Various and zengeist' AUR packages<br />
Server = http://zloduch.cz/archlinux/x86_64<br />
<br />
[digitalpioneer]<br />
#Recent GIT/SVN/whatever builds of selected AUR packages<br />
#List of packages is at http://dl.getdropbox.com/u/453116/repo/pkglist and is subject to change<br />
#x86_64 only<br />
Server = http://dl.getdropbox.com/u/453116/repo<br />
<br />
[seiichiro]<br />
# VDR and some plugins, mms, foo2zjs-drivers<br />
Server = http://repo.seiichiro0185.org/x86_64<br />
<br />
[herecura-stable]<br />
# additional apps not found in community<br />
Server = http://herecura.be/repo/herecura-stable/x86_64<br />
<br />
[herecura-testing]<br />
# additional apps for testing build against stable arch<br />
Server = http://herecura.be/repo/herecura-testing/x86_64<br />
<br />
[studioidefix]<br />
# precompiled boxee packages<br />
Server = http://studioidefix.googlecode.com/hg/repo/x86_64<br />
<br />
[pfkernel]<br />
# pf-kernel, nvidia-pf, squid3<br />
Server = http://dl.dropbox.com/u/11734958/x86_64<br />
<br />
[suckless]<br />
# suckless.org packages<br />
Server = http://dl.suckless.org/arch/x86_64<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>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Unofficial_user_repositories&diff=117704Unofficial user repositories2010-09-19T12:31:29Z<p>AndreasBWagner: /* i686 */ suckless.org</p>
<hr />
<div>[[Category: Package management (English)]]<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 />
== The future of Unofficial repos ==<br />
I'd like to see more work of this type. Sometimes there are certain projects that don't mesh well with other things, such as the community repo. The 'kdemod' project is a good example. If you want to contribute with your own builds, you can check page [[Custom local repository]].<br />
<br />
In the future, well-thought-out user repositories may be ideal for lots of supplementary things. Forming a "web of trust" is important in cases like this, so we may begin keeping a list of "recommended" repositories somewhere, in order to make it seem more official and trustworthy.<br />
<br />
[[User:Phrakture|Phrakture]] 12:50, 18 May 2007 (EDT)<br />
<br />
== The community repository, maintained by the TUs==<br />
The community repository is included in pacman's default configuration.<br />
<br />
[community]<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
== List of PUR (unofficial user repositories) ==<br />
===Any===<br />
"Any" repos are architecture-independent, i.e. they can be used on both i686 and x86_64 systems.<br />
<nowiki><br />
[xyne-any]<br />
# The home of Powerpill and Xyne's other contributions.<br />
# More info including a package list can be found at http://xyne.archlinux.ca/repos<br />
Server = http://xyne.archlinux.ca/repos/xyne-any/<br />
<br />
[herecura-stable-any]<br />
# just some stuff, few java apps, wallpapers, small scripts, xbmc-skin<br />
Server = http://herecura.be/repo/herecura-stable/any<br />
<br />
[herecura-testing-any]<br />
# some any testing stuff, xbmc-svn skin<br />
Server = http://herecura.be/repo/herecura-testing/any<br />
</nowiki><br />
<br />
==== any outdated ====<br />
[ninerepo-any]<br />
#perl packages, include Moose and Catalyst from pacpan (PKGBUILD's diff'd <br />
#against AUR/offical repos, if available).<br />
Server = http://icenine.sdf1.org/repo/ninerepo-any<br />
<br />
===i686===<br />
<nowiki><br />
[unarch]<br />
# it offers support mainly against devel packages<br />
# contains stable packages that aren't in official repo<br />
Server = http://us4all.info/unarch/arch/i686<br />
<br />
[adslgr32]<br />
#The Hellenic (Greek) archlinux unofficial repository with many interesting packages.<br />
Server = http://archlinuxgr.tiven.org/archlinux/i686/<br />
<br />
[kde4-eyecandy-32]<br />
#Useful and beautiful plasmoids and themes for KDE4<br />
Server = http://archlinuxgr.tiven.org/kde4-eyecandy/i686/<br />
<br />
[andrwe]<br />
# for a list of packages see: http://andrwe.dyndns.org/doku.php/blog/repository<br />
Server = http://andrwe.dyndns.org/repo/i686<br />
<br />
[archaudio-stable]<br />
# and/or *-testing, *-experimental<br />
# Pro-audio repo:<br />
# - http://archaudio.org<br />
# replace "stable" with repo type (testing/experimental)<br />
Server = http://repos.archaudio.org/stable/i686<br />
<br />
[archlinux-es]<br />
# Repositorio Hispano (Spanish/Hispanic Respository)<br />
Server = http://repo.archlinux-es.org/i686<br />
<br />
[archlinuxfr]<br />
## The french Arch Linux communities packages<br />
Server = http://repo.archlinux.fr/i686<br />
<br />
[archlinuxve]<br />
# Home of the splashy packages<br />
Server = http://repo.archlinux.com.ve/i686<br />
<br />
[arch-graphics]<br />
# repository aimed to provide applications mainly for 3D graphics<br />
# for more info, look at http://arch-graphics.kx.cz/<br />
Server = http://arch-graphics.kx.cz/repo/i686<br />
<br />
[blaster]<br />
# Bl@ster maintains a repo with some interesting packages from the AUR, for all the purpouses<br />
Server = http://ilportalinux.it/arch_repo/i686<br />
<br />
[blind]<br />
# Chris Brannon maintains a small repo of packages from the AUR. All are<br />
# command-line utilities that Chris and friends find useful.<br />
Server = http://the-brannons.com/blind/i686<br />
<br />
# Crapkit,dbus,hal,etc stripped packages compatible with archlinux (from http://hereticlinux.org/)<br />
[cake]<br />
Server = http://hereticlinux.org/repo/cake/i686/ <br />
<br />
[cgr-i686]<br />
# packages for some ChicoGeek's PKGBUILDs<br />
Server = http://cgr.i686.googlepages.com/<br />
<br />
[chaox-stable]<br />
# pentesting packages and custom kernel patched for wifi injection<br />
Server = http://repo.chaox.net/stable<br />
<br />
[compiz-fusion]<br />
#compiz-fusion-git <br />
#Updated to June 2008<br />
Server = http://compiz.dreamz-box.de/i686<br />
<br />
[cinan]<br />
#contains packages which aren't in official repos<br />
#info at cinan.tk or cinan6.tk<br />
Server = http://cinan.yw.sk/i686<br />
<br />
[dragonlord]<br />
# Mixed packages, I don't want to move into [community],<br />
# but are worth having them or the build time is long.<br />
Server = http://repo.dragonlord.cz/arch/i686<br />
<br />
[englab]<br />
# Packages of englab (mathematical programs), its toolboxes and dependencies<br />
Server = http://englab.bugfest.net/arch/i686<br />
<br />
[esclinux]<br />
# Mostly games, interactive fiction and abc notation stuffs already on AUR<br />
Server = http://download.tuxfamily.org/esclinuxcd/ressources/repo/i686/<br />
<br />
[gimpstudio]<br />
# Gimp Studio (http://codaset.com/foxbunny/gimp-studio) and support packages<br />
Server = http://gimpstudio.brankovukelic.com/i686<br />
<br />
[pozitpoh]<br />
Server = http://pozitpoh.is-a-geek.org/repo/i686<br />
<br />
[fukawi]<br />
# Some Nagios Stuff; molly-guard; celtx and various networking tools.<br />
Server = http://repo.fukawi2.nl/i686/<br />
Server = ftp://repo.fukawi2.nl/i686/<br />
<br />
[kdemod-core]<br />
# Provides core KDE 4.x packages.<br />
# Requires Arch community repository which provides additional packages.<br />
Server = http://chakra-project.org/repo/kdemod-core/i686<br />
Server = http://kdemod.iskrembilen.com/core/i686<br />
Server = http://archlinux.puzzle.ch/kdemod/core/i686<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/core/i686<br />
<br />
[kdemod-extragear]<br />
# Provides additional KDE 4.x packages.<br />
Server = http://chakra-project.org/repo/kdemod-extragear/i686<br />
Server = http://kdemod.iskrembilen.com/extragear/i686<br />
Server = http://archlinux.puzzle.ch/kdemod/extragear/i686<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/extragear/i686<br />
<br />
[kdemod-playground]<br />
# Provides unstable packages for testing purposes.<br />
Server = http://kdemod.iskrembilen.com/playground/i686<br />
Server = http://archlinux.puzzle.ch/kdemod/playground/i686<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/playground/i686<br />
<br />
[kpiche]<br />
# Stable OpenSync packages.<br />
Server = http://kpiche.archlinux.ca/repo<br />
<br />
[pst]<br />
# Painters Studio and support packages (http://pst.brankovukelic.com/)<br />
Server = http://pst.brankovukelic.com/i686<br />
<br />
[rfad]<br />
# Repository made by haxit | Contact at: requiem [at] archlinux.us for package suggestions!<br />
Server = http://web.ncf.ca/ey723/archlinux/repo/<br />
<br />
[sergej-repo]<br />
# ion3 and some other stuff<br />
# http://code.google.com/p/archlinux-stuff/source/browse/trunk/my-repo<br />
Server = http://arch.pp.ru/sergej-repo/i686/<br />
<br />
[xdemon-repo]<br />
#madwimax, kismet-svn and aircrack-svn, et cetera...<br />
Server=http://repo.x-demon.org/archlinux/os/i686<br />
<br />
[nightly]<br />
#nightly builds of some packages from the AUR<br />
# Repo-Tracker: http://tracker.kromonos.net/projects/show/nightlyarch<br />
Server = http://nightly.uhuc.de/i686<br />
<br />
[pozitpoh]<br />
# Fresh psi-plus, kvirc4, urtconnector, etc. More info at http://pozitpoh.is-a-geek.org:8080/wiki/index.php?title=ArchLinux_Repo_en<br />
Server = http://pozitpoh.is-a-geek.org:8080/repo/i686<br />
<br />
[herecura-stable]<br />
# additional apps not found in community<br />
Server = http://herecura.be/repo/herecura-stable/i686<br />
<br />
[herecura-testing]<br />
# additional apps for testing build against stable arch<br />
Server = http://herecura.be/repo/herecura-testing/i686<br />
<br />
[studioidefix]<br />
# precompiled boxee packages<br />
Server = http://studioidefix.googlecode.com/hg/repo/i686<br />
<br />
[mingw32]<br />
# libs & tools for crosscompiling for Win32, mainly taken from AUR.<br />
# Contact: Alexander 'hatred' Drozdov <adrozdoff [at] gmail (dot) com> (Russian-speaked guys can write on Russian :-)<br />
Server = http://hatred.homelinux.net/archlinux/mingw32/os/i686<br />
<br />
[jrepo]<br />
# Random pkgs for my friends low-end and old laptop<br />
# These pkgs are optimzed for pentium-m (i686 + sse2)<br />
# All pks that support pulseaudio have been natively complied to include it<br />
# http://dl.dropbox.com/u/3422289/README list of pkgs and info<br />
Server = http://dl.dropbox.com/u/3422289<br />
<br />
[pfkernel]<br />
# pf-kernel, nvidia-pf, squid3<br />
Server = http://dl.dropbox.com/u/11734958/i686<br />
<br />
[suckless]<br />
# suckless.org packages<br />
Server = http://dl.suckless.org/arch/i686<br />
<br />
</nowiki><br />
<br />
===x86-64===<br />
<nowiki><br />
[unarch]<br />
# it offers support mainly against devel packages<br />
# contains stable packages that aren't in official repo<br />
Server = http://us4all.info/unarch/arch/x86_64<br />
<br />
[kde4-eyecandy-64]<br />
#Useful and beautiful plasmoids and themes for KDE4<br />
Server = http://archlinuxgr.tiven.org/kde4-eyecandy/x86_64/<br />
<br />
[adslgr64]<br />
#The Hellenic (Greek) archlinux unofficial repository with many interesting packages.<br />
Server = http://archlinuxgr.tiven.org/archlinux/x86_64/<br />
<br />
[andrwe]<br />
# for a list of packages see: http://andrwe.dyndns.org/doku.php/blog/repository<br />
Server = http://andrwe.dyndns.org/repo/x86_64<br />
<br />
[archaudio-stable]<br />
# Pro-audio repo:<br />
# - http://archaudio.org<br />
# replace "stable" with repo type (testing/experimental)<br />
Server = http://repos.archaudio.org/stable/x86_64<br />
<br />
[archlinux-es]<br />
# Repositorio Hispano (Spanish/Hispanic Respository)<br />
Server = http://repo.archlinux-es.org/x86_64<br />
<br />
[archlinuxfr]<br />
## The french Archlinux communities packages<br />
Server = http://repo.archlinux.fr/x86_64<br />
<br />
[archlinuxve]<br />
# Home of the splashy packages<br />
Server = http://repo.archlinux.com.ve/x86_64<br />
<br />
[archstuff]<br />
# AUR's most voted and many bin32-* and lib32-* packages<br />
Server = http://archstuff.vs169092.vserver.de/x86_64<br />
<br />
[arch-games]<br />
# The Arch Linux Gaming repository project<br />
Server = http://arch.twilightlair.net/games/x86_64<br />
Server = http://pseudoform.org/arch-games/games/x86_64<br />
<br />
[cake]<br />
Server = http://hereticlinux.org/repo/cake/x86_64/ <br />
<br />
[compiz-fusion]<br />
#compiz-fusion-git<br />
Server = http://compiz.dreamz-box.de/x86_64<br />
<br />
[cinan]<br />
#contains packages which aren't in official repos<br />
#info at cinan.tk or cinan6.tk<br />
Server = http://cinan.yw.sk/x86_64<br />
<br />
[englab]<br />
# Packages of englab (mathematical programs), its toolboxes and dependencies<br />
Server = http://englab.bugfest.net/arch/x86_64<br />
<br />
[kdemod-core]<br />
# Provides core KDE 4.x packages.<br />
# Requires Arch community repository which provides additional packages.<br />
Server = http://chakra-project.org/repo/core/x86_64<br />
Server = http://kdemod.iskrembilen.com/core/x86_64<br />
Server = http://archlinux.puzzle.ch/kdemod/core/x86_64<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/core/x86_64<br />
<br />
[kdemod-extragear]<br />
# Provides additional KDE 4.x packages.<br />
Server = http://chakra-project.org/repo/extragear/x86_64<br />
Server = http://kdemod.iskrembilen.com/extragear/x86_64<br />
Server = http://archlinux.puzzle.ch/kdemod/extragear/x86_64<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/extragear/x86_64<br />
<br />
[kdemod-playground]<br />
# Provides unstable packages for testing purposes.<br />
Server = http://chakra-project.org/repo/playground/x86_64<br />
Server = http://kdemod.iskrembilen.com/playground/x86_64<br />
Server = http://archlinux.puzzle.ch/kdemod/playground/x86_64<br />
Server = ftp://ftp.wh-stuttgart.net/kdemod/playground/x86_64<br />
<br />
[kdemod-legacy]<br />
# Provides KDE 3.5.x packages. <br />
# Requires Arch community repository which provides additional packages.<br />
Server = http://chakra-project.org/repo/legacy/x86_64<br />
<br />
[pst]<br />
# Painters Studio and support packages (http://pst.brankovukelic.com/)<br />
Server = http://pst.brankovukelic.com/x86_64<br />
<br />
[sergej-repo]<br />
# ion3 and some other stuff<br />
# http://code.google.com/p/archlinux-stuff/source/browse/trunk/my-repo<br />
Server = http://arch.pp.ru/sergej-repo/x86_64/<br />
<br />
[dstr-repo]<br />
#qutim, psi, kdevelop with plugins dev builds and other stuff<br />
Server = http://dimon.homeftp.org/repo/x86_64<br />
<br />
[nightly]<br />
#nightly builds of some packages from the AUR<br />
# Repo-Tracker: http://tracker.kromonos.net/projects/show/nightlyarch<br />
Server = http://nightly.uhuc.de/x86_64<br />
<br />
[zen]<br />
#Various and zengeist' AUR packages<br />
Server = http://zloduch.cz/archlinux/x86_64<br />
<br />
[digitalpioneer]<br />
#Recent GIT/SVN/whatever builds of selected AUR packages<br />
#List of packages is at http://dl.getdropbox.com/u/453116/repo/pkglist and is subject to change<br />
#x86_64 only<br />
Server = http://dl.getdropbox.com/u/453116/repo<br />
<br />
[seiichiro]<br />
# VDR and some plugins, mms, foo2zjs-drivers<br />
Server = http://repo.seiichiro0185.org/x86_64<br />
<br />
[herecura-stable]<br />
# additional apps not found in community<br />
Server = http://herecura.be/repo/herecura-stable/x86_64<br />
<br />
[herecura-testing]<br />
# additional apps for testing build against stable arch<br />
Server = http://herecura.be/repo/herecura-testing/x86_64<br />
<br />
[studioidefix]<br />
# precompiled boxee packages<br />
Server = http://studioidefix.googlecode.com/hg/repo/x86_64<br />
<br />
[pfkernel]<br />
# pf-kernel, nvidia-pf, squid3<br />
Server = http://dl.dropbox.com/u/11734958/x86_64<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>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=AUR_helpers/Graphical&diff=112626AUR helpers/Graphical2010-07-25T16:27:37Z<p>AndreasBWagner: /* System Tray Notifiers */</p>
<hr />
<div>[[Category:Package management (English)]]<br />
[[Category:Utilities (English)]]<br />
[[Category:General (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English| Pacman_GUI_Frontends}}<br />
{{i18n_entry|Italiano| Pacman_GUI_Frontends_(Italiano)}}<br />
{{i18n_entry|简体中文| Pacman_GUI_Frontends_(简体中文)}}<br />
{{i18n_entry|Türkçe| Pacman Ön Yüzleri (Türkçe)}}<br />
{{i18n_links_end}}<br />
This is a list of Pacman GUI frontends, designed to provide a graphical version of the CLI tool, pacman. The list includes Gtk2 based software, Qt based software, and a variety of System Tray Notifiers. None of these tools are officially supported.<br />
<br />
= Gnome/Gtk2 Pacman GUI Software =<br />
<br />
===GtkPacman===<br />
<br />
GtkPacman is a simple, but powerful frontend to the Arch Linux pacman. It is written in python, using pygtk, and is fast and stable. With gtkPacman, system management becomes matter of a button press. The last release for GtkPacman was in February, 2008.<br />
<br />
*Homepage: http://gtkpacman.berlios.de/ <br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=8027<br />
*Screenshots: http://developer.berlios.de/screenshots/?group_id=4808<br />
<br><br />
<br />
'''WARNING:''' This program installs and removes software packages with the -d switch, meaning it does NOT check for dependencies. Using this program can put you at risk for breaking your system. --[[User:Falcata|Falcata]] 12:35, 29 May 2010 (EDT)<br />
<br />
= KDE/Qt Pacman GUI Software =<br />
<br />
===Shaman===<br />
<br />
Shaman is a GUI for Arch Linux package handling. It is based on libalpm. This has a lot of advantages, from integration to speed. Also, queries and searches are performed faster than pacman, and with a high level of customization. Shaman can do everything a package manager usually does, including: <br />
:Installing/removing/upgrading packages<br />
:Searching/filtering packages<br />
:Package information<br />
:Database maintenance tasks<br />
<br />
Additionally Shaman supports time based database updates, a RSS-feed reader for Arch Linux package news and editing the pacman configuration files.<br />
<br />
*Homepage: http://chakra-project.org/tools-shaman.html<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=15422<br />
*Screenshots: http://chakra-project.org/screenshots/tools_shaman.png<br />
<br><br />
<br />
= System Tray Notifiers =<br />
<br />
===Archup===<br />
<br />
archup is a small C application which informs the user when system-updates for Archlinux are available.<br />
<br />
*Homepage: http://www.nongnu.org/archup/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=35792<br />
*Screenshots: http://www.nongnu.org/archup/<br />
<br />
===Chase===<br />
<br />
Chase is a notification daemon for KDE4, created by the chakra project, Chase uses libapm to manage updates, is fully configurable and integrated with Shaman and the KDE4 desktop environment<br />
<br />
*Homepage: http://chakra-project.org/bbs/viewtopic.php?id=1303<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=29567<br />
*Screenshots: http://chakra-project.org/bbs/viewtopic.php?id=1303<br />
<br />
===alunn===<br />
<br />
alunn is a simple notification applet for the Arch Linux distribution. It will notify you whenever there are new package updates ready for Pacman or when news appear on the Arch Linux frontpage. Customizable commands to upgrade the system or read the news can be executed when clicking the notification icon.<br />
<br />
*Homepage: http://nedrebo.org/code/alunn/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=6098<br />
*Screenshots: http://nedrebo.org/code/alunn/<br />
<br />
'''''NOTE: There is currently a bug with this applet but it is easy to resolve! Details of the bug and instruction to work around it, as well as patched files are available on this page: http://bugs.archlinux.org/task/20010'''<br />
''<br />
<br />
===pacman-notifier===<br />
<br />
Written in Ruby, uses Gtk. Shows an icon in the system tray and popup notifications (using libnotify) for new packages.<br />
<br />
*Homepage: http://code.google.com/p/pacman-notifier/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=15193<br />
*Screenshots: http://code.google.com/p/pacman-notifier/<br />
<br />
===pacupdate===<br />
<br />
Pacupdate is a small application that notifies the user about new updates for Arch Linux. If pacupdate finds out that a update is available, it will display a notification in SystemTray.<br />
<br />
*Homepage: http://code.google.com/p/pacupdate/<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=19068<br />
*Screenshots: <br />
<br />
===ZenMan===<br />
<br />
PacMan frontend (tray update notifier) for GTK/GNOME/zenity/libnotify.<br />
<br />
*Homepage:<br />
*AUR Package Details:http://aur.archlinux.org/packages.php?ID=25948<br />
*Screenshots:http://show.harvie.cz/screenshots/zenman-screenshot-2.png<br />
<br />
===Yaourt-Dzen Notifier===<br />
<br />
A very simple 14 line shell script that displays the number of available updates in the dzen2 title window and a list of these updates in the slave window. Uses yaourt, dzen2 and inotify-tools.<br />
<br />
*Homepage: http://andreasbwagner.tumblr.com/post/853471635/arch-linux-update-notifier-for-dzen2<br />
<br />
<br><br />
<br />
= Desktop Notifications Notifiers =<br />
===archup===<br />
archup is a small (just 44 lines of code) C application. It is intended to be lightweight and just do what it should: notify about possible updates. archup uses GTk+ and libnotify to show a desktop notification if updates are available.<br />
*Homepage: [[archup]]<br />
*AUR Package Details: http://aur.archlinux.org/packages.php?ID=35792<br />
*Screenshots: http://developer.berlios.de/dbimage.php?id=4687 , http://developer.berlios.de/dbimage.php?id=4688<br />
<br />
= Inactive Software Packages =<br />
*[http://guzuta.berlios.de/ Guzuta]<br />
*[https://opensvn.csie.org/PacmanManager/ PacmanManager]<br />
*[http://code.google.com/p/pacmon/ pacmon]<br />
*[https://gna.org/projects/paku/ Paku]<br />
*[http://www.kde-apps.org/content/show.php/YAPG+-+Yet+Another+Pacman+Gui+?content=60052 YAPG]<br />
*[http://sourceforge.net/projects/zenitypacgui/ zenity_pacgui]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Xmobar&diff=109914Xmobar2010-06-28T15:33:13Z<p>AndreasBWagner: /* MPD intergration */ fixed broken link to mpd.sh</p>
<hr />
<div>{{stub}}<br />
[[Category:Eye_candy_(English)]]<br />
[[Category:Utilities_(English)]]<br />
<br />
= Introduction =<br />
[http://code.haskell.org/~arossato/xmobar/ xmobar] is a lightweight bar written in haskell. It is one of the most popular bars to use together with [[Xmonad]].<br>Even though it is written in haskell, you don't need to know haskell to configure it.<br />
<br />
= Installation =<br />
xmobar can be found in the [community] repository and the development version (xmobar-darcs) can be found in [[AUR|aur]].<br />
<br />
= Configuration =<br />
Xmobar can be configured both with command line options and a configuration file (~/.xmobarrc).<br>Any command line option will override the coresponding option set in the configuration file.<br />
<br />
== Using ~/.xmobarrc ==<br />
Following is a short description of the options you can use in ~/.xmobarrc<br />
; font : The font to use. If you got XFT fonts enabled, prefix XFT fonts with xft:<br />
; fgColor : The default colour to use for the font, takes both colour names and hex colours.<br />
; bgColor : The colour of the bar, takes both colour names and hex colours.<br />
; position : The position of the bar. Keywords are: Top, TopW, Bottom, BottomW and Static.<br><br />
:* Top/Bottom - The top/bottom of the screen.<br />
:* TopW/BottomW - The top/bottom of the screen with a fixed with. They take 2 options:<br />
:** ''Alignment:'' '''L'''eft, '''C'''enter or '''R'''ight aligned.<br />
:** ''Width:'' An iteger for the width of the bar in percent.<br />
:: Example: Centered at the bottom of the screen, with a width of 75% of the screen.<br />
position = BottomW C 75<br />
:* Static - A fixed position on the screen, with a fixed with. Static takes 4 keyword arguments:<br />
:** xpos: Horisontal position in pixels, starting at the upper left corner.<br />
:** ypos: Vertical position in pixels, starting at the upper left corner.<br />
:** width: The width of the bar in pixels.<br />
:** height: The height of the bar in pixels.<br />
:: Example: Top left of the screen, with a width of 1024 pixels and height of 15 pixels<br />
position = Static { xpos = 0 , ypos = 0, width = 1024, height = 15 }<br />
; commands : For setting the options of the programs to run (optional).<br />
: commands is a comma seperated list of commands, and their options. Example:<br />
:: <tt>[Run Memory ["-t","Mem: <usedratio>%"] 10, Run Swap [] 10]</tt><br />
:: runs the Memory plugin, with the specified template, and the Swap plugin, with default args. And both with an update every second. (the update rate is in 1/10 seconds)<br />
; sepChar : The character to be used for indicating commands in the output template (default '%').<br />
; alignSep : A string of characters for aligning text in the output template. (default '}{') The text before the first char will be left aligned, the text between them will be centered, and the text to the right of the last char will be right aligned.<br />
; template : The output template is a string containing text and commands.<br />
:* %command% - An command to run. The output can contain a flag to set the colour of the text. You can chage the '%' to some other char with '''sepChar'''<br />
:* <fc=''colour''></fc> - Sets the colour of a partion of text, takes both colour names and hex colours.<br />
<br />
=== Example .xmobarrc file ===<br />
<br />
<pre><br />
Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"<br />
, bgColor = "black"<br />
, fgColor = "grey"<br />
, position = Top<br />
, lowerOnStart = True<br />
, commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000<br />
, Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10<br />
, Run Network "eth1" ["-L","0","-H","32","--normal","green","--high","red"] 10<br />
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10<br />
, Run Memory ["-t","Mem: <usedratio>%"] 10<br />
, Run Swap [] 10<br />
, Run Com "uname" ["-s","-r"] "" 36000<br />
, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10<br />
]<br />
, sepChar = "%"<br />
, alignSep = "}{"<br />
, template = "%cpu% | %memory% * %swap% | %eth0% - %eth1% }{ <fc=#ee9a00>%date%</fc>| %EGPF% | %uname%"<br />
}<br />
</pre><br />
<br />
== Gmail integration ==<br />
There isn't a plugin for gmail , but this can be easily added by using an external command. Download this script [http://github.com/jelly/dotfiles/blob/master/bin/xmobar/gmail.sh] . And then add this too xmobar:<br />
<br />
In the commands section <br />
Run Com "sh" ["/path/to/mail.sh"] "mail" interval time<br />
<br />
In the template <br />
%mail%<br />
<br />
== MPD intergration ==<br />
Since there also isn't an mpd plugin , you can use the same trick as the gmail plugin. You will need mpc for this , [http://github.com/jelly/dotfiles/blob/master/bin/mpd.sh here is the simple script] , save this script some where and run it like this :<br />
<br />
Run Com "sh" ["~/bin/mpd.sh"] "mpd" 10 <br />
<br />
In the template add this:<br />
%mpd%<br />
<br />
== Conky-Cli integration ==<br />
One might want to integrate conky-cli into xmobar because the plugins shipped with xmobar doesn't support displaying some types of information, such as the amount of space on a partition. Here is a bash script which pipes information from conky-cli into a text file which then cats the file.<br />
<pre><br />
#!/bin/bash<br />
# Filename: ~/.xmonad/conkyscript<br />
conky -c ~/.conkyclirc -i1 -q > conkystat &<br />
sleep 4<br />
killall -q conky<br />
cat conkystat<br />
rm conkystat<br />
</pre><br><br />
Add this line to the commands section inside ~/.xmobarrc which makes the script run every 30 seconds.<br />
<pre><br />
, Run Com ".xmonad/conkyscript" ["&"] "conky" 300<br />
</pre><br><br />
Then add this to your .xinitrc before "exec xmonad".<br />
<pre><br />
.xmonad/conkyscript &<br />
sleep 6 && xmobar &<br />
</pre><br><br />
Then add %conky% to your template section, and then it should work.<br />
= Resources = <br />
[http://code.haskell.org/~arossato/xmobar/ xmobar]</div>AndreasBWagnerhttps://wiki.archlinux.org/index.php?title=Xmobar&diff=109913Xmobar2010-06-28T15:26:32Z<p>AndreasBWagner: /* Gmail integration */ fixed broken link to gmail.sh</p>
<hr />
<div>{{stub}}<br />
[[Category:Eye_candy_(English)]]<br />
[[Category:Utilities_(English)]]<br />
<br />
= Introduction =<br />
[http://code.haskell.org/~arossato/xmobar/ xmobar] is a lightweight bar written in haskell. It is one of the most popular bars to use together with [[Xmonad]].<br>Even though it is written in haskell, you don't need to know haskell to configure it.<br />
<br />
= Installation =<br />
xmobar can be found in the [community] repository and the development version (xmobar-darcs) can be found in [[AUR|aur]].<br />
<br />
= Configuration =<br />
Xmobar can be configured both with command line options and a configuration file (~/.xmobarrc).<br>Any command line option will override the coresponding option set in the configuration file.<br />
<br />
== Using ~/.xmobarrc ==<br />
Following is a short description of the options you can use in ~/.xmobarrc<br />
; font : The font to use. If you got XFT fonts enabled, prefix XFT fonts with xft:<br />
; fgColor : The default colour to use for the font, takes both colour names and hex colours.<br />
; bgColor : The colour of the bar, takes both colour names and hex colours.<br />
; position : The position of the bar. Keywords are: Top, TopW, Bottom, BottomW and Static.<br><br />
:* Top/Bottom - The top/bottom of the screen.<br />
:* TopW/BottomW - The top/bottom of the screen with a fixed with. They take 2 options:<br />
:** ''Alignment:'' '''L'''eft, '''C'''enter or '''R'''ight aligned.<br />
:** ''Width:'' An iteger for the width of the bar in percent.<br />
:: Example: Centered at the bottom of the screen, with a width of 75% of the screen.<br />
position = BottomW C 75<br />
:* Static - A fixed position on the screen, with a fixed with. Static takes 4 keyword arguments:<br />
:** xpos: Horisontal position in pixels, starting at the upper left corner.<br />
:** ypos: Vertical position in pixels, starting at the upper left corner.<br />
:** width: The width of the bar in pixels.<br />
:** height: The height of the bar in pixels.<br />
:: Example: Top left of the screen, with a width of 1024 pixels and height of 15 pixels<br />
position = Static { xpos = 0 , ypos = 0, width = 1024, height = 15 }<br />
; commands : For setting the options of the programs to run (optional).<br />
: commands is a comma seperated list of commands, and their options. Example:<br />
:: <tt>[Run Memory ["-t","Mem: <usedratio>%"] 10, Run Swap [] 10]</tt><br />
:: runs the Memory plugin, with the specified template, and the Swap plugin, with default args. And both with an update every second. (the update rate is in 1/10 seconds)<br />
; sepChar : The character to be used for indicating commands in the output template (default '%').<br />
; alignSep : A string of characters for aligning text in the output template. (default '}{') The text before the first char will be left aligned, the text between them will be centered, and the text to the right of the last char will be right aligned.<br />
; template : The output template is a string containing text and commands.<br />
:* %command% - An command to run. The output can contain a flag to set the colour of the text. You can chage the '%' to some other char with '''sepChar'''<br />
:* <fc=''colour''></fc> - Sets the colour of a partion of text, takes both colour names and hex colours.<br />
<br />
=== Example .xmobarrc file ===<br />
<br />
<pre><br />
Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"<br />
, bgColor = "black"<br />
, fgColor = "grey"<br />
, position = Top<br />
, lowerOnStart = True<br />
, commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000<br />
, Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10<br />
, Run Network "eth1" ["-L","0","-H","32","--normal","green","--high","red"] 10<br />
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10<br />
, Run Memory ["-t","Mem: <usedratio>%"] 10<br />
, Run Swap [] 10<br />
, Run Com "uname" ["-s","-r"] "" 36000<br />
, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10<br />
]<br />
, sepChar = "%"<br />
, alignSep = "}{"<br />
, template = "%cpu% | %memory% * %swap% | %eth0% - %eth1% }{ <fc=#ee9a00>%date%</fc>| %EGPF% | %uname%"<br />
}<br />
</pre><br />
<br />
== Gmail integration ==<br />
There isn't a plugin for gmail , but this can be easily added by using an external command. Download this script [http://github.com/jelly/dotfiles/blob/master/bin/xmobar/gmail.sh] . And then add this too xmobar:<br />
<br />
In the commands section <br />
Run Com "sh" ["/path/to/mail.sh"] "mail" interval time<br />
<br />
In the template <br />
%mail%<br />
<br />
== MPD intergration ==<br />
Since there also isn't an mpd plugin , you can use the same trick as the gmail plugin. You will need mpc for this , here is the simple script ( link [http://github.com/jelly/dotfiles/tree/7b534f88a7d2b5593efcf58deaaaf2b0d37d08bb/bin] ) , save this script some where and run it like this :<br />
<br />
Run Com "sh" ["~/bin/mpd.sh"] "mpd" 10 <br />
<br />
In the template add this:<br />
%mpd%<br />
<br />
<br />
== Conky-Cli integration ==<br />
One might want to integrate conky-cli into xmobar because the plugins shipped with xmobar doesn't support displaying some types of information, such as the amount of space on a partition. Here is a bash script which pipes information from conky-cli into a text file which then cats the file.<br />
<pre><br />
#!/bin/bash<br />
# Filename: ~/.xmonad/conkyscript<br />
conky -c ~/.conkyclirc -i1 -q > conkystat &<br />
sleep 4<br />
killall -q conky<br />
cat conkystat<br />
rm conkystat<br />
</pre><br><br />
Add this line to the commands section inside ~/.xmobarrc which makes the script run every 30 seconds.<br />
<pre><br />
, Run Com ".xmonad/conkyscript" ["&"] "conky" 300<br />
</pre><br><br />
Then add this to your .xinitrc before "exec xmonad".<br />
<pre><br />
.xmonad/conkyscript &<br />
sleep 6 && xmobar &<br />
</pre><br><br />
Then add %conky% to your template section, and then it should work.<br />
= Resources = <br />
[http://code.haskell.org/~arossato/xmobar/ xmobar]</div>AndreasBWagner