From 676782bc3af8d266b67bbc35b7d791cd8c703aee Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Wed, 30 Aug 2006 05:32:35 +0000 Subject: Initial import git-svn-id: http://phraktured.net/archiso@1 00a9fe69-e71b-0410-bb23-df0e5024db41 --- archlive_hook | 64 ++++++++ archlive_install | 11 ++ base.packages | 90 +++++++++++ default-config/boot/grub/help.lst | 14 ++ default-config/boot/grub/menu.lst | 22 +++ default-config/boot/grub/more.lst | 21 +++ default-config/boot/help/bootexisting | 23 +++ default-config/boot/splash.xpm.gz | Bin 0 -> 8371 bytes default-config/etc/arch-release | 1 + default-config/etc/archiso/getshell | 8 + default-config/etc/fstab | 9 ++ default-config/etc/group | 19 +++ default-config/etc/inittab | 16 ++ default-config/etc/issue | 2 + default-config/etc/pam.d/su | 6 + default-config/etc/passwd | 7 + default-config/etc/rc.conf | 22 +++ default-config/etc/rc.d/archiso | 66 ++++++++ default-config/etc/shadow | 7 + default-config/etc/sudoers | 2 + mkarchiso | 285 ++++++++++++++++++++++++++++++++++ mkarchiso.conf | 11 ++ mkinitcpio.conf | 54 +++++++ modules.ARCH | 9 ++ modules.beyond | 7 + other.packages | 0 26 files changed, 776 insertions(+) create mode 100644 archlive_hook create mode 100644 archlive_install create mode 100644 base.packages create mode 100644 default-config/boot/grub/help.lst create mode 100644 default-config/boot/grub/menu.lst create mode 100644 default-config/boot/grub/more.lst create mode 100644 default-config/boot/help/bootexisting create mode 100644 default-config/boot/splash.xpm.gz create mode 100644 default-config/etc/arch-release create mode 100644 default-config/etc/archiso/getshell create mode 100644 default-config/etc/fstab create mode 100644 default-config/etc/group create mode 100644 default-config/etc/inittab create mode 100644 default-config/etc/issue create mode 100644 default-config/etc/pam.d/su create mode 100644 default-config/etc/passwd create mode 100644 default-config/etc/rc.conf create mode 100644 default-config/etc/rc.d/archiso create mode 100644 default-config/etc/shadow create mode 100644 default-config/etc/sudoers create mode 100755 mkarchiso create mode 100644 mkarchiso.conf create mode 100644 mkinitcpio.conf create mode 100644 modules.ARCH create mode 100644 modules.beyond create mode 100644 other.packages diff --git a/archlive_hook b/archlive_hook new file mode 100644 index 0000000..d0c31f0 --- /dev/null +++ b/archlive_hook @@ -0,0 +1,64 @@ +# vim: set ft=sh: +run_hook () +{ +#Big Fat TODO... we need to add possible boot 'cheatcodes' +# as is common in most livecds. However, most of these can be handled +# in real userspace (early userspace only needs to load the squashfs +# image. That is _all_. Others will be handled in a custom rc.local/rc.conf + + #This is going to get brutal... + + if [ "x${ramdisk_size}" = "x" ]; then + ramdisk_size="75%" + fi + msg -n ":: Mounting tmpfs, size=${ramdisk_size}..." + mount -t tmpfs -o "size=${ramdisk_size}" tmpfs /tmpfs + mkdir /tmpfs/bootcd + msg "done." + + squashfound=0 + msg -n ":: Scanning for boot cdrom device..." + for cdrom in /dev/cd/*; do + if mount -r -t iso9660 "${cdrom}" /tmpfs/bootcd >/dev/null 2>&1; then + if [ -e /tmpfs/bootcd/archlive.sqfs ]; then + squashfound=1 + msg "${cdrom}" + break + fi + fi + [ $squashfound -eq 0 ] && umount /tmpfs/bootcd >/dev/null 2>&1 + done + + if [ $squashfound -eq 0 ]; then + echo "ERROR: cannot find booted cdrom device, cannot continue..." + exit 1 + fi + + msg -n ":: Mounting squashfs image..." + /bin/modprobe -q squashfs >/dev/null 2>&1 + mkdir -p /tmpfs/squashfs_root + if ! losetup /dev/loop0 /tmpfs/bootcd/archlive.sqfs; then + echo "ERROR: Cannot mount loop device /dev/loop0...aborting" + exit 1 + fi + mount -r -t squashfs /dev/loop0 /tmpfs/squashfs_root + #mount.full -r -t squashfs -o loop /tmpfs/bootcd/squashfs_image /tmpfs/squashfs_root + msg "done." + + msg -n ":: Mounting root (union) filesystem..." + /bin/modprobe -q unionfs >/dev/null 2>&1 + mount -t unionfs -o dirs=/tmpfs=rw:/tmpfs/squashfs_root=ro,debug=0 none /real_root + msg "done." + + if [ -d /proc/sus/dev/cdrom ]; then + echo 0 > /proc/sys/dev/cdrom/lock + echo 1 > /proc/sys/dev/cdrom/autoeject + fi + + msg ":: Stopping udevd" + udevpid=$(/bin/minips -C udevd -o pid=) + [ "x${udevpid}" != "x" ] && /bin/kill -9 $udevpid + #Yep, we're bailing out here. We don't need kinit. + msg ":: Passing control to Archlinux Initscripts..." + exec /bin/run-init -c /dev/console /real_root /sbin/init ${CMDLINE} +} diff --git a/archlive_install b/archlive_install new file mode 100644 index 0000000..be2f5cc --- /dev/null +++ b/archlive_install @@ -0,0 +1,11 @@ +# vim: set ft=sh: +install () +{ + MODULES="cdrom ide-cd ide-core ide-generic unionfs squashfs iso9660 $(all_modules '/kernel/fs' | grep -v "nls") " + BINARIES="" + FILES="" + add_binary /bin/mount /bin/mount.full + add_dir /real_root + add_dir /tmpfs + SCRIPT="liveiso" +} diff --git a/base.packages b/base.packages new file mode 100644 index 0000000..1564e49 --- /dev/null +++ b/base.packages @@ -0,0 +1,90 @@ +bash +bin86 +binutils +bzip2 +coreutils +cpio +cracklib +db +dcron +dhcpcd +dialog +e2fsprogs +ed +elinks +file +filesystem +findutils +gawk +gcc +gettext +glibc +grep +groff +grub-gfx +gzip +initscripts +iputils +jfsutils +kbd +less +lftp +libpcap +libusb +licenses +lilo +lshwd +lsof +lzo2 +mailx +man +man-pages +mktemp +module-init-tools +nano +ncurses +net-tools +netcat +netkit-telnet +nmap +openssh +openssl +pacman +pam +parted +pciutils +pcmciautils +pcre +perl +popt +ppp +procinfo +procps +psmisc +python +raidtools +readline +reiserfsprogs +rp-pppoe +sed +shadow +squashfs +sysfsutils +syslog-ng +sysvinit +tar +tcp_wrappers +tcpdump +udev +unionfs +unrar +unzip +usbutils +util-linux +vim +wget +which +wireless_tools +wpa_supplicant +xfsprogs +zlib diff --git a/default-config/boot/grub/help.lst b/default-config/boot/grub/help.lst new file mode 100644 index 0000000..4018a27 --- /dev/null +++ b/default-config/boot/grub/help.lst @@ -0,0 +1,14 @@ +# Help files must be exactly 23 lines long. +timeout 60 +default 0 + +title Back to main menu +configfile /boot/grub/menu.lst + +title HOW-TO: Boot an existing system +cat /boot/help/bootexisting +pause Press enter to continue... + +title HOW-TO: Do some other shit +cat /boot/help/bootexisting +pause Press enter to continue... diff --git a/default-config/boot/grub/menu.lst b/default-config/boot/grub/menu.lst new file mode 100644 index 0000000..4650a92 --- /dev/null +++ b/default-config/boot/grub/menu.lst @@ -0,0 +1,22 @@ + +#TODO add options + graphical stuff +timeout 30 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/splash.xpm.gz + +title Boot ArchLive +kernel /boot/vmlinuz26 lang=en locale=en_US.UTF-8 ramdisk_size=75% +initrd /boot/archlive.img + +title Shutdown the Computer +halt + +title Reboot the Computer +reboot + +title View Help... +configfile /boot/grub/help.lst + +title More Options... +configfile /boot/grub/more.lst diff --git a/default-config/boot/grub/more.lst b/default-config/boot/grub/more.lst new file mode 100644 index 0000000..1fe37fc --- /dev/null +++ b/default-config/boot/grub/more.lst @@ -0,0 +1,21 @@ +timeout 60 +default 0 + +title Boot Existing Linux Install +root (hd0,2) +kernel /vmlinuz26 root=/dev/hda1 ro + +title Boot Existing Windows Install +rootnoverify (hd0,0) +makeactive +chainloader +1 + +title Install GRUB to HD0 +root (hd0,0) +setup (hd0) + +title Run Ranish Partition Manager +kernel /boot/ranish/part.exe + +title Run memtest86+ +kernel /boot/memtest86+/memtest.bin diff --git a/default-config/boot/help/bootexisting b/default-config/boot/help/bootexisting new file mode 100644 index 0000000..1c27625 --- /dev/null +++ b/default-config/boot/help/bootexisting @@ -0,0 +1,23 @@ +This is a helpfile + +Hopefully grub will make this happy.... + + + + + + + + + + + + + + + + + + + + diff --git a/default-config/boot/splash.xpm.gz b/default-config/boot/splash.xpm.gz new file mode 100644 index 0000000..9f128bf Binary files /dev/null and b/default-config/boot/splash.xpm.gz differ diff --git a/default-config/etc/arch-release b/default-config/etc/arch-release new file mode 100644 index 0000000..20ba0f6 --- /dev/null +++ b/default-config/etc/arch-release @@ -0,0 +1 @@ +Arch Linux Live ISO 0.X (Sniklefritz) diff --git a/default-config/etc/archiso/getshell b/default-config/etc/archiso/getshell new file mode 100644 index 0000000..c61c56c --- /dev/null +++ b/default-config/etc/archiso/getshell @@ -0,0 +1,8 @@ +#!/bin/sh + +. /etc/archiso/functions +shell="$(cmdline_param shell)" +[ -n "${shell}" ] && shell="/bin/bash" +[ ! -e "${shell}" ] && shell="/bin/sh" + +exec ${shell} diff --git a/default-config/etc/fstab b/default-config/etc/fstab new file mode 100644 index 0000000..74c69fd --- /dev/null +++ b/default-config/etc/fstab @@ -0,0 +1,9 @@ +# +# /etc/fstab: static file system information +# +# +none /dev/pts devpts defaults 0 0 +none /dev/shm tmpfs defaults 0 0 +tmpfs /tmp tmpfs defaults 0 0 + +/dev/cdrom /bootcd iso9660 ro,user,noauto 0 0 diff --git a/default-config/etc/group b/default-config/etc/group new file mode 100644 index 0000000..bab2ef8 --- /dev/null +++ b/default-config/etc/group @@ -0,0 +1,19 @@ +root::0:root +bin::1:root,bin,daemon +daemon::2:root,bin,daemon +`sys::3:root,bin +adm::4:root,daemon +tty::5: +disk::6:root,arch +lp::7:daemon +mem::8: +kmem::9: +wheel::10:root,arch +ftp::11: +mail::12: +smmsp::25: +audio::92:arch +optical::93:arch +nobody::99: +users::100:arch +slocate:x:21: diff --git a/default-config/etc/inittab b/default-config/etc/inittab new file mode 100644 index 0000000..d222983 --- /dev/null +++ b/default-config/etc/inittab @@ -0,0 +1,16 @@ +id:4: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 + +c1:2345:respawn:/sbin/agetty 38400 vc/1 linux +c2:2345:respawn:/sbin/agetty 38400 vc/2 linux +c3:2345:respawn:/sbin/agetty 38400 vc/3 linux +c4:2345:respawn:/sbin/agetty 38400 vc/4 linux +c5:2345:respawn:/sbin/agetty 38400 vc/5 linux +c6:2345:respawn:/sbin/agetty 38400 vc/6 linux + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now diff --git a/default-config/etc/issue b/default-config/etc/issue new file mode 100644 index 0000000..e90c245 --- /dev/null +++ b/default-config/etc/issue @@ -0,0 +1,2 @@ +Arch Linux Live ISO 0.X (Snicklefritz) (\n) (\l) +Default user: arch diff --git a/default-config/etc/pam.d/su b/default-config/etc/pam.d/su new file mode 100644 index 0000000..1bac343 --- /dev/null +++ b/default-config/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/default-config/etc/passwd b/default-config/etc/passwd new file mode 100644 index 0000000..6f69ed0 --- /dev/null +++ b/default-config/etc/passwd @@ -0,0 +1,7 @@ +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin: +daemon:x:2:2:daemon:/sbin: +mail:x:8:12:mail:/var/spool/mail: +ftp:x:14:11:ftp:/home/ftp: +nobody:x:99:99:nobody:/: +arch::1000:100::/home/arch:/bin/bash diff --git a/default-config/etc/rc.conf b/default-config/etc/rc.conf new file mode 100644 index 0000000..ea21295 --- /dev/null +++ b/default-config/etc/rc.conf @@ -0,0 +1,22 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux + +LOCALE="en_US.UTF-8" +HARDWARECLOCK="UTC" +TIMEZONE="America/Chicago" +KEYMAP="us" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +MOD_AUTOLOAD="yes" +MODULES=() +USELVM="no" + +HOSTNAME="archlive" +lo="lo 127.0.0.1" +INTERFACES=(lo) +ROUTES=() + +#TODO add more auto-daemons here, especially the live-cd specific stuff +DAEMONS=(syslog-ng network crond) diff --git a/default-config/etc/rc.d/archiso b/default-config/etc/rc.d/archiso new file mode 100644 index 0000000..6acf18a --- /dev/null +++ b/default-config/etc/rc.d/archiso @@ -0,0 +1,66 @@ +# vim: set ft=sh: +cmdline_param () +{ + while param do; + case "${param}" in + $1=*) echo "${param##*=}"; break ;; + *) continue ;; + esac + done < read /proc/cmdline +} +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/archiso/functions # above goes in this file... + +do_mounts () +{ + #iterate over all block devices + stat_busy "Scanning local block devices" + for dev in $(echo /sys/block/*/dev /sys/block/*/*/dev); do + + devname="/dev/$(echo ${dev} | cut -d'/' -f3,4 | cut -d'/' -f1)" + mountpt="/mnt/$(basename '${devname}')" + mkdir -p "${mountpt}" 2>/dev/null + mount ${options} "${devname}" "${mountpt}" >/dev/null 2>&1 + + fstype=$(awk '{ if ($1=="${devname}") { print $3" "$4;q }}' /proc/mounts) + fstype="${fstype%%,*}" + case "${fstype%% *}" in + *fat*|ntfs|*dos) options="user,exec,uid=0,gid=100,umask=00070" ;; + *) options="users,defaults,exec" ;; + #TODO handle 'sync' on usb devices... + esac + + echo "${devname} ${mountpt} ${fstype} ${options} 0 0 #configured by archiso" >>/etc/fstab + done + stat_done +} + +do_locale () +{ + #copy from rc.sysinit - use cmdline_param locale (or lang ?) +} + +do_swap () +{ + #Archie finds a pagefile.sys for windows/dos machines... may add later + stat_busy "Finding existing swap partitions" + swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)" + if [ -e "${swapdev}" ]; then + swapon ${swapdev} + echo "${swapdev} swap swap defaults 0 0 #configured by archiso" >>/etc/fstab + fi + stat_done +} + +do_homedir () +{ + stat_busy "Scanning for existing HOME directory" + user="$(cmdline_param homeuser)" + for hdir in $(find /mnt -name "home/${user}" 2>/dev/null); do + mkdir -p "/home/arch/" + # break after the first success... + mount --bind "${hdir}" "/home/arch/" && break + done + stat_done +} diff --git a/default-config/etc/shadow b/default-config/etc/shadow new file mode 100644 index 0000000..39e1da7 --- /dev/null +++ b/default-config/etc/shadow @@ -0,0 +1,7 @@ +root::99999:::::: +bin:x:0:::::: +daemon:x:0:::::: +mail:x:0:::::: +ftp:x:0:::::: +nobody:x:0:::::: +arch::12922:0:99999:7::: diff --git a/default-config/etc/sudoers b/default-config/etc/sudoers new file mode 100644 index 0000000..7121a22 --- /dev/null +++ b/default-config/etc/sudoers @@ -0,0 +1,2 @@ +root ALL=(ALL) ALL +%wheel localhost=(ALL) NOPASSWD: ALL diff --git a/mkarchiso b/mkarchiso new file mode 100755 index 0000000..219147f --- /dev/null +++ b/mkarchiso @@ -0,0 +1,285 @@ +#!/bin/sh + +CONFIG="$(pwd)/mkarchiso.conf" +CPIOCONFIG="$(pwd)/mkinitcpio.conf" +DEF_CONFIG_DIR="$(pwd)/default-config" +QUIET="y" + +SKIP_INSTALL="n" +SKIP_SQUASHFS="n" +SKIP_BOOTIMG="n" +SKIP_ISO="n" + +PKGDIR="." + +APPNAME=$(basename "${0}") +ALL_ARGS="${@}" + +usage () +{ + echo "usage ${APPNAME} [options] working-directory imagename.iso" + echo " -c CONFIG Use CONFIG file. default: /etc/archlive/mkarchiso.conf" + echo " -i CPIO CONFIG Use CONFIG file for mkinitcpio. default: /etc/archlive/mkinitcpio.conf" + echo " -s a,b,c Skip creation section. Valid sections are:" + echo " install : This section installs all packages." + echo " squashfs: This section creates a squashfs root image" + echo " bootimg : This section creates a boot image." + echo " iso : This section builds the final iso." + echo " -v Verbose output. Default: no" + echo " -h This message." + exit 1 +} + +skipopts () +{ + for i in $@; do + case $i in + install) SKIP_INSTALL="y" ;; + squashfs) SKIP_SQUASHFS="y" ;; + bootimg) SKIP_BOOTIMG="y" ;; + iso) SKIP_ISO="y" ;; + *) echo "invalid section '$i'"; usage ;; + esac + done +} + +while getopts 'c:i:n:s:pvh' arg; do + case "$arg" in + c) CONFIG="$OPTARG" ;; + i) CPIOCONFIG="$OPTARG" ;; + s) OLDIFS=$IFS; IFS=, + skipopts $OPTARG + IFS=$OLDIFS ;; + v) QUIET="n" ;; + h|?) usage ;; + *) echo "invalid argument '$arg'"; usage ;; + esac +done +shift $(($OPTIND - 1)) + +if [ $# -ne 2 ]; then + usage +else + work_dir=${1} + isoname=${2} +fi + +if [ -e "${work_dir}" -a "${SKIP_INSTALL}" != "y" ]; then + echo "Working dir '${work_dir}' already exists, aborting..." + exit 1 +fi + +if [ -e "${isoname}" -a "${SKIP_ISO}" != "y" ]; then + echo "ISO Image '${isoname}' already exists, aborting..." + exit 1 +fi + +if [ -e "${CONFIG}" ]; then + source "${CONFIG}" +else + echo "Config '${CONFIG}' does not exist, aborting..." + exit 1 +fi + +if [ -e "${CPIOCONFIG}" ]; then + source "${CPIOCONFIG}" +else + echo "mkinitcpio config '${CPIOCONFIG}' does not exist, aborting..." + exit 1 +fi + +isoroot="${work_dir}/iso" +instroot="${work_dir}/install" + +if [ -z $FAKEROOTKEY ]; then + echo "Switching to fakeroot environment" + fakeroot ${0} ${ALL_ARGS} + exit $? +fi + +_kversion () +{ + echo $(pacman -Ql -r "${instroot}" "${kernelpkg}" |\ + grep "/lib/modules/[^/]*/$" |\ + sed "s|.*/lib/modules/\([^/]*\).*/$|\1|") +} + +#Work-arounds for depmod core dumps.... I guess we could just ulimit for now... +_safepacman () +{ + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! pacman -Sf --noconfirm -r "${instroot}" $* >/dev/null 2>&1; then + echo "pacman failed to install '$*', aborting..." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV +} +safe_install_pkgfile () +{ + if [ -e "${1}" ]; then + toinstall="" + echo " Installing packages:" + while read pkg; do + #skip packages listed in IGNOREPKGS + echo $ignorepkgs | grep "\<$name\>" >/dev/null 2>&1 && continue + + echo " ${pkg}" + toinstall="${toinstall} ${pkg}" + done < ${1} + _safepacman "${toinstall}" + fi +} + +_pacman () +{ + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! fakechroot pacman -Sf --noconfirm -r "${instroot}" $* >/dev/null 2>&1; then + echo "pacman failed to install '$*', aborting..." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV +} + +install_pkgfile () +{ + if [ -e "${1}" ]; then + toinstall="" + echo " Installing packages:" + while read pkg; do + #skip packages listed in IGNOREPKGS + echo $ignorepkgs | grep "\<$name\>" >/dev/null 2>&1 && continue + + echo " ${pkg}" + toinstall="${toinstall} ${pkg}" + done < ${1} + _pacman "${toinstall}" + fi +} + +if [ "${SKIP_INSTALL}" = "n" ]; then + mkdir -p "${isoroot}" + mkdir -p "${instroot}" + + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! pacman -Sy -r "${instroot}" 2>&1 | grep -v "cannot open logfile"; then + echo "Error, failed to sync pacman... aborting." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV + + echo "Installing 'base' packages..." + install_pkgfile "${PKGDIR}/base.packages" + + echo "Installing _required_ packages..." + _pacman "memtest86+ unionfs unionfs-utils usbutils libusb pciutils squashfs-tools" + + echo "Installing custom packages..." + for fil in ${package_files}; do + #TODO search for file if not absolute... + echo " Installing packages from file '$fil'" + install_pkgfile "${fil}" + done + for pkg in ${additional_packages}; do + echo " Installing package '${pkg}'" + _pacman "${pkg}" + done + + echo "Installing kernel '${kernelpkg}'" + # fakechroot and depmod don't get along well. We'll do that stuff + # manually... + # TODO: fix fakechroot instead of working around it like a jackass + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! _safepacman "${kernelpkg}" ; then + echo "pacman failed to install '${kernelpkg}', aborting..." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV + kernelver=$(_kversion) + kernelsuffix=${kernelver##*-} + echo "Kernel Version ${kernelver} (${kernelsuffix}) installed - installing modules..." + safe_install_pkgfile "modules.${kernelsuffix}" + + echo "Updating module dependancies" + [ "${kernelsuffix}" == "ARCH" ] && kernelsuffix="" + depmod -a -b "${instroot}" -v "${kernelver}" -F "${instroot}/boot/System.map26${kernelsuffix}" >/dev/null + find "${instroot}/boot" -name *.img -delete + + echo "Applying default configuration for the Arch ISO." + cp -rf ${DEF_CONFIG_DIR}/* "${instroot}" + + echo "Copyright (C) 2006, Arch Linux (Judd Vinet)" > "${instroot}/etc/copyright" + + echo "Creating initial device nodes " + rm -f "${instroot}/dev/console" "${instroot}/dev/null" "${instroot}/dev/zero" + mknod -m 644 "${instroot}/dev/console" c 5 1 + mknod -m 666 "${instroot}/dev/null" c 1 3 + mknod -m 666 "${instroot}/dev/zero" c 1 5 + + echo "Creating default home directory" + mkdir -p "${instroot}/home/arch" + + # Cleanup + echo "Cleaning up ISO root files..." + find "${instroot}" -name *.pacnew -name *.pacsave -name *.pacorig -delete + + kill_dirs="var/abs var/cache/man var/cache/pacman var/log/* var/mail tmp usr/include initrd" + for x in ${kill_dirs}; do + if [ -e "${instroot}/${x}" ]; then + rm -rf "${instroot}/${x}" + fi + done + + find "${instroot}/lib" -name *.a -delete + find "${instroot}/usr/lib" -name *.a -delete + + # this actually takes up alot of space... + for d in ${instroot}/var/lib/pacman/*; do + [ "$(basename ${d})" != "local" ] && rm -rf "${d}" + done + + if [ -e "${instroot}/boot" ]; then + rm -rf "${isoroot}/boot" + mv "${instroot}/boot" "${isoroot}" + fi +fi + +if [ "${SKIP_SQUASHFS}" = "n" ]; then + if [ -e "${isoroot}/archlive.sqfs" ]; then + echo -n "Removing old squashfs image..." + rm "${isoroot}/archlive.sqfs" + echo "done." + fi + + echo -n "Creating squashfs image. This may take some time..." + start=$(date +%s) + mksquashfs "${instroot}" "${isoroot}/archlive.sqfs" -root-owned > /dev/null + echo "done in $(echo $start $(date +%s) | awk '{ printf "%0.2f",($2-$1)/60 }') minutes." +fi + +if [ "${SKIP_BOOTIMG}" = "n" ]; then + kernelver=$(_kversion) + basedir=${instroot} + [ "${instroot:0:1}" != "/" ] && basedir="$(pwd)/${instroot}" + if ! mkinitcpio -c "${CPIOCONFIG}" -b "${basedir}" -k "${kernelver}"\ + -g "${isoroot}/boot/archlive.img"; then + echo "initcpio image creation failed..." + exit 1 + fi + + cp ${instroot}/usr/lib/grub/i386-pc/* "${isoroot}/boot/grub" +fi + +if [ "${SKIP_ISO}" = "n" ]; then + echo "Creating ISO image..." + mkisofs ${q} -r -l -b "boot/grub/stage2_eltorito" -uid 0 -gid 0 -no-emul-boot \ + -boot-load-size 4 -boot-info-table -publisher "Arch Linux " \ + -p "prepared by $NAME" -A "Arch Linux Live/Rescue CD" -copyright /etc/copyright \ + -o "${isoname}" "${isoroot}" +fi + +if [ "${qemu_test}" = "y" ]; then + echo "Testing image via qemu..." + qemu -boot d -kernel-kqemu -cdrom "${isoname}" ${qemuparams} +else + echo "Image completed: ${isoname}" +fi diff --git a/mkarchiso.conf b/mkarchiso.conf new file mode 100644 index 0000000..e2f521d --- /dev/null +++ b/mkarchiso.conf @@ -0,0 +1,11 @@ +# vim: set ft=sh: + +kernelpkg="kernel26" +packager_name="Archlinux User" + +package_files="" +additional_packages="" +ignorepkgs="devfsd hotplug pcmcia-cs" + +qemu_test="n" +qemuparams="" #"-vnc 1" diff --git a/mkinitcpio.conf b/mkinitcpio.conf new file mode 100644 index 0000000..5f19528 --- /dev/null +++ b/mkinitcpio.conf @@ -0,0 +1,54 @@ +# vim:set ft=sh +# MODULES +# The following modules are loaded before any boot hooks are +# run. Advanced users may wish to specify all system modules +# in this array. For instance: +# MODULES="piix ide_disk reiserfs" +MODULES="" + +# BINARIES +# This setting includes, into the CPIO image, and additional +# binaries a given user may wish. This is run first, so may +# be used to override the actual binaries used in a given hook. +# (Existing files are NOT overwritten is already added) +# BINARIES are dependancy parsed, so you may safely ignore libraries +BINARIES="" + +# FILES +# This setting is similar to BINARIES above, however, files are added +# as-is and are not parsed in anyway. This is useful for config files. +# Some users may wish to include modprobe.conf for custom module options, +# like so: +# FILES="/etc/modprobe.conf" +FILES="" + +# HOOKS +# This is the most important setting in this file. The HOOKS control the +# modules and scripts added to the image, and what happens at boot time. +# Order is important, and it is recommended that you do not change the +# order in which HOOKS are added. Run 'mkinitcpio -H ' for +# help on a given hook. +# 'base' is _required_ unless you know precisely what you are doing. +# 'udev' is _required_ in order to automatically load modules +# 'modload' may be used in place of 'udev', but is not recommended +# 'filesystems' is _required_ unless you specify your fs modules in MODULES +# Examples: +# This setup specifies all modules in the MODULES setting above. +# No raid, lvm, or encrypted root is needed. +# HOOKS="base" +# +# This setup will autodetect all modules for your system and should +# work as a sane default +# HOOKS="base udev autodetect ide scsi sata filesystems" +# +# This setup will generate a 'full' image which supports most systems. +# No autodetection is done. +# HOOKS="base udev ide scsi sata usb filesystems" +# +# This setup assembles an ide raid array with an encrypted root FS. +# Note: See 'mkinitcpio -H raid' for more information on raid devices. +# HOOKS="base udev ide filesystems raid encrypt" +# +# This setup loads an LVM volume group on a usb device. +# HOOKS="base udev usb filesystems lvm" +HOOKS="base udev archlive ide scsi sata usb fw filesystems" diff --git a/modules.ARCH b/modules.ARCH new file mode 100644 index 0000000..eb591b0 --- /dev/null +++ b/modules.ARCH @@ -0,0 +1,9 @@ +ipw3945 +madwifi-ng +ndiswrapper +rt2500 +rt2x00 +squashfs +tiacx +unionfs +wlan-ng26 diff --git a/modules.beyond b/modules.beyond new file mode 100644 index 0000000..0ad7d18 --- /dev/null +++ b/modules.beyond @@ -0,0 +1,7 @@ +ipw3945 +madwifi-ng +ndiswrapper +rt2500 +rt2x00 +tiacx +wlan-ng26 diff --git a/other.packages b/other.packages new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3-70-g09d2