#!/bin/sh depend_procedure core base # This is a port of the original /arch/quickinst script. # TODO: nowhere rely on /tmp # TODO: find a way to make profilespecific arguments and usage function work (see src/aif.sh) usage() { echo "quickinst " echo echo "This script is for users who would rather partition/mkfs/mount their target" echo "media manually than go through the routines in the setup script." echo echo "First make sure you have all your filesystems mounted under ." echo "e.g. mount -t iso9660 /dev/sdc or /dev/sr0 (for new naming sheme) /src " echo "Then run this script to install all base packages to ." echo if [ -e /usr/bin/wget ]; then echo " must be either 'ftp' or 'cd'" else echo " must be 'cd'" fi echo echo "Examples:" if [ -e /usr/bin/wget ]; then echo " quickinst ftp /mnt ftp://ftp.archlinux.org/core/os/$var_ARCH" fi echo " quickinst cd /mnt /src/core/pkg" echo "" exit 0 } # TODO: implement correctly worker_configure () { # var_PKG_SOURCE_TYPE # var_TARGET_DIR # var_FILE_URL or var_SYNC_URL } # TODO: clean up everything below this PACMAN= [ -f /tmp/usr/bin/pacman.static ] && PACMAN=/tmp/usr/bin/pacman.static [ -f /usr/bin/pacman.static ] && PACMAN=/usr/bin/pacman.static if [ "$PACMAN" = "" ]; then cd /tmp if [ "$INSTMODE" = "ftp" ]; then echo "Downloading pacman..." wget $PKGARG/pacman*.pkg.tar.gz if [ $? -gt 0 ]; then echo "error: Download failed" exit 1 fi tar -xzf pacman*.pkg.tar.gz elif [ "$INSTMODE" = "cd" ]; then echo "Unpacking pacman..." tar -xzf $PKGARG/pacman*.pkg.tar.gz fi fi [ -f /tmp/usr/bin/pacman.static ] && PACMAN=/tmp/usr/bin/pacman.static if [ "$PACMAN" = "" ]; then echo "error: Cannot find the pacman.static binary!" exit 1 fi if [ "$INSTMODE" = "ftp" ]; then echo "[core]" >/tmp/pacman.conf echo "Server = $PKGARG" >>/tmp/pacman.conf mkdir -p $DESTDIR/var/cache/pacman/pkg /var/cache/pacman >/dev/null 2>&1 rm -f /var/cache/pacman/pkg >/dev/null 2>&1 ln -sf $DESTDIR/var/cache/pacman/pkg /var/cache/pacman/pkg >/dev/null 2>&1 fi if [ "$INSTMODE" = "cd" ]; then echo "[core]" >/tmp/pacman.conf echo "Server = file://$PKGARG" >>/tmp/pacman.conf mkdir -p $DESTDIR/var/cache/pacman/pkg /var/cache/pacman >/dev/null 2>&1 rm -f /var/cache/pacman/pkg >/dev/null 2>&1 ln -sf $PKGARG /var/cache/pacman/pkg >/dev/null 2>&1 fi ! [ -d $DESTDIR/var/lib/pacman ] && mkdir -p $DESTDIR/var/lib/pacman ! [ -d /var/lib/pacman ] && mkdir -p /var/lib/pacman # mount proc/sysfs first, so mkinitrd can use auto-detection if it wants ! [ -d $DESTDIR/proc ] && mkdir $DESTDIR/proc ! [ -d $DESTDIR/sys ] && mkdir $DESTDIR/sys ! [ -d $DESTDIR/dev ] && mkdir $DESTDIR/dev mount -t proc none $DESTDIR/proc mount -t sysfs none $DESTDIR/sys mount -o bind /dev $DESTDIR/dev $PACMAN -r $DESTDIR --config /tmp/pacman.conf -Sy base umount $DESTDIR/proc $DESTDIR/sys $DESTDIR/dev if [ $? -gt 0 ]; then echo echo "Package installation FAILED." echo exit 1 fi echo echo "Package installation complete." echo echo "Please install a bootloader. Edit the appropriate config file for" echo "your loader, and chroot into your system to install it into the" echo "boot sector:" echo " # mount -o bind /dev $DESTDIR/dev" echo " # mount -t proc none $DESTDIR/proc" echo " # mount -t sysfs none $DESTDIR/sys" echo " # chroot $DESTDIR /bin/bash" echo echo "For GRUB:" echo " # install-grub /dev/sda /dev/sdaX (replace with your boot partition)" echo " (or install manually by invoking the GRUB shell)" echo "HINT XFS FILESYSTEM:" echo "If you have created xfs filesystems, freeze them before and unfreeze them after" echo "installing grub (outside the chroot):" echo "- freeze:" echo " # xfs_freeze -f $DESTDIR/boot" echo " # xfs_freeze -f $DESTDIR/" echo "- unfreeze:" echo " # xfs_freeze -u $DESTDIR/boot" echo " # xfs_freeze -u $DESTDIR/" echo echo "For LILO:" echo " # lilo" echo echo "Next step, initramfs setup:" echo "Edit your /etc/mkinitcpio.conf and /etc/mkinitcpio.d/kernel26-fallback.conf" echo "to fit your needs. After that run:" echo "# mkinitcpio -p kernel26" echo echo "Then exit your chroot shell, edit $DESTDIR/etc/fstab and" echo "$DESTDIR/etc/rc.conf, and reboot!" echo exit 0