<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.archhurd.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Z3ntu</id>
	<title>Arch Hurd Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archhurd.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Z3ntu"/>
	<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Special:Contributions/Z3ntu"/>
	<updated>2026-05-07T12:37:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=Main_Page&amp;diff=11</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Main_Page&amp;diff=11"/>
		<updated>2019-04-14T10:18:09Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Z3ntu moved page Thanks Creation9 - Best SEO Company Ahmedabad to Main Page over a redirect without leaving a redirect: revert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to Arch Hurd ==&lt;br /&gt;
&lt;br /&gt;
The wiki is currently undergoing reconstruction.&lt;br /&gt;
&lt;br /&gt;
* [[Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get in touch ==&lt;br /&gt;
&lt;br /&gt;
* IRC: #archhurd on irc.freenode.net&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=Main_Page&amp;diff=7</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Main_Page&amp;diff=7"/>
		<updated>2018-07-30T11:24:42Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Import from https://web.archive.org/web/20160418182215/http://wiki.archhurd.org/index.php?title=Main_Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to Arch Hurd ==&lt;br /&gt;
&lt;br /&gt;
The wiki is currently undergoing reconstruction.&lt;br /&gt;
&lt;br /&gt;
* [[Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get in touch ==&lt;br /&gt;
&lt;br /&gt;
* IRC: #archhurd on irc.freenode.net&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=Porting_Guide&amp;diff=6</id>
		<title>Porting Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Porting_Guide&amp;diff=6"/>
		<updated>2018-07-30T11:24:42Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Import from https://web.archive.org/web/20120205063445/http://wiki.archhurd.org:80/wiki/Porting_Guide using https://wiki-conv.appspot.com/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a guide for porting your favorite application to Arch Hurd. Before you start read the Arch Linux wiki pages about Creating Packages and the PKGBUILD. [https://web.archive.org/web/20120205063445/http://wiki.archlinux.org/index.php/Creating_Packages][http://wiki.archlinux.org/index.php/PKGBUILD]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can upload your PKGBUILD to the [[AUR]], if you already created one.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Preliminary Checks ===&lt;br /&gt;
 &lt;br /&gt;
First, make sure the Dev team hasn&#039;t already moved it! Check our packages list, or run a command like&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -Sys $PACKAGE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Second, make sure the [[AUR]] doesn&#039;t have it.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Downloading files ===&lt;br /&gt;
 &lt;br /&gt;
There are a few ways to do this, but the end result needs to be a collection of source files on your Hurd system that [mostly] resemble the ones used to build the package for ArchLinux.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== From ABS-Archlinux ====&lt;br /&gt;
 &lt;br /&gt;
This is the recommended way (for now). Download [[ABS-Archlinux]] from our AUR, then run&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;abs-archlinux $REPO/$PACKAGE&lt;br /&gt;
cp -r /var/abs-archlinux/$REPO/$PACKAGE ~/builds&lt;br /&gt;
cd ~/builds/$PACKAGE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Assuming you have a folder called &#039;builds&#039; in your home directory for this sort of thing.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== By some other script ====&lt;br /&gt;
 &lt;br /&gt;
If for some reason that doesn&#039;t work, you need to get all the sources for the Arch Linux package. Scripts like [[this one]] may be helpful, or you can manually download the sources from the [[Arch Linux Repositories]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Making sure it&#039;s Hurd-ready ===&lt;br /&gt;
 &lt;br /&gt;
Hurd has a few caveats that may trip you up.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Removing /usr/ ====&lt;br /&gt;
 &lt;br /&gt;
Arch Hurd does not make use of the /usr/ directory, instead placing everything under /. Most of the time, this isn&#039;t a big deal, commands like the following will help greatly:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;sed -e &#039;s|/usr||&#039; -i PKGBUILD&lt;br /&gt;
sed -e &#039;s|usr/||&#039; -i PKGBUILD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Repeat as necessary for other files, like the install files if your are porting an Arch Linux package.  This may damage the checksums of some crucial files, however, so running &lt;br /&gt;
&amp;lt;pre&amp;gt;makepkg -g&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 to obtain the correct checksums when finished is almost certainly necessary.&lt;br /&gt;
&lt;br /&gt;
==== The Ubiquitous MAX_PATH &amp;amp; PATH_MAX ====&lt;br /&gt;
 &lt;br /&gt;
Many *nix systems define a variable that represents the number of characters a file path can have without failing. Often this is a relatively large - but still finite - number like 4,096. Hurd does not have any such restriction. Some programs, however, expect this macro to be present when compiling, and will throw errors if it does not exist. The simplest way to fix this is to edit the source of the offending files, placing&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;#ifndef MAX_PATH&lt;br /&gt;
#define MAX_PATH 4096&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
somewhere close to other defines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is sometimes a MAXHOSTNAMELEN variable, which can be replaced with 1024.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;#define MAXHOSTNAMELEN 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;Note: If you&#039;re feeling particularly adventurous, the [[GNU Hurd Porting Guide]] specifies replacements for uses of these constants, for example using dynamic allocation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since the source is modified, of course, you will need to do a few things:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
# Create a patch. (You may find [[this]] particularly helpful.)&lt;br /&gt;
# Add the patch to your sources=() section of the PKGBUILD and add an appropriate entry in md5sums. One of my friends recommended me to order [[[custom writing]]]on EssaysProfessors.Com. To tell you the truth, I have never regretted my decision. The writers are real professionals and know how to write impressive work full of knowledgeable information. (An easy way to update this is to copy the output from makepkg -g after saving the changes to sources=().)&lt;br /&gt;
# Place a line of code in your build() function that applies the patch, something like:  &amp;lt;pre&amp;gt;cd ${srcddir}/${pkgname}-${pkgver}  #add this line, or something similar patch -p1 &amp;amp;lt; ${srcdir}/mypatch.patch  ./configure --prefix=  &amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Fixing Python setup.py Installs ====&lt;br /&gt;
 &lt;br /&gt;
For some strange (and currently unknown) reason, python&#039;s setup.py does not respect the --root= argument. This means that any PKGBUILDs using said argument will likely produce empty packages, or fail to build at all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To fix this, you can instead use the other arguments to setup.py to tell it to install into ${pkgdir}. For most packages, all you should need to do is change the --root= argument to --prefix. Don&#039;t forget the trailing / - the setup.py scripts are having sometimes problems without it.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;python setup.py install --prefix=&amp;quot;${pkgdir}/&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===== Hardcoded paths =====&lt;br /&gt;
 &lt;br /&gt;
On a related note, some setup.py scripts may have file paths hardcoded into them, and due to the lack of --root will try to install the hardcoded files directly into your filesystem (obviously not useful when trying to build a package!). Usually, sed can help here. For example:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;sed -i &amp;quot;s:/usr/share/:${pkgdir}/share/:g&amp;quot; setup.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
added to the build() clause of your PKGBUILD will replace any instances of /usr/share/ in the setup.py with (package dir)/share, therefore ensuring the files originally bound for /usr/share will instead appear in the /share directory of your package. (Remember that Arch Hurd doesn&#039;t need or use /usr.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that putting single quotes around the sed statement will cause the /usr/share/ to quite literally be replaced with &amp;quot;${pkgdir}/share/&amp;quot;, which is definitely not the desired effect.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Other Traps ====&lt;br /&gt;
 &lt;br /&gt;
There are a few more, less common, problems that are known to porters. A more detailed list, with elegant suggestions for these problems can be found at [[GNU Hurd&#039;s porting guidelines]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Building It ===&lt;br /&gt;
 &lt;br /&gt;
Once you&#039;ve got all that out of the way, you can try running&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;makepkg -i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The &#039;&#039;&#039;-i&#039;&#039;&#039; argument tells makepkg to automtically install the package.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Success ====&lt;br /&gt;
&lt;br /&gt;
Congratulations!  You&#039;ve built a package!  Now run &lt;br /&gt;
&amp;lt;pre&amp;gt;makepkg --source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 and submit the resultant tarball to AUR so that everyone else can enjoy the fruits of your labor.&lt;br /&gt;
&lt;br /&gt;
==== Failure ====&lt;br /&gt;
 &lt;br /&gt;
If something goes wrong, as it probably will, don&#039;t be discouraged. You can consult other Hurd folks on the forums or IRC channels for advice, look at [[Debian&#039;s patch list]] and see if their patches will help you, or just dive right in and fix it yourself!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sometimes, fakeroot/fakeauth can cause strange and seemingly random errors while in the final stages of making a package. If you&#039;re sure nothing could go wrong by doing so, trying to build the package as root (using --asroot with makepkg) can help as a workaround.&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=Alternate_Installation_Guide&amp;diff=5</id>
		<title>Alternate Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Alternate_Installation_Guide&amp;diff=5"/>
		<updated>2018-07-30T11:24:42Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Import from https://web.archive.org/web/20110902094241/http://wiki.archhurd.org/wiki/Alternate_Installation_Guide using https://wiki-conv.appspot.com/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Creating the Partition ==&lt;br /&gt;
 &lt;br /&gt;
The mainly-used filesystem for the Hurd is ext2; the code is mature and seems to work reasonably well, for the most part. So we&#039;ll be using ext2 in our set up.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Making a qemu image ===&lt;br /&gt;
 &lt;br /&gt;
Qemu is currently the main way we use Arch Hurd, so if you don&#039;t have a spare partition or HDD lying around, you can use a qemu image to house your installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barrucadu has created a script which can automatically create 10GB Arch Hurd qemu images containing the base and base-devel groups which you may wish to consider. It can be found [[here]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;# Create the image&lt;br /&gt;
qemu-img create -f raw hurd.img 1GB&lt;br /&gt;
&lt;br /&gt;
# Make and format partition&lt;br /&gt;
losetup /dev/loop0 hurd.img&lt;br /&gt;
fdisk /dev/loop0&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&lt;br /&gt;
# partition should start at sector 63. Check with fdisk -u=sectors -l hurd.img&lt;br /&gt;
losetup -o 32256 /dev/loop0 hurd.img&lt;br /&gt;
mkfs.ext2 -b 4096 -I 128 -o hurd /dev/loop0 261048&lt;br /&gt;
# See below if you do not plan on making a 1GB image&lt;br /&gt;
&lt;br /&gt;
# mount image&lt;br /&gt;
mount -o loop /dev/loop0 /mnt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Finding the Block Number ====&lt;br /&gt;
 &lt;br /&gt;
If you don&#039;t plan on making a 1GB image, you will need to change the &#039;261048&#039; in the above command. Unfortunately, mkfs.ext2 does not do a good job of automatically calculating the correct number of blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One method of calculating the number is &#039;number of sectors&#039; * 512 / &#039;block size&#039;. The following command parses fdisk output to compute the number:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;echo `sudo fdisk -u=sectors -l /dev/loop0 \&lt;br /&gt;
      | grep /dev/loop0p1 \&lt;br /&gt;
      | sed &#039;s/ \+/ /g&#039; \&lt;br /&gt;
      | cut -d&#039; &#039; -f4` &#039;*&#039; 1024 / 4096 | bc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
If this does not work, examine the get_hypermetadata error you will find when attempting to boot, go back to this section, and replace the number with &#039;disk size reported&#039; / &#039;block size&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Selman has recommended using qemu-nbd to eliminate this step. See [[Another_Installation_Guide]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Using a real partition ===&lt;br /&gt;
 &lt;br /&gt;
So, you have a partition or HDD sitting around, and have decided to install Arch Hurd on it. Good! However, if you&#039;re planning to boot off of this device, note that the Hurd only supports PATA and SCSI disks currently, though you can use a SATA disk if you&#039;ll be running it in an emulator, or if your BIOS supports putting SATA drives into legacy mode, which some do.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I shall assume your partition has been created, so we&#039;ll jump straight to the end.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;# Note that this command is slightly different to the one for a qemu image&lt;br /&gt;
mkfs.ext2 -b 4096 -I 128 -o hurd /dev/sdXY&lt;br /&gt;
&lt;br /&gt;
# Mount partition&lt;br /&gt;
mount /dev/sdXY /mnt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Obviously, substituting &#039;&#039;&#039;X&#039;&#039;&#039; and &#039;&#039;&#039;Y&#039;&#039;&#039; for the appropriate values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing Arch Hurd to the image can now be done with either pacman (the preferred method) or using the crosshurd scripts.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Installing ==&lt;br /&gt;
 &lt;br /&gt;
=== Pacman ===&lt;br /&gt;
 &lt;br /&gt;
To do this you will first need to acquire a copy of pacman, if not installing from within Arch Linux. The simplest way to do this is to download the latest version of pacman from the Arch Linux mirrors and extract it. You will then need a pacman.conf file suitable for Arch Hurd, such as this:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[options]&lt;br /&gt;
    RootDir     = /mnt/&lt;br /&gt;
    DBPath      = /mnt/var/lib/pacman/&lt;br /&gt;
    CacheDir    = /mnt/var/cache/pacman/pkg/&lt;br /&gt;
    LogFile     = /mnt/var/log/pacman.log&lt;br /&gt;
    SyncFirst   = pacman&lt;br /&gt;
    XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u&lt;br /&gt;
    CleanMethod = KeepCurrent&lt;br /&gt;
&lt;br /&gt;
[core]&lt;br /&gt;
    Server = [[http://files.archhurd.org/repo/core/]]&lt;br /&gt;
&lt;br /&gt;
[extra]&lt;br /&gt;
    Server = [[http://files.archhurd.org/repo/extra/]] &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;note: when your host is 64bit, use in the pacman.conf ARCHITECTURE = i686&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now that you have both pacman and a configuration file, you can continue to install with pacman. This process is similar to [[installing Arch Linux from another Linux distro]]. Now, assuming your pacman configuration is named ./pachurd.conf:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /mnt/var/lib/pacman -p&lt;br /&gt;
pacman --config pachurd.conf -Sy&lt;br /&gt;
&lt;br /&gt;
pacman --config pachurd.conf -S base&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
In addition, if you are going to be building packages, you may as well install the base-devel group now.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;pacman --config pachurd.conf -S base-devel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Finally, copy the grub images to the correct location (ie: /boot)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;cp -a /mnt/lib/grub/i386-pc/* /mnt/boot/grub/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Crosshurd ===&lt;br /&gt;
 &lt;br /&gt;
This method was used to install Arch Hurd before it was easy, or even possible, to do so using pacman. As such, it is now deprecated and should not be used unless you have a specific reason (such as needing to build for something other than i686). Firstly you will need to acquire the latest version of the crosshurd scripts, which is currently [[crosshurd-20100312.tar.bz2]].&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir crosshurd&lt;br /&gt;
tar xvf /path/to/crosshurd-20100312.tar.bz2&lt;br /&gt;
&lt;br /&gt;
# Now you need to set important variables in the prepare script:&lt;br /&gt;
#     $ROOT needs to be set to where you extracted the tarball (ie: the current directory)&lt;br /&gt;
#     $HOST needs to be set to your current system (i686-pc-linux-gnu for i686, x86_64-unknown-linux-gnu for x86_64).&lt;br /&gt;
#         Note: currently building the cross-toolchain fails on x86_64.&lt;br /&gt;
#     $TARGET needs to be set to what you&#039;re building for. You shouldn&#039;t need to change this.&lt;br /&gt;
# You can also edit the version numbers of the programs used in the cross-compile, but the default versions are known to work.&lt;br /&gt;
nano ./scripts/prepare&lt;br /&gt;
sed -i -e &amp;quot;/source.*pkgver/i \\&lt;br /&gt;
source ./scripts/prepare&amp;quot; -e &#039;s/$SRCDIR/$SOURCE_DIR/g&#039; \&lt;br /&gt;
-e &#039;s/$DIFFUTILS_VER/$DIFF_VER/g&#039; \&lt;br /&gt;
-e &#039;s/$XZUTILS_VER/$XZ_UTILS_VER/g&#039; scripts/get-sources&lt;br /&gt;
source ./scripts/get-sources&lt;br /&gt;
source ./scripts/makeall&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You&#039;ll then need to move the built system to /mnt. The rest of this installation guide will, however, refer exclusively to a system installed using pacman.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Configuring the system ==&lt;br /&gt;
 &lt;br /&gt;
If you are familiar with Arch Linux configuration, you will find this section very familiar.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== /etc/rc.conf ===&lt;br /&gt;
 &lt;br /&gt;
Like Arch Linux, Arch Hurd uses a main configuration file called /etc/rc.conf containing a range of configuration information used by the initscripts when starting the system. The default values for all variables are safe to use.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== LOCALIZATION Section ====&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;LOCALE=&#039;&#039;&#039;: This sets the system locale, which is used by i18n-aware applications, available locales can be listed by running &#039;&#039;&#039;locale -a&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;USECOLOR=&#039;&#039;&#039;: If you have a colour console, and want to use colours during the system start up, set this to yes.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;LOCALE=&amp;quot;POSIX&amp;quot;&lt;br /&gt;
USECOLOR=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== CONSOLE Section ====&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;CONSOLEDISPLAY=&#039;&#039;&#039;: Display driver used for the console client, available drivers are vga and ncursesw (which doesn&#039;t currently work on Arch Hurd).&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEFONT=&#039;&#039;&#039;: Full path to the font to be used in the VGA console.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEMOUSE=&#039;&#039;&#039;: The following three variables are a little superfluous, as there is only one driver for each. &amp;quot;pc_mouse&amp;quot; if you want to use the mouse driver.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEKBD=&#039;&#039;&#039;: &amp;quot;pc_kbd&amp;quot; if you want to use the US keyboard (other layouts not yet supported) driver.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLESPEAKER=&#039;&#039;&#039;: &amp;quot;generic_speaker&amp;quot; if you want to use the speaker driver.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEOPTS=&#039;&#039;&#039;: Additional options to pass to the console client, see &#039;&#039;&#039;console --help&#039;&#039;&#039; for more information.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;CONSOLEDISPLAY=&amp;quot;vga&amp;quot;&lt;br /&gt;
CONSOLEFONT=&lt;br /&gt;
CONSOLEMOUSE=&lt;br /&gt;
CONSOLEKBD=&amp;quot;pc_kbd&amp;quot;&lt;br /&gt;
CONSOLESPEAKER=&amp;quot;generic_speaker&amp;quot;&lt;br /&gt;
CONSOLEOPTS=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== NETWORKING Section ====&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;HOSTNAME=&#039;&#039;&#039;: The hostname of your computer.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;HOSTNAME=&amp;quot;myhost&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== DAEMONS Section ====&lt;br /&gt;
 &lt;br /&gt;
This is simply an array listing daemons to start up at boot.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;DAEMONS=(syslog-ng !crond)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
A daemon can be started in the background by prefixing it with an &#039;&#039;&#039;@&#039;&#039;&#039;, and can not be started at all by prefixing with a &#039;&#039;&#039;!&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All Arch Hurd daemons, as on Arch Linux, reside in /etc/rc.d.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== /etc/fstab ===&lt;br /&gt;
 &lt;br /&gt;
The filesystems table file contains a list of all filesystems which are present in the system and how they are to be mounted. This file is most commonly used by the &#039;&#039;&#039;mount&#039;&#039;&#039; command. For example, the &#039;&#039;&#039;mount -a&#039;&#039;&#039; command mounts all filesystems which do not have the &#039;&#039;&#039;noauto&#039;&#039;&#039; option set.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Example /etc/fstab ====&lt;br /&gt;
 &lt;br /&gt;
This is for a system with two partitions on one HDD, the first partition being an ext2 filesystem containing / and the second being a swap partition:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;# &amp;amp;lt;file system&amp;amp;gt;        &amp;amp;lt;dir&amp;amp;gt;        &amp;amp;lt;type&amp;amp;gt;        &amp;amp;lt;options&amp;amp;gt;        &amp;amp;lt;dump&amp;amp;gt;    &amp;amp;lt;pass&amp;amp;gt;&lt;br /&gt;
/dev/hd0s1              /            ext2          rw                1         1&lt;br /&gt;
/dev/hd0s2              none         swap          sw                0         0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;file system&amp;amp;gt;&#039;&#039;&#039; denotes the device node or file which is to be mounted. For most cases, this field will contain a device node in /dev.&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;dir&amp;amp;gt;&#039;&#039;&#039; denotes where the device will be mounted. Note that, for the swap partition, this is not an actual location but a keyword.&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;type&amp;amp;gt;&#039;&#039;&#039; denotes the type of the filesystem. The Hurd supports only ext2 at the moment.&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;options&amp;amp;gt;&#039;&#039;&#039; denotes any special options to be used when mounting the partition, see &#039;&#039;&#039;man mount&#039;&#039;&#039; for a detailed explanation of these.&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;dump&amp;amp;gt;&#039;&#039;&#039; is used by the &#039;&#039;&#039;dump&#039;&#039;&#039; command, a backup utility.&lt;br /&gt;
* &#039;&#039;&#039;&amp;amp;lt;pass&amp;amp;gt;&#039;&#039;&#039; is used by &#039;&#039;&#039;fsck&#039;&#039;&#039; to determine the order in which filesystem checks are to be done at boot. The root partition should have a &amp;amp;lt;pass&amp;amp;gt; of 1, and all other partitions 0 or 2, with 0 meaning that the partition does not need to be checked.&lt;br /&gt;
 &lt;br /&gt;
However, you should know that an /etc/fstab file is nearly completely useless on Hurd. In fact, I only have my swap partition in mine, so I can use &#039;&#039;&#039;swapon -a&#039;&#039;&#039;. The reason for this is [[translators]]. You can, and I have, &#039;mount&#039; all of your partitions with &#039;&#039;&#039;settrans&#039;&#039;&#039;, in such a way that these &#039;mounts&#039; will persist between reboots. Translators are very powerful tools.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==== Device Naming ====&lt;br /&gt;
 &lt;br /&gt;
The Hurd uses a different naming scheme for block devices than Linux, devices are named in the form:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;hdX&#039;&#039;&#039;: PATA drive.&lt;br /&gt;
* &#039;&#039;&#039;hdXsY&#039;&#039;&#039;: partition on a PATA drive.&lt;br /&gt;
* &#039;&#039;&#039;sdX&#039;&#039;&#039;: SCSI drive.&lt;br /&gt;
* &#039;&#039;&#039;sdXsY&#039;&#039;&#039;: partition on a SCSI drive.&lt;br /&gt;
 &lt;br /&gt;
The numbering for &#039;&#039;&#039;X&#039;&#039;&#039; starts from 0, and the numbering for &#039;&#039;&#039;Y&#039;&#039;&#039; starts from 1. Some examples of Linux devices and their corresponding Hurd devices follow:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;hda2&#039;&#039;&#039; becomes &#039;&#039;&#039;hd0s2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hdb&#039;&#039;&#039; becomes &#039;&#039;&#039;hd1&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hdd4&#039;&#039;&#039; becomes &#039;&#039;&#039;hd3s4&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
== Installing GRUB ==&lt;br /&gt;
 &lt;br /&gt;
Installing GRUB is as simple as for any other distro; boot with a grub floppy and set up the MBR. So, firstly, get a GRUB floppy, [[such as this one]], then:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;# Unmount&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop0 # Only needed if you used a qemu image.&lt;br /&gt;
&lt;br /&gt;
# Note: If networking doesn&#039;t work make sure model=pcnet is set&lt;br /&gt;
qemu -boot a -fda grub.img -hda hurd.img -net nic,vlan=1,model=pcnet -net user,vlan=1 &lt;br /&gt;
# if using a real partition, use the device node rather than &#039;hurd.img&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
If you installed using pacman, the commands you need are simple:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;root (hd0,0)&lt;br /&gt;
setup (hd0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
At this point, GRUB has been set up and when you reboot, you should be presented with the menu.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Swap ==&lt;br /&gt;
 &lt;br /&gt;
You will probably want some swap space, and the easiest way to do this if you used a qemu image is to create another HDD image and use the entire thing as swap rather than create a swap partition on it.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;qemu-img create -f raw swap.img 1GB&lt;br /&gt;
mkswap swap.img&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When you next boot, tell qemu that hdb is your swap image, and enable the swap in Hurd.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;qemu -hda hurd.img -hdb swap.img -net nic,vlan=1,model=pcnet -net user,vlan=1&lt;br /&gt;
&lt;br /&gt;
# After booting and creating the device node:&lt;br /&gt;
swapon /dev/hd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
If you used a real partition or disk, you will probably want to have an equally real swap partition. If so, simply make a swap partition and pass that to qemu as hdb, rather than an image file.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== First Boot ==&lt;br /&gt;
 &lt;br /&gt;
All there is left to do now is to setup the devices, and start the network. After booting:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;# Create the required device nodes&lt;br /&gt;
cd /dev&lt;br /&gt;
MAKEDEV hd0 hd0s1 # Et cetera&lt;br /&gt;
&lt;br /&gt;
# For qemu networking:&lt;br /&gt;
touch /servers/socket/2&lt;br /&gt;
settrans -afgp /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Adding a User ===&lt;br /&gt;
 &lt;br /&gt;
It is best not to work as root whilst doing your everyday things, as a slight mistake can destroy your system. Thus, you should create a new user and begin using it. This can be done quite simple:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;adduser&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
If, however, you prefer to automate this process (or simply find adduser slow) you can use &#039;&#039;&#039;useradd&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;useradd -m -G [groups] -s [shell] [username]&lt;br /&gt;
passwd [username]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;-m&#039;&#039;&#039;: Creates the user home directory as &#039;&#039;&#039;/home/username&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;-G&#039;&#039;&#039;: A list of supplementary groups which a user is a member of, each group must be separated by a command and no spaces.&lt;br /&gt;
* &#039;&#039;&#039;-s&#039;&#039;&#039;: The path of the users login shell.&lt;br /&gt;
 &lt;br /&gt;
Useful groups include:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
* &#039;&#039;&#039;users&#039;&#039;&#039;: The group to which all users belong&lt;br /&gt;
* &#039;&#039;&#039;wheel&#039;&#039;&#039;: Commonly a group given unfettered access to the &#039;&#039;&#039;sudo&#039;&#039;&#039; command.&lt;br /&gt;
 &lt;br /&gt;
Thus, for a typical system, one may issue this command:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;useradd -m -G users,wheel -s /bin/bash archie&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Setting up Sudo ===&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;sudo&#039;&#039;&#039; is a common privilege-escalation utility for UNIX systems which allows a user to run a command as another user, most commonly root. Sudo can be found in the core repository, and so can be installed quite simply with pacman:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -S sudo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
To make a user a sudoer (ie: give them sudo access), you must run the &#039;&#039;&#039;visudo&#039;&#039;&#039; command as root. If you are unfamiliar with vim, you can specify a different editor by setting the EDITOR environmental variable.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;# For example, to use nano:&lt;br /&gt;
EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
To give a user the ability to run any command with sudo, add a line such as this:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[username] ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
To give a group the ability, add a line such as this:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;%[groupname] ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You &#039;&#039;must&#039;&#039; edit /etc/sudoers with visudo, otherwise annoyances can occur. Like rendering root unusable.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== /dev/random and /dev/urandom ===&lt;br /&gt;
 &lt;br /&gt;
As you will see when you try to run anything requiring a source of random data, you have no /dev/random and /dev/urandom devices. We don&#039;t set up these devices by default for you because some users might want to use a different random translator for /dev/{u,}random, which would conflict with an automatic set-up despite the translator programs themselves not conflicting at all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assuming you want to use the random-64 package, which is in the base group, for your source of randomness, the following three commands can enable the translators:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;settrans -c /dev/random /hurd/random --secure&lt;br /&gt;
settrans -c /dev/urandom /hurd/random --fast&lt;br /&gt;
chmod 0644 /dev/random /dev/urandom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== A note on using HDDs ===&lt;br /&gt;
 &lt;br /&gt;
If you have used a full HDD for your Hurd installation it is perfectly fine to boot it using qemu like so:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;qemu -hda /dev/sdX -net nic,vlan=1,model=pcnet -net user,vlan=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
If your user has write permission to the device nodes, you can use an entire HDD like that. Of course, within the Hurd your partitions will be named differently. Refer to the section on partition naming for more details.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== OpenSSH ==&lt;br /&gt;
 &lt;br /&gt;
openssh is currently is the &#039;&#039;testing&#039;&#039; repository. Follow the instructions [[on the official Arch wiki]] (don&#039;t forget to add sshd: ALL to /etc/hosts.allow).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To be able to log in as a normal user, you will need to add the following directive to /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;UsePrivilegeSeparation no&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
And to get a console when logging in you will have to create some nodes in /dev for the ptys. Running&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;cd /dev &amp;amp;amp;&amp;amp;amp; MAKEDEV ptyp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
will create nodes named ptyp0 through ptypv.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Logging into a Qemu VM ===&lt;br /&gt;
 &lt;br /&gt;
The qemu virtual machine, as started in a previous section, runs in an isolated network that cannot be accessed directly from the host machine. However, ssh can be used to create a tunnel to forward connections back to the VM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First you need to create an alias of the loopback device and give it a different address:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;host# ifconfig lo:0 172.20.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
And start a ssh server at the host:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;host# /etc/rc.d/sshd start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Then connect to the host&#039;s server to establish the forwarding:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;hurd# ssh -R 2222:127.0.0.1:22 user@172.20.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Finally the ssh server at the qemu virtual machine may be contacted through the local port 2222 at the host:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;host# ssh -p 2222 user@127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Restarting the server ===&lt;br /&gt;
 &lt;br /&gt;
Please note that there is currently a problem when trying to restart the sshd server because the server is not correctly killed. To do it, follow these steps :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Find the PID of the sshd server.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;cat /var/run/sshd.pid&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Kill the process&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;kill -9 &amp;amp;lt;PID&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Remove the sshd.pid file and start the server.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;rm /var/run/sshd.pid&lt;br /&gt;
/etc/rc.d/sshd start&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
 &lt;br /&gt;
=== Boot halts and complains about a missing /dev/console ===&lt;br /&gt;
 &lt;br /&gt;
Whilst undoubtly a scary thing to encounter on your first excursion into Hurd, this can be fixed with a few simple commands. If your system is currently read-only, fix that:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;fsysopts / --writable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Then create the console device:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;cd /dev&lt;br /&gt;
settrans -cg console&lt;br /&gt;
chown root console&lt;br /&gt;
chmod 600 console&lt;br /&gt;
settrans console &amp;quot;/hurd/term /dev/console device console&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== &amp;quot;cannot make pipe for command substitution&amp;quot; ===&lt;br /&gt;
 &lt;br /&gt;
Something is wrong with your pflocal server, again, ensure the system is writable:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;fsysopts / --writable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
And restart the translator:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;settrans -acp /servers/socket/1 /hurd/pflocal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== &amp;quot;login: Invalid password&amp;quot; ===&lt;br /&gt;
 &lt;br /&gt;
If &#039;&#039;&#039;login&#039;&#039;&#039; complains that you have given an invalid password before it even asks you to enter one, well, I have no idea why it does that. The only solution is to unset the password for the account you&#039;re trying to log in to (watch this space for a better solution...). So, firstly, reboot to single-user mode (append &amp;quot;-s&amp;quot; flag to GNU Mach command line in GRUB), then:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;fsysopts / --writable # If read-only&lt;br /&gt;
passwd -d $user&lt;br /&gt;
reboot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Obviously, this isn&#039;t a very good solution. When I figure out how to properly fix it, this will be updated.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Everything freezes after a while ===&lt;br /&gt;
 &lt;br /&gt;
Believe me, we&#039;re as confused about this as you. Everything seems to freeze if nothing gets sent to STDOUT for a while so, start up something that generates continuous output in one of your TTYs. We like&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;vmstat 5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
Retrieved from &amp;quot;[[http://wiki.archhurd.org/wiki/Alternate_Installation_Guide]]&amp;quot; [[Category]]: [[Guides]]&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=Xorg&amp;diff=4</id>
		<title>Xorg</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Xorg&amp;diff=4"/>
		<updated>2018-07-30T11:24:41Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Import from https://web.archive.org/web/20120205063543/http://wiki.archhurd.org:80/index.php?title=Xorg&amp;amp;action=edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Support ==&lt;br /&gt;
&lt;br /&gt;
Xorg was successfully tested on :&lt;br /&gt;
&lt;br /&gt;
* qemu&lt;br /&gt;
* VMware&lt;br /&gt;
* VirtualBox&lt;br /&gt;
* Actual Hardware Installations&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
Xorg is available in extra, and so can be installed as simply as anything else:&lt;br /&gt;
&lt;br /&gt;
 pacman -Sy xorg xf86-input-keyboard xf86-input-mouse xf86-video-vesa&lt;br /&gt;
&lt;br /&gt;
You will also need to add &amp;quot;-c&amp;quot; to the CONSOLEOPTS variable in your /etc/rc.conf file. While you are editing rc.conf you also need to set a driver for CONSOLEMOUSE (usually pc_mouse). Once you have done this, reboot.&lt;br /&gt;
&lt;br /&gt;
You should now see a new directory, /dev/cons. This contain the console mouse and keyboard interfaces, but Xorg expects those device nodes to be in different places. If you use a xorg.conf file, you can simply edit it to point to those devices, if not:&lt;br /&gt;
&lt;br /&gt;
 ln -s /dev/cons/kbd /dev/kbd&lt;br /&gt;
 ln -s /dev/cons/mouse /dev/mouse&lt;br /&gt;
&lt;br /&gt;
Additionally, if you wish to run X terminal emulators as a normal user, you need to create the ptyp device:&lt;br /&gt;
&lt;br /&gt;
 cd /dev&lt;br /&gt;
 MAKEDEV ptyp&lt;br /&gt;
&lt;br /&gt;
Now your system is ready to run Xorg.&lt;br /&gt;
&lt;br /&gt;
== .xinitrc ==&lt;br /&gt;
&lt;br /&gt;
The most convenient way to run Xorg is to set up a .xinitrc file starting various programs and suchlike for you when you start the X server. A simple example below, saved as ~/.xinitrc, is sufficient to start openbox:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 exec openbox&lt;br /&gt;
&lt;br /&gt;
The .xinitrc file is executed by whatever interpreter you specify (even python, if you so desire), so it can contain whatever logic or commands you like, for example:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 if &amp;lt;nowiki&amp;gt;[[ &amp;quot;$WM&amp;quot; == &amp;quot;&amp;quot; ]]&amp;lt;/nowiki&amp;gt;; then&lt;br /&gt;
     echo &amp;quot;Starting openbox...&amp;quot;&lt;br /&gt;
     exec openbox&lt;br /&gt;
 else&lt;br /&gt;
     echo &amp;quot;Starting $WM...&amp;quot;&lt;br /&gt;
     exec $WM&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
== Starting X ==&lt;br /&gt;
&lt;br /&gt;
It is advisable to install a window manager, such as openbox, which is currently in the xorg repository.&lt;br /&gt;
&lt;br /&gt;
 pacman -S openbox&lt;br /&gt;
&lt;br /&gt;
Once you have your .xinitrc (or whatever you&#039;re using) and your window manager set up, simply start X:&lt;br /&gt;
&lt;br /&gt;
 startx -- -retro&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=Installation_Guide&amp;diff=3</id>
		<title>Installation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=Installation_Guide&amp;diff=3"/>
		<updated>2018-07-30T11:24:41Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Import from https://web.archive.org/web/20160730194855/http://wiki.archhurd.org/index.php?title=Installation_Guide&amp;amp;action=edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This guide is for installing an configuring Arch Hurd using the LiveCD.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Part I: Installing the base system =&lt;br /&gt;
&lt;br /&gt;
== A note on hardware support ==&lt;br /&gt;
Currently GNU Mach does not support SATA, USB, sound, or wireless networking. If you require one of these to use your computer, you will be unable to install Arch Hurd. However, there is currently work on porting DDE linux26 to GNU Mach, which would bring support for hardware drivers from Linux 2.6.29. &lt;br /&gt;
&lt;br /&gt;
== Obtaining the LiveCD ==&lt;br /&gt;
The latest version of the Arch Hurd livecd can be found [http://files.archhurd.org/livecd/i686-core-latest.iso here].&lt;br /&gt;
&lt;br /&gt;
* The LiveCD can be used to install an Arch Hurd base system, this contains only what is necessary to run Arch Hurd and so, for example, lacks a graphical user interface.&lt;br /&gt;
* There is currently no option to install from the official repositories, the package cache on the CD is used instead. This can result in your system being out-of-date immediately after installing.&lt;br /&gt;
* There are currently some bugs in the installer; neither locale-gen or grub-install are run and must be performed manually by the user (after booting for the first time, and by using a GRUB disk, such as the Arch Hurd ISO).&lt;br /&gt;
&lt;br /&gt;
After downloading the LiveCD burn the ISO file to a blank CD.&lt;br /&gt;
&lt;br /&gt;
== Booting the live environment ==&lt;br /&gt;
Insert the CD and boot it. You may need to edit your BIOS settings by pressing a key during the boot process. At this point, the GRUB menu should be displayed. You will need to edit the GRUB configuration by pressing e, and change the root device to that of your CD drive.&lt;br /&gt;
&lt;br /&gt;
* If your CD drive is the master on the primary IDE bus, it will be called &#039;&#039;&#039;hd0&#039;&#039;&#039;&lt;br /&gt;
* If your CD drive is the slave on the primary IDE bus, it will be called &#039;&#039;&#039;hd1&#039;&#039;&#039;&lt;br /&gt;
* If your CD drive is the master on the secondary IDE bus, it will be called &#039;&#039;&#039;hd2&#039;&#039;&#039;&lt;br /&gt;
* If your CD drive is the slave on the secondary IDE bus, it will be called &#039;&#039;&#039;hd3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Most computers do not have more than two IDE buses, though if you do you should be able to easily figure out the appropriate device name.&lt;br /&gt;
&lt;br /&gt;
After booting, you will be presented with some instructions at the login prompt. To log in, enter &#039;&#039;&#039;login root&#039;&#039;&#039;. The root account has no password. Additionally, this installation guide can be found at &#039;&#039;&#039;/arch/guide&#039;&#039;&#039;, so, to read this guide, change to virtual console 2 by pressing Alt+F2 and invoke less by typing at the prompt:&lt;br /&gt;
&lt;br /&gt;
 less /arch/guide&lt;br /&gt;
&lt;br /&gt;
You can switch back to virtual console 1 with Alt+F1, and refer to the guide at any point in the installation.&lt;br /&gt;
&lt;br /&gt;
=== Translators ===&lt;br /&gt;
After booting, you will need to set up translators for any hard drives and partitions you wish to make use of during the installation process. You do this by changing to the /dev directory and using the MAKEDEV script. Hard drives in the Hurd are named, as previously explained, in a &#039;&#039;&#039;hdX&#039;&#039;&#039; format, where &#039;&#039;&#039;X&#039;&#039;&#039; is a zero-based index number for the position on the system IDE buses. For partitions, the naming scheme is &#039;&#039;&#039;hdXsY&#039;&#039;&#039;, where &#039;&#039;&#039;Y&#039;&#039;&#039; is a one-based index for the partition on the hard drive.&lt;br /&gt;
&lt;br /&gt;
For example, to create a translator for the master hard drive on the primary IDE bus, which has two partitions, and the slave on the primary IDE bus, you would do this:&lt;br /&gt;
&lt;br /&gt;
 cd /dev&lt;br /&gt;
 MAKEDEV hd0 hd0s1 hd0s2 hd1&lt;br /&gt;
&lt;br /&gt;
These translators will be copied over to your finished system after the installation is complete so you do not have to do this again.&lt;br /&gt;
&lt;br /&gt;
== Installation Process ==&lt;br /&gt;
In the console, enter &#039;&#039;&#039;/arch/setup&#039;&#039;&#039; to launch the interactive installer which will be used to install your Arch Hurd base system. &lt;br /&gt;
&lt;br /&gt;
=== Prepare Hard Drives ===&lt;br /&gt;
&#039;&#039;&#039;Partitioning can destroy data, ensure you have a suitable backup!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Additionally, partitioning can be done using another partitioning tool if you so desire, if that is the case skip the partitioning stage and go straight to formatting the partitions and setting mount points.&lt;br /&gt;
&lt;br /&gt;
==== Partition hard drives ====&lt;br /&gt;
At this stage you will be presented with a list of hard drives and be given the option of partitioning each of them with cfdisk. Below is what I would recommend for a partitioning scheme:&lt;br /&gt;
* &#039;&#039;&#039;/&#039;&#039;&#039; (root) The root filesystem contains all installed programs, their data, and is the top of the filesystem hierarchy. All other filesystems are mounted relative to root, thus, the root filesystem must contain suitable files to be able to boot the system.&lt;br /&gt;
* &#039;&#039;&#039;/home&#039;&#039;&#039; User-specific configuration and data is stored in the home directory, and having a separate partition is useful if sharing between distributions. However, note that the Hurd only fully supports ext2 for now.&lt;br /&gt;
* &#039;&#039;&#039;swap&#039;&#039;&#039; A partition which the GNU Mach kernel pages data to if the RAM is full. Having swap is greatly recommended on the Hurd, as it massively increases stability. &lt;br /&gt;
&lt;br /&gt;
It is obviously dependent on your needs how big you make the partitions, but for most purposes a 20GB root partition should be enough.&lt;br /&gt;
&lt;br /&gt;
After partitioning, you will be prompted to reboot, as GNU Mach currently can not detect partition table changes whilst running. After rebooting, resume the installation at the next step, formatting partitions.&lt;br /&gt;
&lt;br /&gt;
==== Format partitions ====&lt;br /&gt;
The Hurd currently supports a few filesystems (ext2, UFS, iso9660, and Linux swap), thus the only choices offered in this section are for ext2 and swap. If you are going to be sharing a /home partition with another distribution, this is obviously not ideal as the Linux kernel supports a vast number of filesystems.&lt;br /&gt;
&lt;br /&gt;
Formatting a partition &#039;&#039;&#039;will&#039;&#039;&#039; cause data loss, so double-check before you do so.&lt;br /&gt;
&lt;br /&gt;
==== Choose mount points ====&lt;br /&gt;
At minimum, you should have a root partition, for which the mount point is &#039;&#039;&#039;/&#039;&#039;&#039;. It is recommended you also have a swap partition, for which the mount point will be &#039;&#039;&#039;swap&#039;&#039;&#039; and, if you used the recommended partitioning scheme in the partitioning section, you will also have a third partition mounted at &#039;&#039;&#039;/home&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== Select Packages ===&lt;br /&gt;
After preparing the hard drives, you will need to select the packages you wish to install. All of the packages you can choose between are in the &#039;&#039;&#039;base&#039;&#039;&#039; and &#039;&#039;&#039;base-devel&#039;&#039;&#039; groups. Thus, you will almost certainly need them all at some point. It is recommended to simply install all of them unless you have some particular need.&lt;br /&gt;
&lt;br /&gt;
Additionally, it is possible that some packages, even if de-selected, will be pulled in as dependencies for other packages which you have selected.&lt;br /&gt;
&lt;br /&gt;
After selecting the packages, continue with the next step of the installation, installing the system.&lt;br /&gt;
&lt;br /&gt;
=== Install System ===&lt;br /&gt;
&#039;&#039;&#039;Note: you need to mount your new root partition manually in the 2010-06-05 LiveCD before running this step. The command is: settrans -a /mnt /hurd/ext2fs /dev/hdXsY, where X and Y are the appropriate numbers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After confirming that you wish to commit to the installation, the installation will begin. In this stage a number of things happen&lt;br /&gt;
&lt;br /&gt;
* All your partitions are mounted and the /etc/fstab file is generated&lt;br /&gt;
* The package files are copied from the LiveCD to the package cache in your new installation, in &#039;&#039;&#039;/var/cache/pacman/pkg&#039;&#039;&#039;&lt;br /&gt;
* The packages themselves are installed&lt;br /&gt;
* Some basic translators are set up in &#039;&#039;&#039;/dev&#039;&#039;&#039;, including ones for all of your partitions and hard drives which you set up at the beginning of the installation, after booting the LiveCD.&lt;br /&gt;
&lt;br /&gt;
=== Configure System ===&lt;br /&gt;
If you are familiar with Arch Linux configuration, you will find this section very familiar.&lt;br /&gt;
&lt;br /&gt;
==== /etc/rc.conf ====&lt;br /&gt;
Like Arch Linux, Arch Hurd uses a main configuration file called /etc/rc.conf containing a range of configuration information used by the initscripts when starting the system. The default values for all variables are safe to use.&lt;br /&gt;
&lt;br /&gt;
==== LOCALIZATION Section ====&lt;br /&gt;
* &#039;&#039;&#039;LOCALE&#039;&#039;&#039;=: This sets the system locale, which is used by i18n-aware applications, available locales can be listed by running &#039;&#039;&#039;locale -a&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;USECOLOR&#039;&#039;&#039;=: If you have a colour console, and want to use colours during the system start up, set this to yes. &lt;br /&gt;
&lt;br /&gt;
 LOCALE=&amp;quot;POSIX&amp;quot;&lt;br /&gt;
 USECOLOR=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== CONSOLE Section ====&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEDISPLAY&#039;&#039;&#039;=: Display driver used for the console client, available drivers are vga and ncursesw (which doesn&#039;t currently work on Arch Hurd).&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEFONT&#039;&#039;&#039;=: Full path to the font to be used in the VGA console.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEMOUSE&#039;&#039;&#039;=: The following three variables are a little superfluous, as there is only one driver for each. &amp;quot;pc_mouse&amp;quot; if you want to use the mouse driver.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEKBD&#039;&#039;&#039;=: &amp;quot;pc_kbd&amp;quot; if you want to use the US keyboard (other layouts not yet supported) driver.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLESPEAKER&#039;&#039;&#039;=: &amp;quot;generic_speaker&amp;quot; if you want to use the speaker driver.&lt;br /&gt;
* &#039;&#039;&#039;CONSOLEOPTS&#039;&#039;&#039;=: Additional options to pass to the console client, see console --help for more information. &lt;br /&gt;
&lt;br /&gt;
 CONSOLEDISPLAY=&amp;quot;vga&amp;quot;&lt;br /&gt;
 CONSOLEFONT=&lt;br /&gt;
 CONSOLEMOUSE=&lt;br /&gt;
 CONSOLEKBD=&amp;quot;pc_kbd&amp;quot;&lt;br /&gt;
 CONSOLESPEAKER=&amp;quot;generic_speaker&amp;quot;&lt;br /&gt;
 CONSOLEOPTS=&amp;quot;-c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== NETWORKING Section ====&lt;br /&gt;
* &#039;&#039;&#039;HOSTNAME&#039;&#039;&#039;=: The hostname of your computer.&lt;br /&gt;
 HOSTNAME=&amp;quot;myhost&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== DAEMONS Section ====&lt;br /&gt;
his is simply an array listing daemons to start up at boot.&lt;br /&gt;
&lt;br /&gt;
 DAEMONS=(syslog-ng !crond)&lt;br /&gt;
&lt;br /&gt;
A daemon can be started in the background by prefixing it with an &#039;&#039;&#039;@&#039;&#039;&#039;, and can not be started at all by prefixing with a &#039;&#039;&#039;!&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
All Arch Hurd daemons, as on Arch Linux, reside in /etc/rc.d/. &lt;br /&gt;
&lt;br /&gt;
==== /etc/pacman.conf ====&lt;br /&gt;
The pacman configuration file contains repositories, amongst other things, which you can access packages from. For most users, this configuration file is fine as it is, so you do not need to do anything. However, if you wish to use the Arch Hurd testing repository find and uncomment this section of the configuration:&lt;br /&gt;
&lt;br /&gt;
 #[testing]&lt;br /&gt;
 ## Add your preferred servers here, they will be used first&lt;br /&gt;
 #Include = /etc/pacman.d/mirrorlist&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;testing&#039;&#039;&#039; repository must be above the &#039;&#039;&#039;core&#039;&#039;&#039; and &#039;&#039;&#039;extra&#039;&#039;&#039; repositories in the configuration, as package names can (and will) conflict. &lt;br /&gt;
&lt;br /&gt;
==== /etc/pacman.d/mirrorlist ====&lt;br /&gt;
The pacman mirrorlist contains a list of servers to download packages from. Bear in mind that files.archhurd.org is throttled when making your choice.&lt;br /&gt;
&lt;br /&gt;
Most of the mirrors update at least four times a day, so they should all be fairly up-to-date.&lt;br /&gt;
&lt;br /&gt;
==== /etc/fstab ====&lt;br /&gt;
The filesystems table file contains a list of all filesystems which are present in the system and how they are to be mounted. This file is most commonly used by the &#039;&#039;&#039;mount&#039;&#039;&#039; command. For example, the &#039;&#039;&#039;mount -a&#039;&#039;&#039; command mounts all filesystems which do not have the &#039;&#039;&#039;noauto&#039;&#039;&#039; option set.&lt;br /&gt;
&lt;br /&gt;
==== Example /etc/fstab ====&lt;br /&gt;
This is for a system with two partitions on one HDD, the first partition being an ext2 filesystem containing / and the second being a swap partition:&lt;br /&gt;
&lt;br /&gt;
 # &amp;lt;file system&amp;gt;        &amp;lt;dir&amp;gt;        &amp;lt;type&amp;gt;        &amp;lt;options&amp;gt;        &amp;lt;dump&amp;gt;    &amp;lt;pass&amp;gt;&lt;br /&gt;
 /dev/hd0s1              /            ext2          defaults          1         1&lt;br /&gt;
 /dev/hd0s2              none         swap          defaults          0         0&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;file system&amp;gt;&#039;&#039;&#039; denotes the device node or file which is to be mounted. For most cases, this field will contain a device node in /dev.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;dir&amp;gt;&#039;&#039;&#039; denotes where the device will be mounted. Note that, for the swap partition, this is not an actual location but a keyword.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039; denotes the type of the filesystem. The Hurd supports a variety of filesystems.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;options&amp;gt;&#039;&#039;&#039; denotes any special options to be used when mounting the partition, see man mount for a detailed explanation of these.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;dump&amp;gt;&#039;&#039;&#039; is used by the &#039;&#039;&#039;dump&#039;&#039;&#039; command, a backup utility.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;pass&amp;gt;&#039;&#039;&#039; is used by &#039;&#039;&#039;fsck&#039;&#039;&#039; to determine the order in which filesystem checks are to be done at boot. The root partition should have a &amp;lt;pass&amp;gt; of 1, and all other partitions 0 or 2, with 0 meaning that the partition does not need to be checked. &lt;br /&gt;
&lt;br /&gt;
However, you should know that an /etc/fstab file is nearly completely useless on Hurd. In fact, I only have my swap partition in mine, so I can use &#039;&#039;&#039;swapon -a&#039;&#039;&#039;. The reason for this is translators. You can, and I do, &#039;mount&#039; all of your partitions with &#039;&#039;&#039;settrans&#039;&#039;&#039;, in such a way that these &#039;mounts&#039; will persist between reboots. Translators are very powerful tools.&lt;br /&gt;
&lt;br /&gt;
==== /etc/locale.gen ====&lt;br /&gt;
This configuration file contains available locales on your Arch Hurd system. For example, to add the UK and US English locales, you would append the following to the configuration:&lt;br /&gt;
&lt;br /&gt;
 en_GB ISO-8859-1&lt;br /&gt;
 en_GB.UTF-8 UTF-8&lt;br /&gt;
&lt;br /&gt;
 en_US ISO-8859-1&lt;br /&gt;
 en_US.UTF-8 UTF-8&lt;br /&gt;
&lt;br /&gt;
The LiveCD currently does not generate the locales for you after editing this configuration file, you must do so after booting your installation, by running the command locale-gen.&lt;br /&gt;
&lt;br /&gt;
==== /etc/hosts ====&lt;br /&gt;
This configuration file acts as a simple local DNS server (sort of), it associates IP addresses with names, and should, at a minimum, contain a line like this:&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1   localhost.localdomain   localhost &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Where &#039;&#039;&#039;hostname&#039;&#039;&#039; is the hostname you specified in &#039;&#039;&#039;/etc/rc.conf&#039;&#039;&#039;. This is required for program compatability. A popular use of the hosts file is for local networked computers, for example:&lt;br /&gt;
&lt;br /&gt;
 10.1.1.1   router&lt;br /&gt;
 10.1.1.2   fileserver&lt;br /&gt;
&lt;br /&gt;
==== /etc/resolv.conf ====&lt;br /&gt;
The resolver is a set of functions in glibc which provide access to the domain name system (DNS). The main function of the DNS is to translate hostnames into IP addresses (like the hosts file), and the resolver configuration file contains information that is read by the resolver when it is invoked. Commonly, this information is nameservers. For example, to use the OpenDNS nameservers, add the following to the file:&lt;br /&gt;
&lt;br /&gt;
 nameserver 208.67.222.222&lt;br /&gt;
 nameserver 208.67.220.220&lt;br /&gt;
&lt;br /&gt;
==== Root Password ====&lt;br /&gt;
Set a root password, as you will use this to log in after booting your system. &lt;br /&gt;
&lt;br /&gt;
=== Exit Install ===&lt;br /&gt;
At this point, your system is as installed and configured as the LiveCD can make it, unfortunately this does not include installing GRUB due to problems with the Arch Hurd GRUB package. At this point you should exit the installation program and reboot into your new installation (after installing GRUB with appropriate media).&lt;br /&gt;
&lt;br /&gt;
==== Installing with a GRUB boot disk ====&lt;br /&gt;
Installing GRUB is easy after using the LiveCD as the configuration and binary files are all in the appropriate locations. To install GRUB from the Arch Hurd installation disk, open the command line by pressing c and enter the following commands:&lt;br /&gt;
&lt;br /&gt;
 find /boot/gnumach&lt;br /&gt;
 root (hd0,0)&lt;br /&gt;
 setup (hd0)&lt;br /&gt;
&lt;br /&gt;
Obviously, change &#039;&#039;&#039;(hd0,0)&#039;&#039;&#039; and &#039;&#039;&#039;(hd0)&#039;&#039;&#039; if the value of the find command doesn&#039;t point to those devices.&lt;br /&gt;
&lt;br /&gt;
= Part II: Configuration and Updating =&lt;br /&gt;
Well done, you now have (presumably) a booting Arch Hurd base system! From here you can configure and install things to your hearts content and turn your Arch Hurd system into whatever you like. Log in using the root account and password you specified during the system configuration stage. If you did not specify a password, just press enter after typing in &#039;&#039;&#039;login root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuring the network ==&lt;br /&gt;
The Hurd currently has no support for wireless networking, but most ethernet controllers should work. Networking on the Hurd is managed by a &#039;&#039;&#039;translator&#039;&#039;&#039;, these are magical Hurd-thingies that implement most of the really useful functionality (like mounting partitions), the good thing about translators is that you don&#039;t have to re-create them every time you boot (usually), so you only need to configure your network once, and it will work forever!&lt;br /&gt;
&lt;br /&gt;
Translators attach themselves to nodes in the filesystem, and then work by intercepting requests to that node and acting accordingly. So first we need to give our network translator somewhere to live:&lt;br /&gt;
&lt;br /&gt;
 touch /servers/socket/2&lt;br /&gt;
&lt;br /&gt;
Now, you need to start the appropriate translator, we&#039;ll be using the pfinet translator: &lt;br /&gt;
&lt;br /&gt;
 settrans -fgap /servers/socket/2 /hurd/pfinet -i &#039;&#039;&#039;INTERFACE&#039;&#039;&#039; -a &#039;&#039;&#039;ADDRESS&#039;&#039;&#039; -g &#039;&#039;&#039;GATEWAY&#039;&#039;&#039; -m &#039;&#039;&#039;NETMASK&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* INTERFACE is the network interface you&#039;ll be using, this probably should be eth0.&lt;br /&gt;
* ADDRESS is the IP address, currently the Hurd doesn&#039;t support DHCP so you need to enter these values yourself.&lt;br /&gt;
* GATEWAY is the address of your default gateway (router).&lt;br /&gt;
* NETMASK is the network mask for your subnet, probably 255.255.255.0 &lt;br /&gt;
&lt;br /&gt;
Now, let us examine this magical command:&lt;br /&gt;
* &#039;&#039;&#039;settrans&#039;&#039;&#039; is the command to create a translator.&lt;br /&gt;
* &#039;&#039;&#039;-fgap&#039;&#039;&#039; deletes any active or passive translators on the node (&#039;&#039;&#039;-f&#039;&#039;&#039; and &#039;&#039;&#039;-g&#039;&#039;&#039; options), and creates a new active and passive translator (&#039;&#039;&#039;-a&#039;&#039;&#039; and &#039;&#039;&#039;-p&#039;&#039;&#039; options). Active translators begin working immediately, whereas passive ones start up when they receive a request.&lt;br /&gt;
* &#039;&#039;&#039;/servers/socket/2&#039;&#039;&#039; is where the translator will attach itself.&lt;br /&gt;
* &#039;&#039;&#039;/hurd/pfinet&#039;&#039;&#039; is the name of the translator.&lt;br /&gt;
* And everything after that is options to the specific translator. &lt;br /&gt;
&lt;br /&gt;
As a passive translator was created (as well as an active one), networking will work every time you boot. This is a big factor in why we didn&#039;t port most of the networking stuff from Arch Linux&#039;s rc.conf to Arch Hurd.&lt;br /&gt;
&lt;br /&gt;
== Package Management in Arch Hurd ==&lt;br /&gt;
Arch Hurd, like Arch Linux, uses the &#039;&#039;&#039;pacman&#039;&#039;&#039; package manager, which in turn uses &#039;&#039;&#039;libalpm&#039;&#039;&#039;. Thus, if you have used Arch Linux, you can use Arch Hurd (as far as package management goes). Some basic commands are as follows:&lt;br /&gt;
&lt;br /&gt;
pacman -S &#039;&#039;&#039;pkgname&#039;&#039;&#039; : install &#039;&#039;pkgname&#039;&#039;.&lt;br /&gt;
pacman -Ss &#039;&#039;&#039;query&#039;&#039;&#039; : search the repositories for &#039;&#039;query&#039;&#039;.&lt;br /&gt;
pacman -R &#039;&#039;&#039;pkgname&#039;&#039;&#039; : uninstall &#039;&#039;pkgname&#039;&#039;.&lt;br /&gt;
pacman -Rs &#039;&#039;&#039;pkgname&#039;&#039;&#039; : uninstall &#039;&#039;pkgname&#039;&#039;, removing all of its dependencies. &lt;br /&gt;
&lt;br /&gt;
More useful parameters can be found in the manpage. However, we&#039;re going to focus on one particular set of options here, the command to update your system: &lt;br /&gt;
&lt;br /&gt;
 pacman -Syu&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;-S&#039;&#039;&#039; specifies that this is a sync operation.&lt;br /&gt;
* &#039;&#039;&#039;-y&#039;&#039;&#039; synchronises the locale package database with the repositories.&lt;br /&gt;
* &#039;&#039;&#039;-u&#039;&#039;&#039; installs any package upgrades. &lt;br /&gt;
&lt;br /&gt;
If you leave out the -u option, you can synchronise the database with &#039;&#039;&#039;pacman -Sy&#039;&#039;&#039;, and then list available updates with &#039;&#039;&#039;pacman -Qu&#039;&#039;&#039;. You should update your system before installing any packages, as your packages are likely to be out of date, and mixing old and new packages is not recommended.&lt;br /&gt;
&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
Arch Hurd has three main repositories, a list of mirrors can be obtained here, these are:&lt;br /&gt;
&lt;br /&gt;
==== core ====&lt;br /&gt;
Core contains what is required to get an Arch Hurd base system up and running. It is the source of the packages for the LiveCD installation, and all packages in core can only depend on other packages in core. Core is intended to be a stable repository from which you can construct a very basic Hurd system and from there expand it to your needs.&lt;br /&gt;
&lt;br /&gt;
==== extra ====&lt;br /&gt;
Extra contains other packages, that aren&#039;t &#039;&#039;&#039;needed&#039;&#039;&#039;, but are useful. Xorg, for example, lives in extra. Packages in extra may depend on packages in either core or extra.&lt;br /&gt;
&lt;br /&gt;
==== testing ====&lt;br /&gt;
Testing contains updates for the core repository, and any other packages which the developers feel need testing before being pushed to the main repositories. All updates to core &#039;&#039;&#039;must&#039;&#039;&#039; go through testing first, so we can (hopefully) catch any show-stopping bugs before they hit the main repo.&lt;br /&gt;
&lt;br /&gt;
==== AUR (Arch User Repository) ====&lt;br /&gt;
Finally, the AUR. This is not a binary repository, but rather a collection of user-submitted build scripts and patches to build packages which are not maintained in the official repositories. We make no guarantee of quality or functionality of packages in the AUR.&lt;br /&gt;
&lt;br /&gt;
== Adding a User ==&lt;br /&gt;
It is best not to work as root whilst doing your everyday things, as a slight mistake can destroy your system. Thus, you should create a new user and begin using it. This can be done quite simply as in most other distributions, using either the &#039;&#039;&#039;adduser&#039;&#039;&#039; (easier to do manually) or &#039;&#039;&#039;useradd&#039;&#039;&#039; (easier to automate) commands:&lt;br /&gt;
&lt;br /&gt;
 adduser&lt;br /&gt;
&lt;br /&gt;
If, however, you prefer to automate this process (or simply find adduser slow) you can use useradd:&lt;br /&gt;
&lt;br /&gt;
 useradd -m -G [groups] -s [shell] [username]&lt;br /&gt;
 passwd [username]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;-m&#039;&#039;&#039;: Creates the user home directory as /home/username&lt;br /&gt;
* &#039;&#039;&#039;-G&#039;&#039;&#039;: A list of supplementary groups which a user is a member of, each group must be separated by a command and no spaces.&lt;br /&gt;
    -s: The path of the users login shell. &lt;br /&gt;
&lt;br /&gt;
Useful groups include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;users&#039;&#039;&#039;: The group to which all users belong&lt;br /&gt;
* &#039;&#039;&#039;wheel&#039;&#039;&#039;: Commonly a group given unfettered access to the sudo command. &lt;br /&gt;
&lt;br /&gt;
Thus, for a typical system, one may issue this command:&lt;br /&gt;
&lt;br /&gt;
 useradd -m -G users,wheel -s /bin/bash archie&lt;br /&gt;
&lt;br /&gt;
== Installing and Configuring sudo ==&lt;br /&gt;
&#039;&#039;&#039;sudo&#039;&#039;&#039; is a common privilege-escalation utility for UNIX systems which allows a user to run a command as another user, most commonly root. Sudo can be found in the core repository, and so can be installed quite simply with pacman:&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
&lt;br /&gt;
To make a user a sudoer (ie: give them sudo access), &#039;&#039;&#039;you must run the visudo command as root&#039;&#039;&#039;. If you are unfamiliar with vim, you can specify a different editor by setting the &#039;&#039;&#039;EDITOR&#039;&#039;&#039; environmental variable. For example, to use nano:&lt;br /&gt;
&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
To give a user the ability to run any command with sudo, add a line such as this:&lt;br /&gt;
&lt;br /&gt;
 [username] ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
To give a group the ability, add a line such as this:&lt;br /&gt;
&lt;br /&gt;
 %[groupname] ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
You &#039;&#039;&#039;must&#039;&#039;&#039; edit /etc/sudoers with visudo, otherwise sudo can be rendered unusable, which would be quite annoying.&lt;br /&gt;
&lt;br /&gt;
= Part III: Let&#039;s play with the Hurd =&lt;br /&gt;
Well done, now you have a bootable and configured Arch Hurd system ! I presume you wanna do something with it ? Contact us on irc, we have a lot of work for you :)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Need help? Look at [[troubleshooting]] or [[tips]] pages, or contact us on irc (#archhurd &amp;amp; #archhurdfr on freenode)&lt;br /&gt;
&lt;br /&gt;
[[Category: Installation]]&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
	<entry>
		<id>https://wiki.archhurd.org/index.php?title=DDE&amp;diff=2</id>
		<title>DDE</title>
		<link rel="alternate" type="text/html" href="https://wiki.archhurd.org/index.php?title=DDE&amp;diff=2"/>
		<updated>2018-07-30T11:24:40Z</updated>

		<summary type="html">&lt;p&gt;Z3ntu: Import from https://web.archive.org/web/20110902094011/http://wiki.archhurd.org/index.php?title=DDE&amp;amp;action=edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DDE is a universal interface for drivers that makes it easy for systems without many native drivers (such as the hurd) to use drivers from systems with many native drivers (like Linux 2.6).  These drivers can run in userspace, which has some interesting implications.&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Porting DDE to the Hurd was originally the work of [http://www.gnu.org/software/hurd/user/zhengda.html Zheng Da].  His work is currently in the [http://git.savannah.gnu.org/cgit/hurd/incubator.git/log/?h=dde incubator] git repository of the hurd.  See [http://www.gnu.org/software/hurd/dde.html GNU&#039;s DDE page] for a more in-depth dicussion.&lt;br /&gt;
&lt;br /&gt;
=== From a User Perspective ===&lt;br /&gt;
&lt;br /&gt;
For the user, this means that, once we have completed the implementation of DDE, Hurd will support a wider variety of hardware, using Linux 2.6&#039;s drivers.  You need to do only three things to get DDE running:&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Download a modified Gnumach&amp;lt;br /&amp;gt;&amp;lt;li&amp;gt;Download the DDE drivers&amp;lt;li&amp;gt;Start the translators!&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gnumach ====&lt;br /&gt;
&lt;br /&gt;
The normal gnumach that is distributed with Arch Hurd cannot use DDE&#039;s user level drivers.  A build of gnumach from the master-userleveldrivers git branch is in [extra], however, so run &amp;lt;pre&amp;gt;pacman -S gnumach-userleveldrivers&amp;lt;/pre&amp;gt;&amp;lt;span style=&amp;quot;color:#ee2222&amp;quot;&amp;gt;&amp;lt;b&amp;gt;!Warning!&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;  This kernel overwrites the normal gnumach, and has forfeited some kernel-side drivers for DDE ones, such as the pcnet32 driver required to access the internet from Qemu.  Thus, either back up your gnumach package (see /var/cache/pacman/pkg/) or make sure you install your ethernet drivers at the same time, otherwise, if something goes very wrong, your system may not be able to connect to the internet.&lt;br /&gt;
&lt;br /&gt;
==== Drivers ====&lt;br /&gt;
&lt;br /&gt;
Drivers that use DDE are available in [testing], and may come to [extra] soon.  To get them, run &amp;lt;pre&amp;gt;pacman -S dde&amp;lt;/pre&amp;gt;.  The ne2k driver has been tested to have internet connection!&lt;br /&gt;
&lt;br /&gt;
==== Using ====&lt;br /&gt;
&lt;br /&gt;
These commands have been tested to use the driver dde_ne2k with gnumach-userleveldrivers under QEMU&lt;br /&gt;
&lt;br /&gt;
===== Gnumach =====&lt;br /&gt;
&lt;br /&gt;
While you are still using gnumach from [core], install the packages you will need&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -S gnumach-userleveldrivers dde&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== QEMU =====&lt;br /&gt;
&lt;br /&gt;
Out of the box, QEMU uses an emulated pcnet32 driver.  The dde_pcnet32 driver has not been tested to fully work, so it is advisable to use the ne2k driver instead.  Add this to the end of your QEMU launch command (and remove other -net commands)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; -net nic,vlan=1,model=ne2k_pci -net user,vlan=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Arch Hurd =====&lt;br /&gt;
&lt;br /&gt;
Boot your qemu image, then login as root.  It is probably not necessary to run as root, since these are *user* level drivers, but this has not been tested fully.  Run the following commands&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;settrans -fgap ne2k /hurd/dde/dde_ne2k_pci&lt;br /&gt;
settrans -fgap /dev/eth0 /hurd/dde/devnode eth0 -M ne2k&lt;br /&gt;
settrans -fgap /servers/socket/2 /hurd/dde/pfinet -i /dev/eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you run these commands, you should see status messages informing you that a device is being detected.  If all goes well, you should be able to run &#039;ifconfig&#039; and be informed that eth0 is UP BROADCAST RUNNING MULTICAST&lt;br /&gt;
&lt;br /&gt;
Congratulations!  You are now running a network driver compiled from linux source in your Hurd&#039;s userspace!&lt;/div&gt;</summary>
		<author><name>Z3ntu</name></author>
	</entry>
</feed>