From 80c26f4d92e03fbf96f97cfb40de8ae8cfa3f2db Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Fri, 1 May 2020 22:03:04 -0500 Subject: [PATCH] chroot logic update --- CONFIG.sh | 37 +++--------------------- CONFIG_SCRIPTS.sh | 73 +++++++++++++++++++++++++++++++++++++++++++++++ step_2_chroot.sh | 41 ++++++++++---------------- 3 files changed, 92 insertions(+), 59 deletions(-) mode change 100644 => 100755 CONFIG.sh create mode 100755 CONFIG_SCRIPTS.sh diff --git a/CONFIG.sh b/CONFIG.sh old mode 100644 new mode 100755 index 28109e9..c902a3d --- a/CONFIG.sh +++ b/CONFIG.sh @@ -1,16 +1,10 @@ #!/bin/bash - -# ---- Setup Aliases ---- # -shopt -s expand_aliases -alias echo="echo -e" +. CONFIG_SCRIPTS.sh # ---- Setup Variables ---- # -SCRIPT_PATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )"; -CHROOT_PTH="./work/chroot" - # Resolution of Xephyr... ex: 1920x1080 or 1600x900, etc RESOLUTION="1920x1080" @@ -41,7 +35,9 @@ OS_NAME="" LIVE_USER="" -# ---- Call CONFIG Methods Here As Needed ---- # + + +# ---- Call CONFIG_SCRIPTS Methods Here As Needed ---- # set_system_release; cd "${SCRIPT_PATH}"; echo "Base Dir: " $(pwd) "\n"; @@ -53,32 +49,7 @@ mkdir -p image/{casper,isolinux,install} - # ---- DO NOT CHANGE OR REMOVE UNLESS YOU KNOW WHAT YOU ARE DOING ---- # # Clean manifest-desktop file of unneeded parts REMOVE='ubiquity ubiquity-frontend-gtk ubiquity-frontend-kde casper lupin-casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4' - - -# The system release version working from -function set_system_release() { - IN=$(cat /etc/os-release | grep "VERSION_CODENAME") - ARRY=(${IN//=/ }) - SYSTEM_RELEASE="${ARRY[1]}" -} - -function confirm_dialouge() { - echo $1 - read -p "(yY/Nn) --> " ANSR - while [[ $ANSR != "y" ]] && [[ $ANSR != "Y" ]] && \ - [[ $ANSR != "n" ]] && [[ $ANSR != "N" ]] - do - read -p "(yY/Nn) --> " ANSR - done - - if [[ $ANSR == "n" ]] || [[ $ANSR == "N" ]]; then - return 1 - fi - - return 0 -} diff --git a/CONFIG_SCRIPTS.sh b/CONFIG_SCRIPTS.sh new file mode 100755 index 0000000..8b2ee5d --- /dev/null +++ b/CONFIG_SCRIPTS.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# set -o xtrace ## To debug scripts +# set -o errexit ## To exit on error +# set -o errunset ## To exit if a variable is referenced but not set + + + + +# ---- DO NOT CHANGE OR REMOVE UNLESS YOU KNOW WHAT YOU ARE DOING ---- # + +# ---- Setup Aliases ---- # +shopt -s expand_aliases +alias echo="echo -e" + +SCRIPT_PATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )"; +CHROOT_PTH="./work/chroot" + + + + +# ---- Methods Used Throughout The Process ---- # +# Help get the system release version we're working from +function set_system_release() { + IN=$(cat /etc/os-release | grep "VERSION_CODENAME") + ARRY=(${IN//=/ }) + SYSTEM_RELEASE="${ARRY[1]}" +} + + +# Generic confirm 'dialouge' +function confirm_dialouge() { + echo $1 + read -p "(yY/Nn) --> " ANSR + while [[ $ANSR != "y" ]] && [[ $ANSR != "Y" ]] && \ + [[ $ANSR != "n" ]] && [[ $ANSR != "N" ]] + do + read -p "(yY/Nn) --> " ANSR + done + + if [[ $ANSR == "n" ]] || [[ $ANSR == "N" ]]; then + return 1 + fi + + return 0 +} + + + + +# ---- Messages Used Throughout The Process ---- # + +function chroot_big_dump_mesage() { + echo "Run each time you chroot:" + echo "\texport HOME=/root" + echo "\texport LC_ALL=C" + echo "\nRun once in chroot:" + echo "\tapt-get update" + echo "\tapt-get install --yes dbus" + echo "\tapt-get --yes upgrade" + echo "\tdbus-uuidgen > /var/lib/dbus/machine-id" + echo "\tdpkg-divert --local --rename --add /sbin/initctl" + + echo "\nThere is a current (for Karmic, ..., Precise) issue with services running in a chroot:" + echo "\thttps://bugs.launchpad.net/ubuntu/+source/upstart/+bug/430224." + echo "\nA workaround is to link /sbin/initctl to /bin/true:" + echo "\tln -s /bin/true /sbin/initctl" + + echo "\nInstall packages needed for Live System (I think 'ubuntu-standard' package is optional.):" + echo "\tapt-get install --yes casper lupin-casper" + echo "\tapt-get install --yes discover laptop-detect os-prober" + echo "\tapt-get install --yes linux-generic" +} diff --git a/step_2_chroot.sh b/step_2_chroot.sh index 4d41dd5..ce90af4 100755 --- a/step_2_chroot.sh +++ b/step_2_chroot.sh @@ -9,42 +9,31 @@ # Debootstrap process function main() { - ansr=$(confirm_dialouge "Launch Xephyr preview window?\n Resolution: ${RES} Window ID: ${ID}") - if [[ $ansr -eq 0 ]]; then + confirm_dialouge "Launch Xephyr preview window?\n Resolution: ${RESOLUTION} Window ID: ${ID}" + if [[ $? -eq 0 ]]; then Xephyr -resizeable -screen "${RES}" "${ID}" & fi - sudo mount --bind /dev "${CHROOT_PTH}"/dev + clear + # Mount stuff + sudo mount -o /dev "${CHROOT_PTH}"/dev/ + sudo mount -t proc proc proc/ + sudo mount -t sysfs sys sys/ + # setup some configs stuff for internetz sudo cp /etc/hosts "${CHROOT_PTH}"/etc/hosts sudo cp /etc/resolv.conf "${CHROOT_PTH}"/etc/resolv.conf + sudo chown $USER "${CHROOT_PTH}"/etc/apt/sources.list sudo sed s/$SYSTEM_RELEASE/$RELEASE/ < /etc/apt/sources.list > "${CHROOT_PTH}"/etc/apt/sources.list + sudo chown root "${CHROOT_PTH}"/etc/apt/sources.list + # Enter chroot mode + chroot_big_dump_mesage sudo chroot "${CHROOT_PTH}" # cleanup - sudo umount "${CHROOT_PTH}"/dev - - - # ---- OLD SETUP ---- # - # ## Set Xephyr and set chrooting mounts - # Xephyr -resizeable -screen "${RES}" "${ID}" & - # cd squashfs-root/ - # mount -t proc proc proc/ - # mount -t sysfs sys sys/ - # mount -o bind /dev dev/ - # cp /etc/resolv.conf etc/ - # - # ## Enter env with chroot - # chroot . bash - # - # ## Unmount binds - # umount -lf dev/ - # umount -lf proc/ - # umount -lf sys/ - # cd .. - - - + sudo umount -lf "${CHROOT_PTH}"/dev/ + sudo umount -lf "${CHROOT_PTH}"/proc/ + sudo umount -lf "${CHROOT_PTH}"/sys/ } main $@;