diff --git a/bin/build.sh b/bin/build.sh deleted file mode 100755 index 3547fc1..0000000 --- a/bin/build.sh +++ /dev/null @@ -1,192 +0,0 @@ -#!/bin/bash - -# A lot of snippets, inspiration, and some config directives are from https://projects.archlinux.org/archiso.git/ / the ArchLinux ISO layout. -# Many thanks and praise are deserved. - - -#DEBUG -#set -x - -echo "Starting at $(date)..." - -## Import settings -if [ -f "build.conf" ]; -then - echo "Now importing settings/variables." - set -e - source extra/build.conf.sample - source build.conf - set +e -else - echo "You have not configured a build.conf OR you are not running from the project's root directory (the git repository's working directory). - If you are indeed in the correct directory, you may copy the sample at extra/build.conf.sample, - edit it for appropriate values, and copy to /build.conf" - echo 'For now, though, I am using the defaults. If the build fails complaining about a' - echo 'missing http user, you need to specify a custom/distro-pertinent one.' - cp extra/build.conf.sample build.conf - set -e - source extra/build.conf.sample - set +e -fi - - -## PREPARATION ## - -# safemode browsing enabled. lolz -set -e - -# do some basic error checking -ARCH=$(uname -m) - -if [[ ${EUID} -ne 0 ]]; -then - #echo "This script must be run as root" 1>&2 - echo "This script must be run as root." - exit 1 -elif [ -f ${LOCKFILE} ]; -then - echo "Script already running, stale lockfile present, or an error occurred during last run." - echo "Please clear ${LOCKFILE} by hand before attempting another build." - echo -n "Timestamp of lockfile is: " - ls -l ${LOCKFILE} | awk '{print $6" "$7" "$8}' - exit 1 -elif [[ "$(uname -s)" != "Linux" ]]; -then - echo "ERROR: This script is only supported on GNU/Linux." - exit 1 -elif [[ "${ARCH}" != 'x86_64' ]]; -then - echo "Your hardware architecture, ${ARCH}, is not supported. Only x86_64 is supported." - echo "Dying now." - exit 1 -fi - -echo "Checking directory structure and creating lockfile at ${LOCKFILE}..." -touch ${LOCKFILE} - -# make sure the paths exist and then check for an existing chroot session -for i in ${BASEDIR} ${CHROOTDIR32} ${CHROOTDIR64} ${BUILDDIR}32 ${BUILDDIR}64 ${ISODIR} ${MOUNTPT} ${TEMPDIR}/{${UXNAME},${DISTNAME}} ${ARCHBOOT} ${SRCDIR} ${TFTPDIR} ${HTTPDIR}/${DISTNAME} ${BASEDIR}/logs; -do - if [ ! -d ${i} ]; - then - #echo "${i} does not exist - creating." - mkdir -p ${i} - fi -done - -source ${BASEDIR}/lib/00-depcheck.func.sh - -if [ ! -f "./BUILDNO" ]; -then - echo '0' > ./BUILDNO -fi - -CHROOTDIR_GLOB="${CHROOTDIR}" -BUILDDIR_GLOB="${BUILDDIR}" - -# Set the version. -BUILDVERSION="$(git describe --abbrev=0 --tags)-$(git rev-parse --short --verify HEAD)" -BUILD="$(cat BUILDNO)" -BUILD="$(expr ${BUILD} + 1)" -echo ${BUILD} > ./BUILDNO -BUILDTIME="$(date)" -BUILD_MACHINE="$(hostname -f) (${HOST_DIST})" -#BUILD_USERNAME="${SUDO_USER}" -#BUILD_USERNAME="$(who am i | awk '{print $1}')" -set +e ; logname > /dev/null 2>&1 -if [[ "${?}" == "0" ]]; -then - BUILD_USERNAME="$(logname)" -else - BUILD_USERNAME="$(whoami)" -fi -set -e -USERNAME_REAL="$(grep ${BUILD_USERNAME} /etc/passwd | cut -f5 -d':')" - -cat > ${BASEDIR}/VERSION_INFO.txt << EOF -Version: ${BUILDVERSION} -Build: ${BUILD} -Time: ${BUILDTIME} -Machine: ${BUILD_MACHINE} -User: ${BUILD_USERNAME} (${USERNAME_REAL}) -EOF - -## FUNCTIONS ## - -#source ${BASEDIR}/lib/00-depcheck.func.sh ## this should be called like, VERYYYY first thing, right after sanity/safety checks and such. -source ${BASEDIR}/lib/01-mk.chroot.func.sh ## this is called automatically and only if no chroot exists -source ${BASEDIR}/lib/02-holla_atcha_boi.func.sh -source ${BASEDIR}/lib/03-release_me.func.sh -source ${BASEDIR}/lib/04-facehugger.func.sh -source ${BASEDIR}/lib/05-chroot_wrapper.func.sh -source ${BASEDIR}/lib/06-jenny_craig.func.sh -source ${BASEDIR}/lib/07-centos_is_stupid.func.sh -source ${BASEDIR}/lib/08-will_it_blend.func.sh -source ${BASEDIR}/lib/09-stuffy.func.sh -source ${BASEDIR}/lib/10-yo_dj.func.sh -source ${BASEDIR}/lib/11-mentos.func.sh - -## The Business-End(TM) ## - -CHROOTDIR="${CHROOTDIR_GLOB}" -BUILDDIR="${BUILDDIR_GLOB}" -holla_atcha_boi - -rm -rf ${TEMPDIR}/* -release_me 64 > /dev/null 2>&1 -release_me 32 > /dev/null 2>&1 - -# do we need to perform any updates? -if [[ ${1} == "update" ]]; -then - mentos - centos_is_stupid - will_it_blend 32 - will_it_blend 64 - yo_dj -fi - -# or do we want to just chroot in? -if [[ ${1} == "chroot" ]]; -then - chroot_wrapper 64 - chroot_wrapper 32 - rm -f ${LOCKFILE} - exit 0 -fi - -# or are we just building? -if [[ ${1} == "build" || -z ${1} || ${1} == "all" ]]; -then - if [[ "${MULTIARCH}" == "y" ]]; - then - centos_is_stupid - will_it_blend 64 - will_it_blend 32 - yo_dj any - else - centos_is_stupid - will_it_blend 64 - yo_dj 64 - centos_is_stupid - will_it_blend 32 - yo_dj 32 - fi -fi - -# clean up, clean up, everybody, everywhere -echo "Cleaning up some stuff leftover from the build..." -#rm -rf ${TEMPDIR}/* -#rm -rf ${SRCDIR}/* -cd ${BASEDIR} - -if [[ "${GIT}" == "yes" ]]; -then - echo "Committing changes to git..." - git add --all . - git commit -m "post-build at $(date)" -fi - -# yay! we're done! -rm -f ${LOCKFILE} -echo "Finished successfully at $(date)!" diff --git a/bin/clean.sh b/bin/clean.sh deleted file mode 100755 index d0b6f8c..0000000 --- a/bin/clean.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash - -echo "Started at $(date)..." - -## Import settings -if [ -f "build.conf" ]; -then - echo "Now importing settings/variables." - set -e - source extra/build.conf.sample - source build.conf - set +e -else - echo "You have not configured a build.conf OR you are not running from the project's root directory (the git repository's working directory). - echo "If you are indeed in the correct directory, you may copy the sample at ../extra/build.conf.sample, - echo "edit it for appropriate values, and copy to /build.conf" - echo - echo 'This error is fatal. Dying.' - exit 1 -fi - -if [[ ${EUID} -ne 0 ]]; -then - #echo "This script must be run as root" 1>&2 - echo "This script must be run as root." - echo - exit 1 -elif [ -f ${LOCKFILE} ]; -then - echo "Script already running, stale lockfile present, or an error occurred during last run." - echo "Please clear ${LOCKFILE} by hand before attempting another build." - echo -n "Timestamp of lockfile is: " - ls -l ${LOCKFILE} | awk '{print $6" "$7" "$8}' - exit 1 -fi - -echo "Creating lockfile at ${LOCKFILE}..." -touch ${LOCKFILE} - -if [[ "${1}" == "all" ]]; -then - DIRS="${CHROOTDIR}root.i686 ${CHROOTDIR}root.x86_64 ${BUILDDIR}32 ${BUILDDIR}64 ${ISODIR} ${TEMPDIR} ${ARCHBOOT} ${SRCDIR} ${TFTPDIR} ${HTTPDIR} ${BASEDIR}/logs" - FILES="latest.32.tar.gz latest.64.tar.gz" -elif [[ "${1}" == "chroot" ]]; -then - DIRS="${CHROOTDIR}root.i686 ${CHROOTDIR}root.x86_64 ${BUILDDIR}32 ${BUILDDIR}64 ${ISODIR} ${TEMPDIR} ${ARCHBOOT} ${SRCDIR} ${TFTPDIR} ${HTTPDIR}" - FILES="" -elif [[ "${1}" == "squash" ]]; -then - DIRS="${BUILDDIR}32 ${BUILDDIR}64 ${ISODIR} ${TEMPDIR} ${ARCHBOOT} ${SRCDIR} ${TFTPDIR} ${HTTPDIR}" - FILES="" -else - DIRS="${ISODIR} ${TEMPDIR} ${ARCHBOOT} ${SRCDIR} ${TFTPDIR} ${HTTPDIR}" - FILES="" -fi - -echo "I will be deleting the contents of: ${DIRS}" -echo "I will be deleting the files: ${FILES}" -read -p 'Do you wish to continue? [Y/n] ' CONFIRM - -if [ -z "${CONFIRM}" ]; -then - CONFIRM="y" -fi - -CONFIRM=${CONFIRM:0:1} -CONFIRM=$(echo ${CONFIRM} | tr [[:upper:]] [[:lower:]]) - -if [[ "${CONFIRM}" != "y" ]]; -then - echo 'Exiting.' - exit 0 -fi - - -for i in "${DIRS}"; -do - rm -rf ${i}/* -done - -for i in "${FILES}"; -do - rm -f ${i} -done - -rm -f ${LOCKFILE} - -echo "Finished successfully at $(date)!" diff --git a/bin/mirror.lst.sh b/bin/mirror.lst.sh deleted file mode 100755 index 8bccbe3..0000000 --- a/bin/mirror.lst.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -curl -s -o /tmp/mirrorlist.tmp "https://www.archlinux.org/mirrorlist/?country=US&protocol=http&protocol=https&ip_version=4&use_mirror_status=on" -sed -i -e 's/^#Server/Server/' /tmp/mirrorlist.tmp -rankmirrors -n 6 /tmp/mirrorlist.tmp > extra/mirrorlist -sed -i -e '/^##/d' extra/mirrorlist diff --git a/lib/00-depcheck.func.sh b/lib/00-depcheck.func.sh deleted file mode 100755 index 5d25c0d..0000000 --- a/lib/00-depcheck.func.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash - -function so_check_me_out { - - FUNCNAME="depcheck" - - if [[ -n ${HOST_DIST} ]]; - then - if [[ ! -f ${BASEDIR}/lib/prereqs/${HOST_DIST}/meta || ! -f ${BASEDIR}/lib/prereqs/${HOST_DIST}/pkgs ]]; - then - echo "ERROR: You have specified ${HOST_DIST} as your host system's distro, but it is missing a meta and/or pkgs profile." - exit 1 - fi - fi - - set +e - if [[ -z "${HOST_DIST}" ]]; - then - for dist_profile in $(find "${BASEDIR}"/lib/prereqs -type f -name 'meta'); - do - source ${dist_profile} - if [[ "${SUPPORTED}" != "yes" ]]; - then - continue - fi - eval "${CHECK_METHOD}" > /dev/null 2>&1 - if [[ "${?}" == "0" ]]; - then - export HOST_DIST="${NAME}" - echo "Detected distro as ${HOST_DIST}." - break 2 - fi - done - fi - set -e - - # Sanity is important. - if [[ -z "${HOST_DIST}" ]]; - then - echo "ERROR: Your distro was not found/detected, or is flagged as unsupported." - exit 1 - fi - - # So we've validated the distro. Here, check for packages and install if necessary. maybe use an array, but it'd be better to soft-fail if one of the packages is missing. - - DISTRO_DIR="${BASEDIR}/lib/prereqs/${HOST_DIST}" - META="${DISTRO_DIR}/meta" - PKGLIST="${DISTRO_DIR}/pkgs" - - # And once more, just to be safe. - source ${META} - - ## TWEAKS GET RUN HERE. - distro_specific_tweaks - - if [[ "${PRE_RUN}" != 'none' ]]; - then - echo "Now updating your local package cache..." - set +e - eval "${PRE_RUN}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - if [[ "${?}" != "0" ]]; - then - echo "ERROR: Syncing your local package cache via ${PRE_RUN} command failed." - echo "Please ensure you are connected to the Internet/have repositories configured correctly." - exit 1 - fi - set -e - fi - - set +e - while read pkgname; - do - eval "${PKG_CHK}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - if [[ "${?}" != "0" ]]; - then - echo "Installing ${pkgname}..." - eval "${PKG_MGR}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - if [[ "${?}" != "0" ]]; - then - echo "ERROR: ${pkgname} was not found to be installed and we can't install it." - echo "This usually means you aren't connected to the Internet or your package repositories" - echo "are not configured correctly. Review the list of packages in ${PKGLIST} and ensure" - echo "they are all available to be installed." - exit 1 - fi - fi - done < ${PKGLIST} - set -e - - rm -f "${LOCKFILE}" -} - -so_check_me_out diff --git a/lib/01-mk.chroot.func.sh b/lib/01-mk.chroot.func.sh deleted file mode 100755 index 37694de..0000000 --- a/lib/01-mk.chroot.func.sh +++ /dev/null @@ -1,373 +0,0 @@ -#!/bin/bash - -function mkchroot { - - # just in case we don't inherit. - if [[ -z "${FUNCNAME}" ]]; - then - FUNCNAME='mkchroot-standalone' - fi - - ## Import settings - if [ -f "build.conf" ]; - then - echo "Now importing settings/variables." - set -e - source build.conf - set +e - else - echo "You have not configured a build.conf OR you are not running from the project's root directory (the git repository's working directory)." - echo "If you are indeed in the correct directory, you may copy the sample at ../extra/build.conf.sample," - echo "edit it for appropriate values, and copy to /build.conf" - echo 'This error is fatal. Dying.' - exit 1 - fi - - if [[ ${EUID} -ne 0 ]]; - then - #echo "This script must be run as root" 1>&2 - echo "This script must be run as root." - exit 1 - fi - - if [ -z "${BASEDIR}" ]; - then - echo 'You need to export the directory ("$BASEDIR") which will hold the chroots and the git project directory.' - echo "(don't worry, there's a .gitignore for the chroots)" - echo "e.g. export BASEDIR=\"/opt/dev/work/client-diag-disc/\"" - echo 'Dying.' - exit 1 - fi - - if [ ! -d "${BASEDIR}" ]; - then - echo "You need to make sure ${BASEDIR} is a valid, existing directory. This script does not automatically create it as a sanity measure." - echo 'Dying.' - exit 1 - fi - - if [[ "${EUID}" != "0" ]]; - then - echo "This script must be run as root." - echo 'Dying.' - exit 1 - fi - - if [ -f ${LOCKFILE} ]; - then - echo "Script already running, stale lockfile present, or an error occurred during last run." - echo "Please clear ${LOCKFILE} by hand before attempting another build." - echo -n "Timestamp of lockfile is: " - ls -l ${LOCKFILE} | awk '{print $6" "$7" "$8}' - exit 1 - else - touch ${LOCKFILE} - fi - - if [ -f "/usr/bin/systemd-nspawn" ]; - then - CHROOTCMD="systemd-nspawn -D" - else - CHROOTCMD="${CHROOTDIR64}/bin/arch-chroot" - fi - - cd "${BASEDIR}" - - ## Set some vars. - #MIRROR='http://mirrors.kernel.org/archlinux' - MIRROR='http://mirror.us.leaseweb.net/archlinux' - RLSDIR="${MIRROR}/iso/latest" - - CURRLS64=$(curl -s ${RLSDIR}/sha1sums.txt | grep bootstrap | awk '{print $2}' | grep 'x86_64') - CKSUM64=$(curl -s ${RLSDIR}/sha1sums.txt | grep bootstrap | grep x86_64 | awk '{print $1}') - CURRLS32=$(curl -s ${RLSDIR}/sha1sums.txt | grep bootstrap | awk '{print $2}' | grep 'i686') - CKSUM32=$(curl -s ${RLSDIR}/sha1sums.txt | grep bootstrap | grep i686 | awk '{print $1}') - - ## Fetch latest tarball release - echo "Checking/fetching snapshots..." - if [ -f "latest.64.tar.gz" ]; - then - LOCSUM64=$(sha1sum latest.64.tar.gz | awk '{print $1}') - if [[ "${CKSUM64}" != "${LOCSUM64}" ]]; - then - echo "WARNING: CHECKSUMS DON'T MATCH." - echo "Local: ${LOCSUM64}" - echo "Remote: ${CKSUM64}" - echo "Fetching fresh copy." - curl -o latest.64.tar.gz "${RLSDIR}/${CURRLS64}" - fi - else - curl -o latest.64.tar.gz "${RLSDIR}/${CURRLS64}" - fi - - if [ -f "latest.32.tar.gz" ]; - then - LOCSUM32=$(sha1sum latest.32.tar.gz | awk '{print $1}') - if [[ "${CKSUM32}" != "${LOCSUM32}" ]]; - then - echo "WARNING: CHECKSUMS DON'T MATCH." - echo "Local: ${LOCSUM32}" - echo "Remote: ${CKSUM32}" - echo "Fetching fresh copy." - curl -o latest.32.tar.gz "${RLSDIR}/${CURRLS32}" - fi - else - curl -o latest.32.tar.gz "${RLSDIR}/${CURRLS32}" - fi - - if [ ! -f "${CHROOTDIR32}/etc/pacman.d/gnupg/trustdb.gpg" ] || [ ! -f "${CHROOTDIR64}/etc/pacman.d/gnupg/trustdb.gpg" ]; - then - # Now let's ${BASEDIR}/extract that shit - echo "Extracting snapshots. This will take a while..." - ## 64-bit - tar -xpzf latest.64.tar.gz - ## 32-bit - tar -xpzf latest.32.tar.gz - - # And configure the package manager - echo "Configuring snapshots..." - touch ${LOCKFILE} - sleep 2 - find ${BASEDIR}/extra/pre-build.d/ -exec touch '{}' \; - rsync -a --exclude '/32' --exclude '/64' ${BASEDIR}/extra/pre-build.d/. ${BASEDIR}/root.x86_64/. - rsync -a --exclude '/32' --exclude '/64' ${BASEDIR}/extra/pre-build.d/. ${BASEDIR}/root.i686/. - rsync -a ${BASEDIR}/extra/pre-build.d/64/. ${BASEDIR}/root.x86_64/. - rsync -a ${BASEDIR}/extra/pre-build.d/32/. ${BASEDIR}/root.i686/. - chmod -f 755 ${BASEDIR}/extra/pre-build.d/{32/,64/,}etc/customizepkg.d/* - find ${BASEDIR}/root.x86_64/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - find ${BASEDIR}/root.i686/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - for i in i686 x86_64; - do - cat > ${BASEDIR}/root.${i}/etc/os-release << EOF -NAME="Arch Linux" -ID=arch -PRETTY_NAME="Arch Linux" -ANSI_COLOR="0;36" -HOME_URL="https://www.archlinux.org/" -SUPPORT_URL="https://bbs.archlinux.org/" -BUG_REPORT_URL="https://bugs.archlinux.org/" -EOF - cp ${BASEDIR}/VERSION_INFO.txt ${BASEDIR}/root.${i}/. - done - - # And make it usable. - echo "Initializing chroots..." - - for i in ${CHROOTDIR32} ${CHROOTDIR64}; - do - # Disable NetworkManager. Fuck that shit. - ln -s /dev/null ${i}/etc/systemd/system/NetworkManager.service - ln -s /dev/null ${i}/etc/systemd/system/NetworkManager-dispatcher.service - # Remove the machine-id file so it's automatically generated. - # NOTE: this kind of fucks things up presently. - #rm -f ${i}/etc/machine-id - # Prep pacman - echo "Prepping ${i}. This will take a while..." - echo -n "...Key initializing..." - ${CHROOTCMD} ${i}/ pacman-key --init >> "${LOGFILE}.${FUNCNAME}" 2>&1 - echo "Done." - echo -n "...Importing keys..." - ${CHROOTCMD} ${i}/ pacman-key --populate archlinux >> "${LOGFILE}.${FUNCNAME}" 2>&1 - echo "Done." - # Prep base building system - echo -n "...Installing base packages..." - #${CHROOTCMD} ${i}/ pacstrap -dGcM base - # if that doesn't work, - ${CHROOTCMD} ${i}/ pacman -Syy >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - ${CHROOTCMD} ${i}/ pacman -S --noconfirm --needed base syslinux wget rsync unzip jshon sed sudo abs xmlto bc docbook-xsl git >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - echo "Done." - echo -n "...Upgrading any outdated packages..." - ${CHROOTCMD} ${i}/ pacman -Syyu --noconfirm >> "${LOGFILE}.${FUNCNAME}" 2>&1 - ${CHROOTCMD} ${i}/ pacman-key --refresh-keys >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - echo "Done. Finishing/cleaning up..." - ${CHROOTCMD} ${i}/ pacman -S --noconfirm --needed base-devel >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - # Yaourt is busted because Arch Pacman devs are fucking neasighted closed-minded jackasses. - # If they ever fix their crap, checkout extra/pre-build.d/etc/yaourtrc from git (commit 583a5df84af415990b8c49d7e4ac11dd7b23e0e0) - ## https://github.com/archlinuxfr/yaourt/issues/67 - ## https://projects.archlinux.org/pacman.git/tree/NEWS#n54 - ## https://bugs.archlinux.org/task/43302 - #${CHROOTCMD} ${i}/ pacman -S --noconfirm --needed yaourt >> "${LOGFILE}.${FUNCNAME}" 2>&1 - mkdir -p ${i}/var/tmp/pkg - cp ${BASEDIR}/extra/bootstrap/apacman* ${i}/var/tmp/pkg/apacman.tar.xz - #${CHROOTCMD} ${i} "pacman --noconfirm -U /var/tmp/pkg/apacman.tar.xz" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - ${CHROOTCMD} ${i} bash -c "pacman --noconfirm -U /var/tmp/pkg/apacman.tar.xz && mkdir /var/tmp/apacman && chmod 0750 /var/tmp/apacman && chown root:aurbuild /var/tmp/apacman " >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - ${CHROOTCMD} ${i} bash -c "apacman -S --noconfirm --noedit --skipinteg -S apacman-deps expac" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - #rm -rf ${i}/var/tmp/pkg - #${CHROOTCMD} ${i}/ pacman -S --noconfirm --needed yaourt >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - done - ${CHROOTCMD} ${CHROOTDIR64}/ 'pacman --noconfirm -R gcc-libs libtool' >> "${LOGFILE}.${FUNCNAME}" 2>&1 - ${CHROOTCMD} ${CHROOTDIR64}/ 'pacman --noconfirm -S multilib-devel' >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - - # And let's do some more optimization. - if [[ "${I_AM_A_RACECAR}" == "y" ]]; - then - CPUCNT=$(grep processor /proc/cpuinfo | wc -l) - ((CPUCNT++)) - sed -i -e "/^[[:space:]]*#*MAKEFLAGS=.*$/aMAKEFLAGS=\"-j${CPUCNT}\"" ${CHROOTDIR64}/etc/makepkg.conf - sed -i -e "/^[[:space:]]*#*MAKEFLAGS=.*$/aMAKEFLAGS=\"-j${CPUCNT}\"" ${CHROOTDIR32}/etc/makepkg.conf - fi - - # Baseline packages - echo "Installing baseline packages..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/lib/prereqs/iso.pkgs.lst | tr '\n' ' ') - for i in ${CHROOTDIR32} ${CHROOTDIR64}; - do - set +e - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - set -e - ${CHROOTCMD} ${i}/ bash -c "yes '' | apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - set +e - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - set -e - done - # 32-bit - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/lib/prereqs/iso.pkgs.lst.32 | tr '\n' ' ') - if [ -n "${PKGLIST}" ]; - then - ${CHROOTCMD} ${CHROOTDIR32}/ /usr/bin/bash -c "apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - set +e - for x in $(find ${CHROOTDIR32}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - set -e - # 64-bit - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/lib/prereqs/iso.pkgs.lst.64 | tr '\n' ' ') - if [ -n "${PKGLIST}" ]; - then - ${CHROOTCMD} ${CHROOTDIR64}/ /usr/bin/bash -c "apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - set +e - for x in $(find ${CHROOTDIR64}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - set -e - - # extra packages - sed -i -e '/base-devel/d ; /multilib-devel/d' ${BASEDIR}/extra/packages.{both,64} - # both - echo "Installing extra common packages..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/extra/packages.both | tr '\n' ' ') - for i in ${CHROOTDIR32} ${CHROOTDIR64}; - do - echo "Running post-build tasks in ${i}..." - chmod 700 ${i}/root/post-build.sh - ${CHROOTCMD} ${i}/ "/root/post-build.sh" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - set +e - ${CHROOTCMD} ${i}/ /usr/bin/bash -c "apacman --noconfirm --noedit --skipinteg -S --needed linux" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - cp -a ${i}/boot/vmlinuz-linux ${i}/boot/vmlinuz-linux-${DISTNAME} - #cp -a ${i}/boot/initramfs-linux.img ${i}/boot/initramfs-linux-${DISTNAME}.img - set -e - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - # Uncomment if you wish to use the mkpasswd binary from within the chroot... - #${CHROOTCMD} ${i}/ bash -c "apacman --noconfirm --noedit --skipinteg -S --needed debian-whois-mkpasswd" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - #for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - echo -n "Regular packages..." - ${CHROOTCMD} ${i}/ bash -c "yes '' | apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - set +e - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%%.pacorig} ; done - set -e - # User creation - echo -n "...Creating ${REGUSR} user..." - ${CHROOTCMD} ${i}/ useradd -m -s /bin/bash -c "Default user" ${REGUSR} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - ${CHROOTCMD} ${i}/ usermod -aG users,games,video,audio ${REGUSR} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - ${CHROOTCMD} ${i}/ passwd -d ${REGUSR} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - mkdir -p ${i}/etc/sudoers.d ; chmod 750 ${i}/etc/sudoers.d - printf "Defaults:${REGUSR} \041lecture\n${REGUSR} ALL=(ALL) ALL\n" >> ${i}/etc/sudoers.d/${REGUSR} - if [[ -n "${REGUSR_PASS}" && "${REGUSR_PASS}" != '{[BLANK]}' ]]; - then - #${CHROOTCMD} ${i}/ "/usr/bin/echo ${REGUSR}:${REGUSR_PASS} | chpasswd -e" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - sed -i -e "s|^${REGUSR}::|${REGUSR}:${REGUSR_PASS}:|g" ${i}/etc/shadow - elif [[ "${REGUSR_PASS}" == '{[BLANK]}' ]]; - then - ${CHROOTCMD} ${i}/ passwd -d ${REGUSR} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - else - ${CHROOTCMD} ${i}/ usermod -L ${REGUSR} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - if [[ -n "${ROOT_PASS}" && "${ROOT_PASS}" != '{[BLANK]}' ]]; - then - #${CHROOTCMD} ${i}/ "/usr/bin/echo root:${ROOT_PASS} | chpasswd -e" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - sed -i -e "s|^root::|root:${ROOT_PASS}:|g" ${i}/etc/shadow - elif [[ "${ROOT_PASS}" == '{[BLANK]}' ]]; - then - ${CHROOTCMD} ${i}/ passwd -d root >> "${LOGFILE}.${FUNCNAME}" 2>&1 - else - ${CHROOTCMD} ${i}/ usermod -L root >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - # The following is supposed to do the same as the above, but "cleaner". However, it currently fails with "execv() failed: No such file or directory" - ##${CHROOTCMD} ${i}/ usermod -L root >> "${LOGFILE}.${FUNCNAME}" 2>&1 - echo "Done." - done - - for i in ${CHROOTDIR32} ${CHROOTDIR64}; - do - set +e - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - ${CHROOTCMD} ${i}/ /usr/bin/bash -c "mkinitcpio -p linux" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - cp -a ${i}/boot/initramfs-linux.img ${i}/boot/initramfs-linux-${DISTNAME}.img - set -e - done - - # 32-bit - echo "Installing extra packages for 32-bit..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/extra/packages.32 | tr '\n' ' ') - if [ -n "${PKGLIST}" ]; - then - ${CHROOTCMD} ${CHROOTDIR32}/ /usr/bin/bash -c "apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - set +e - for x in $(find ${CHROOTDIR32}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - set -e - echo "Done." - - # 64-bit - echo "Installing estra packages for 64-bit..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/extra/packages.64 | tr '\n' ' ') - if [ -n "${PKGLIST}" ]; - then - ${CHROOTCMD} ${CHROOTDIR64}/ /usr/bin/bash -c "apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - set +e - for x in $(find ${CHROOTDIR64}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - set -e - echo "Done." - - echo "Syncing overlay..." - touch ${LOCKFILE} - sleep 2 - find ${BASEDIR}/overlay -exec touch '{}' \; - rsync -a --exclude '/32' --exclude '/64' ${BASEDIR}/overlay/. ${CHROOTDIR64}/. - rsync -a --exclude '/32' --exclude '/64' ${BASEDIR}/overlay/. ${CHROOTDIR32}/. - rsync -a ${BASEDIR}/overlay/32/. ${CHROOTDIR32}/. - rsync -a ${BASEDIR}/overlay/64/. ${CHROOTDIR64}/. - find ${CHROOTDIR64}/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - find ${CHROOTDIR32}/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - chown -R 1000:1000 ${CHROOTDIR32}/home/${REGUSR} - chown -R 1000:1000 ${CHROOTDIR64}/home/${REGUSR} - find ${CHROOTDIR64}/home/${REGUSR}/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR64}/home/${REGUSR}/ -type f -exec chmod 600 '{}' \; - find ${CHROOTDIR32}/home/${REGUSR}/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR32}/home/${REGUSR}/ -type f -exec chmod 600 '{}' \; - find ${CHROOTDIR64}/root/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR64}/root/ -type f -exec chmod 600 '{}' \; - find ${CHROOTDIR32}/root/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR32}/root/ -type f -exec chmod 600 '{}' \; - chmod 600 ${CHROOTDIR64}/etc/ssh/* - chmod 600 ${CHROOTDIR32}/etc/ssh/* - echo "Done." - - - #rm -f ${LOCKFILE} - - echo "Chroot setup complete." - -} - -if [[ ! -f "${BASEDIR}/root.x86_64/VERSION_INFO.txt" && ! -f "${BASEDIR}/root.x86_64/VERSION_INFO.txt" ]]; -then - mkchroot -fi diff --git a/lib/02-holla_atcha_boi.func.sh b/lib/02-holla_atcha_boi.func.sh deleted file mode 100644 index 0acca19..0000000 --- a/lib/02-holla_atcha_boi.func.sh +++ /dev/null @@ -1,23 +0,0 @@ -function holla_atcha_boi { - - FUNCNAME="holla_atcha_boi" - - if [[ "${I_AM_A_RACECAR}" == "y" ]]; - then - RACECAR_CHK='nice -n -19 ' - else - RACECAR_CHK="" - fi - - so_check_me_out - - # Do we have an existing chroot set up yet? If not, create. - if [[ ! -d "root.x86_64/root" || ! -d "root.i686/root" ]]; - then - echo "No existing chroot environment found. Creating..." - rm -f ${LOCKFILE} - ${RACECAR_CHK} ${BASEDIR}/lib/01-mk.chroot.func.sh - touch ${LOCKFILE} - fi -} - diff --git a/lib/03-release_me.func.sh b/lib/03-release_me.func.sh deleted file mode 100644 index f693f0c..0000000 --- a/lib/03-release_me.func.sh +++ /dev/null @@ -1,53 +0,0 @@ -function release_me () { - - FUNCNAME="release_me" - - ## check for mountpoints from a manual chroot and umount them if they're still mounted. - ## NOTE: you can use findmnt(8) to view a tree of mountpoints, including bindmounts etc. - # Is there an active chroot? - set +e - if [[ "${1}" == "64" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.x86_64" - local BUILDDIR="${BUILDDIR}64" - elif [[ "${1}" == "32" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.i686" - local BUILDDIR="${BUILDDIR}32" - else - echo "WHOOPS. We hit an error that makes no logical sense." - echo 'Dying.' - exit 1 - fi - - echo "Checking for and cleaning up mountpoints from the chroot environment..." - for i in tmp run dev/shm dev/pts dev - do - umount -l ${CHROOTDIR}/${i} - done - # and is it using efivars? - if [ -d ${CHROOTDIR}/sys/firmware/efi/efivars ]; - then - umount -l ${CHROOTDIR}/sys/firmware/efi/efivars - fi - # and finish cleaning up normal chroots - for i in sys proc - do - umount -l ${CHROOTDIR}/${i} - done - # and is it mounted via two mountpoints a la arch-chroot? - mount | awk '{print $3}' | grep -q ${MOUNTPT} - if [[ ${?} == "0" ]]; - then - umount ${MOUNTPT} - fi - if [ -d ${SRCDIR}/efiboot ]; - then - umount -l ${SRCDIR}/efiboot - fi - rm -rf ${SRCDIR}/efiboot - #rm -rf ${TEMPDIR}/* - set -e # and go back to failing on non-0 exit status. - CHROOTDIR="${CHROOTDIR_GLOB}" - BUILDDIR="${BUILDDIR_GLOB}" -} diff --git a/lib/04-facehugger.func.sh b/lib/04-facehugger.func.sh deleted file mode 100644 index c35b813..0000000 --- a/lib/04-facehugger.func.sh +++ /dev/null @@ -1,42 +0,0 @@ -function facehugger () { - - FUNCNAME="facehugger" - - local ARCHSUFFIX="${1}" - if [[ "${1}" == "64" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.x86_64" - local BUILDDIR="${BUILDDIR}64" - elif [[ "${1}" == "32" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.i686" - local BUILDDIR="${BUILDDIR}32" - else - echo "WHOOPS. We hit an error that makes no logical sense." - echo 'Dying.' - exit 1 - fi - - echo "Creating manual chroot mountpoints." - # Latch on and inject ourself into the environment. Get it? - mount -t proc -o nosuid,noexec,nodev proc ${CHROOTDIR}/proc && - mount -t sysfs -o nosuid,noexec,nodev,ro sys ${CHROOTDIR}/sys && - if [ -d /sys/firmware/efi/efivars ]; - then - mount -t efivarfs -o nosuid,noexec,nodev efivarfs ${CHROOTDIR}/sys/firmware/efi/efivars - fi && - mount -t devtmpfs -o mode=0755,nosuid udev ${CHROOTDIR}/dev && - mount -t devpts -o mode=0620,gid=5,nosuid,noexec devpts ${CHROOTDIR}/dev/pts && - mount -t tmpfs -o mode=1777,nosuid,nodev shm ${CHROOTDIR}/dev/shm && - mount -t tmpfs -o nosuid,nodev,mode=0755 run ${CHROOTDIR}/run && - mount -t tmpfs -o mode=1777,strictatime,nodev,nosuid tmp ${CHROOTDIR}/tmp - echo "======================" - echo "NOW ENTERING CHROOT..." - echo "======================" - chroot ${CHROOTDIR} /bin/bash - rm -f ${CHROOTDIR}/root/chroot - CHROOTDIR="${CHROOTDIR_GLOB}" - BUILDDIR="${BUILDDIR_GLOB}" - release_me ${ARCHSUFFIX} -} - diff --git a/lib/05-chroot_wrapper.func.sh b/lib/05-chroot_wrapper.func.sh deleted file mode 100644 index b8c0069..0000000 --- a/lib/05-chroot_wrapper.func.sh +++ /dev/null @@ -1,32 +0,0 @@ -function chroot_wrapper () { - - FUNCNAME="chroot_wrapper" - - local ARCHSUFFIX="${1}" - if [[ "${1}" == "64" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.x86_64" - local BUILDDIR="${BUILDDIR}64" - elif [[ "${1}" == "32" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.i686" - local BUILDDIR="${BUILDDIR}32" - else - echo "WHOOPS. We hit an error that makes no logical sense." - echo 'Dying.' - exit 1 - fi - - if [ -f "/usr/bin/systemd-nspawn" ]; - then - CHROOTCMD="systemd-nspawn -D ${CHROOTDIR}" - else - CHROOTCMD="facehugger ${ARCHSUFFIX}" - fi - - echo "NOW ENTERING ${CHROOTDIR}...." - echo "_____________________________" - ${CHROOTCMD} - CHROOTDIR="${CHROOTDIR_GLOB}" - BUILDDIR="${BUILDDIR_GLOB}" -} diff --git a/lib/06-jenny_craig.func.sh b/lib/06-jenny_craig.func.sh deleted file mode 100644 index e7023c1..0000000 --- a/lib/06-jenny_craig.func.sh +++ /dev/null @@ -1,70 +0,0 @@ -function jenny_craig () { - - FUNCNAME="jenny_craig" - - BUILDDIR="${BUILDDIR_GLOB}" - if [[ "${1}" == "64" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.x86_64" - local BUILDDIR="${BUILDDIR}64" - elif [[ "${1}" == "32" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.i686" - local BUILDDIR="${BUILDDIR}32" - else - echo "WHOOPS. We hit an error that makes no logical sense." - echo 'Dying.' - exit 1 - fi - - local _CURDIR=$(pwd) - echo "Syncing important files to ${BUILDDIR} for building the squashed filesystem (this may take some time)..." - - # we have to do this or else the package management from LIVE doesn't really work too hot. - cd ${CHROOTDIR}/var/lib/pacman - echo "Compressing the package DB..." - #rm -f ${CHROOTDIR}/usr/local/pacman.db.tar.xz - tar -cf - local | xz -c9 > ../../../usr/local/pacman.db.tar.xz - cd ${_CURDIR} - - # sync over new changes and trim out the fat - rsync -a --delete ${CHROOTDIR}/. ${BUILDDIR}/. - set +e - cp -af ${BUILDDIR}/usr/share/zoneinfo/EST5EDT ${BUILDDIR}/etc/localtime > /dev/null 2>&1 - cp -af ${CHROOTDIR}/usr/share/zoneinfo/EST5EDT ${CHROOTDIR}/etc/localtime > /dev/null 2>&1 - set -e - cp -af ${BUILDDIR}/usr/share/locale/locale.alias ${BUILDDIR}/tmp/. - echo "Cleaning up unnecessary cruft in ${BUILDDIR}..." - - rm -f ${BUILDDIR}/root/.bash_history - rm -f ${BUILDDIR}/root/.viminfo - #rm -f ${BUILDDIR}/etc/localtime - rm -f ${BUILDDIR}/root/.bashrc - # DISABLE when no longer building custom kernel - #find ${BUILDDIR}/usr/lib/modules/ -maxdepth 1 -iname "*-ARCH" -exec rm -rf '{}' \; - for i in $(ls -1t ${BUILDDIR}/usr/lib/modules | tail -n "+2") ; do rm -rf ${BUILDDIR}/usr/lib/modules/${i} ; done - find ${BUILDDIR}/ -type f -name "*.pacnew" -exec rm -rf '{}' \; - sed -i -e '/^MAKEFLAGS=.*$/d' ${BUILDDIR}/etc/makepkg.conf - rm -rf ${BUILDDIR}/usr/share/locale/* - mv -f ${BUILDDIR}/tmp/locale.alias ${BUILDDIR}/usr/share/locale/. - rm -rf ${BUILDDIR}/var/cache/pacman/* - rm -rf ${BUILDDIR}/var/cache/pkgfile/* - rm -rf ${BUILDDIR}/var/cache/apacman/pkg/* - rm -rf ${BUILDDIR}/var/lib/pacman/* - mkdir -p ${BUILDDIR}/var/lib/pacman/local - rm -rf ${BUILDDIR}/var/abs/local/yaourtbuild/* - rm -rf ${BUILDDIR}/usr/share/zoneinfo - rm -rf ${BUILDDIR}/tmp/* - rm -rf ${BUILDDIR}/var/tmp/* - rm -rf ${BUILDDIR}/var/abs/* - rm -rf ${BUILDDIR}/run/* - rm -rf ${BUILDDIR}/boot/* - #rm -rf ${BUILDDIR}/root/* - rm -rf ${BUILDDIR}/root/post-build.sh - rm -rf ${BUILDDIR}/usr/src/* - rm -rf ${BUILDDIR}/var/log/* - rm -rf ${BUILDDIR}/.git - CHROOTDIR="${CHROOTDIR_GLOB}" - BUILDDIR="${BUILDDIR_GLOB}" -} - diff --git a/lib/07-centos_is_stupid.func.sh b/lib/07-centos_is_stupid.func.sh deleted file mode 100644 index 39e1f6e..0000000 --- a/lib/07-centos_is_stupid.func.sh +++ /dev/null @@ -1,102 +0,0 @@ -function centos_is_stupid { - - FUNCNAME="centos_is_stupid" - - if [[ "${HOST_DIST}" == "CentOS" || "${HOST_DIST}" == "RHEL" ]]; - then - if [[ "$(rpm -qa | egrep -q '^xorriso-[0-9]')" != "0" ]]; - then - # Download/install the proper xorriso - EL_VER="$(rpm -qa coreutils | sed -re 's/^coreutils-[0-9.-]*el([0-9])*.*$/\1/g')" - if (("${EL_VER}" < "7")); - then - echo "Wow. Your CentOS/RHEL is too old. Sorry; this is only supported on CentOS/RHEL 7 and up." - exit 1 - fi - XORRISO_RPM=$(curl -s http://pkgs.repoforge.org/xorriso/ | egrep "\"xorriso-[0-9.-]*el${EL_VER}.rf.x86_64.rpm\"" | sed -re "s/^.*\"(xorriso[0-9.-]*el${EL_VER}.rf.x86_64.rpm).*$/\1/g") - echo "Since you're using either CentOS or RHEL, we need to install xorriso directly from an RPM. Please wait while we do this..." - curl -sLo /tmp/${XORRISO_RPM} http://pkgs.repoforge.org/xorriso/${XORRISO_RPM} - set +e - yum -y install /tmp/${XORRISO_RPM} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - set -e - echo "Done." - echo - fi - # We used to fetch and compile mksquashfs from source here, but no longer- because a new enough version is *finally* in CentOS repos as of CentOS 7. - # This also lets us cut out the crufty version check and replace it with the one above. - fi - - # UGH. And you know what? Fuck SUSE too. - if [[ "${HOST_DIST}" == "openSUSE" || "${HOST_DIST}" == "SUSE" ]]; - then - if [[ "$(rpm -qa | egrep -q '^xorriso-[0-9]')" != "0" ]]; - then - # Download/install the proper xorriso - source /etc/os-release - SUSE_VER="${VERSION_ID}" - XORRISO_RPM=$(curl -s "http://software.opensuse.org/download.html?project=home%3AKnolleblau&package=xorriso" | egrep "/openSUSE_${SUSE_VER}/x86_64/xorriso-[0-9.-]" | tail -n1 | sed -re 's|^.*x86_64/(xorriso-[0-9.-]*.x86_64.rpm).*$|\1|g') - echo "Since you're using openSUSE or SLED/SLES, we need to install xorriso directly from an RPM. Please wait while we do this..." - curl -sLo /tmp/${XORRISO_RPM} "http://download.opensuse.org/repositories/home:/Knolleblau/openSUSE_${SUSE_VER}/x86_64/${XORRISO_RPM}" - cp /etc/zypp/zypp.conf /etc/zypp/zypp.conf_BAK."${$}" - echo 'pkg_gpgcheck = no' >> /etc/zypp/zypp.conf - zypper install --no-confirm -l /tmp/${XORRISO_RPM} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - mv -f /etc/zypp/zypp.conf_BAK."${$}" /etc/zypp/zypp.conf - echo "Done." - - echo - fi - fi - - # And a double fuck-you to SLED/SLES. - if [[ "${HOST_DIST}" == "SUSE" ]]; - then - source /etc/os-release - source ${BASEDIR}/lib/prereqs/SUSE/meta - SUSE_VER="${VERSION_ID}" - SUSE_REL="${ID}" - SDK_PKGS=(binutils-devel git xz-devel xz-devel-32bit zlib-devel zlib-devel-32bit) - - if [[ "${PRE_RUN}" != 'none' ]]; - then - echo "Now updating your local package cache..." - set +e - eval "${PRE_RUN}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - if [[ "${?}" != "0" ]]; - then - echo "ERROR: Syncing your local package cache via ${PRE_RUN} command failed." - echo "Please ensure you are connected to the Internet/have repositories configured correctly." - exit 1 - fi - set -e - fi - - zypper search binutils-devel | egrep -q '^[[:space:]]*|[[:space:]]*binutils-devel[[:space:]]*' - if [[ "${?}" != "0" ]]; - then - echo - echo "In order to install some of the necessary packages on the host, you will need to add the SLE SDK repository." - echo "It can be downloaded by visiting http://download.suse.com/ and search for 'SUSE Linux Enterprise Software Development Kit'" - echo "(or add it to your subscriptions)." - echo "See https://www.suse.com/documentation/${SUSE_REL}-${SUSE_VER}/book_sle_deployment/data/sec_add-ons_sdk.html for more information." - exit 1 - else - for pkgname in "${SDK_PKGS[@]}"; - do - eval "${PKG_CHK}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - if [[ "${?}" != "0" ]]; - then - echo "Installing ${pkgname}..." - eval "${PKG_MGR}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - if [[ "${?}" != "0" ]]; - then - echo "ERROR: ${pkgname} was not found to be installed and we can't install it." - echo "This usually means you aren't connected to the Internet or your package repositories" - echo "are not configured correctly. Review the list of packages in ${PKGLIST} and ensure" - echo "they are all available to be installed." - fi - fi - done - fi - fi - -} diff --git a/lib/08-will_it_blend.func.sh b/lib/08-will_it_blend.func.sh deleted file mode 100644 index 6ef0c56..0000000 --- a/lib/08-will_it_blend.func.sh +++ /dev/null @@ -1,93 +0,0 @@ -function will_it_blend () { - - FUNCNAME="will_it_blend" - - SQUASH_CMD="mksquashfs" - SQUASH_OPTS="-noappend -comp xz" - - local ARCHSUFFIX="${1}" - if [[ "${1}" == "64" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.x86_64" - local BUILDDIR="${BUILDDIR}64" - local AIROOT="x86_64" - _CHROOT=${CHROOTDIR} - _BUILD=${BUILDDIR} - _AIROOT=${AIROOT} - elif [[ "${1}" == "32" ]]; - then - local CHROOTDIR="${CHROOTDIR}root.i686" - local BUILDDIR="${BUILDDIR}32" - local AIROOT="i686" - _CHROOT=${CHROOTDIR} - _BUILD=${BUILDDIR} - _AIROOT=${AIROOT} - else - echo "WHOOPS. We hit an error that makes no logical sense." - echo 'Dying.' - exit 1 - fi - - if [[ "${I_AM_A_RACECAR}" == "y" ]]; - then - RACECAR_CHK='nice -n -19 ' - else - RACECAR_CHK="" - fi - - if [ "${CHROOTDIR}/root/.bash_history" -nt "${ARCHBOOT}/${AIROOT}/airootfs.sfs" ] || [ ! -d "${BUILDDIR}/root/" ]; - then - echo "Data is not sync'd to buildroot; syncing..." - CHROOTDIR="${CHROOTDIR_GLOB}" - BUILDDIR="${BUILDDIR_GLOB}" - jenny_craig ${ARCHSUFFIX} - CHROOTDIR="${_CHROOT}" - BUILDDIR="${_BUILD}" - fi - echo "[${ARCHSUFFIX}-bit] Now generating the squashed image (if we need to) and hashes. This may take some time." - BUILDDIR="${BUILDDIR_GLOB}" - local BUILDDIR="${BUILDDIR}${ARCHSUFFIX}" - - # now let's build the squashed image... and generate some checksums as well to verify download integrity. - # are we building split-arch ISOs? do we need the below? - #if [[ "${MULTIARCH}" == "n" ]]; - #then - # rm -rf ${ARCHBOOT} - #fi - mkdir -p ${ARCHBOOT}/${AIROOT} - - if [ ! -f "${ARCHBOOT}/${AIROOT}/airootfs.sfs" ] || [ "${CHROOTDIR}/root/.bash_history" -nt "${ARCHBOOT}/${AIROOT}/airootfs.sfs" ]; - then - echo "[${ARCHSUFFIX}-bit] Squashing filesystem. This can take a while depending on the size of your chroot(s)." - ${RACECAR_CHK}${SQUASH_CMD} ${BUILDDIR} ${ARCHBOOT}/${AIROOT}/airootfs.sfs ${SQUASH_OPTS} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - cd ${ARCHBOOT}/${AIROOT} - ${RACECAR_CHK}sha256sum airootfs.sfs >> airootfs.sha256 - ${RACECAR_CHK}md5sum airootfs.sfs >> airootfs.md5 - cd ${BASEDIR} - else - cd ${BASEDIR} - fi - - # Generate the mtree spec. - # Not really necessary anymore. - #mtree -c -p ${BASEDIR}/chroot -K flags,gid,mode,nlink,uid,link,time,type > ${BASEDIR}/extra/mtree.spec - - # and now we copy stuff into the live directories - echo "[${ARCHSUFFIX}-bit] Copying files for PXE, and ISO building, please be patient." - #rm -rf ${TEMPDIR}/* - if [ ! -f ${BASEDIR}/extra/${UXNAME}.png ]; - then - cat ${BASEDIR}/extra/bdisk.png > ${BASEDIR}/extra/${UXNAME}.png - fi - cp -af ${BASEDIR}/extra/${UXNAME}.png ${TEMPDIR}/. - cp -af ${BASEDIR}/extra/${UXNAME}.png ${TFTPDIR}/. - mkdir -p ${TEMPDIR}/boot - cp -af ${CHROOTDIR}/boot/initramfs-linux-${DISTNAME}.img ${TEMPDIR}/boot/${UXNAME}.${ARCHSUFFIX}.img - cp -af ${CHROOTDIR}/boot/vmlinuz-linux-${DISTNAME} ${TEMPDIR}/boot/${UXNAME}.${ARCHSUFFIX}.kern - cp -af ${CHROOTDIR}/boot/initramfs-linux-${DISTNAME}.img ${TFTPDIR}/${UXNAME}.${ARCHSUFFIX}.img - cp -af ${CHROOTDIR}/boot/vmlinuz-linux-${DISTNAME} ${TFTPDIR}/${UXNAME}.${ARCHSUFFIX}.kern - cp -af ${ARCHBOOT}/* ${HTTPDIR}/${DISTNAME}/. - cp -af ${TFTPDIR}/* ${HTTPDIR}/. - chown -R ${HTTPUSR}:${HTTPGRP} ${HTTPDIR} - chown ${TFTPUSR}:${TFTPGRP} ${TFTPDIR}/${UXNAME}.* -} diff --git a/lib/09-stuffy.func.sh b/lib/09-stuffy.func.sh deleted file mode 100644 index e0d3015..0000000 --- a/lib/09-stuffy.func.sh +++ /dev/null @@ -1,121 +0,0 @@ -function stuffy { - - FUNCNAME="stuffy" - - cp -f ${BASEDIR}/VERSION_INFO.txt ${TEMPDIR}/. - - if [[ "${I_AM_A_RACECAR}" == "y" ]]; - then - RACECAR_CHK='nice -n -19 ' - else - RACECAR_CHK="" - fi - - echo "Setting up EFI stuff..." - - mkdir -p ${TEMPDIR}/{EFI/{${DISTNAME},boot},loader/entries} - # this stuff comes from the prebootloader pkg and systemd-boot. lets us boot on UEFI machines with secureboot still enabled. - cp ${BASEDIR}/root.x86_64/usr/lib/prebootloader/PreLoader.efi ${TEMPDIR}/EFI/boot/bootx64.efi - cp ${BASEDIR}/root.x86_64/usr/lib/prebootloader/HashTool.efi ${TEMPDIR}/EFI/boot/. - cp ${BASEDIR}/root.x86_64/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${TEMPDIR}/EFI/boot/loader.efi # TODO: can i use syslinux.efi instead? - - echo "Checking/fetching UEFI shells..." - if [ ! -f "${TEMPDIR}/EFI/shellx64_v2.efi" ]; - then - # EFI Shell 2.0 for UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell ) - curl -o ${TEMPDIR}/EFI/shellx64_v2.efi "https://github.com/tianocore/edk2/blob/master/ShellBinPkg/UefiShell/X64/Shell.efi?raw=true" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - if [ ! -f "${TEMPDIR}/EFI/shellx64_v1.efi" ]; - then - # EFI Shell 1.0 for non UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell ) - curl -o ${TEMPDIR}/EFI/shellx64_v1.efi "https://github.com/tianocore/edk2/blob/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi?raw=true" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - - # now for setting up loader config/entries. maybe add memtest or something in the future? i dunno. - cat > ${TEMPDIR}/loader/loader.conf << EOF -timeout 3 -default ${UXNAME} -EOF - cat > ${TEMPDIR}/loader/entries/${UXNAME}_ram.conf << EOF -title ${PNAME} (RAM) -linux /boot/${UXNAME}.kern -initrd /boot/${UXNAME}.img -options copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} -EOF - cat > ${TEMPDIR}/loader/entries/${UXNAME}.conf << EOF -title ${PNAME} (Media) -linux /boot/${UXNAME}.kern -initrd /boot/${UXNAME}.img -options archisobasedir=${DISTNAME} archisolabel=${DISTNAME} -EOF - cat > ${TEMPDIR}/loader/entries/uefi2.conf << EOF -title UEFI Shell (v2) -efi /EFI/shellx64_v2.efi -EOF - cat > ${TEMPDIR}/loader/entries/uefi1.conf << EOF -title UEFI Shell (v1) -efi /EFI/shellx64_v1.efi -EOF - - - # create the embedded efiboot FAT stuff - # how big should we make the disk? - echo "Generating the EFI embedded FAT filesystem..." - # are we building split-arch ISOs? - if [[ "${MULTIARCH}" == "n" ]]; - then - rm -f ${TEMPDIR}/EFI/${DISTNAME}/efiboot.img - fi - # now we need to calculate the space for various files we're going to include... - FATSIZE=$(stat --format="%s" ${TEMPDIR}/boot/${UXNAME}.64.kern) # EFI/BDISK/bdisk.efi - FATSIZE=$((${FATSIZE} + $(stat --format="%s" ${TEMPDIR}/boot/${UXNAME}.64.img))) # EFI/BDISK/bdisk.img - FATSIZE=$((${FATSIZE} + $(stat --format="%s" ${BASEDIR}/root.x86_64/usr/lib/prebootloader/PreLoader.efi))) # EFI/boot/bootx64.efi - FATSIZE=$((${FATSIZE} + $(stat --format="%s" ${BASEDIR}/root.x86_64/usr/lib/prebootloader/HashTool.efi))) # EFI/boot/HashTool.efi - FATSIZE=$((${FATSIZE} + $(stat --format="%s" ${BASEDIR}/root.x86_64/usr/lib/systemd/boot/efi/systemd-bootx64.efi))) # EFI/boot/loader.efi - FATSIZE=$((${FATSIZE} + $(stat --format="%s" ${TEMPDIR}/EFI/shellx64_v1.efi))) - FATSIZE=$((${FATSIZE} + $(stat --format="%s" ${TEMPDIR}/EFI/shellx64_v2.efi))) - FATSIZE=$((${FATSIZE} + $(du -sb ${TEMPDIR}/loader | tail -n1 | awk '{print $1}'))) # loader/* (okay so i cheated a little here.) - FATSIZE=$((${FATSIZE} + 786432)) # let's give a little wiggle room; 768k should do it. -_- - ${RACECAR_CHK}truncate -s "${FATSIZE}" ${TEMPDIR}/EFI/${DISTNAME}/efiboot.img - ${RACECAR_CHK}mkfs.vfat -F 32 -n ${DISTNAME}_EFI ${TEMPDIR}/EFI/${DISTNAME}/efiboot.img >> "${LOGFILE}.${FUNCNAME}" 2>&1 - mkdir -p ${SRCDIR}/efiboot - mount ${TEMPDIR}/EFI/${DISTNAME}/efiboot.img ${SRCDIR}/efiboot - mkdir -p ${SRCDIR}/efiboot/EFI/${DISTNAME} - cp ${TEMPDIR}/boot/${UXNAME}.64.kern ${SRCDIR}/efiboot/EFI/${DISTNAME}/${UXNAME}.efi - cp ${TEMPDIR}/boot/${UXNAME}.64.img ${SRCDIR}/efiboot/EFI/${DISTNAME}/${UXNAME}.img - mkdir -p ${SRCDIR}/efiboot/{EFI/boot,loader/entries} -# GETTING DEJA VU HERE. - cat > ${SRCDIR}/efiboot/loader/loader.conf << EOF -timeout 3 -default ${UXNAME} -EOF - cat > ${SRCDIR}/efiboot/loader/entries/${UXNAME}_ram.conf << EOF -title ${PNAME} (RAM) -linux /EFI/${DISTNAME}/${UXNAME}.efi -initrd /EFI/${DISTNAME}/${UXNAME}.img -options copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} -EOF - cat > ${SRCDIR}/efiboot/loader/entries/${UXNAME}.conf << EOF -title ${PNAME} (Media) -linux /EFI/${DISTNAME}/${UXNAME}.efi -initrd /EFI/${DISTNAME}/${UXNAME}.img -options archisobasedir=${DISTNAME} archisolabel=${DISTNAME} -EOF - cat > ${SRCDIR}/efiboot/loader/entries/uefi2.conf << EOF -title UEFI Shell (v2) -efi /EFI/shellx64_v2.efi -EOF - cat > ${SRCDIR}/efiboot/loader/entries/uefi1.conf << EOF -title UEFI Shell (v1) -efi /EFI/shellx64_v1.efi -EOF - - cp ${BASEDIR}/root.x86_64/usr/lib/prebootloader/PreLoader.efi ${SRCDIR}/efiboot/EFI/boot/bootx64.efi - cp ${BASEDIR}/root.x86_64/usr/lib/prebootloader/HashTool.efi ${SRCDIR}/efiboot/EFI/boot/. - cp ${BASEDIR}/root.x86_64/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${SRCDIR}/efiboot/EFI/boot/loader.efi # TODO: can i use syslinux.efi instead? - cp ${TEMPDIR}/EFI/shellx64_v{1,2}.efi ${SRCDIR}/efiboot/EFI/. - umount ${SRCDIR}/efiboot - echo "EFI configuration complete..." - -} - diff --git a/lib/10-yo_dj.func.sh b/lib/10-yo_dj.func.sh deleted file mode 100644 index adcd6cc..0000000 --- a/lib/10-yo_dj.func.sh +++ /dev/null @@ -1,431 +0,0 @@ -function yo_dj () { - - FUNCNAME="yo_dj" - - ARCH="${1}" - echo "Building the actual .iso image. This may take a while." - #im_batman ## WHYTF IS THIS HERE?! - ISOFILENAME="${UXNAME}-${BUILDVERSION}.iso" - #MINIFILENAME="${UXNAME}-${BUILDVERSION}-mini.iso" - MINIFILENAME="${UXNAME}-mini.iso" - USBFILENAME="${UXNAME}-mini.usb.img" - if [[ "${MULTIARCH}" == "y" ]]; - then - ISOFILENAME="${UXNAME}-${BUILDVERSION}-any.iso" - else - ISOFILENAME="${UXNAME}-${BUILDVERSION}-${ARCH}.iso" - fi - - if [[ "${I_AM_A_RACECAR}" == "y" ]]; - then - RACECAR_CHK='nice -n -19 ' - else - RACECAR_CHK="" - fi - - # and why not? generate the ISO. - ## we need to generate the isolinux.cfg - mkdir -p ${TEMPDIR}/isolinux - if [[ "${MULTIARCH}" == "y" ]]; - then - ## MULTIARCH ISO - cat > ${TEMPDIR}/isolinux/isolinux.cfg << EOF -UI vesamenu.c32 -DEFAULT check -PROMPT 0 -TIMEOUT 50 -MENU HIDDEN -#ONTIMEOUT ${UXNAME}_ram -ONTIMEOUT check -MENU TABMSG Press [TAB] to edit options -#MENU TITLE ${PNAME} (ISO edition) -MENU ROWS 16 -MENU TIMEOUTROW 22 -MENU TABMSGROW 24 -MENU CMDLINEROW 24 -MENU HELPMSGROW 26 -MENU WIDTH 78 -MENU MARGIN 6 -MENU IMMEDIATE -# http://www.colorpicker.com/ -MENU color border 0 #00000000 #00000000 none -MENU color title 0 #FFF5B800 #00000000 std -MENU color sel 7;37;40 #FF000000 #FFFFFFFF all -MENU color hotsel 1;7;37;40 #FFFF0000 #FFC0C0C0 all -MENU color hotkey 1;7;37;40 #FF0000CC #FFC0C0C0 all -MENU color tabmsg 1;31;40 #FF808080 #00000000 std -MENU color help 1;31;40 #FFFFFFFF #FF000000 none -MENU color timeout_msg 0 #FFFFB300 #00000000 none -MENU color timeout 0 #FFFF0000 #FF000000 none -MENU color cmdline 0 #FFFFFFFF #FF000000 none -MENU color cmdmark 1;36;40 #C000FFFF #FF000000 std -MENU color scrollbar 30;44 #FF00FF00 #FF000000 std -MENU color msg07 0 #FF000000 #00FFFFFF none -MENU BACKGROUND /${UXNAME}.png - -LABEL check - MENU LABEL Your best supported kernel should be detected automatically. - COM32 ifcpu64.c32 - APPEND ${UXNAME}_64 -- ${UXNAME}_32 - MENU DEFAULT - - - -LABEL local_override - MENU LABEL Local ^Boot - localboot 0 - TEXT HELP - Boot from the local system instead. - ENDTEXT - -LABEL reboot - MENU LABEL ^Reboot - COM32 reboot.c32 - TEXT HELP - Reboot the machine - ENDTEXT - -MENU SEPARATOR - -## 64 BIT -MENU BEGIN 64BIT -MENU LABEL ^1) 64-Bit ... -ONTIMEOUT ${UXNAME}_64 - -LABEL ${UXNAME}_ram_64 - MENU LABEL ^1) ${PNAME} (run from RAM) - LINUX /boot/${UXNAME}.64.kern - INITRD /boot/${UXNAME}.64.img - APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} - TEXT HELP - 64-bit, run from RAM - ENDTEXT - MENU DEFAULT - -LABEL ${UXNAME}_64 - MENU LABEL ^1) ${PNAME} (Default) - LINUX /boot/${UXNAME}.64.kern - INITRD /boot/${UXNAME}.64.img - APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME} - TEXT HELP - Same as the above, except run directly from the CD- - don't copy the image to RAM. (Best for lower-memory boxes) - ENDTEXT - -MENU END - -MENU BEGIN 32BIT -MENU LABEL ^2) 32-Bit ... -ONTIMEOUT ${UXNAME}_32 - -## 32 BIT -LABEL ${UXNAME}_ram_32 - MENU LABEL ^1) ${PNAME} (run from RAM) - LINUX /boot/${UXNAME}.32.kern - INITRD /boot/${UXNAME}.32.img - APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} - TEXT HELP - 32-bit, run from RAM - ENDTEXT - MENU DEFAULT - -LABEL ${UXNAME}_32 - MENU LABEL ^2) ${PNAME} (Default) - LINUX /boot/${UXNAME}.32.kern - INITRD /boot/${UXNAME}.32.img - APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME} - TEXT HELP - Same as the above, except run directly from the CD- - don't copy the image to RAM. (Best for lower-memory boxes) - ENDTEXT - -MENU END -EOF - else - ## ARCH-SPECIFIC ISO - cat > ${TEMPDIR}/isolinux/isolinux.cfg << EOF -UI vesamenu.c32 -DEFAULT check -PROMPT 0 -TIMEOUT 50 -MENU HIDDEN -ONTIMEOUT ${UXNAME}_ram_${ARCH} -MENU TABMSG Press [TAB] to edit options -#MENU TITLE ${PNAME} (ISO edition) -MENU ROWS 16 -MENU TIMEOUTROW 22 -MENU TABMSGROW 24 -MENU CMDLINEROW 24 -MENU HELPMSGROW 26 -MENU WIDTH 78 -MENU MARGIN 6 -MENU IMMEDIATE -# http://www.colorpicker.com/ -MENU color border 0 #00000000 #00000000 none -MENU color title 0 #FFF5B800 #00000000 std -MENU color sel 7;37;40 #FF000000 #FFFFFFFF all -MENU color hotsel 1;7;37;40 #FFFF0000 #FFC0C0C0 all -MENU color hotkey 1;7;37;40 #FF0000CC #FFC0C0C0 all -MENU color tabmsg 1;31;40 #FF808080 #00000000 std -MENU color help 1;31;40 #FFFFFFFF #FF000000 none -MENU color timeout_msg 0 #FFFFB300 #00000000 none -MENU color timeout 0 #FFFF0000 #FF000000 none -MENU color cmdline 0 #FFFFFFFF #FF000000 none -MENU color cmdmark 1;36;40 #C000FFFF #FF000000 std -MENU color scrollbar 30;44 #FF00FF00 #FF000000 std -MENU color msg07 0 #FF000000 #00FFFFFF none -MENU BACKGROUND /${UXNAME}.png - -LABEL local_override - MENU LABEL Local ^Boot - localboot 0 - TEXT HELP - Boot from the local system instead. - ENDTEXT - -LABEL reboot - MENU LABEL ^Reboot - COM32 reboot.c32 - TEXT HELP - Reboot the machine - ENDTEXT - -MENU SEPARATOR - -MENU BEGIN ${ARCH}BIT -MENU LABEL ^1) ${ARCH}-Bit ... -ONTIMEOUT ${UXNAME}_${ARCH} - -LABEL ${UXNAME}_ram_${ARCH} - MENU LABEL ^1) ${PNAME} (run from RAM) - LINUX /boot/${UXNAME}.${ARCH}.kern - INITRD /boot/${UXNAME}.${ARCH}.img - APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} - TEXT HELP - ${ARCH}-bit, run from RAM - ENDTEXT - MENU DEFAULT - -LABEL ${UXNAME}_${ARCH} - MENU LABEL ^1) ${PNAME} (Default) - LINUX /boot/${UXNAME}.${ARCH}.kern - INITRD /boot/${UXNAME}.${ARCH}.img - APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME} - TEXT HELP - Same as the above, except run directly from the CD- - don't copy the image to RAM. (Best for lower-memory boxes) - ENDTEXT - -MENU END -EOF - fi - - stuffy - - rm -f ${ISOFILENAME} - if [ "${ARCHBOOT}" != "${TEMPDIR}/${DISTNAME}" ]; - then - mkdir -p ${TEMPDIR}/${DISTNAME} - rsync -a --delete ${ARCHBOOT}/. ${TEMPDIR}/${DISTNAME}/. - fi - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/isolinux.bin ${TEMPDIR}/isolinux - #cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/isolinux-debug.bin ${TEMPDIR}/isolinux/isolinux.bin #debugging - #cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/* ${TEMPDIR}/isolinux/. #debugging - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/vesamenu.c32 ${TEMPDIR}/isolinux - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/linux.c32 ${TEMPDIR}/isolinux - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/reboot.c32 ${TEMPDIR}/isolinux - if [ -f ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/ldlinux.c32 ]; - then - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/ldlinux.c32 ${TEMPDIR}/isolinux - fi - if [ -f ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/libcom32.c32 ]; - then - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/libcom32.c32 ${TEMPDIR}/isolinux - fi - if [ -f ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/libutil.c32 ]; - then - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/libutil.c32 ${TEMPDIR}/isolinux - fi - if [ -f ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/ifcpu64.c32 ]; - then - cp -af ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/ifcpu64.c32 ${TEMPDIR}/isolinux - fi - cd ${TEMPDIR} - - cd .. - ${RACECAR_CHK}xorriso -as mkisofs \ -`#-quiet` \ -`#-joliet` \ -`#-rock` \ -`#-omit-version-number` \ -`#-disable-deep-relocation` \ --iso-level 3 \ --full-iso9660-filenames \ --volid "${DISTNAME}" \ --appid "${DISTDESC}" \ --publisher "${DISTPUB}" \ -`#-preparer "prepared by ${0}"` \ --preparer "prepared by ${DISTPUB}" \ --eltorito-boot isolinux/isolinux.bin \ --eltorito-catalog isolinux/boot.cat \ -`#-isohybrid-mbr ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/isohdpfx.bin` \ --no-emul-boot \ --boot-load-size 4 \ --boot-info-table \ --isohybrid-mbr ${BASEDIR}/root.x86_64/usr/lib/syslinux/bios/isohdpfx.bin \ --eltorito-alt-boot \ --e EFI/${DISTNAME}/efiboot.img \ --no-emul-boot \ -`#--efi-boot EFI/${DISTNAME}/efiboot.img` \ --isohybrid-gpt-basdat \ --output "${ISODIR}/${ISOFILENAME}" "${TEMPDIR}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - - ## Build the mini-ISO ## - if [[ "${BUILDMINI}" == "y" ]]; - then - echo "Now generating the iPXE images; please wait..." - ## Get the latest version of ipxe from git. - git submodule init >> "${LOGFILE}.${FUNCNAME}" 2>&1 - git submodule update >> "${LOGFILE}.${FUNCNAME}" 2>&1 - cd ${BASEDIR}/src/ipxe/src - git clean -xdf > /dev/null 2>&1 - git reset --hard HEAD >> "${LOGFILE}.${FUNCNAME}" 2>&1 - git checkout master >> "${LOGFILE}.${FUNCNAME}" 2>&1 - git pull >> "${LOGFILE}.${FUNCNAME}" 2>&1 - git checkout master >> "${LOGFILE}.${FUNCNAME}" 2>&1 - # It will not build if we don't do this. Apparently we *need* libiberty. - git revert -n 40a9a0f0 - ## Apply our patches. - for i in $(find ${BASEDIR}/src/ipxe_local/patches/ -type f -iname "*.patch" -printf '%P\n' | sort); - do - patch -Np2 < ${BASEDIR}/src/ipxe_local/patches/${i} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - done - ## SSL - SSLDIR="${BASEDIR}/src/ipxe_local/ssl" - mkdir -p ${SSLDIR}/{keys,crts,txt} - chmod 000 ${SSLDIR}/keys - chown root:root ${SSLDIR}/keys - if [[ -z "${IPXE_SSL_CA}" && -z "${IPXE_SSL_KEY}" ]]; - then - # Generate SSL CA - #rm -rf ${SSLDIR}/* - cd "${SSLDIR}" - IPXE_SSL_CA="${SSLDIR}/crts/ca.crt" - IPXE_SSL_CAKEY="${SSLDIR}/keys/ca.key" - IPXE_DOMAIN=$(echo ${IPXE_URI} | sed -re 's/^(f|ht)tps?:\/\/// ; s/\/.*//') - if [[ ! -f "${SSLDIR}/txt/ca.srl" ]]; - then - echo 01 > ${SSLDIR}/txt/ca.srl - fi - touch ${SSLDIR}/txt/ca.idx - openssl req -days 3650 -subj "/CN=${IPXE_DOMAIN}/O=${PNAME}/C=NA" -x509 -newkey rsa:4096 -nodes -out ${IPXE_SSL_CA} -keyout ${IPXE_SSL_CAKEY} -sha512 >> "${LOGFILE}.${FUNCNAME}" 2>&1 - openssl req -days 3650 -subj "/CN=${IPXE_DOMAIN}/O=${PNAME}/C=NA" -newkey rsa:4096 -keyout ${SSLDIR}/keys/server.key -nodes -out ${SSLDIR}/crts/server.csr -sha512 >> "${LOGFILE}.${FUNCNAME}" 2>&1 - openssl ca -days 3650 -batch -config ${SSLDIR}/openssl.cnf -keyfile ${IPXE_SSL_CAKEY} -in ${SSLDIR}/crts/server.csr -out ${SSLDIR}/crts/server.crt >> "${LOGFILE}.${FUNCNAME}" 2>&1 - #cat crts/server.crt crts/ca.crt > crts/server_chained.crt - elif [[ -z "${IPXE_SSL_CA}" && -e "${IPXE_SSL_CAKEY}" ]]; - then - echo "ERROR: You specified IPXE_SSL_CAKEY but not IPXE_SSL_CA. If one is specified, the other must be also." - exit 1 - elif [[ -z "${IPXE_SSL_CAKEY}" && -e "${IPXE_SSL_CA}" ]]; - then - echo "ERROR: You specified IPXE_SSL_CA but not IPXE_SSL_CAKEY. If one is specified, the other must be also." - exit 1 - elif [[ ! -e "${IPXE_SSL_CA}" || ! -e "${IPXE_SSL_CAKEY}" ]]; - then - echo "ERROR: You have specified both IPXE_SSL_CA and IPXE_SSL_CAKEY but one (or both) are not valid paths/files." - exit 1 - fi - if [[ -z "${IPXE_SSL_KEY}" && -z "${IPXE_SSL_CRT}" ]]; - then - IPXE_SSL_KEY="${SSLDIR}/keys/client.key" - IPXE_SSL_CRT="${SSLDIR}/crts/client.crt" - IPXE_DOMAIN=$(echo ${IPXE_URI} | sed -re 's/^(f|ht)tps?:\/\/// ; s/\/.*//') - # Generate SSL client key. - openssl req -days 3650 -subj "/CN=${IPXE_DOMAIN}/O=${PNAME}/C=NA" -newkey rsa:4096 -keyout ${IPXE_SSL_KEY} -nodes -out ${SSLDIR}/crts/client.csr -sha512 >> "${LOGFILE}.${FUNCNAME}" 2>&1 - # Sign the crt. - openssl ca -days 3650 -batch -config ${SSLDIR}/openssl.cnf -keyfile ${IPXE_SSL_CAKEY} -in ${SSLDIR}/crts/client.csr -out ${IPXE_SSL_CRT} >> "${LOGFILE}.${FUNCNAME}" 2>&1 - elif [[ -z "${IPXE_SSL_CRT}" && -e "${IPXE_SSL_KEY}" ]]; - then - echo "ERROR: You specified IPXE_SSL_KEY but not IPXE_SSL_CRT. If one is specified, the other must be also." - exit 1 - elif [[ -z "${IPXE_SSL_KEY}" && -e "${IPXE_SSL_CRT}" ]]; - then - echo "ERROR: You specified IPXE_SSL_CRT but not IPXE_SSL_KEY. If one is specified, the other must be also." - exit 1 - elif [[ ! -e "${IPXE_SSL_CRT}" || ! -e "${IPXE_SSL_KEY}" ]]; - then - echo "ERROR: You have specified both IPXE_SSL_CRT and IPXE_SSL_KEY but one (or both) are not valid paths/files." - exit 1 - fi - cd ${BASEDIR}/src/ipxe/src - # Generate the iPXE EMBED script... - sed -re "s,^(chain\ ).*$,\1${IPXE_URI},g" \ - -e 's/%%COMMA%%/,/g' ${BASEDIR}/src/ipxe_local/EMBED > ${SRCDIR}/EMBED - # And now we build! - #make everything EMBED="${SRCDIR}/EMBED" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - make bin-i386-efi/ipxe.efi bin-x86_64-efi/ipxe.efi \ - EMBED="${SRCDIR}/EMBED" \ - TRUST="${IPXE_SSL_CA}" \ - CERT="${IPXE_SSL_CA},${IPXE_SSL_CRT}" \ - PRIVKEY="${IPXE_SSL_KEY}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - make bin/ipxe.eiso bin/ipxe.usb \ - EMBED="${SRCDIR}/EMBED" \ - TRUST="${IPXE_SSL_CA}" \ - CERT="${IPXE_SSL_CA},${IPXE_SSL_CRT}" \ - PRIVKEY="${IPXE_SSL_KEY}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - # Change this to USB-only... - #make all EMBED="${BASEDIR}/src/ipxe_local/EMBED" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - mv -f ${BASEDIR}/src/ipxe/src/bin/ipxe.usb ${ISODIR}/${USBFILENAME} - mv -f ${BASEDIR}/src/ipxe/src/bin/ipxe.eiso ${ISODIR}/${MINIFILENAME} - make clean >> "${LOGFILE}.${FUNCNAME}" 2>&1 - cd ${BASEDIR}/src/ipxe - git reset --hard >> "${LOGFILE}.${FUNCNAME}" 2>&1 - git clean -xdf > /dev/null 2>&1 - git checkout master . > /dev/null 2>&1 - #git reset --hard HEAD > /dev/null 2>&1 - echo - fi - - #isohybrid ${ISOFILENAME} - cd ${ISODIR} - ${RACECAR_CHK}sha256sum ${ISOFILENAME} > ${ISOFILENAME}.sha256 - if [[ "${BUILDMINI}" == "y" ]]; - then - ${RACECAR_CHK}sha256sum ${MINIFILENAME} > ${MINIFILENAME}.sha256 - ${RACECAR_CHK}sha256sum ${USBFILENAME} > ${USBFILENAME}.sha256 - fi - cd .. - echo "=ISO=" - echo "Size: $(ls -lh ${ISODIR}/${ISOFILENAME} | awk '{print $5}')" - echo "SHA256: $(awk '{print $1}' ${ISODIR}/${ISOFILENAME}.sha256)" - echo "Location: ${ISODIR}/${ISOFILENAME}" - if [[ "${BUILDMINI}" == "y" ]]; - then - echo "=Mini=" - echo "Size: $(ls -lh ${ISODIR}/${MINIFILENAME} | awk '{print $5}')" - echo "SHA256: $(awk '{print $1}' ${ISODIR}/${MINIFILENAME}.sha256)" - echo "Location: ${ISODIR}/${MINIFILENAME}" - echo "=Mini USB=" - echo "Size: $(ls -lh ${ISODIR}/${USBFILENAME} | awk '{print $5}')" - echo "SHA256: $(awk '{print $1}' ${ISODIR}/${USBFILENAME}.sha256)" - echo "Location: ${ISODIR}/${USBFILENAME}" - fi - #rm -rf ${TEMPDIR}/* - - # are we rsyncing? - if [ -n "${RSYNC_HOST}" ]; - then - echo - echo "Now sending to ${RSYNC_HOST} via rsync. This may take a while..." - echo "Sending TFTP files..." - rsync -az --info=progress2 ${TFTPDIR} ${RSYNC_HOST}:${RSYNC_DEST}/. - echo "Sending HTTP files..." - rsync -az --info=progress2 ${HTTPDIR} ${RSYNC_HOST}:${RSYNC_DEST}/. -# rsync -a ${TEMPDIR}/boot/${UXNAME}.* ${RSYNC_HOST}:${RSYNC_DEST}/http/. - echo "Sending the image files..." - rsync -az --info=progress2 ${ISODIR} ${RSYNC_HOST}:${RSYNC_DEST}/. - echo "Sending extra files..." - rsync -az --info=progress2 ${BASEDIR}/extra/packages.* ${RSYNC_HOST}:${RSYNC_DEST}/. - rsync -az --info=progress2 ${BASEDIR}/VERSION_INFO.txt ${RSYNC_HOST}:${RSYNC_DEST}/. - fi -} diff --git a/lib/11-mentos.func.sh b/lib/11-mentos.func.sh deleted file mode 100644 index 6fcea51..0000000 --- a/lib/11-mentos.func.sh +++ /dev/null @@ -1,102 +0,0 @@ -function mentos { - - FUNCNAME="mentos" - - # Freshen up the chroots to git's HEAD. Package lists, overlay, etc. - sed -i -e '/base-devel/d ; /multilib-devel/d' ${BASEDIR}/extra/packages.* - # both - echo "Installing common packages..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/extra/packages.both | tr '\n' ' ') - - if [ -f "/usr/bin/systemd-nspawn" ]; - then - CHROOTCMD="systemd-nspawn -D" - else - CHROOTCMD="${CHROOTDIR64}/bin/arch-chroot" - fi - - if [[ "${I_AM_A_RACECAR}" == "y" ]]; - then - RACECAR_CHK='nice -n -19 ' - else - RACECAR_CHK="" - fi - - if [[ -n $(find ${BASEDIR}/extra/pre-build.d/ -type f -newer ${BASEDIR}/root.x86_64/boot/vmlinuz-linux-${DISTNAME}) ]]; - then - touch ${LOCKFILE} - sleep 2 - find ${BASEDIR}/extra/pre-build.d/ -exec touch '{}' \; - rsync -a ${BASEDIR}/extra/pre-build.d/64/. ${BASEDIR}/root.x86_64/. - rsync -a ${BASEDIR}/extra/pre-build.d/32/. ${BASEDIR}/root.i686/. - find ${BASEDIR}/root.x86_64/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - find ${BASEDIR}/root.i686/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - fi - - for i in ${CHROOTDIR32} ${CHROOTDIR64}; - do - echo -n "...Packages installing/upgrading to ${i}..." - local INSTKERN=$(file ${i}/boot/vmlinuz-linux-${DISTNAME} | awk '{print $9}' | cut -f1 -d"-") - local MIRROR=$(egrep '^Server' ${i}/etc/pacman.d/mirrorlist | head -n1 | sed -e 's/^Server\ =\ //g ; s#$repo.*#core/os/x86_64/#g') - local NEWKERN=$(curl -s "${MIRROR}" | grep linux | awk '{print $3}' | cut -f2 -d\" | egrep '^linux-[0-9].*pkg.tar.xz$' | cut -f2 -d"-") - - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - ${CHROOTCMD} ${i}/ bash -c "${RACECAR_CHK}apacman --noconfirm --noedit --skipinteg -S --needed --purgebuild --ignore linux ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - for x in $(find ${i}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - ${CHROOTCMD} ${i}/ /usr/bin/bash -c "mkinitcpio -p linux" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - #${CHROOTCMD} ${i}/ bash -c "apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" - cp -a ${i}/boot/vmlinuz-linux ${i}/boot/vmlinuz-linux-${DISTNAME} - cp -a ${i}/boot/initramfs-linux.img ${i}/boot/initramfs-linux-${DISTNAME}.img - echo "Done." - done - - # we need to set -e for the following as they may fail. - # 32-bit - echo "Installing packages for 32-bit..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/extra/packages.32 | tr '\n' ' ') - if [ -n "${PKGLIST}" ]; - then - ${CHROOTCMD} ${CHROOTDIR32}/ bash -c "yes '' | ${RACECAR_CHK}apacman --noconfirm --noedit --skipinteg -S --needed --purgebuild ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - for x in $(find ${CHROOTDIR32}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - - # 64-bit - echo "Installing packages for 64-bit..." - PKGLIST=$(sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' ${BASEDIR}/extra/packages.64 | tr '\n' ' ') - if [ -n "${PKGLIST}" ]; - then - ${CHROOTCMD} ${CHROOTDIR64}/ bash -c "yes '' | ${RACECAR_CHK}apacman --noconfirm --noedit --skipinteg -S --needed --purgebuild ${PKGLIST}" >> "${LOGFILE}.${FUNCNAME}" 2>&1 - fi - for x in $(find ${CHROOTDIR64}/etc/ -type f -iname "*.pacorig");do mv -f ${x} ${x%.pacorig} ; done - #${CHROOTCMD} ${CHROOTDIR64}/ bash -c "apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST}" - echo "Syncing overlay..." - rsync -a ${BASEDIR}/overlay/64/. ${CHROOTDIR64}/. - echo "Done." - - echo "Syncing overlay..." - touch ${LOCKFILE} - sleep 2 - find ${BASEDIR}/overlay -exec touch '{}' \; - rsync -a --exclude '/32' --exclude '/64' ${BASEDIR}/overlay/. ${CHROOTDIR64}/. - rsync -a --exclude '/32' --exclude '/64' ${BASEDIR}/overlay/. ${CHROOTDIR32}/. - rsync -a ${BASEDIR}/overlay/32/. ${CHROOTDIR32}/. - rsync -a ${BASEDIR}/overlay/64/. ${CHROOTDIR64}/. - find ${CHROOTDIR64}/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - find ${CHROOTDIR32}/ -newer ${LOCKFILE} -exec chown -R root:root '{}' \; - chown -R 1000:1000 ${CHROOTDIR32}/home/${REGUSR} - chown -R 1000:1000 ${CHROOTDIR64}/home/${REGUSR} - find ${CHROOTDIR64}/home/${REGUSR}/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR64}/home/${REGUSR}/ -type f -exec chmod 600 '{}' \; - find ${CHROOTDIR32}/home/${REGUSR}/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR32}/home/${REGUSR}/ -type f -exec chmod 600 '{}' \; - chown -R 0:0 ${CHROOTDIR32}/root - chown -R 0:0 ${CHROOTDIR64}/root - find ${CHROOTDIR64}/root/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR64}/root/ -type f -exec chmod 600 '{}' \; - find ${CHROOTDIR32}/root/ -type d -exec chmod 700 '{}' \; - find ${CHROOTDIR32}/root/ -type f -exec chmod 600 '{}' \; - chmod 600 ${CHROOTDIR64}/etc/ssh/* - chmod 600 ${CHROOTDIR32}/etc/ssh/* - echo "Done." - -}