From c30baceb7de78f845309fef01b1ddfed648ece0d Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:16:26 -0400 Subject: [PATCH 01/27] Update PSBBN-Definitive-Patch.sh --- PSBBN-Definitive-Patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PSBBN-Definitive-Patch.sh b/PSBBN-Definitive-Patch.sh index eeef3cc0..4d31f17a 100755 --- a/PSBBN-Definitive-Patch.sh +++ b/PSBBN-Definitive-Patch.sh @@ -540,7 +540,7 @@ check_dep(){ check_cmd bchunk check_cmd pkg-config check_cmd ffmpegthumbnailer - check_cmd unrar-free + check_cmd bsdtar check_cmd dmsetup if ! pkg-config --exists icu-i18n 2>/dev/null; then From a68d2d7c5bcdee28386f648ba6639ec7a4d91e90 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:40:30 -0400 Subject: [PATCH 02/27] Update Setup.sh Switch zip, unzip, and unrar-free to bsdtar. Add Gentoo support. --- scripts/Setup.sh | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 23967b9b..adfa01d5 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -123,20 +123,47 @@ if [ -x "$(command -v apt-get)" ]; then sudo dpkg --add-architecture i386 i386="libc6:i386" fi - sudo apt-get -q update && sudo apt-get install -y axel imagemagick xxd python3 python3-venv python3-pip bc rsync curl zip unzip wget ffmpeg lvm2 libfuse2 dosfstools e2fsprogs libc-bin exfatprogs exfat-fuse util-linux fdisk parted bchunk build-essential libicu-dev pkg-config ffmpegthumbnailer binfmt-support unrar-free dmsetup $i386 2>&1 | tee -a "${LOG_FILE}" + sudo apt-get -q update && sudo apt-get install -y axel imagemagick xxd python3 python3-venv python3-pip bc rsync curl wget ffmpeg lvm2 libfuse2 dosfstools e2fsprogs libc-bin exfatprogs exfat-fuse util-linux fdisk parted bchunk build-essential libicu-dev pkg-config ffmpegthumbnailer binfmt-support libarchive-tools dmsetup $i386 2>&1 | tee -a "${LOG_FILE}" # Or if user is on Fedora-based system, do this instead elif [ -x "$(command -v dnf)" ]; then if [[ "$arch" = "x86_64" ]]; then i386="glibc.i686" fi sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm 2>&1 | tee -a "${LOG_FILE}" - sudo dnf install -y gcc-c++ axel ImageMagick xxd python3 python3-devel python3-pip bc rsync curl zip unzip wget ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted bchunk libicu-devel pkgconf ffmpegthumbnailer unrar-free device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" + sudo dnf install -y gcc-c++ axel ImageMagick xxd python3 python3-devel python3-pip bc rsync curl wget ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted bchunk libicu-devel pkgconf ffmpegthumbnailer bsdtar device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" # Or if user is on Arch-based system, do this instead elif [ -x "$(command -v pacman)" ]; then if [[ "$arch" = "x86_64" ]]; then i386="lib32-glibc" fi - sudo pacman -S --needed --noconfirm axel imagemagick xxd python pyenv python-pip bc rsync curl zip unzip wget ffmpeg lvm2 fuse2 dosfstools e2fsprogs glibc exfatprogs util-linux parted bchunk base-devel icu pkgconf ffmpegthumbnailer unrar-free device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" + sudo pacman -S --needed --noconfirm axel imagemagick xxd python pyenv python-pip bc rsync curl wget ffmpeg lvm2 fuse2 dosfstools e2fsprogs glibc exfatprogs util-linux parted bchunk base-devel icu pkgconf ffmpegthumbnailer libarchive device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" +# Or if user is on Gentoo-based system, do this instead +elif [ -x "$(command -v emerge)" ]; then + if [[ "$arch" = "x86_64" ]]; then + i386="glibc" + fi + # Check if device-mapper is in the user's kernel + # First, see if it's built in + if grep -q "device-mapper" /proc/devices 2>/dev/null && ! lsmod 2>/dev/null | grep -q "^dm_mod"; then + # If it's not built in, see if it's configured as a module + elif modprobe -n dm_mod &>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then + # If it's a module, check if it's loaded + if grep -q "device-mapper" /proc/devices 2>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then + else + # If it's not loaded, attempt to load it + if sudo modprobe dm_mod 2>/dev/null; then + else + echo "Error: Failed to load the 'dm_mod' kernel module." >&2 + exit 1 + fi + fi + else + # If it's not present at all, halt and throw this error message + echo "Error: device-mapper (CONFIG_BLK_DEV_DM) is missing from your kernel." >&2 + echo "Please rebuild your kernel with CONFIG_BLK_DEV_DM=y or CONFIG_BLK_DEV_DM=m before running this installer." >&2 + exit 1 + fi + sudo USE='lvm' emerge --ask net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" @@ -176,4 +203,4 @@ echo echo "[✓] Setup completed successfully!" >> "${LOG_FILE}" echo -n "[✓] ${UI_TEXT[SETUP_SUCCESS]}" sleep 3 -echo \ No newline at end of file +echo From a7e90b856985d4c4e799dd08c08b29bd2d55afb0 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:46:17 -0400 Subject: [PATCH 03/27] Update Game-Installer.sh Switch zip and unzip commands to bsdtar --- scripts/Game-Installer.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/Game-Installer.sh b/scripts/Game-Installer.sh index 9aab323e..36cb0914 100755 --- a/scripts/Game-Installer.sh +++ b/scripts/Game-Installer.sh @@ -920,7 +920,7 @@ install_pops() { if [[ -f "${ASSETS_DIR}/POPS-binaries-main.zip" && ! -f "${ASSETS_DIR}/POPS-binaries-main.zip.st" ]]; then echo | tee -a "${LOG_FILE}" echo "POPS-binaries-main.zip found in ${ASSETS_DIR}. Extracting..." >> "${LOG_FILE}" - if ! unzip -o "${ASSETS_DIR}/POPS-binaries-main.zip" -d "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1; then + if ! bsdtar -xf "${ASSETS_DIR}/POPS-binaries-main.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1; then echo "[!] Warning: Failed to extract POPS binaries." >> "${LOG_FILE}" error_msg "Warning" "${UI_TEXT[WARN_INSTALL_POPS_1]}" fi @@ -932,7 +932,7 @@ install_pops() { echo "[!] Warning: Failed to download POPS binaries." >> "${LOG_FILE}" error_msg "Warning" "Failed to download POPS binaries." fi - if ! unzip -o "${ASSETS_DIR}/POPS-binaries-main.zip" -d "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1; then + if ! bsdtar -xf "${ASSETS_DIR}/POPS-binaries-main.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1; then error_msg "Warning" "${UI_TEXT[WARN_INSTALL_POPS_2]}" fi fi @@ -3943,9 +3943,9 @@ cp "${MISSING_ICON}" "${ICONS_DIR}/ico/tmp" >> "${LOG_FILE}" 2>&1 cd "${ICONS_DIR}/ico/tmp/" rm *.png >/dev/null 2>&1 -zip -r "${ARTWORK_DIR}/tmp/ico.zip" * >/dev/null 2>&1 +bsdtar -acf "${ARTWORK_DIR}/tmp/ico.zip" * >/dev/null 2>&1 cd "${ARTWORK_DIR}/tmp/" -zip -r "${ARTWORK_DIR}/tmp/art.zip" * >/dev/null 2>&1 +bsdtar -acf "${ARTWORK_DIR}/tmp/art.zip" * >/dev/null 2>&1 if [ -f "${ARTWORK_DIR}/tmp/art.zip" ]; then echo "Contributing to the PSBBN art & HDD-OSD databases..." >> "${LOG_FILE}" From 7156380fb09d43ccb6d1eb2ae471f8c2197647d8 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:47:48 -0400 Subject: [PATCH 04/27] Update HOSDMenu-Installer.sh Switch zip and unzip to bsdtar --- scripts/HOSDMenu-Installer.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/HOSDMenu-Installer.sh b/scripts/HOSDMenu-Installer.sh index a9e2498a..fd0a83dc 100755 --- a/scripts/HOSDMenu-Installer.sh +++ b/scripts/HOSDMenu-Installer.sh @@ -367,14 +367,14 @@ download_files() { # Check if extras.zip exists if [[ -f "${ASSETS_DIR}/extras.zip" && ! -f "${ASSETS_DIR}/extras.zip.st" ]]; then echo "extras.zip found in ${ASSETS_DIR}. Extracting..." >> "${LOG_FILE}" - unzip -o "${ASSETS_DIR}/extras.zip" -d "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 + bsdtar -xf "${ASSETS_DIR}/extras.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 else echo "Downloading..." >> "${LOG_FILE}" echo -n "${UI_TEXT[DOWNLOAD_LATEST_FILE_2]}..." wget --quiet --timeout=10 --tries=3 -O "${ASSETS_DIR}/extras.zip" https://archive.org/download/psbbn-definitive-english-patch-v2/extras.zip echo if [[ -s "${ASSETS_DIR}/extras.zip" ]]; then - unzip -o "${ASSETS_DIR}/extras.zip" -d "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 + bsdtar -xf "${ASSETS_DIR}/extras.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 else rm "${ASSETS_DIR}/extras.zip" echo "[X] Error: Download failed for HDD-OSD." >> "${LOG_FILE}" 2>&1 @@ -828,4 +828,4 @@ lsblk -p -o MODEL,NAME,SIZE,LABEL,MOUNTPOINT >> "${LOG_FILE}" echo "[✓] ${UI_TEXT[HOSDMENU_SUCCESS]}" | tee -a "${LOG_FILE}" echo read -n 1 -s -r -p "${UI_TEXT[MENU_RETURN]}" Date: Wed, 26 Aug 2026 10:48:57 -0400 Subject: [PATCH 05/27] Update Media-Installer.sh Switch unzip to bsdtar --- scripts/Media-Installer.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/Media-Installer.sh b/scripts/Media-Installer.sh index e703788f..2cc0de31 100755 --- a/scripts/Media-Installer.sh +++ b/scripts/Media-Installer.sh @@ -583,14 +583,14 @@ download_ps2str() { if [[ -f "${ASSETS_DIR}/ps2str_v1.08_2001.zip" ]]; then echo "Found ${ASSETS_DIR}/ps2str_v1.08_2001.zip..." >> "${LOG_FILE}" echo "${UI_TEXT[GET_LATEST_FILE_1]} ${ASSETS_DIR}/ps2str_v1.08_2001.zip..." - unzip -o "${ASSETS_DIR}/ps2str_v1.08_2001.zip" -d "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 + bsdtar -xf "${ASSETS_DIR}/ps2str_v1.08_2001.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 else echo "Downloading ps2str..." >> "${LOG_FILE}" echo "${UI_TEXT[DOWNLOAD_REQUIRED]}" wget --quiet --timeout=10 --tries=3 -O "${ASSETS_DIR}/ps2str_v1.08_2001.zip" https://archive.org/download/ps2str_v1.08_2001/ps2str_v1.08_2001.zip echo if [[ -s "${ASSETS_DIR}/ps2str_v1.08_2001.zip" ]]; then - unzip -o "${ASSETS_DIR}/ps2str_v1.08_2001.zip" -d "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 + bsdtar -xf "${ASSETS_DIR}/ps2str_v1.08_2001.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 fi fi } @@ -1844,4 +1844,4 @@ while true; do sleep 2 ;; esac -done \ No newline at end of file +done From b265d0302fe5b8b70213ebf44270b854be0e7bcd Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:51:16 -0400 Subject: [PATCH 06/27] Update Game-Installer.sh Oh yeah, and switch unrar-free too --- scripts/Game-Installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Game-Installer.sh b/scripts/Game-Installer.sh index 36cb0914..45933ee0 100755 --- a/scripts/Game-Installer.sh +++ b/scripts/Game-Installer.sh @@ -473,7 +473,7 @@ POPS_PATCH_DL() { wget -qO- 'https://www.mediafire.com/file/rznkr05pci45w5p/Hugopocked_POPStarter_Fixes_%25282023-08-11%2529.rar/file' \ | grep -o 'https://download[^"]*Hugopocked+POPStarter+Fixes+%282023-08-11%29.rar' | head -n1)" - unrar-free x "${ASSETS_DIR}/Hugopocked_POPStarter_Fixes.rar" "$ASSETS_DIR" + bsdtar -xf "${ASSETS_DIR}/Hugopocked_POPStarter_Fixes.rar" -C "$ASSETS_DIR" } CREATE_PS1_VMC() { From 9c7261f000ddb47dad11c581a95c91e013c0d937 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:52:34 -0400 Subject: [PATCH 07/27] Update flake.nix Remove zip and unzip and switch unrar-free to libarchive --- scripts/nix/flake.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/nix/flake.nix b/scripts/nix/flake.nix index 9ca080eb..17e9a70c 100644 --- a/scripts/nix/flake.nix +++ b/scripts/nix/flake.nix @@ -40,8 +40,6 @@ bc rsync curl - zip - unzip wget exfatprogs ffmpeg @@ -50,7 +48,7 @@ bchunk e2fsprogs ffmpegthumbnailer - unrar-free + libarchive lvm2 dosfstools util-linux From a7f6af47af6be3936bc22e152f5bea86e4fb03e3 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:53:08 -0400 Subject: [PATCH 08/27] Update PSBBN-Definitive-Patch.sh Oh yeah, remove zip and unzip checks --- PSBBN-Definitive-Patch.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/PSBBN-Definitive-Patch.sh b/PSBBN-Definitive-Patch.sh index 4d31f17a..aa2be161 100755 --- a/PSBBN-Definitive-Patch.sh +++ b/PSBBN-Definitive-Patch.sh @@ -526,8 +526,6 @@ check_dep(){ check_cmd bc check_cmd rsync check_cmd curl - check_cmd zip - check_cmd unzip check_cmd wget check_cmd ffmpeg check_cmd lvm From da4475b50826d5e5bece6382003ee7f147fc7d30 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 11:06:16 -0400 Subject: [PATCH 09/27] Update Setup.sh Fix syntax error --- scripts/Setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index adfa01d5..5000b735 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -144,14 +144,14 @@ elif [ -x "$(command -v emerge)" ]; then fi # Check if device-mapper is in the user's kernel # First, see if it's built in - if grep -q "device-mapper" /proc/devices 2>/dev/null && ! lsmod 2>/dev/null | grep -q "^dm_mod"; then + if grep -q "device-mapper" /proc/devices 2>/dev/null && ! lsmod 2>/dev/null | grep -q "^dm_mod"; then : # If it's not built in, see if it's configured as a module elif modprobe -n dm_mod &>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then # If it's a module, check if it's loaded - if grep -q "device-mapper" /proc/devices 2>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then + if grep -q "device-mapper" /proc/devices 2>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then : else # If it's not loaded, attempt to load it - if sudo modprobe dm_mod 2>/dev/null; then + if sudo modprobe dm_mod 2>/dev/null; then : else echo "Error: Failed to load the 'dm_mod' kernel module." >&2 exit 1 From af75320b937cfbb83dcc4be405bd565bd1a19109 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:02:51 -0400 Subject: [PATCH 10/27] Change to debugged Setup.sh from testing branch Debugged using Gentoo LiveCD --- scripts/Setup.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 5000b735..04767201 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -163,7 +163,19 @@ elif [ -x "$(command -v emerge)" ]; then echo "Please rebuild your kernel with CONFIG_BLK_DEV_DM=y or CONFIG_BLK_DEV_DM=m before running this installer." >&2 exit 1 fi - sudo USE='lvm' emerge --ask net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo mkdir -p /etc/portage/package.use + cat << 'EOF' | sudo tee /etc/portage/package.use/psbbn-installer > /dev/null + # Specific USE requirements for PSBBN installer dependencies +sys-fs/lvm2 lvm +media-video/ffmpeg opus +EOF +# Swap deprecated exfat-utils with exfatprogs if present + if portageq has_version / sys-fs/exfat-utils &>/dev/null; then + echo "Removing deprecated sys-fs/exfat-utils to prevent package blocks..." + sudo emerge --deselect sys-fs/exfat-utils &>/dev/null + sudo emerge --unmerge --quiet sys-fs/exfat-utils + fi + sudo emerge --sync && sudo USE='lvm' emerge -q --ask=n --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From 0739661c9f7462b34b549c2ce9e145b12d09de5b Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:17:01 -0400 Subject: [PATCH 11/27] Mention Gentoo support --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e18f0f8..b78f590e 100755 --- a/README.md +++ b/README.md @@ -691,7 +691,7 @@ For the best experience, a PS2 Fat model (SCPH-30000 to SCPH-55000 series) is re The **PSBBN Definitive Project** requires an x86-64 or ARM64 PC for installation. Connect the HDD or SSD to the PC via SATA or a USB adapter. ## Installing on Linux -64-bit Debian-based distributions using `apt`, Arch-based distributions using `pacman`, and Fedora-based[*](#troubleshooting) distributions using `dnf` are supported. Nix-based systems are also supported via flakes. Recommended distributions are Linux Mint, Debian, and for Raspberry Pi, Raspberry Pi OS. +64-bit Debian-based distributions using `apt`, Arch-based distributions using `pacman`, Fedora-based[*](#troubleshooting) distributions using `dnf`, and Gentoo-based distributions using `emerge` are supported. Nix-based systems are also supported via flakes. Recommended distributions are Linux Mint, Debian, and for Raspberry Pi, Raspberry Pi OS. **The PSBBN Definitive Project is a rolling release. To get automatic updates and the latest bug fixes, you must install the scripts using `git clone`.** From 0a6f0531c8cbf569ba75440fae4aa85cb72a316a Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:34:15 -0400 Subject: [PATCH 12/27] Fix fuse version --- scripts/Setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 04767201..b66087b1 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -175,7 +175,7 @@ EOF sudo emerge --deselect sys-fs/exfat-utils &>/dev/null sudo emerge --unmerge --quiet sys-fs/exfat-utils fi - sudo emerge --sync && sudo USE='lvm' emerge -q --ask=n --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo emerge --sync && sudo USE='lvm' emerge -q --ask=n --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From 444dfc80b7c02663c62d390944b5ebd968bba5ae Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:37:47 -0400 Subject: [PATCH 13/27] Update Setup.sh Don't rebuild already built packages --- scripts/Setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index b66087b1..accbdcde 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -175,7 +175,7 @@ EOF sudo emerge --deselect sys-fs/exfat-utils &>/dev/null sudo emerge --unmerge --quiet sys-fs/exfat-utils fi - sudo emerge --sync && sudo USE='lvm' emerge -q --ask=n --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo emerge --sync && sudo USE='lvm' emerge -qn --ask=n --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From ddae7f6bd3dd4096156c47d30ef8d2e6e316ba93 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:44:16 -0400 Subject: [PATCH 14/27] Update Setup.sh --- scripts/Setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index accbdcde..48059770 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -175,7 +175,7 @@ EOF sudo emerge --deselect sys-fs/exfat-utils &>/dev/null sudo emerge --unmerge --quiet sys-fs/exfat-utils fi - sudo emerge --sync && sudo USE='lvm' emerge -qn --ask=n --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo emerge --sync && sudo USE='lvm' emerge --noreplace --quiet --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From 6a41871f501105970aa16cc0dba35917de3b8da9 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:50:26 -0400 Subject: [PATCH 15/27] Add libarchive fedora --- scripts/Setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 48059770..5c5e30e2 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -130,7 +130,7 @@ elif [ -x "$(command -v dnf)" ]; then i386="glibc.i686" fi sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm 2>&1 | tee -a "${LOG_FILE}" - sudo dnf install -y gcc-c++ axel ImageMagick xxd python3 python3-devel python3-pip bc rsync curl wget ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted bchunk libicu-devel pkgconf ffmpegthumbnailer bsdtar device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" + sudo dnf install -y gcc-c++ axel ImageMagick xxd python3 python3-devel python3-pip bc rsync curl wget ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted bchunk libicu-devel pkgconf ffmpegthumbnailer libarchive bsdtar device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" # Or if user is on Arch-based system, do this instead elif [ -x "$(command -v pacman)" ]; then if [[ "$arch" = "x86_64" ]]; then From 32abcd607205918702c7d5d58d09a3b5f6bbc81e Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:06:56 -0400 Subject: [PATCH 16/27] Update Setup.sh Clean up emerge command and ask before attempting to remove exfat-utils --- scripts/Setup.sh | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 5c5e30e2..95665639 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -171,11 +171,25 @@ media-video/ffmpeg opus EOF # Swap deprecated exfat-utils with exfatprogs if present if portageq has_version / sys-fs/exfat-utils &>/dev/null; then - echo "Removing deprecated sys-fs/exfat-utils to prevent package blocks..." - sudo emerge --deselect sys-fs/exfat-utils &>/dev/null - sudo emerge --unmerge --quiet sys-fs/exfat-utils + while true; do + read -p "You have deprecated exfat-utils installed. It must be removed for this program to function. Do you want to remove it now and replace it with exfatprogs? (y/n): " yn + case $yn in + [Yy]* ) + sudo emerge --deselect sys-fs/exfat-utils &>/dev/null + sudo emerge --unmerge --quiet sys-fs/exfat-utils + break + ;; + [Nn]* ) + echo "Please remove sys-fs/exfat-utils manually before running this script again." + exit 0 + ;; + * ) + echo "Invalid input! Please enter y or n." + ;; + esac + done fi - sudo emerge --sync && sudo USE='lvm' emerge --noreplace --quiet --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y -- net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo emerge --sync && sudo USE='lvm' emerge --noreplace --quiet --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From 9b37bf3da29969d812329636bd857b3f9bce7242 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:52:03 -0400 Subject: [PATCH 17/27] Remove redundancy in kernel checking and improve emerge command Makes it so the emerge command rebuilds packages if they need to be rebuilt with a new USE flag (i.e. lvm). --update is used instead of --noreplace to achieve this behaviour. --ask is used instead of --autounmask to avoid angering people by forcing changed to their configs, instead asking and allowing them to do it themselves if necessary. --- scripts/Setup.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 95665639..98fe5394 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -143,13 +143,10 @@ elif [ -x "$(command -v emerge)" ]; then i386="glibc" fi # Check if device-mapper is in the user's kernel - # First, see if it's built in + # First, see if it's built into the kernel or if it's a module and currently loaded if grep -q "device-mapper" /proc/devices 2>/dev/null && ! lsmod 2>/dev/null | grep -q "^dm_mod"; then : - # If it's not built in, see if it's configured as a module - elif modprobe -n dm_mod &>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then - # If it's a module, check if it's loaded - if grep -q "device-mapper" /proc/devices 2>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then : - else + # If it's not built in or loaded, check if it's built as a module but not currently loaded + elif modprobe -n dm_mod &>/dev/null || lsmod 2>/dev/null | grep -q "^dm_mod"; then # If it's not loaded, attempt to load it if sudo modprobe dm_mod 2>/dev/null; then : else @@ -189,7 +186,7 @@ EOF esac done fi - sudo emerge --sync && sudo USE='lvm' emerge --noreplace --quiet --quiet-fail --autounmask=y --autounmask-continue=y --autounmask-write=y net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo emerge --sync && sudo USE='lvm' emerge --update --quiet --quiet-fail --changed-use --ask net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From dc8e5af00c6d98bf10786db234314edab67d4a81 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:01:25 -0400 Subject: [PATCH 18/27] Replace wget with curl --- PSBBN-Definitive-Patch.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PSBBN-Definitive-Patch.sh b/PSBBN-Definitive-Patch.sh index aa2be161..a6055bb8 100755 --- a/PSBBN-Definitive-Patch.sh +++ b/PSBBN-Definitive-Patch.sh @@ -526,7 +526,6 @@ check_dep(){ check_cmd bc check_cmd rsync check_cmd curl - check_cmd wget check_cmd ffmpeg check_cmd lvm check_cmd timeout @@ -914,7 +913,7 @@ else if [[ -n "$psbbn_version" || -n $osdmenu_version || -n "$LANG_VER" || -n "$CHAN_VER" ]]; then HTML_FILE=$(mktemp) - timeout 20 wget -O "$HTML_FILE" "$URL" -o - >> "$LOG_FILE" 2>&1 + timeout 20 curl -sSL -o "$HTML_FILE" "$URL" >> "$LOG_FILE" 2>&1 if [[ -n "$psbbn_version" ]]; then get_latest_file "psbbn-definitive-patch" "PSBBN Definitive Patch" From a81b8d16680d27495cc1be223e16003255bc972d Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:03:42 -0400 Subject: [PATCH 19/27] Replace wget with curl --- scripts/Extras.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/Extras.sh b/scripts/Extras.sh index 240d6094..14f40fbb 100755 --- a/scripts/Extras.sh +++ b/scripts/Extras.sh @@ -1395,10 +1395,10 @@ option_three() { if [ "$OS" = "PSBBN" ]; then # Download the HTML of the page HTML_FILE=$(mktemp) - timeout 20 wget -O "$HTML_FILE" "$URL" -o - >> "$LOG_FILE" 2>&1 & - WGET_PID=$! + curl -sSL -m 20 -o "$HTML_FILE" "$URL" >> "$LOG_FILE" 2>&1 & + CURL_PID=$! - spinner $WGET_PID "${UI_TEXT[CHANGE_LANGUAGE_10]}" + spinner $CURL_PID "${UI_TEXT[CHANGE_LANGUAGE_10]}" get_latest_file "language-pak-$lang" "$LANG_DISPLAY ${UI_TEXT[CHANGE_LANGUAGE_11]}" || return 1 downoad_latest_file "language-pak-$lang" || return 1 From 6590eb686edc8f02709ff4605c98095158fce9ae Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:04:19 -0400 Subject: [PATCH 20/27] Use curl's inbuilt timeout instead of timeout utility --- PSBBN-Definitive-Patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PSBBN-Definitive-Patch.sh b/PSBBN-Definitive-Patch.sh index a6055bb8..beac9c32 100755 --- a/PSBBN-Definitive-Patch.sh +++ b/PSBBN-Definitive-Patch.sh @@ -913,7 +913,7 @@ else if [[ -n "$psbbn_version" || -n $osdmenu_version || -n "$LANG_VER" || -n "$CHAN_VER" ]]; then HTML_FILE=$(mktemp) - timeout 20 curl -sSL -o "$HTML_FILE" "$URL" >> "$LOG_FILE" 2>&1 + curl -sSL -m 20 -o "$HTML_FILE" "$URL" >> "$LOG_FILE" 2>&1 if [[ -n "$psbbn_version" ]]; then get_latest_file "psbbn-definitive-patch" "PSBBN Definitive Patch" From 4865de5dee4a24a3f4f45cb692a0f725188b431e Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:15:20 -0400 Subject: [PATCH 21/27] Replace wget with curl --- scripts/Game-Installer.sh | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/scripts/Game-Installer.sh b/scripts/Game-Installer.sh index 45933ee0..33490351 100755 --- a/scripts/Game-Installer.sh +++ b/scripts/Game-Installer.sh @@ -469,10 +469,7 @@ process_psu_files() { } POPS_PATCH_DL() { - wget -O "$ASSETS_DIR/Hugopocked_POPStarter_Fixes.rar" "$( - wget -qO- 'https://www.mediafire.com/file/rznkr05pci45w5p/Hugopocked_POPStarter_Fixes_%25282023-08-11%2529.rar/file' \ - | grep -o 'https://download[^"]*Hugopocked+POPStarter+Fixes+%282023-08-11%29.rar' | head -n1)" - + curl -sSL -o "$ASSETS_DIR/Hugopocked_POPStarter_Fixes.rar" "$(curl -sL 'https://www.mediafire.com/file/rznkr05pci45w5p/Hugopocked_POPStarter_Fixes_%25282023-08-11%2529.rar/file' | grep -oE 'https://download[^\"]+' | head -n1)" bsdtar -xf "${ASSETS_DIR}/Hugopocked_POPStarter_Fixes.rar" -C "$ASSETS_DIR" } @@ -1431,7 +1428,7 @@ APP_ART() { echo "Created: ${SCRIPTS_DIR}/tmp/${pp_name}/jkt_001.png" >> "${LOG_FILE}" elif [ ! -s "$png_file" ]; then echo "Artwork not found locally for $APP_ID. Attempting to download from the PSBBN art database..." >> "${LOG_FILE}" - wget --quiet --timeout=10 --tries=3 --output-document="$png_file" \ + curl -s -m 10 --retry 3 -o "$png_file" \ "https://raw.githubusercontent.com/CosmicScale/psbbn-art-database/main/apps/${APP_ID}.png" if [[ -s "$png_file" ]]; then @@ -1706,15 +1703,15 @@ create_game_assets() { if [[ -f "$png_file" ]]; then echo "Artwork for $game_id already exists. Skipping download." >> "${LOG_FILE}" else - # Attempt to download artwork using wget + # Attempt to download artwork using curl echo -n "Artwork not found locally. Attempting to download from the PSBBN art database..." >> "${LOG_FILE}" echo >> "${LOG_FILE}" - wget --quiet --timeout=10 --tries=3 --output-document="$png_file" \ + curl s -m 10 --retry 3 -o "$png_file" \ "https://raw.githubusercontent.com/CosmicScale/psbbn-art-database/main/art/${game_id}.png" if [[ -s "$png_file" ]]; then echo "[✓] Successfully downloaded artwork for $game_id" >> "${LOG_FILE}" else - # If wget fails, run the art downloader + # If curl fails, run the art downloader [[ -f "$png_file" ]] && rm -f "$png_file" echo "Trying IGN for $game_id" >> "${LOG_FILE}" "${HELPER_DIR}/art_downloader.py" "$game_id" 2>&1 >> "${LOG_FILE}" @@ -1782,14 +1779,14 @@ create_game_assets() { ico_file="${ICONS_DIR}/ico/$game_id.ico" if [[ ! -s "$ico_file" ]]; then - # Attempt to download icon using wget + # Attempt to download icon using curl echo -n "Icon not found locally for $game_id. Attempting to download from the HDD-OSD icon database..." >> "${LOG_FILE}" - wget --quiet --timeout=10 --tries=3 --output-document="$ico_file" \ + curl -s -m 10 --retry 3 -o "$ico_file" \ "https://raw.githubusercontent.com/CosmicScale/HDD-OSD-Icon-Database/main/ico/${game_id}.ico" if [[ -s "$ico_file" ]]; then echo "[✓] Successfully downloaded icon for ${game_id}." >> "${LOG_FILE}" else - # If wget fails, run the art downloader + # If curl fails, run the art downloader [[ -f "$ico_file" ]] && rm -f "$ico_file" png_file_cov="${TOOLKIT_PATH}/icons/ico/tmp/${game_id}_COV.png" @@ -1803,18 +1800,18 @@ create_game_assets() { fi if [[ "$disc_type" == "POPS" || "$disc_type" == "__.POPS" || "$disc_type" == "SMB" ]]; then - wget --quiet --timeout=10 --tries=3 --output-document="${png_file_cov}" \ + curl -s -m 10 --retry 3 -o "${png_file_cov}" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS1/${game_id}/${game_id}_COV.png" if [[ -s "$png_file_cov" ]]; then - wget --quiet --timeout=10 --tries=3 --output-document="$png_file_cov2" \ + curl -s -m 10 --retry 3 -o "$png_file_cov2" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS1/${game_id}/${game_id}_COV2.png" - wget --quiet --timeout=10 --tries=3 --output-document="$png_file_lab" \ + curl -s -m 10 --retry 3 -o "$png_file_lab" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS1/${game_id}/${game_id}_LAB.png" fi elif [[ -s "$png_file_cov" ]]; then - wget --quiet --timeout=10 --tries=3 --output-document="$png_file_cov2" \ + curl -s -m 10 --retry 3 -o "$png_file_cov2" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS2/${game_id}/${game_id}_COV2.png" - wget --quiet --timeout=10 --tries=3 --output-document="$png_file_lab" \ + curl -s -m 10 --retry 3 -o "$png_file_lab" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS2/${game_id}/${game_id}_LAB.png" fi @@ -3012,11 +3009,11 @@ if [ -f "${PS2_LIST}" ]; then if [[ -f "$png_file_cover" ]]; then echo "OPL Artwork for $game_id already exists. Skipping download." >> "${LOG_FILE}" else - # Attempt to download artwork using wget + # Attempt to download artwork using curl echo "OPL Artwork not found locally for $game_id. Attempting to download from archive.org..." >> "${LOG_FILE}" - wget --quiet --timeout=10 --tries=3 --output-document="$png_file_cover" \ + curl -s -m 10 --retry 3 -o "$png_file_cover" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS2/${game_id}/${game_id}_COV.png" - #wget --quiet --timeout=10 --tries=3 --output-document="$png_file_disc" \ + #curl -s -m 10 --retry 3 -o "$png_file_disc" \ #"https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS2/${game_id}/${game_id}_ICO.png" missing_files=() @@ -3069,9 +3066,9 @@ if [ -f "${ATA_POPS_LIST}" ]; then if [[ -f "$png_file_cover" ]]; then echo "POPSLoader Artwork for $filename already exists. Skipping download." >> "${LOG_FILE}" else - # Attempt to download artwork using wget + # Attempt to download artwork using curl echo "POPSLoader Artwork not found locally for $filename. Attempting to download from archive.org..." >> "${LOG_FILE}" - wget --quiet --timeout=10 --tries=3 --output-document="$png_file_cover" \ + curl -s -m 10 --retry 3 -o "$png_file_cover" \ "https://archive.org/download/OPLM_ART_2024_09/OPLM_ART_2024_09.zip/PS1/${game_id}/${game_id}_COV.png" missing_files=() From eebf54f19332f5512b29a8b3f66e4301ac65498c Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:18:34 -0400 Subject: [PATCH 22/27] Use curl instead of wget --- scripts/HOSDMenu-Installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/HOSDMenu-Installer.sh b/scripts/HOSDMenu-Installer.sh index fd0a83dc..0ffd9273 100755 --- a/scripts/HOSDMenu-Installer.sh +++ b/scripts/HOSDMenu-Installer.sh @@ -371,7 +371,7 @@ download_files() { else echo "Downloading..." >> "${LOG_FILE}" echo -n "${UI_TEXT[DOWNLOAD_LATEST_FILE_2]}..." - wget --quiet --timeout=10 --tries=3 -O "${ASSETS_DIR}/extras.zip" https://archive.org/download/psbbn-definitive-english-patch-v2/extras.zip + curl -s -m 10 --retry 3 -o "${ASSETS_DIR}/extras.zip" https://archive.org/download/psbbn-definitive-english-patch-v2/extras.zip echo if [[ -s "${ASSETS_DIR}/extras.zip" ]]; then bsdtar -xf "${ASSETS_DIR}/extras.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 From 2262a9bf56810e783611e9f00f45a158a0ae62fd Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:19:11 -0400 Subject: [PATCH 23/27] Use curl instead of wget --- scripts/Media-Installer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Media-Installer.sh b/scripts/Media-Installer.sh index 2cc0de31..18af0469 100755 --- a/scripts/Media-Installer.sh +++ b/scripts/Media-Installer.sh @@ -587,7 +587,7 @@ download_ps2str() { else echo "Downloading ps2str..." >> "${LOG_FILE}" echo "${UI_TEXT[DOWNLOAD_REQUIRED]}" - wget --quiet --timeout=10 --tries=3 -O "${ASSETS_DIR}/ps2str_v1.08_2001.zip" https://archive.org/download/ps2str_v1.08_2001/ps2str_v1.08_2001.zip + curl -s -m 10 --retry 3 -o "${ASSETS_DIR}/ps2str_v1.08_2001.zip" https://archive.org/download/ps2str_v1.08_2001/ps2str_v1.08_2001.zip echo if [[ -s "${ASSETS_DIR}/ps2str_v1.08_2001.zip" ]]; then bsdtar -xf "${ASSETS_DIR}/ps2str_v1.08_2001.zip" -C "${ASSETS_DIR}" >> "${LOG_FILE}" 2>&1 From 8dfdadabe58275ef3a6548e96c692d36a3c35bfb Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:22:12 -0400 Subject: [PATCH 24/27] Use curl instead of wget --- scripts/PSBBN-Installer.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/PSBBN-Installer.sh b/scripts/PSBBN-Installer.sh index 8188a794..811d2143 100755 --- a/scripts/PSBBN-Installer.sh +++ b/scripts/PSBBN-Installer.sh @@ -1049,10 +1049,10 @@ fi if [ "$OS" = "PSBBN" ]; then # Download the HTML of the page HTML_FILE=$(mktemp) - timeout 20 wget -O "$HTML_FILE" "$URL" -o - >> "$LOG_FILE" 2>&1 & - WGET_PID=$! + curl -sSL -m 20 -o "$HTML_FILE" "$URL" >> "$LOG_FILE" 2>&1 & + CURL_PID=$! - spinner $WGET_PID "${UI_TEXT[VERSION_CHECK_PSBBN]}" + spinner $CURL_PID "${UI_TEXT[VERSION_CHECK_PSBBN]}" get_latest_file "psbbn-definitive-patch" "PSBBN Definitive Patch" @@ -1936,4 +1936,4 @@ else fi read -n 1 -s -r -p "$text" Date: Fri, 28 Aug 2026 11:23:10 -0400 Subject: [PATCH 25/27] Update Setup.sh --- scripts/Setup.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/Setup.sh b/scripts/Setup.sh index 98fe5394..eb06f40d 100755 --- a/scripts/Setup.sh +++ b/scripts/Setup.sh @@ -123,20 +123,20 @@ if [ -x "$(command -v apt-get)" ]; then sudo dpkg --add-architecture i386 i386="libc6:i386" fi - sudo apt-get -q update && sudo apt-get install -y axel imagemagick xxd python3 python3-venv python3-pip bc rsync curl wget ffmpeg lvm2 libfuse2 dosfstools e2fsprogs libc-bin exfatprogs exfat-fuse util-linux fdisk parted bchunk build-essential libicu-dev pkg-config ffmpegthumbnailer binfmt-support libarchive-tools dmsetup $i386 2>&1 | tee -a "${LOG_FILE}" + sudo apt-get -q update && sudo apt-get install -y axel imagemagick xxd python3 python3-venv python3-pip bc rsync curl ffmpeg lvm2 libfuse2 dosfstools e2fsprogs libc-bin exfatprogs exfat-fuse util-linux fdisk parted bchunk build-essential libicu-dev pkg-config ffmpegthumbnailer binfmt-support libarchive-tools dmsetup $i386 2>&1 | tee -a "${LOG_FILE}" # Or if user is on Fedora-based system, do this instead elif [ -x "$(command -v dnf)" ]; then if [[ "$arch" = "x86_64" ]]; then i386="glibc.i686" fi sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm 2>&1 | tee -a "${LOG_FILE}" - sudo dnf install -y gcc-c++ axel ImageMagick xxd python3 python3-devel python3-pip bc rsync curl wget ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted bchunk libicu-devel pkgconf ffmpegthumbnailer libarchive bsdtar device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" + sudo dnf install -y gcc-c++ axel ImageMagick xxd python3 python3-devel python3-pip bc rsync curl ffmpeg lvm2 fuse-libs dosfstools e2fsprogs glibc-common exfatprogs fuse-exfat util-linux parted bchunk libicu-devel pkgconf ffmpegthumbnailer libarchive bsdtar device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" # Or if user is on Arch-based system, do this instead elif [ -x "$(command -v pacman)" ]; then if [[ "$arch" = "x86_64" ]]; then i386="lib32-glibc" fi - sudo pacman -S --needed --noconfirm axel imagemagick xxd python pyenv python-pip bc rsync curl wget ffmpeg lvm2 fuse2 dosfstools e2fsprogs glibc exfatprogs util-linux parted bchunk base-devel icu pkgconf ffmpegthumbnailer libarchive device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" + sudo pacman -S --needed --noconfirm axel imagemagick xxd python pyenv python-pip bc rsync curl ffmpeg lvm2 fuse2 dosfstools e2fsprogs glibc exfatprogs util-linux parted bchunk base-devel icu pkgconf ffmpegthumbnailer libarchive device-mapper $i386 2>&1 | tee -a "${LOG_FILE}" # Or if user is on Gentoo-based system, do this instead elif [ -x "$(command -v emerge)" ]; then if [[ "$arch" = "x86_64" ]]; then @@ -186,7 +186,7 @@ EOF esac done fi - sudo emerge --sync && sudo USE='lvm' emerge --update --quiet --quiet-fail --changed-use --ask net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl net-misc/wget media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" + sudo emerge --sync && sudo USE='lvm' emerge --update --quiet --quiet-fail --changed-use --ask net-misc/axel media-gfx/imagemagick dev-util/xxd dev-lang/python dev-python/pip sys-devel/bc net-misc/rsync net-misc/curl media-video/ffmpeg sys-fs/lvm2 sys-fs/fuse:0 sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/exfatprogs sys-apps/util-linux sys-block/parted app-cdr/bchunk dev-libs/icu dev-util/pkgconf media-video/ffmpegthumbnailer app-arch/libarchive $i386 2>&1 | tee -a "${LOG_FILE}" elif [ -n "$IN_NIX_SHELL" ]; then echo Running in Nix environment - packages should be provided by flake and setup should not be run. >> "${LOG_FILE}" error_msg "${UI_TEXT[ERROR_NIX]}" From 9260bfc429d50b8718806eda8c23473f5e882e38 Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Fri, 28 Aug 2026 11:28:24 -0400 Subject: [PATCH 26/27] Update flake.nix --- scripts/nix/flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/nix/flake.nix b/scripts/nix/flake.nix index 17e9a70c..7892cf78 100644 --- a/scripts/nix/flake.nix +++ b/scripts/nix/flake.nix @@ -40,7 +40,6 @@ bc rsync curl - wget exfatprogs ffmpeg parted From 84f263899a7c0416a521faa94cc2e743e736a3bc Mon Sep 17 00:00:00 2001 From: finn <56238271+quisys@users.noreply.github.com> Date: Wed, 2 Sep 2026 22:59:25 -0400 Subject: [PATCH 27/27] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b78f590e..11c35c75 100755 --- a/README.md +++ b/README.md @@ -1153,7 +1153,7 @@ The full readme can be found [here](https://github.com/pcm720/OSDMenu/blob/main/ **Warning: Manually creating new APA partitions on your PS2 drive and exceeding the allocated space for APA will corrupt the drive.** ## Early (SCPH-10000–18000) and Slim (SCPH-700xx) Consoles -The **PSBBN Definitive Project** can be installed on PS2 Slim **SCPH-700xx** models with an [IDE Resurrector](https://gusse.in/shop/ps2-modding-parts/ide-resurrector-origami-v0-7-flex-cable-for-ps2-slim-spch700xx/) or similar hardware mod. Installing to an SD card is not supported on Windows. For PSBBN compatibility, an SATA adapter must be used, such as the [iFlash-Sata v10](https://www.iflash.xyz/store/iflash-sata-v10/). +The **PSBBN Definitive Project** can be installed on PS2 Slim **SCPH-700xx** models with an [IDE Resurrector](https://gusse.in/shop/ps2-modding-parts/ide-resurrector-origami-v0-7-flex-cable-for-ps2-slim-spch700xx/) or similar hardware mod. Installing to an SD card is not supported on Windows. For PSBBN compatibility, a SATA adapter must be used, such as the [iFlash-Sata v10](https://www.iflash.xyz/store/iflash-sata-v10/). You must also download the [External HDD Drivers](https://israpps.github.io/FreeMcBoot-Installer/test/8_Downloads.html). Extract the files and place `hddload.irx`, `dev9.irx`, and `atad.irx` in the appropriate system folder for your region on an **official Sony PS2 Memory Card**: