[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>
This commit is contained in:
Gerardo Exequiel Pozzi 2011-06-18 18:38:58 -03:00
commit c22344d2ed
34 changed files with 779 additions and 0 deletions

6
aitab.core Normal file
View File

@ -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

4
aitab.netinstall Normal file
View File

@ -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%

284
build.sh Executable file
View File

@ -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

4
core.exclude.i686 Normal file
View File

@ -0,0 +1,4 @@
gcc-ada
gcc-fortran
gcc-go
gcc-objc

4
core.exclude.x86_64 Normal file
View File

@ -0,0 +1,4 @@
gcc-ada
gcc-fortran
gcc-go
gcc-objc

5
isolinux/isolinux.cfg Normal file
View File

@ -0,0 +1,5 @@
DEFAULT loadconfig
LABEL loadconfig
CONFIG /%INSTALL_DIR%/boot/syslinux/syslinux.cfg
APPEND /%INSTALL_DIR%/boot/syslinux/

2
mkinitcpio.conf Normal file
View File

@ -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"

38
packages.i686 Normal file
View File

@ -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

38
packages.x86_64 Normal file
View File

@ -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

1
root-image/arch/report-issues Executable file
View File

@ -0,0 +1 @@
aif-report-issues.sh

3
root-image/arch/setup Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
#
aif -p interactive -d -l

View File

@ -0,0 +1 @@
Arch Linux Live ISO

View File

@ -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
}

5
root-image/etc/fstab Normal file
View File

@ -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

9
root-image/etc/hosts Normal file
View File

@ -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

48
root-image/etc/inittab Normal file
View File

@ -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

5
root-image/etc/issue Normal file
View File

@ -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.

16
root-image/etc/motd Normal file
View File

@ -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. *
* *
**************************************************************

6
root-image/etc/pam.d/su Normal file
View File

@ -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

35
root-image/etc/rc.conf Normal file
View File

@ -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)

48
root-image/etc/rc.d/archiso Executable file
View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
%wheel ALL=(ALL) NOPASSWD: ALL

2
root-image/usr/bin/autologin Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
/bin/login -f root

2
root-image/usr/bin/km Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
aif -p partial-keymap

View File

@ -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

View File

@ -0,0 +1,3 @@
INCLUDE syslinux_head.cfg
INCLUDE syslinux_arch32.cfg
INCLUDE syslinux_tail.cfg

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,4 @@
INCLUDE syslinux_head.cfg
INCLUDE syslinux_arch32.cfg
INCLUDE syslinux_arch64.cfg
INCLUDE syslinux_tail.cfg

View File

@ -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

View File

@ -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

BIN
syslinux/splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

70
syslinux/syslinux.cfg Normal file
View File

@ -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