blob: 0e0a720b1a7b6a59b6587b12240d10c4a19dc686 (
plain) (
tree)
|
|
#!/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,mode=0750 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"
|