From e388e82b5650416b26c04bfb77b109b8f241cdca Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Tue, 31 Aug 2021 20:01:19 -0500 Subject: [PATCH] Added mkroot.sh reference/builder --- src/CONFIG.sh | 3 ++ src/mkroot.sh | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/start.sh | 2 +- 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/mkroot.sh diff --git a/src/CONFIG.sh b/src/CONFIG.sh index 465024c..3cef065 100755 --- a/src/CONFIG.sh +++ b/src/CONFIG.sh @@ -5,6 +5,9 @@ # ---- Setup Variables ---- # +# Root filesystem path +ROOT="${CHROOT_PTH}" + # Resolution of Xephyr... ex: 1920x1080 or 1600x900, etc RESOLUTION="1920x1080" diff --git a/src/mkroot.sh b/src/mkroot.sh new file mode 100644 index 0000000..b1d9139 --- /dev/null +++ b/src/mkroot.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +. CONFIG.sh + +# 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 + + + + +function create_file_init_and_configs() { + +# Toy init system to look over eventually. +# +# cat > "$ROOT"/init << 'EOF' && +# #!/bin/sh +# export HOME=/home +# export PATH=/bin:/sbin +# mountpoint -q proc || mount -t proc proc proc +# mountpoint -q sys || mount -t sysfs sys sys +# if ! mountpoint -q dev +# then +# mount -t devtmpfs dev dev || mdev -s +# mkdir -p dev/pts +# mountpoint -q dev/pts || mount -t devpts dev/pts dev/pts +# fi +# if [ $$ -eq 1 ] +# then +# # Don't allow deferred initialization to crap messages over the shell prompt +# echo 3 3 > /proc/sys/kernel/printk +# # Setup networking for QEMU (needs /proc) +# ifconfig eth0 10.0.2.15 +# route add default gw 10.0.2.2 +# [ "$(date +%s)" -lt 1000 ] && rdate 10.0.2.2 # or time-b.nist.gov +# [ "$(date +%s)" -lt 10000000 ] && ntpd -nq -p north-america.pool.ntp.org +# [ -z "$CONSOLE" ] && +# CONSOLE="$(sed -rn 's@(.* |^)console=(/dev/)*([[:alnum:]]*).*@\3@p' /proc/cmdline)" +# [ -z "$HANDOFF" ] && HANDOFF=/bin/sh && echo Type exit when done. +# [ -z "$CONSOLE" ] && CONSOLE=console +# exec /sbin/oneit -c /dev/"$CONSOLE" $HANDOFF +# else +# /bin/sh +# umount /dev/pts /dev /sys /proc +# fi +# EOF +# chmod +x "$ROOT"/init && + +cat > "$ROOT"/etc/passwd << 'EOF' && +root::0:0:root:/root:/bin/sh +guest:x:500:500:guest:/home/guest:/bin/sh +nobody:x:65534:65534:nobody:/proc/self:/dev/null +EOF + +cat > "$ROOT"/etc/group << 'EOF' && +root:x:0: +guest:x:500: +EOF + + echo "nameserver 8.8.8.8" > "$ROOT"/etc/resolv.conf || exit 1 +} + + +function create_file_structure() { + rm -rf "$ROOT" && + mkdir -p "$ROOT"/{etc,tmp,proc,sys,dev,home,mnt,root,usr/{bin,sbin,lib},var} && + chmod a+rwxt "$ROOT"/tmp && + ln -s usr/bin "$ROOT/bin" && + ln -s usr/sbin "$ROOT/sbin" && + ln -s usr/lib "$ROOT/lib" +} + +function main() { + SCRIPTPATH="$( cd "$(dirname "")" >/dev/null 2>&1 ; pwd -P )" + cd "${SCRIPTPATH}" + echo "Working Dir: " $(pwd) + + create_file_structure + create_file_init_and_configs +} +main $@; diff --git a/src/start.sh b/src/start.sh index e77f001..13b2baa 100755 --- a/src/start.sh +++ b/src/start.sh @@ -92,7 +92,7 @@ function sanity_check() { # Note: Need to add arch/manjaro linux detection to run compatable commands. # # cdrkit has 'genisoimage' command - # sudo pacman -Syy syslinux squashfs-tools cdrkit netpbm xorg-server-xephyr + # sudo pacman -Syy syslinux squashfs-tools cdrkit netpbm xorg-server-xephyr fi if [[ "${ARCH}" == "" ]] || [[ "${RELEASE}" == "" ]]; then