1. #!/bin/bash
  2. cd "$(dirname "$0")"
  3. SCRIPT_DIR="$(pwd)"
  4. read -p "Enter Mount Point [/mnt/sysroot]: " TARGET_SYSROOT
  5. TARGET_SYSROOT=${TARGET_SYSROOT:-"/mnt/sysroot"}
  6. if [ "$TARGET_SYSROOT" == "/mnt/sysroot" ]; then
  7. if [ ! -f "$TARGET_SYSROOT/.linuxnt" ]; then
  8. INSTALL_SYSTEM=1
  9. fi
  10. fi
  11. # -----------------------------------------------------------------------------
  12. dossetup() {
  13. read -p "Press enter to prep the virtual filesystems..."
  14. mkdir -pv {$TARGET_SYSROOT/dev/pts,$TARGET_SYSROOT/dev/shm,$TARGET_SYSROOT/etc,$TARGET_SYSROOT/proc,$TARGET_SYSROOT/run,$TARGET_SYSROOT/sys}
  15. cp -v /etc/resolv.conf $TARGET_SYSROOT/etc/resolv.conf
  16. }
  17. dosconfig() {
  18. echo "Mounting virtual filesystems..."
  19. mount -v --bind /dev $TARGET_SYSROOT/dev
  20. mount -vt devpts devpts -o gid=5,mode=0620 $TARGET_SYSROOT/dev/pts
  21. mount -vt proc proc $TARGET_SYSROOT/proc
  22. mount -vt sysfs sysfs $TARGET_SYSROOT/sys
  23. mount -vt tmpfs tmpfs $TARGET_SYSROOT/run
  24. if [ -h $TARGET_SYSROOT/dev/shm ]; then
  25. install -v -d -m 1777 $TARGET_SYSROOT$(realpath /dev/shm)
  26. else
  27. mount -vt tmpfs -o nosuid,nodev tmpfs $TARGET_SYSROOT/dev/shm
  28. fi
  29. }
  30. winnt32() {
  31. read -p "Press enter to begin the installation."
  32. dnf4 install --installroot=$TARGET_SYSROOT --releasever=42 --setopt=install_weak_deps=False --setopt=keepcache=False --nodocs --refresh \
  33. @custom-environment \
  34. bc \
  35. dbus-daemon \
  36. curl \
  37. htop \
  38. nano \
  39. python2* \
  40. rsyslog \
  41. traceroute \
  42. unzip \
  43. wget \
  44. zip \
  45. screen \
  46. net-tools \
  47. dos2unix \
  48. rsync \
  49. time \
  50. tree \
  51. whois \
  52. git \
  53. curl \
  54. wimlib* \
  55. cracklib-dicts \
  56. -x ccache \
  57. -x plymouth* \
  58. -x audit \
  59. -x abrt* \
  60. -x firewall* \
  61. -x vim* \
  62. -x audit \
  63. -x zram*
  64. touch $TARGET_SYSROOT/.linuxnt
  65. read -p "Install either worked or it didn't. Press enter to continue."
  66. }
  67. ntldr() {
  68. echo -e "\nEntering $TARGET_SYSROOT..."
  69. echo -e "\n================================================================================"
  70. echo -e "\nOpen Source Linux NT [Version $(uname -r)]\n$(uname -v)\n"
  71. chroot "$TARGET_SYSROOT" /usr/bin/env -i \
  72. HOME=/root \
  73. TERM="$TERM" \
  74. PS1="(Linux NT) \u:\w \$ " \
  75. PATH=/bin:/usr/bin:/usr/sbin \
  76. MAKEFLAGS="-j$(nproc)" \
  77. TESTSUITEFLAGS="-j$(nproc)" \
  78. /bin/bash --login
  79. echo -e "\n================================================================================\n"
  80. }
  81. dosexit() {
  82. echo "Unmounting virtual filesystems..."
  83. umount -v $TARGET_SYSROOT/dev/pts
  84. mountpoint -q $TARGET_SYSROOT/dev/shm && umount -v $TARGET_SYSROOT/dev/shm
  85. umount -v $TARGET_SYSROOT/dev
  86. umount -v $TARGET_SYSROOT/run
  87. umount -v $TARGET_SYSROOT/proc
  88. umount -v $TARGET_SYSROOT/sys
  89. }
  90. # -----------------------------------------------------------------------------
  91. # Setup filesystem
  92. if [ -n "$INSTALL_SYSTEM" ]; then
  93. dossetup
  94. fi
  95. # Mount virtual filesystems
  96. dosconfig
  97. # Install system
  98. if [ -n "$INSTALL_SYSTEM" ]; then
  99. winnt32
  100. fi
  101. # Chroot to system
  102. ntldr
  103. # Unmount virtual filesystems
  104. dosexit