#!/bin/sh # Set Global Vars ADMIN_USER=c9admin DEV=$1 CHROOT="/mnt" ##read BLK_EFI BLK_EFI="${DEV}2" ##read BLK_BOOT BLK_BOOT="${DEV}3" ##read BLK_ROOT BLK_ROOT="${DEV}4" ##read BLK_VAR BLK_VAR="${DEV}5" ##read BLK_USR BLK_USR="${DEV}6" ##read BLK_SWP BLK_SWP="${DEV}7" ##read BLK_HOME BLK_HOME="${DEV}8" # Absolute path to this script, # e.g. /home/user/c9-doc/core/scripts/foo.sh SCRIPT=$(readlink -f "$0") # Absolute path this script is in, # e.g. /home/user/c9-doc/core/scripts SCRIPTPATH=$(dirname "$SCRIPT") # Absolute path to doc section, # e.g /home/user/c9-doc/core DIR=$(dirname "$SCRIPTPATH"); # Absolute path to local data, # e.g /home/user/local DIR_LOCAL="$(dirname $(dirname ${DIR}))/local"; DIR_CONF="${DIR}/conf" DIR_PRT="${DIR}/ports"; ISO_FILE="${DIR_LOCAL}/crux-3.3.iso" ConfirmOrExit () { while true do echo -n "Please confirm (y or n) :" read CONFIRM case $CONFIRM in y|Y|YES|yes|Yes) break ;; n|N|no|NO|No) echo "Aborting - you entered $CONFIRM" exit ;; *) echo "Please enter only y or n" esac done echo "You entered $CONFIRM. Continuing ..." } setup_target () { echo "1.1.2 Creating File System on $BLK_EFI with fat32:" mkfs.fat -F 32 $BLK_EFI echo "1.1.2 Creating File System on $BLK_BOOT with ext4:" mkfs.ext4 $BLK_BOOT echo "1.1.2 Creating File System on $BLK_ROOT with ext4:" mkfs.ext4 $BLK_ROOT echo "1.1.2 Creating File System on $BLK_VAR with ext4:" mkfs.ext4 $BLK_VAR echo "1.1.2 Creating File System on $BLK_USR with ext4:" mkfs.ext4 $BLK_USR echo "1.1.2 Creating Swap File System on $BLK_SWP:" mkswap $BLK_SWP echo "1.1.2 Creating File System on $BLK_HOME with ext4:" mkfs.ext4 $BLK_HOME echo "1.1.3 mount point to chroot (/mnt):\n" mount $BLK_ROOT $CHROOT mkdir -p $CHROOT/boot mount $BLK_BOOT $CHROOT/boot mkdir -p $CHROOT/boot/efi mount $BLK_EFI $CHROOT/boot/efi mkdir -p $CHROOT/var mount $BLK_VAR $CHROOT/var mkdir -p $CHROOT/usr mount $BLK_USR $CHROOT/usr mkdir -p $CHROOT/home mount $BLK_HOME $CHROOT/home mkdir -p $CHROOT/dev mkdir -p $CHROOT/tmp mkdir -p $CHROOT/proc mkdir -p $CHROOT/sys mkdir -p $CHROOT/var/lib/pkg mkdir -p $CHROOT/usr/ports mkdir -p $CHROOT/media mount --bind /dev $CHROOT/dev mount -vt devpts devpts $CHROOT/dev/pts mount -vt tmpfs shm $CHROOT/dev/shm mount -vt proc proc $CHROOT/proc mount -vt sysfs sysfs $CHROOT/sys modprobe isofs modprobe loop mount -o loop $ISO_FILE $CHROOT/media } install_packages() { echo "1.1.4 Create core.lst and install pkgadd" for p in $CHROOT/media/crux/core/*; do echo $p >> $CHROOT/core.lst; done tar xf "$CHROOT/media/crux/core/pkgutils#5.40-1.pkg.tar.xz" usr/bin/pkgadd -O > $CHROOT/pkgadd chmod +x $CHROOT/pkgadd echo "1.1.4 File core.lst complete, review list of packages before continue..." read PAUSE vim $CHROOT/core.lst echo "1.1.4 Starting install" touch $CHROOT/var/lib/pkg/db cd $CHROOT while read line; do echo "Installing $line;\n" $CHROOT/pkgadd -f -r $CHROOT $line done < core.lst rm $CHROOT/pkgadd rm $CHROOT/core.lst echo "1.1.5. Install extra packages;" mkdir $CHROOT/usr/ports/packages cp $CHROOT/media/crux/core/* $CHROOT/usr/ports/packages cp $CHROOT/media/crux/opt/* $CHROOT/usr/ports/packages cp $CHROOT/media/crux/xorg/* $CHROOT/usr/ports/packages echo "Installing $CHROOT/usr/ports/packages/fakeroot" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/fakeroot#* echo "Installing $CHROOT/usr/ports/packages/dbus" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/dbus#* echo "Installing $CHROOT/usr/ports/packages/expat" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/expat#* echo "Installing $CHROOT/usr/ports/packages/libnl" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/libnl#* echo "Installing $CHROOT/usr/ports/packages/libpng" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/libpng#* echo "Installing $CHROOT/usr/ports/packages/freetype" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/freetype#* echo "Installing $CHROOT/usr/ports/packages/libffi" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/libffi#* echo "Installing $CHROOT/usr/ports/packages/sqlite3" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/sqlite3#* echo "Installing $CHROOT/usr/ports/packages/python" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/python#* echo "Installing $CHROOT/usr/ports/packages/glib" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/glib#* echo "Installing $CHROOT/usr/ports/packages/grub2" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/grub2#* echo "Installing $CHROOT/usr/ports/packages/grub2-efi" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/grub2-efi#* echo "Installing $CHROOT/usr/ports/packages/wireless-tools" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/wireless-tools#* echo "Installing $CHROOT/usr/ports/packages/wpa_supplicant" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/wpa_supplicant#* echo "Installing $CHROOT/usr/ports/packages/lvm2" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/lvm2#* echo "Installing $CHROOT/usr/ports/packages/mdadm" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/mdadm#* echo "Installing $CHROOT/usr/ports/packages/efivar" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/efivar#* echo "Installing $CHROOT/usr/ports/packages/efibootmgr" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/efibootmgr#* echo "Installing $CHROOT/usr/ports/packages/dosfstools" $CHROOT/usr/bin/pkgadd -f -r $CHROOT $CHROOT/usr/ports/packages/dosfstools#* echo "1.1.6. Install extra ports;\n" mkdir $CHROOT/usr/ports/c9-ports cp -r $DIR_PRT/* $CHROOT/usr/ports/c9-ports/ echo "1.1.7. dns resolver, copy resolv.conf;\n" cp /etc/resolv.conf $CHROOT/etc echo "1.1.8. Install Handbook\n" cp $CHROOT/media/crux/handbook.txt $CHROOT/root/ echo "1.1.9. Install Skeletons\n" cp -r $DIR_CONF/skel $CHROOT/etc/ } host_metadata() { echo "1.2.1. Set hostname and hosts;" cp $DIR_CONF/hosts $CHROOT/etc/ vim $CHROOT/etc/hosts echo "1.2.2. Set timezone;" chroot $CHROOT /bin/bash -c tzselect echo "1.2.3. Set locale;" chroot $CHROOT /bin/bash -c "localedef -i en_US -f UTF-8 en_US.UTF-8" echo "1.2.4.2. Create Administrator $ADMIN_USER;" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "useradd -U -m -k /etc/skel -s /bin/bash $ADMIN_USER" echo "1.2.4.3. Add Administrator $ADMIN_USER to wheel group;" chroot $CHROOT /bin/bash -c "usermod -a -G wheel $ADMIN_USER" echo "1.2.4.3. Uncomment to allow members of group wheel to execute any command\n # %wheel ALL=(ALL) ALL" cp $DIR_CONF/sudoers $CHROOT/etc/ echo "1.2.5. File system table;" cp $DIR_CONF/fstab $CHROOT/etc/ chroot $CHROOT /bin/bash -c "mount >> /etc/fstab" vim $CHROOT/etc/fstab echo "1.2.6. Initialization Scripts;" cp $DIR_CONF/rc.d/* $CHROOT/etc/rc.d/ cp $DIR_CONF/rc.conf $CHROOT/etc/ vim $CHROOT/etc/rc.conf } setup_ports() { echo "1.3.1. Build as unprivileged user;" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "useradd -U -M -d /usr/ports -s /bin/false pkgmk" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "usermod -a -G pkgmk $ADMIN_USER" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "chown -R root:pkgmk /usr/ports" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "chmod -R 774 /usr/ports" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "chmod 775 /usr/ports" echo "1.3.2. Ports Layout;" chroot --userspec=pkgmk:pkgmk $CHROOT /bin/bash -c "mkdir /usr/ports/work" chroot --userspec=pkgmk:pkgmk $CHROOT /bin/bash -c "mkdir /usr/ports/pkgbuild" chroot --userspec=pkgmk:pkgmk $CHROOT /bin/bash -c "mkdir /usr/ports/distfiles" chroot $CHROOT /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash -c "id pkgmk >> /etc/fstab" echo "pkgmk /usr/ports/work tmpfs size=30G,gid=102,uid=101,defaults 0 0" >> $CHROOT/etc/fstab vim $CHROOT/etc/fstab echo "1.3.3 Configure pkgmk;" cp $DIR_CONF/pkgmk.conf $CHROOT/etc/ #vim $CHROOT/etc/pkgmk.conf echo "1.3.4 Configure prt-get;" mv $CHROOT/etc/ports/contrib.rsync.inactive $CHROOT/etc/ports/contrib.rsync cp $DIR_CONF/prt-get.conf $CHROOT/etc/ #vim $CHROOT/etc/prt-get.conf } echo "SCRIPT=$SCRIPT"; echo "SCRIPTPATH=$SCRIPTPATH"; echo "Device: $DEV\n" echo "1.1.2 EFI block; ($BLK_EFI)" echo "1.1.2 boot block; ($BLK_BOOT)" echo "1.1.2 root block; ($BLK_ROOT)" echo "1.1.2 var block; ($BLK_VAR)" echo "1.1.2 usr block; ($BLK_USR)" echo "1.1.2 swap block; ($BLK_SWP)" echo "1.1.2 home block; ($BLK_HOME)\n" echo "ADMIN_USER="$ADMIN_USER"\n" echo "CHROOT=$CHROOT"; echo "DIR=$DIR"; echo "DIR_CONF=$DIR_CONF"; echo "DIR_PRT=$DIR_PRT"; echo "ISO_FILE=$ISO_FILE"; ConfirmOrExit echo "press enter to continue" read setup_target install_packages host_metadata setup_ports echo "Ready to chroot $CHROOT /bin/bash \n"