User:Barrucadu

Hi, I am Michael Walker (barrucadu), currently self-appointed documentation guy, LiveCD creator, and sound maintainer.

Contents

LiveCD

Current version (now with installer).

Making the livecd

  • Install Arch Hurd to a directory somewhere using the livecd branch of the initscripts.
  • Make a 64MB ext2 partition image at boot/ramdisk.ext2fs
  • Put something fairly random at var/run/random_seed (I used 600B from /dev/urandom in Linux)
  • Copy the GRUB stage2_eltorito file to boot/grub
  • Make ISO using mkisofs, telling it to boot with boot/grub/stage2_eltorito.
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -V "Arch Hurd" -o ahurd.iso /path/to/livecd/

Additional Setup

This should be done for official LiveCDs:

  • Place a snapshot of core/ (including db file) to /arch/paccache
  • Set up the helpful /etc/motd file
  • Copy the installation guide to /arch/guide (replacing some wiki formatting, like ''', with appropriate text formatting)
  • Copy Arne Babenhauserheide's translator introduction to livecd
  • Copy the setup program to /arch/setup
  • Add the default hostname of "ahurd-live" to /etc/hosts

GRUB Config

Very similar to regular Arch Hurd GRUB, though the user does currently have to edit the kernel line themselves to specify the root device (ie: CD/DVD drive):

timeout 300
default 0

title  Arch Hurd (hit 'e' and edit hd2 to be the device your cdrom is)
root   (cd)
kernel /boot/gnumach root=device:hd2
module /hurd/iso9660fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume)
module /lib/ld-2.11.1.so /hurd/exec $(exec-task=task-create)

/etc/motd

A nice friendly welcome to the Hurd, and basic help:

Welcome to Arch Hurd.

If you have never used the Hurd before, do not fear! Superficially, they are
very similar systems and so much of your existing Linux knowledge will be
applicable.

Some useful commands for this livecd include:
    /arch/setup
        - start the installer
    less /arch/guide
        - read the installation guide
    less /arch/translators
        - read a short intro to translators

The root user has no password, so simply enter "login root" to log in.

Happy Hurding!

/etc/pacman-mnt.conf

A pacman config for installing to the mountpoint:

[options]
    RootDir     = /mnt/
    DBPath      = /mnt/var/lib/pacman/
    CacheDir    = /mnt/var/cache/pacman/pkg/
    LogFile     = /mnt/var/log/pacman.log

[core]
    Include = file:///arch/paccache

Issues

  • Mach/Hurd can't detect partition table changes, thus a reboot is required after partitioning (though the user is notified of this).
  • It's unstable, get some swap ASAP after booting, and run `vmstat 5` in another tty.
  • locale-gen in the chroot freezes.
  • GRUB can't find the BIOS device names for the HDDs, and when run manually, can't find /boot/gnumach. (problem with our GRUB package)

Packaging

GNUstep, Etoile, and Windowmaker

I think that running GNUstep on GNU Hurd would be pretty good, so as soon as we have a gcc-objc package, I'll get started :)

Sound

One of my projects is to get Arch Hurd ready for sound, so I'll look pretty silly if it's not added soon.

To Package

  • vorbis-tools
    • libao
      • alsa-lib
  • ffmpeg
    • xvidcore
    • alsa-lib (*)
  • icecast
  • mpd
    • libao (*)
    • ffmpeg (*)
    • libsamplerate
      • libsndfile
        • alsa-lib (*)
  • moc
    • jack
      • libsndfile (*)
    • libsamplerate (*)
  • cplay
  • ncmpcpp

Some packages have failed to compile:

  • xvidcore - fails.
  • ncmpcpp - fails (unknown system i686-unknown-0.3)

Xorg

Arch Hurd running Xorg 1.8 :)

Scripts

hrepo-add

Adds all packages given on the command line to the specified repo. Can delete packages after uploading (if $1 is -d):

hrepo-add () {
    del=false

    if [[ "$1" = "-d" ]]; then
        del=true
        shift
    fi

    repo=$1
    shift

    while [[ "$1" != "" ]]; do
        scp $1 barrucadu@archhurd.org:/srv/http/files/repo/$repo/
        ssh barrucadu@archhurd.org "repo-add /srv/http/files/repo/$repo/$repo.db.tar.gz /srv/http/files/repo/$repo/$(basename $1)"

        $del && rm -v $1

        shift
    done
}

Obviously, you will need to change the user.

netconf

netconf, because I'm too lazy to type the full settrans command to set up networking in every new VM installation.

#!/bin/bash

if [[ "$1" == "-a" ]]; then
    settrans -fg /servers/socket/1
elif [[ "$1" == "" ]]; then
    echo "==> Specify a profile."
    exit 1
else
    if [[ -e /etc/network.d/$1 ]]; then
        source /etc/network.d/$1
        settrans -fgap /servers/socket/2 /hurd/pfinet -i $INTERFACE -a $ADDRESS -g $GATEWAY -m $MASK

        exitcode=$?

        if [[ $exitcode ]]; then
            echo "==> Profile '$1' up."
        else
            echo "==> Profile '$1' not up."
        fi

        exit $exitcode
    else
        echo "==> Profile '$1' not found."
        exit 1
    fi
fi

Sample profile: /etc/network.d/bridged

INTERFACE="eth0"
ADDRESS="192.168.1.133"
GATEWAY="192.168.1.254"
MASK="255.255.255.0"