- #!/bin/bash
-
- cd "$(dirname "$0")"
- SCRIPT_DIR="$(pwd)"
-
- read -p "Enter Mount Point [/mnt/sysroot]: " TARGET_SYSROOT
-
- TARGET_SYSROOT=${TARGET_SYSROOT:-"/mnt/sysroot"}
-
- if [ "$TARGET_SYSROOT" == "/mnt/sysroot" ]; then
- if [ ! -f "$TARGET_SYSROOT/.linuxnt" ]; then
- INSTALL_SYSTEM=1
- fi
- fi
-
- # -----------------------------------------------------------------------------
-
- dossetup() {
- read -p "Press enter to prep the virtual filesystems..."
- mkdir -pv {$TARGET_SYSROOT/dev/pts,$TARGET_SYSROOT/dev/shm,$TARGET_SYSROOT/etc,$TARGET_SYSROOT/proc,$TARGET_SYSROOT/run,$TARGET_SYSROOT/sys}
- cp -v /etc/resolv.conf $TARGET_SYSROOT/etc/resolv.conf
- }
-
- dosconfig() {
- echo "Mounting virtual filesystems..."
- mount -v --bind /dev $TARGET_SYSROOT/dev
- mount -vt devpts devpts -o gid=5,mode=0620 $TARGET_SYSROOT/dev/pts
- mount -vt proc proc $TARGET_SYSROOT/proc
- mount -vt sysfs sysfs $TARGET_SYSROOT/sys
- mount -vt tmpfs tmpfs $TARGET_SYSROOT/run
-
- if [ -h $TARGET_SYSROOT/dev/shm ]; then
- install -v -d -m 1777 $TARGET_SYSROOT$(realpath /dev/shm)
- else
- mount -vt tmpfs -o nosuid,nodev tmpfs $TARGET_SYSROOT/dev/shm
- fi
- }
-
- winnt32() {
- read -p "Press enter to begin the installation."
-
- dnf4 install --installroot=$TARGET_SYSROOT --releasever=42 --setopt=install_weak_deps=False --setopt=keepcache=False --nodocs --refresh \
- @custom-environment \
- bc \
- dbus-daemon \
- curl \
- htop \
- nano \
- python2* \
- rsyslog \
- traceroute \
- unzip \
- wget \
- zip \
- screen \
- net-tools \
- dos2unix \
- rsync \
- time \
- tree \
- whois \
- git \
- curl \
- wimlib* \
- cracklib-dicts \
- -x ccache \
- -x plymouth* \
- -x audit \
- -x abrt* \
- -x firewall* \
- -x vim* \
- -x audit \
- -x zram*
-
- touch $TARGET_SYSROOT/.linuxnt
-
- read -p "Install either worked or it didn't. Press enter to continue."
- }
-
- ntldr() {
- echo -e "\nEntering $TARGET_SYSROOT..."
- echo -e "\n================================================================================"
- echo -e "\nOpen Source Linux NT [Version $(uname -r)]\n$(uname -v)\n"
- chroot "$TARGET_SYSROOT" /usr/bin/env -i \
- HOME=/root \
- TERM="$TERM" \
- PS1="(Linux NT) \u:\w \$ " \
- PATH=/bin:/usr/bin:/usr/sbin \
- MAKEFLAGS="-j$(nproc)" \
- TESTSUITEFLAGS="-j$(nproc)" \
- /bin/bash --login
- echo -e "\n================================================================================\n"
- }
-
- dosexit() {
- echo "Unmounting virtual filesystems..."
- umount -v $TARGET_SYSROOT/dev/pts
- mountpoint -q $TARGET_SYSROOT/dev/shm && umount -v $TARGET_SYSROOT/dev/shm
- umount -v $TARGET_SYSROOT/dev
- umount -v $TARGET_SYSROOT/run
- umount -v $TARGET_SYSROOT/proc
- umount -v $TARGET_SYSROOT/sys
- }
-
- # -----------------------------------------------------------------------------
-
- # Setup filesystem
- if [ -n "$INSTALL_SYSTEM" ]; then
- dossetup
- fi
-
- # Mount virtual filesystems
- dosconfig
-
- # Install system
- if [ -n "$INSTALL_SYSTEM" ]; then
- winnt32
- fi
-
- # Chroot to system
- ntldr
-
- # Unmount virtual filesystems
- dosexit