From 85d243ff5836fc17416c65dca8a9e8b4e9d915bc Mon Sep 17 00:00:00 2001 From: Gerardo Exequiel Pozzi Date: Sat, 18 Jun 2011 18:38:58 -0300 Subject: [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 --- configs/releng/aitab.core | 6 + configs/releng/aitab.netinstall | 4 + configs/releng/build.sh | 284 +++++++++++++++++++++ configs/releng/core.exclude.i686 | 4 + configs/releng/core.exclude.x86_64 | 4 + configs/releng/isolinux/isolinux.cfg | 5 + configs/releng/mkinitcpio.conf | 2 + configs/releng/packages.i686 | 38 +++ configs/releng/packages.x86_64 | 38 +++ configs/releng/root-image/arch/report-issues | 1 + configs/releng/root-image/arch/setup | 3 + configs/releng/root-image/etc/arch-release | 1 + configs/releng/root-image/etc/archiso/functions | 20 ++ configs/releng/root-image/etc/fstab | 5 + configs/releng/root-image/etc/hosts | 9 + configs/releng/root-image/etc/inittab | 48 ++++ configs/releng/root-image/etc/issue | 5 + configs/releng/root-image/etc/motd | 16 ++ configs/releng/root-image/etc/pam.d/su | 6 + configs/releng/root-image/etc/rc.conf | 35 +++ configs/releng/root-image/etc/rc.d/archiso | 48 ++++ .../etc/rc.d/functions.d/automated_script | 25 ++ configs/releng/root-image/etc/sudoers.d/g_wheel | 1 + configs/releng/root-image/usr/bin/autologin | 2 + configs/releng/root-image/usr/bin/km | 2 + configs/releng/syslinux.dual/syslinux.cfg | 12 + configs/releng/syslinux.dual/syslinux_32only.cfg | 3 + configs/releng/syslinux.dual/syslinux_arch32.cfg | 11 + configs/releng/syslinux.dual/syslinux_arch64.cfg | 11 + configs/releng/syslinux.dual/syslinux_both.cfg | 4 + configs/releng/syslinux.dual/syslinux_head.cfg | 27 ++ configs/releng/syslinux.dual/syslinux_tail.cfg | 29 +++ configs/releng/syslinux/splash.png | Bin 0 -> 45400 bytes configs/releng/syslinux/syslinux.cfg | 70 +++++ 34 files changed, 779 insertions(+) create mode 100644 configs/releng/aitab.core create mode 100644 configs/releng/aitab.netinstall create mode 100755 configs/releng/build.sh create mode 100644 configs/releng/core.exclude.i686 create mode 100644 configs/releng/core.exclude.x86_64 create mode 100644 configs/releng/isolinux/isolinux.cfg create mode 100644 configs/releng/mkinitcpio.conf create mode 100644 configs/releng/packages.i686 create mode 100644 configs/releng/packages.x86_64 create mode 100755 configs/releng/root-image/arch/report-issues create mode 100755 configs/releng/root-image/arch/setup create mode 100644 configs/releng/root-image/etc/arch-release create mode 100644 configs/releng/root-image/etc/archiso/functions create mode 100644 configs/releng/root-image/etc/fstab create mode 100644 configs/releng/root-image/etc/hosts create mode 100644 configs/releng/root-image/etc/inittab create mode 100644 configs/releng/root-image/etc/issue create mode 100644 configs/releng/root-image/etc/motd create mode 100644 configs/releng/root-image/etc/pam.d/su create mode 100644 configs/releng/root-image/etc/rc.conf create mode 100755 configs/releng/root-image/etc/rc.d/archiso create mode 100644 configs/releng/root-image/etc/rc.d/functions.d/automated_script create mode 100644 configs/releng/root-image/etc/sudoers.d/g_wheel create mode 100755 configs/releng/root-image/usr/bin/autologin create mode 100755 configs/releng/root-image/usr/bin/km create mode 100644 configs/releng/syslinux.dual/syslinux.cfg create mode 100644 configs/releng/syslinux.dual/syslinux_32only.cfg create mode 100644 configs/releng/syslinux.dual/syslinux_arch32.cfg create mode 100644 configs/releng/syslinux.dual/syslinux_arch64.cfg create mode 100644 configs/releng/syslinux.dual/syslinux_both.cfg create mode 100644 configs/releng/syslinux.dual/syslinux_head.cfg create mode 100644 configs/releng/syslinux.dual/syslinux_tail.cfg create mode 100644 configs/releng/syslinux/splash.png create mode 100644 configs/releng/syslinux/syslinux.cfg (limited to 'configs/releng') 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 @@ +# +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 @@ +# +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 +# 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 +# +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 +# +# +/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 +# + +# +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 Binary files /dev/null and b/configs/releng/syslinux/splash.png 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 -- cgit v1.2.2