summaryrefslogtreecommitdiff
path: root/configs/releng
diff options
context:
space:
mode:
authorGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2011-06-18 18:38:58 -0300
committerGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2011-06-18 18:38:27 -0300
commit85d243ff5836fc17416c65dca8a9e8b4e9d915bc (patch)
tree78b3ec86fea064580c43966da866d46e31ab7007 /configs/releng
parent4a1bd4c7697bdc7aa89eca04009d868e4dd39cb4 (diff)
downloadarchiso32-85d243ff5836fc17416c65dca8a9e8b4e9d915bc.tar.xz
[archiso] Use dm-snapshot instead of aufs2 (A.K.A. "The Big Commit")
* Use device mapper + snapshot module, instead union layer filesystem. * A block-level approach vs vfs-level. * No more unofficial (Linux) things. * More memory is needed. * Refactor mkarchiso. * Refactor hooks/archiso. * Fix install/archiso_pxe_nbd (due recent change in mkinitcpio-0.6.15 on checked_modules()/all_modules()) [Thanks Dave for the improved workaround] * New configs/releng to build official images. * Works with a Bash script instead of Makefile. (better control and easy to maintain) * Remove configs/syslinux-iso. * Remove archiso2dual script. Integrate functionality in configs/releng. * New configs/baseline to build the most basic live medium or use as template. * New README (draft). [Thanks Dieter for fixing english grammar] Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Diffstat (limited to 'configs/releng')
-rw-r--r--configs/releng/aitab.core6
-rw-r--r--configs/releng/aitab.netinstall4
-rwxr-xr-xconfigs/releng/build.sh284
-rw-r--r--configs/releng/core.exclude.i6864
-rw-r--r--configs/releng/core.exclude.x86_644
-rw-r--r--configs/releng/isolinux/isolinux.cfg5
-rw-r--r--configs/releng/mkinitcpio.conf2
-rw-r--r--configs/releng/packages.i68638
-rw-r--r--configs/releng/packages.x86_6438
-rwxr-xr-xconfigs/releng/root-image/arch/report-issues1
-rwxr-xr-xconfigs/releng/root-image/arch/setup3
-rw-r--r--configs/releng/root-image/etc/arch-release1
-rw-r--r--configs/releng/root-image/etc/archiso/functions20
-rw-r--r--configs/releng/root-image/etc/fstab5
-rw-r--r--configs/releng/root-image/etc/hosts9
-rw-r--r--configs/releng/root-image/etc/inittab48
-rw-r--r--configs/releng/root-image/etc/issue5
-rw-r--r--configs/releng/root-image/etc/motd16
-rw-r--r--configs/releng/root-image/etc/pam.d/su6
-rw-r--r--configs/releng/root-image/etc/rc.conf35
-rwxr-xr-xconfigs/releng/root-image/etc/rc.d/archiso48
-rw-r--r--configs/releng/root-image/etc/rc.d/functions.d/automated_script25
-rw-r--r--configs/releng/root-image/etc/sudoers.d/g_wheel1
-rwxr-xr-xconfigs/releng/root-image/usr/bin/autologin2
-rwxr-xr-xconfigs/releng/root-image/usr/bin/km2
-rw-r--r--configs/releng/syslinux.dual/syslinux.cfg12
-rw-r--r--configs/releng/syslinux.dual/syslinux_32only.cfg3
-rw-r--r--configs/releng/syslinux.dual/syslinux_arch32.cfg11
-rw-r--r--configs/releng/syslinux.dual/syslinux_arch64.cfg11
-rw-r--r--configs/releng/syslinux.dual/syslinux_both.cfg4
-rw-r--r--configs/releng/syslinux.dual/syslinux_head.cfg27
-rw-r--r--configs/releng/syslinux.dual/syslinux_tail.cfg29
-rw-r--r--configs/releng/syslinux/splash.pngbin0 -> 45400 bytes
-rw-r--r--configs/releng/syslinux/syslinux.cfg70
34 files changed, 779 insertions, 0 deletions
diff --git a/configs/releng/aitab.core b/configs/releng/aitab.core
new file mode 100644
index 0000000..e538000
--- /dev/null
+++ b/configs/releng/aitab.core
@@ -0,0 +1,6 @@
+# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
+root-image / %ARCH% xz ext4 50%
+lib-modules /lib/modules %ARCH% xz ext4 10%
+usr-share /usr/share any xz ext4 50%
+core-pkgs /repo/pkg %ARCH% xz none 0
+core-any-pkgs /repo/any any xz none 0
diff --git a/configs/releng/aitab.netinstall b/configs/releng/aitab.netinstall
new file mode 100644
index 0000000..26733d2
--- /dev/null
+++ b/configs/releng/aitab.netinstall
@@ -0,0 +1,4 @@
+# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
+root-image / %ARCH% xz ext4 50%
+lib-modules /lib/modules %ARCH% xz ext4 10%
+usr-share /usr/share any xz ext4 50%
diff --git a/configs/releng/build.sh b/configs/releng/build.sh
new file mode 100755
index 0000000..1aa80fd
--- /dev/null
+++ b/configs/releng/build.sh
@@ -0,0 +1,284 @@
+#!/bin/bash
+
+set -e -u
+
+name=archlinux
+iso_label="ARCH_$(date +%Y%m)"
+version=$(date +%Y.%m.%d)
+install_dir=arch
+arch=$(uname -m)
+work_dir=work
+verbose="n"
+
+# This function can be called after make_basefs()
+get_linux_ver() {
+ local ALL_kver
+ eval $(grep ^ALL_kver ${work_dir}/root-image/etc/mkinitcpio.d/kernel26.kver)
+ echo ${ALL_kver}
+}
+
+# Base installation (root-image)
+make_basefs() {
+ mkarchiso ${verbose} -D "${install_dir}" -p "base" create "${work_dir}"
+ mkarchiso ${verbose} -D "${install_dir}" -p "memtest86+ syslinux" create "${work_dir}"
+}
+
+# Additional packages (root-image)
+make_packages() {
+ mkarchiso ${verbose} -D "${install_dir}" -p "$(grep -v ^# packages.${arch})" create "${work_dir}"
+}
+
+# Customize installation (root-image)
+make_customize_root_image() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ cp -af root-image ${work_dir}
+ chmod 750 ${work_dir}/root-image/etc/sudoers.d
+ chmod 440 ${work_dir}/root-image/etc/sudoers.d/g_wheel
+ if [[ ! -L ${work_dir}/root-image/etc/mtab ]]; then
+ rm -f ${work_dir}/root-image/etc/mtab
+ fi
+ mkdir -p ${work_dir}/root-image/etc/pacman.d
+ wget -O ${work_dir}/root-image/etc/pacman.d/mirrorlist http://www.archlinux.org/mirrorlist/all/
+ sed -i "s/#Server/Server/g" ${work_dir}/root-image/etc/pacman.d/mirrorlist
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Prepare ${install_dir}/boot/
+make_boot() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ local _src=${work_dir}/root-image
+ local _dst_boot=${work_dir}/iso/${install_dir}/boot
+ mkdir -p ${_dst_boot}/${arch}
+ cp ${_src}/boot/vmlinuz26 ${_dst_boot}/${arch}
+ mkinitcpio -c ./mkinitcpio.conf -b ${_src} -k $(get_linux_ver) -g ${_dst_boot}/${arch}/archiso.img
+ cp ${_src}/boot/memtest86+/memtest.bin ${_dst_boot}/memtest
+ cp ${_src}/usr/share/licenses/common/GPL2/license.txt ${_dst_boot}/memtest.COPYING
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Prepare /${install_dir}/boot/syslinux
+make_syslinux() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ local _src_syslinux=${work_dir}/root-image/usr/lib/syslinux
+ local _dst_syslinux=${work_dir}/iso/${install_dir}/boot/syslinux
+ mkdir -p ${_dst_syslinux}
+ sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%INSTALL_DIR%|${install_dir}|g;
+ s|%ARCH%|${arch}|g" syslinux/syslinux.cfg > ${_dst_syslinux}/syslinux.cfg
+ cp syslinux/splash.png ${_dst_syslinux}
+ cp ${_src_syslinux}/*.c32 ${_dst_syslinux}
+ cp ${_src_syslinux}/*.com ${_dst_syslinux}
+ cp ${_src_syslinux}/*.0 ${_dst_syslinux}
+ cp ${_src_syslinux}/memdisk ${_dst_syslinux}
+ mkdir -p ${_dst_syslinux}/hdt
+ wget -O - http://pciids.sourceforge.net/v2.2/pci.ids | gzip -9 > ${_dst_syslinux}/hdt/pciids.gz
+ cat ${work_dir}/root-image/lib/modules/$(get_linux_ver)/modules.alias | gzip -9 > ${_dst_syslinux}/hdt/modalias.gz
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Prepare /isolinux
+make_isolinux() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ mkdir -p ${work_dir}/iso/isolinux
+ sed "s|%INSTALL_DIR%|${install_dir}|g" isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg
+ cp ${work_dir}/root-image/usr/lib/syslinux/isolinux.bin ${work_dir}/iso/isolinux/
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Split out /lib/modules from root-image (makes more "dual-iso" friendly)
+make_lib_modules() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ mv ${work_dir}/root-image/lib/modules ${work_dir}/lib-modules
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Split out /usr/share from root-image (makes more "dual-iso" friendly)
+make_usr_share() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ mv ${work_dir}/root-image/usr/share ${work_dir}/usr-share
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Make [core] repository, keep "any" pkgs in a separate fs (makes more "dual-iso" friendly)
+make_core_repo() {
+ if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then
+ local _url _urls _pkg_name _cached_pkg _dst
+ mkdir -p ${work_dir}/core-any-pkgs
+ mkdir -p ${work_dir}/core-pkgs
+ pacman -Sy
+ _urls=$(pacman -Sddp $(comm -2 -3 <(pacman -Sql core | sort ) <(grep -v ^# core.exclude.${arch} | sort)))
+ for _url in ${_urls}; do
+ _pkg_name=${_url##*/}
+ _cached_pkg=/var/cache/pacman/pkg/${_pkg_name}
+ _dst=${work_dir}/core-pkgs/${_pkg_name}
+ if [[ ! -e ${_dst} ]]; then
+ if [[ -e ${_cached_pkg} ]]; then
+ cp -v "${_cached_pkg}" "${_dst}"
+ else
+ wget -nv "${_url}" -O "${_dst}"
+ fi
+ fi
+ repo-add -q ${work_dir}/core-pkgs/core.db.tar.gz ${work_dir}/core-pkgs/${_pkg_name}
+ if [[ ${_pkg_name} =~ any.pkg ]]; then
+ mv "${_dst}" ${work_dir}/core-any-pkgs/${_pkg_name}
+ ln -sf ../any/${_pkg_name} ${work_dir}/core-pkgs/${_pkg_name}
+ fi
+ done
+ : > ${work_dir}/build.${FUNCNAME}
+ fi
+}
+
+# Process aitab
+# args: $1 (core | netinstall)
+make_aitab() {
+ local _iso_type=${1}
+ if [[ ! -e ${work_dir}/build.${FUNCNAME}_${_iso_type} ]]; then
+ sed "s|%ARCH%|${arch}|g" aitab.${_iso_type} > ${work_dir}/iso/${install_dir}/aitab
+ : > ${work_dir}/build.${FUNCNAME}_${_iso_type}
+ fi
+}
+
+# Build all filesystem images specified in aitab (.fs .fs.sfs .sfs)
+make_prepare() {
+ mkarchiso ${verbose} -D "${install_dir}" prepare "${work_dir}"
+}
+
+# Build ISO
+# args: $1 (core | netinstall)
+make_iso() {
+ local _iso_type=${1}
+ mkarchiso ${verbose} -D "${install_dir}" -L "${iso_label}" iso "${work_dir}" "${name}-${version}-${_iso_type}-${arch}.iso"
+}
+
+# Build dual-iso images from ${work_dir}/i686/iso and ${work_dir}/x86_64/iso
+# args: $1 (core | netinstall)
+make_dual() {
+ local _iso_type=${1}
+ if [[ ! -e ${work_dir}/dual/build.${FUNCNAME}_${_iso_type} ]]; then
+ if [[ ! -d ${work_dir}/i686/iso || ! -d ${work_dir}/x86_64/iso ]]; then
+ echo "ERROR: i686 or x86_64 builds does not exist."
+ _usage 1
+ fi
+ local _src_one _src_two _cfg
+ if [[ ${arch} == "i686" ]]; then
+ _src_one=${work_dir}/i686/iso
+ _src_two=${work_dir}/x86_64/iso
+ else
+ _src_one=${work_dir}/x86_64/iso
+ _src_two=${work_dir}/i686/iso
+ fi
+ mkdir -p ${work_dir}/dual/iso
+ cp -a -l -f ${_src_one} ${work_dir}/dual
+ cp -a -l -n ${_src_two} ${work_dir}/dual
+ rm -f ${work_dir}/dual/iso/${install_dir}/aitab
+ rm -f ${work_dir}/dual/iso/${install_dir}/boot/syslinux/syslinux.cfg
+ if [[ ${_iso_type} == "core" ]]; then
+ if [[ ! -e ${work_dir}/dual/iso/${install_dir}/any/core-any-pkgs.sfs ||
+ ! -e ${work_dir}/dual/iso/${install_dir}/i686/core-pkgs.sfs ||
+ ! -e ${work_dir}/dual/iso/${install_dir}/x86_64/core-pkgs.sfs ]]; then
+ echo "ERROR: core_iso_single build is not found."
+ _usage 1
+ fi
+ else
+ rm -f ${work_dir}/dual/iso/${install_dir}/any/core-any-pkgs.sfs
+ rm -f ${work_dir}/dual/iso/${install_dir}/i686/core-pkgs.sfs
+ rm -f ${work_dir}/dual/iso/${install_dir}/x86_64/core-pkgs.sfs
+ fi
+ paste -d"\n" <(sed "s|%ARCH%|i686|g" aitab.${_iso_type}) \
+ <(sed "s|%ARCH%|x86_64|g" aitab.${_iso_type}) | uniq > ${work_dir}/dual/iso/${install_dir}/aitab
+ for _cfg in syslinux.dual/*.cfg; do
+ sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/dual/iso/${install_dir}/boot/syslinux/${_cfg##*/}
+ done
+ mkarchiso ${verbose} -D "${install_dir}" -L "${iso_label}" iso "${work_dir}/dual" "${name}-${version}-${_iso_type}-dual.iso"
+ : > ${work_dir}/dual/build.${FUNCNAME}_${_iso_type}
+ fi
+}
+
+
+
+_usage ()
+{
+ echo "usage ${0##*/} net_iso_single | core_iso_single | all_iso_single | clean_single"
+ echo " net_iso_dual | core_iso_dual | all_iso_dual | clean_dual"
+ echo
+ exit ${1}
+}
+
+if [[ ${EUID} -ne 0 ]]; then
+ echo "This script must be run as root."
+ _usage 1
+fi
+
+if [[ $# -lt 1 ]]; then
+ echo "No command specified"
+ _usage 1
+fi
+command_name="${1}"
+
+if [[ ${verbose} == "y" ]]; then
+ verbose="-v"
+else
+ verbose=""
+fi
+
+if [[ ${command_name} =~ single ]]; then
+ work_dir=${work_dir}/${arch}
+fi
+
+make_common_single() {
+ make_basefs
+ make_packages
+ make_customize_root_image
+ make_boot
+ make_syslinux
+ make_isolinux
+ make_lib_modules
+ make_usr_share
+ make_aitab $1
+ make_prepare $1
+ make_iso $1
+}
+
+case "${command_name}" in
+ net_iso_single)
+ make_common_single netinstall
+ ;;
+ core_iso_single)
+ make_core_repo
+ make_common_single core
+ ;;
+ all_iso_single)
+ make_common_single netinstall
+ make_core_repo
+ make_common_single core
+ ;;
+ net_iso_dual)
+ make_dual netinstall
+ ;;
+ core_iso_dual)
+ make_dual core
+ ;;
+ all_iso_dual)
+ make_dual netinstall
+ make_dual core
+ ;;
+ clean_single)
+ rm -rf ${work_dir}
+ rm -f ${name}-${version}-*-${arch}.iso
+ ;;
+ clean_dual)
+ rm -rf ${work_dir}/dual
+ rm -f ${name}-${version}-*-dual.iso
+ ;;
+ *)
+ echo "Invalid command name '${command_name}'"
+ _usage 1
+ ;;
+esac
diff --git a/configs/releng/core.exclude.i686 b/configs/releng/core.exclude.i686
new file mode 100644
index 0000000..a04ceef
--- /dev/null
+++ b/configs/releng/core.exclude.i686
@@ -0,0 +1,4 @@
+gcc-ada
+gcc-fortran
+gcc-go
+gcc-objc
diff --git a/configs/releng/core.exclude.x86_64 b/configs/releng/core.exclude.x86_64
new file mode 100644
index 0000000..a04ceef
--- /dev/null
+++ b/configs/releng/core.exclude.x86_64
@@ -0,0 +1,4 @@
+gcc-ada
+gcc-fortran
+gcc-go
+gcc-objc
diff --git a/configs/releng/isolinux/isolinux.cfg b/configs/releng/isolinux/isolinux.cfg
new file mode 100644
index 0000000..e7bbaa4
--- /dev/null
+++ b/configs/releng/isolinux/isolinux.cfg
@@ -0,0 +1,5 @@
+DEFAULT loadconfig
+
+LABEL loadconfig
+ CONFIG /%INSTALL_DIR%/boot/syslinux/syslinux.cfg
+ APPEND /%INSTALL_DIR%/boot/syslinux/
diff --git a/configs/releng/mkinitcpio.conf b/configs/releng/mkinitcpio.conf
new file mode 100644
index 0000000..df833eb
--- /dev/null
+++ b/configs/releng/mkinitcpio.conf
@@ -0,0 +1,2 @@
+HOOKS="base udev memdisk archiso archiso_pxe_nbd archiso_loop_mnt pata scsi sata usb fw pcmcia filesystems usbinput"
+COMPRESSION="xz"
diff --git a/configs/releng/packages.i686 b/configs/releng/packages.i686
new file mode 100644
index 0000000..11d68e5
--- /dev/null
+++ b/configs/releng/packages.i686
@@ -0,0 +1,38 @@
+aif
+b43-fwcutter
+btrfs-progs-unstable
+crda
+curl
+ddrescue
+dhclient
+dialog
+dmraid
+dnsutils
+dosfstools
+elinks
+gnu-netcat
+hdparm
+inetutils
+ipw2100-fw
+ipw2200-fw
+lftp
+lilo
+nbd
+netcfg
+nfs-utils
+nilfs-utils
+nmap
+ntfs-3g
+ntfsprogs
+ntp
+openssh
+openvpn
+parted
+pptpclient
+rsync
+speedtouch
+tcpdump
+tiacx-firmware
+wireless_tools
+wpa_actiond
+zd1211-firmware
diff --git a/configs/releng/packages.x86_64 b/configs/releng/packages.x86_64
new file mode 100644
index 0000000..11d68e5
--- /dev/null
+++ b/configs/releng/packages.x86_64
@@ -0,0 +1,38 @@
+aif
+b43-fwcutter
+btrfs-progs-unstable
+crda
+curl
+ddrescue
+dhclient
+dialog
+dmraid
+dnsutils
+dosfstools
+elinks
+gnu-netcat
+hdparm
+inetutils
+ipw2100-fw
+ipw2200-fw
+lftp
+lilo
+nbd
+netcfg
+nfs-utils
+nilfs-utils
+nmap
+ntfs-3g
+ntfsprogs
+ntp
+openssh
+openvpn
+parted
+pptpclient
+rsync
+speedtouch
+tcpdump
+tiacx-firmware
+wireless_tools
+wpa_actiond
+zd1211-firmware
diff --git a/configs/releng/root-image/arch/report-issues b/configs/releng/root-image/arch/report-issues
new file mode 100755
index 0000000..bf3b3a3
--- /dev/null
+++ b/configs/releng/root-image/arch/report-issues
@@ -0,0 +1 @@
+aif-report-issues.sh
diff --git a/configs/releng/root-image/arch/setup b/configs/releng/root-image/arch/setup
new file mode 100755
index 0000000..908d106
--- /dev/null
+++ b/configs/releng/root-image/arch/setup
@@ -0,0 +1,3 @@
+#!/bin/sh
+#
+aif -p interactive -d -l
diff --git a/configs/releng/root-image/etc/arch-release b/configs/releng/root-image/etc/arch-release
new file mode 100644
index 0000000..153f8b2
--- /dev/null
+++ b/configs/releng/root-image/etc/arch-release
@@ -0,0 +1 @@
+Arch Linux Live ISO
diff --git a/configs/releng/root-image/etc/archiso/functions b/configs/releng/root-image/etc/archiso/functions
new file mode 100644
index 0000000..9fffdcb
--- /dev/null
+++ b/configs/releng/root-image/etc/archiso/functions
@@ -0,0 +1,20 @@
+# vim: set ft=sh:
+
+# kernel_cmdline <param> <default>
+# Looks for a parameter on the kernel's boot-time command line.
+#
+# returns: 0 if param was found. Also prints its value if it was a K=V param.
+# 1 if it was not. Also prints value passed as <default>
+#
+kernel_cmdline ()
+{
+ for param in $(/bin/cat /proc/cmdline); do
+ case "${param}" in
+ $1=*) echo "${param##*=}"; return 0 ;;
+ $1) return 0 ;;
+ *) continue ;;
+ esac
+ done
+ [ -n "${2}" ] && echo "${2}"
+ return 1
+}
diff --git a/configs/releng/root-image/etc/fstab b/configs/releng/root-image/etc/fstab
new file mode 100644
index 0000000..0df0cba
--- /dev/null
+++ b/configs/releng/root-image/etc/fstab
@@ -0,0 +1,5 @@
+#
+# /etc/fstab: static file system information
+#
+# <file system> <dir> <type> <options> <dump> <pass>
+/dev/mapper/root-image / auto defaults 0 0
diff --git a/configs/releng/root-image/etc/hosts b/configs/releng/root-image/etc/hosts
new file mode 100644
index 0000000..e474be0
--- /dev/null
+++ b/configs/releng/root-image/etc/hosts
@@ -0,0 +1,9 @@
+#
+# /etc/hosts: static lookup table for host names
+#
+
+#<ip-address> <hostname.domain.org> <hostname>
+127.0.0.1 localhost.localdomain localhost archiso
+::1 localhost.localdomain localhost archiso
+
+# End of file
diff --git a/configs/releng/root-image/etc/inittab b/configs/releng/root-image/etc/inittab
new file mode 100644
index 0000000..2bbc494
--- /dev/null
+++ b/configs/releng/root-image/etc/inittab
@@ -0,0 +1,48 @@
+#
+# /etc/inittab
+#
+
+# Runlevels:
+# 0 Halt
+# 1(S) Single-user
+# 2 Not used
+# 3 Multi-user
+# 4 Not used
+# 5 X11
+# 6 Reboot
+
+## Only one of the following two lines can be uncommented!
+# Boot to console
+id:3:initdefault:
+# Boot to X11
+#id:5:initdefault:
+
+rc::sysinit:/etc/rc.sysinit
+rs:S1:wait:/etc/rc.single
+rm:2345:wait:/etc/rc.multi
+rh:06:wait:/etc/rc.shutdown
+su:S:wait:/sbin/sulogin -p
+
+# -8 options fixes umlauts problem on login
+c1:2345:respawn:/sbin/agetty -8 -s -n -l /usr/bin/autologin 38400 tty1 linux
+c2:2345:respawn:/sbin/agetty -8 -s 38400 tty2 linux
+c3:2345:respawn:/sbin/agetty -8 -s 38400 tty3 linux
+c4:2345:respawn:/sbin/agetty -8 -s 38400 tty4 linux
+c5:2345:respawn:/sbin/agetty -8 -s 38400 tty5 linux
+c6:2345:respawn:/sbin/agetty -8 -s 38400 tty6 linux
+
+# Serial Virtual Console for KVM and others VMs
+#s0:2345:respawn:/sbin/agetty -8 -s 9600 ttyS0 linux
+
+# Hypervisor Virtual Console for Xen and KVM
+#h0:2345:respawn:/sbin/agetty -8 -s 38400 hvc0 linux
+
+ca::ctrlaltdel:/sbin/shutdown -t3 -r now
+
+# Example lines for starting a login manager
+x:5:respawn:/usr/bin/xdm -nodaemon
+#x:5:respawn:/usr/sbin/gdm -nodaemon
+#x:5:respawn:/usr/bin/kdm -nodaemon
+#x:5:respawn:/usr/bin/slim >/dev/null 2>&1
+
+# End of file
diff --git a/configs/releng/root-image/etc/issue b/configs/releng/root-image/etc/issue
new file mode 100644
index 0000000..ce82e88
--- /dev/null
+++ b/configs/releng/root-image/etc/issue
@@ -0,0 +1,5 @@
+
+Arch Linux Live ISO (\l)
+\s-\r \m.
+Default logins "root" and "arch" have no password.
+To begin installation, login as root.
diff --git a/configs/releng/root-image/etc/motd b/configs/releng/root-image/etc/motd
new file mode 100644
index 0000000..ddd9fbc
--- /dev/null
+++ b/configs/releng/root-image/etc/motd
@@ -0,0 +1,16 @@
+**************************************************************
+* To begin installation, run /arch/setup *
+* You can find documentation at *
+* /usr/share/aif/docs/official_installation_guide_en *
+* *
+* i18n: Use the 'km' utility to change your keyboard layout *
+* and console font. *
+* *
+* If you encounter issues and want to report them or *
+* seek help, run /arch/report-issues *
+* *
+* If you are looking to install Arch on something more *
+* exotic, such as your kerosene-powered cheese grater, *
+* please consult http://wiki.archlinux.org. *
+* *
+**************************************************************
diff --git a/configs/releng/root-image/etc/pam.d/su b/configs/releng/root-image/etc/pam.d/su
new file mode 100644
index 0000000..a291042
--- /dev/null
+++ b/configs/releng/root-image/etc/pam.d/su
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth sufficient pam_rootok.so
+auth sufficient pam_wheel.so trust use_uid
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/configs/releng/root-image/etc/rc.conf b/configs/releng/root-image/etc/rc.conf
new file mode 100644
index 0000000..92236a2
--- /dev/null
+++ b/configs/releng/root-image/etc/rc.conf
@@ -0,0 +1,35 @@
+#
+# /etc/rc.conf - Main Configuration for Arch Linux
+
+. /etc/archiso/functions
+
+LOCALE_DEFAULT="en_US.UTF-8"
+DAEMON_LOCALE_DEFAULT="no"
+CLOCK_DEFAULT="UTC"
+TIMEZONE_DEFAULT="Canada/Pacific"
+KEYMAP_DEFAULT="us"
+CONSOLEFONT_DEFAULT=
+CONSOLEMAP_DEFAULT=
+USECOLOR_DEFAULT="yes"
+VERBOSE_DEFAULT="3"
+
+LOCALE="$(kernel_cmdline locale ${LOCALE_DEFAULT})"
+DAEMON_LOCALE="$(kernel_cmdline daemon_locale ${DAEMON_LOCALE_DEFAULT})"
+HARDWARECLOCK="$(kernel_cmdline clock ${CLOCK_DEFAULT})"
+TIMEZONE="$(kernel_cmdline timezone ${TIMEZONE_DEFAULT})"
+KEYMAP="$(kernel_cmdline keymap ${KEYMAP_DEFAULT})"
+CONSOLEFONT="$(kernel_cmdline consolefont ${CONSOLEFONT_DEFAULT})"
+CONSOLEMAP="$(kernel_cmdline consolemap ${CONSOLEMAP_DEFAULT})"
+USECOLOR="$(kernel_cmdline usecolor ${USECOLOR_DEFAULT})"
+VERBOSE="$(kernel_cmdline verbose ${VERBOSE_DEFAULT})"
+
+MODULES=()
+
+UDEV_TIMEOUT=30
+USEDMRAID="no"
+USEBTRFS="no"
+USELVM="no"
+
+HOSTNAME="archiso"
+
+DAEMONS=(hwclock syslog-ng archiso)
diff --git a/configs/releng/root-image/etc/rc.d/archiso b/configs/releng/root-image/etc/rc.d/archiso
new file mode 100755
index 0000000..1429516
--- /dev/null
+++ b/configs/releng/root-image/etc/rc.d/archiso
@@ -0,0 +1,48 @@
+# vim: set ft=sh:
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+do_makeuser ()
+{
+ stat_busy "Making the default user arch"
+ addgroups="audio,disk,optical,wheel"
+ useradd -m -p "" -g users -G $addgroups arch
+ stat_done
+}
+
+do_locale_gen ()
+{
+ stat_busy "Generating locales..."
+ sed -i "s/#\(${LOCALE/[@.]*}\)/\1/" /etc/locale.gen
+ /usr/sbin/locale-gen > /dev/null
+ stat_done
+}
+
+# If an alternate console was specified on the kernel command line,
+# start agetty on it too.
+do_special_console()
+{
+ cmdline_console="$(kernel_cmdline console)"
+ [ $? -ne 0 ] && return
+
+ dev="${cmdline_console%%,*}"
+ args="${cmdline_console##*,}"
+ baud="${args%%[neo]*}" && baud="${baud:-"9600"}"
+ [ "x${args}" != "x${args%%r}" ] && rts="-h"
+
+
+ stat_busy "Starting agetty on console: ${cmdline_console}"
+ echo "${dev}" >> /etc/securetty
+ echo "z0:2345:respawn:/sbin/agetty ${rts} ${baud} ${dev} linux" >> /etc/inittab
+ /sbin/telinit q
+ stat_done
+}
+
+case "$1" in
+ start)
+ do_locale_gen
+ do_makeuser
+ do_special_console
+ ;;
+esac
+exit 0
diff --git a/configs/releng/root-image/etc/rc.d/functions.d/automated_script b/configs/releng/root-image/etc/rc.d/functions.d/automated_script
new file mode 100644
index 0000000..edb8ea3
--- /dev/null
+++ b/configs/releng/root-image/etc/rc.d/functions.d/automated_script
@@ -0,0 +1,25 @@
+. /etc/archiso/functions
+
+automated_script ()
+{
+ script="$(kernel_cmdline script)"
+ if [[ -n "$script" ]]; then
+ stat_busy "Configuring $script"
+ if [[ "$script" =~ ^http:// || "$script" =~ ^ftp:// ]]; then
+ wget "$script" -q -O /tmp/startup_script >/dev/null
+ rt=$?
+ else
+ cp "$script" /tmp/startup_script
+ rt=$?
+ fi
+ if [ $rt -eq 0 ]; then
+ chmod +x /tmp/startup_script
+ echo -e '\nif [ $(tty) = "/dev/tty1" ]; then\n /tmp/startup_script\nfi\n' >> /root/.bash_profile
+ stat_done
+ else
+ stat_fail
+ fi
+ fi
+}
+
+add_hook multi_end automated_script
diff --git a/configs/releng/root-image/etc/sudoers.d/g_wheel b/configs/releng/root-image/etc/sudoers.d/g_wheel
new file mode 100644
index 0000000..8c45359
--- /dev/null
+++ b/configs/releng/root-image/etc/sudoers.d/g_wheel
@@ -0,0 +1 @@
+%wheel ALL=(ALL) NOPASSWD: ALL
diff --git a/configs/releng/root-image/usr/bin/autologin b/configs/releng/root-image/usr/bin/autologin
new file mode 100755
index 0000000..c124f9e
--- /dev/null
+++ b/configs/releng/root-image/usr/bin/autologin
@@ -0,0 +1,2 @@
+#!/bin/bash
+/bin/login -f root
diff --git a/configs/releng/root-image/usr/bin/km b/configs/releng/root-image/usr/bin/km
new file mode 100755
index 0000000..e24d780
--- /dev/null
+++ b/configs/releng/root-image/usr/bin/km
@@ -0,0 +1,2 @@
+#!/bin/bash
+aif -p partial-keymap
diff --git a/configs/releng/syslinux.dual/syslinux.cfg b/configs/releng/syslinux.dual/syslinux.cfg
new file mode 100644
index 0000000..ac92998
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux.cfg
@@ -0,0 +1,12 @@
+DEFAULT choose
+PROMPT 0
+
+LABEL choose
+KERNEL ifcpu64.c32
+APPEND have64 -- nohave64
+
+LABEL have64
+CONFIG syslinux_both.cfg
+
+LABEL nohave64
+CONFIG syslinux_32only.cfg
diff --git a/configs/releng/syslinux.dual/syslinux_32only.cfg b/configs/releng/syslinux.dual/syslinux_32only.cfg
new file mode 100644
index 0000000..c7a452d
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux_32only.cfg
@@ -0,0 +1,3 @@
+INCLUDE syslinux_head.cfg
+INCLUDE syslinux_arch32.cfg
+INCLUDE syslinux_tail.cfg
diff --git a/configs/releng/syslinux.dual/syslinux_arch32.cfg b/configs/releng/syslinux.dual/syslinux_arch32.cfg
new file mode 100644
index 0000000..6947d75
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux_arch32.cfg
@@ -0,0 +1,11 @@
+LABEL arch32
+TEXT HELP
+Boot the Arch Linux (i686) live medium. It allows you to install Arch Linux or
+perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (i686)
+LINUX /%INSTALL_DIR%/boot/i686/vmlinuz26
+INITRD /%INSTALL_DIR%/boot/i686/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
+# Next line should be uncommented when prepare enviroment to boot from PXE.
+#IPAPPEND 3
diff --git a/configs/releng/syslinux.dual/syslinux_arch64.cfg b/configs/releng/syslinux.dual/syslinux_arch64.cfg
new file mode 100644
index 0000000..02ddc5a
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux_arch64.cfg
@@ -0,0 +1,11 @@
+LABEL arch64
+TEXT HELP
+Boot the Arch Linux (x86_64) live medium. It allows you to install Arch Linux or
+perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (x86_64)
+LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz26
+INITRD /%INSTALL_DIR%/boot/x86_64/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
+# Next line should be uncommented when prepare enviroment to boot from PXE.
+#IPAPPEND 3
diff --git a/configs/releng/syslinux.dual/syslinux_both.cfg b/configs/releng/syslinux.dual/syslinux_both.cfg
new file mode 100644
index 0000000..9cd1584
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux_both.cfg
@@ -0,0 +1,4 @@
+INCLUDE syslinux_head.cfg
+INCLUDE syslinux_arch32.cfg
+INCLUDE syslinux_arch64.cfg
+INCLUDE syslinux_tail.cfg
diff --git a/configs/releng/syslinux.dual/syslinux_head.cfg b/configs/releng/syslinux.dual/syslinux_head.cfg
new file mode 100644
index 0000000..2f692f8
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux_head.cfg
@@ -0,0 +1,27 @@
+DEFAULT vesamenu.c32
+PROMPT 0
+MENU TITLE Arch Linux
+MENU BACKGROUND splash.png
+TIMEOUT 3000
+
+MENU WIDTH 78
+MENU MARGIN 4
+MENU ROWS 7
+MENU VSHIFT 10
+MENU TIMEOUTROW 13
+MENU TABMSGROW 11
+MENU CMDLINEROW 11
+MENU HELPMSGROW 16
+MENU HELPMSGENDROW 29
+
+# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
+
+MENU COLOR border 30;44 #40ffffff #a0000000 std
+MENU COLOR title 1;36;44 #9033ccff #a0000000 std
+MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
+MENU COLOR unsel 37;44 #50ffffff #a0000000 std
+MENU COLOR help 37;40 #c0ffffff #a0000000 std
+MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
+MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
+MENU COLOR msg07 37;40 #90ffffff #a0000000 std
+MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
diff --git a/configs/releng/syslinux.dual/syslinux_tail.cfg b/configs/releng/syslinux.dual/syslinux_tail.cfg
new file mode 100644
index 0000000..7dd1270
--- /dev/null
+++ b/configs/releng/syslinux.dual/syslinux_tail.cfg
@@ -0,0 +1,29 @@
+LABEL existing
+TEXT HELP
+Boot an existing operating system. Press TAB to edit the disk and partition
+number to boot.
+ENDTEXT
+MENU LABEL Boot existing OS
+COM32 chain.c32
+APPEND hd0 0
+
+# http://www.memtest.org/
+LABEL memtest
+MENU LABEL Run Memtest86+ (RAM test)
+LINUX /%INSTALL_DIR%/boot/memtest
+
+# http://hdt-project.org/
+LABEL hdt
+MENU LABEL Hardware Information (HDT)
+COM32 hdt.c32
+APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
+
+LABEL reboot
+MENU LABEL Reboot
+COM32 reboot.c32
+
+LABEL poweroff
+MENU LABEL Power Off
+COMBOOT poweroff.com
+
+ONTIMEOUT arch32
diff --git a/configs/releng/syslinux/splash.png b/configs/releng/syslinux/splash.png
new file mode 100644
index 0000000..64b959a
--- /dev/null
+++ b/configs/releng/syslinux/splash.png
Binary files differ
diff --git a/configs/releng/syslinux/syslinux.cfg b/configs/releng/syslinux/syslinux.cfg
new file mode 100644
index 0000000..de840f4
--- /dev/null
+++ b/configs/releng/syslinux/syslinux.cfg
@@ -0,0 +1,70 @@
+SERIAL 0 38400
+DEFAULT vesamenu.c32
+PROMPT 0
+MENU TITLE Arch Linux
+MENU BACKGROUND splash.png
+TIMEOUT 3000
+
+MENU WIDTH 78
+MENU MARGIN 4
+MENU ROWS 6
+MENU VSHIFT 10
+MENU TIMEOUTROW 13
+MENU TABMSGROW 11
+MENU CMDLINEROW 11
+MENU HELPMSGROW 16
+MENU HELPMSGENDROW 29
+
+# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
+
+MENU COLOR border 30;44 #40ffffff #a0000000 std
+MENU COLOR title 1;36;44 #9033ccff #a0000000 std
+MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
+MENU COLOR unsel 37;44 #50ffffff #a0000000 std
+MENU COLOR help 37;40 #c0ffffff #a0000000 std
+MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
+MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
+MENU COLOR msg07 37;40 #90ffffff #a0000000 std
+MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
+
+LABEL arch
+TEXT HELP
+Boot the Arch Linux live medium. It allows you to install Arch Linux or
+perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux
+LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz26
+INITRD /%INSTALL_DIR%/boot/%ARCH%/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
+# Next line should be uncommented when prepare enviroment to boot from PXE.
+#IPAPPEND 3
+
+LABEL existing
+TEXT HELP
+Boot an existing operating system. Press TAB to edit the disk and partition
+number to boot.
+ENDTEXT
+MENU LABEL Boot existing OS
+COM32 chain.c32
+APPEND hd0 0
+
+# http://www.memtest.org/
+LABEL memtest
+MENU LABEL Run Memtest86+ (RAM test)
+LINUX /%INSTALL_DIR%/boot/memtest
+
+# http://hdt-project.org/
+LABEL hdt
+MENU LABEL Hardware Information (HDT)
+COM32 hdt.c32
+APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz
+
+LABEL reboot
+MENU LABEL Reboot
+COM32 reboot.c32
+
+LABEL poweroff
+MENU LABEL Power Off
+COMBOOT poweroff.com
+
+ONTIMEOUT arch