Toolbox
Personal tools
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
- libao
- ffmpeg
- xvidcore
- alsa-lib (*)
- icecast
- mpd
- libao (*)
- ffmpeg (*)
- libsamplerate
- libsndfile
- alsa-lib (*)
- libsndfile
- moc
- jack
- libsndfile (*)
- libsamplerate (*)
- jack
- 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"