diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md
index 4b16bca08d..c56d945e0e 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md
@@ -1,9 +1,9 @@
|Manufacturer|System|Release Date|Games Path|Supported Extensions|Emulator / Core|
|----|----|----|----|----|----|
-| System|Media Player (mplayer)|System|`mplayer`|.3g2 .3gp .aac .ac3 .asf .avi .divx .dts .eac33 .f4f .f4v .flac .flv .m2p .m2ts .m3u .m4a .mka .mkv .mov .mp3 .mp4 .mpeg .mpg .mxf .ogg .ogm .opus .ps .sh .thd .ts .twi .vob .wav .webm .wma .wmv .wv .ytb|**mplayer:** mplayer (default)
**retroarch:** ffmpeg
|
+| System|Media Player (mplayer)|System|`mplayer`|.3g2 .3gp .aac .ac3 .asf .avi .divx .dts .eac33 .f4f .f4v .flac .flv .m2p .m2ts .m3u .m4a .m4v .mka .mkv .mov .mp3 .mp4 .mpeg .mpg .mxf .ogg .ogm .opus .ps .sh .thd .ts .twi .vob .wav .webm .wma .wmv .wv .ytb|**mplayer:** mplayer (default)
**retroarch:** ffmpeg
|
| System|Moonlight Game Streaming (moonlight)|System|`moonlight`|.sh|**moonlight:** moonlight (default)
|
| System|Music Player (music)|System|`playlists`|.m3u .sh|**gmu:** gmu (default)
|
-| System|Ports (ports)|System|`ports`|.sh|**portmaster:** portmaster (default)
|
+| System|Ports (ports)|System|`ports`|.sh .appimage|**portmaster:** portmaster (default)
|
| System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi||
| System|Tools (tools)|System|`modules`|.sh||
|Acorn|BBC Micro (bbcmicro)|1981|`bbcmicro`|.ssd .dsd|**retroarch:** b2 (default)
|
diff --git a/scripts/checkdeps b/scripts/checkdeps
index 7208ceceec..94f29efda8 100755
--- a/scripts/checkdeps
+++ b/scripts/checkdeps
@@ -170,7 +170,7 @@ case "${DISTRO}" in
[XML::Parser]=XML-Parser
)
;;
- arch|endeavouros)
+ arch|endeavouros|cachyos|manjaro|garuda|artix)
dep_map+=(
[g++]=g++
[mkfontscale]=xorg-mkfontscale
@@ -273,7 +273,7 @@ if [ "${#need_map[@]}" -gt 0 ]; then
mageia)
get_yes_no && sudo urpmi "${need_map[@]}"
;;
- arch|endeavouros)
+ arch|endeavouros|cachyos|manjaro|garuda|artix)
get_yes_no && sudo pacman -Sy "${need_map[@]}"
;;
opensuse)
diff --git a/scripts/mkimage b/scripts/mkimage
index d45aa2a0da..cd59b23f57 100755
--- a/scripts/mkimage
+++ b/scripts/mkimage
@@ -133,18 +133,26 @@ dd if=/dev/zero of="${IMG_TMP}/part2.ext4" bs=512 count="${STORAGE_PART_COUNT}"
# create filesystem on part2
echo "image: creating filesystem on part2..."
-mke2fs -F -q -t ext4 -T ext4 -O ^orphan_file -m 0 "${IMG_TMP}/part2.ext4"
-tune2fs -L "${DISTRO_DISKLABEL}" -U ${UUID_STORAGE} "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
-e2fsck -n "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
+# Use the toolchain-built e2fsprogs binaries (matching the target's version)
+# rather than whatever lives on the build container's PATH. Mismatched
+# versions are observable on-device: a fs created with a newer mke2fs/tune2fs
+# may be flagged as "Filesystem corruption" by the older e2fsck baked into
+# the initramfs, even though the host considers it clean. See:
+# https://github.com/archr-linux/Arch-R/... — fix for 1.47.4 (host) vs
+# 1.47.3 (target) divergence that made ARCHR_ROOT fail to mount on first
+# boot of the 20260514 build.
+${TOOLCHAIN}/sbin/mke2fs -F -q -t ext4 -T ext4 -O ^orphan_file -m 0 "${IMG_TMP}/part2.ext4"
+${TOOLCHAIN}/sbin/tune2fs -L "${DISTRO_DISKLABEL}" -U ${UUID_STORAGE} "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
+${TOOLCHAIN}/sbin/e2fsck -n "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
sync
# add resize mark
mkdir "${IMG_TMP}/part2.fs"
touch "${IMG_TMP}/part2.fs/.please_resize_me"
echo "image: populating filesystem on part2..."
-populatefs -U -d "${IMG_TMP}/part2.fs" "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
+${TOOLCHAIN}/bin/populatefs -U -d "${IMG_TMP}/part2.fs" "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
sync
-e2fsck -n "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
+${TOOLCHAIN}/sbin/e2fsck -n "${IMG_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
# merge part2 into disk image
echo "image: merging part2 into disk image..."
@@ -154,7 +162,7 @@ dd if="${IMG_TMP}/part2.ext4" of="${DISK}" bs=512 seek="${STORAGE_PART_START}" c
if [ "${ROOTFS_TYPE}" = "ext4" ]; then
echo "image: preparing root ext4 partition..."
# Set label and UUID on the ext4 rootfs image
- tune2fs -L "${DISTRO_ROOTLABEL}" -U ${UUID_ROOT} "${RELEASE_DIR}/target/SYSTEM" >"${SAVE_ERROR}" 2>&1 || show_error
+ ${TOOLCHAIN}/sbin/tune2fs -L "${DISTRO_ROOTLABEL}" -U ${UUID_ROOT} "${RELEASE_DIR}/target/SYSTEM" >"${SAVE_ERROR}" 2>&1 || show_error
# Write root ext4 image into disk at ROOT_PART_START
echo "image: merging root ext4 into disk image..."