shadowMountPlus能为破解的PS5主机自动后台挂载,它能够检测、挂载并安装来自内部或外部存储的游戏备份,支持 UFS、exFAT、PFS 和嵌套压缩 PFS 容器,绝对是你的ps5破解机必备的神器。
以下教程为机翻,请仔细甄别。本站仅为免费分享,风险由您个人承担,操作即代表您已了解其风险并自愿承担其可能带来的一切风险。
警告!挂载镜像可能会导致关机问题和内部硬盘的数据损坏!这取决于很多因素,但在较旧的固件版本中更为常见。测试时请考虑这一点。
ShadowMountPlus 是一个全自动化的后台“自动装载器”载荷,适用于越狱的 PlayStation 5 主机。它通过消除手动配置或外部工具(如 DumpRunner 或 Itemzflow)的需求,简化了游戏挂载过程。ShadowMountPlus 会自动检测、挂载并安装游戏转储,同时来自内部和外部存储 。
兼容性: 支持运行 Kstuff-lite v1.07+ 的越狱 PS5 固件,包括固件 2.00。
当前的映像支持
PFS 支持还在实验阶段。
| 扩展 | 骑乘前哨 | 附加后端 | 现状 |
|---|---|---|---|
.ffpkg |
ufs |
LVD 或 MD(可配置) |
推荐阅读 |
.exfat |
exfatfs |
LVD 或 MD(可配置) |
兼容/仅外置硬盘的游戏 |
.ffpfs |
pfs |
LVD |
实验性 |
.ffpfsc |
PFS 容器 |
LVD |
嵌套图像的实验容器 |
注释:
CUSA、PPSA 和 NPXS 前缀。已确认运行自制软件允许对其他游戏进行后台扫描、注册以及复制/移动/删除操作,无论应用使用文件夹、映像还是已安装的 PKG。其自身的运行时、源码及所有后台图像层均受到保护。会释放共享映像的操作被拒绝。普通的 PS4/PS5 游戏无论使用 AppFocus,都能在运行时实现相同的工作。强制和定时扫描保护了在线游戏及其后备链,并在游戏进行时加快目录的浏览速度。等待启动/退出过渡和未知运行时所有权仍会延迟工作。/data/shadowmount/config.ini 配置。debug=1),并写入控制台及 /data/shadowmount/debug.log(将 debug=0 设置为禁用)。.ffpkg)是常规使用的推荐图像格式。.exfat)。在 64 KB;较小的集群会降低性能。SMB 文件传输与安装
在网页界面中打开 →SMB 设置 ,添加一个命名的 SMB2/SMB3 连接。输入名称如 NAS,或共享路径如 \\nas.home.loc\homebrew(支持可选子文件夹)、用户名和密码。 检查连接验证认证、对配置目录的访问以及协商好的 SMB 方言。引出的 \\ 是自动添加的 如果省略;界面在内部将 UNC 路径转换为客户端的 SMB URL。 空用户名使用 Guest; 支持 DOMAIN\user。
活跃连接在安装和复制/移动目的地选择器中显示为 smb://NAS。将游戏镜像和文件夹从主机存储复制或移动到共享存储,或者将共享存储中的文件夹和完整图片安装到主机存储上。SMB 上的 PKG 通过按需 HTTP 范围服务器流式传输给系统安装程序。本地基础 PKG 直接使用原生文件路径;补丁和 DLC 使用 HTTP 流式传输,包括本地文件,以实现安全取消。图片和文件夹在注册和启动前会在本地复制。从 SMB 复制到控制台存储的文件权限为 0777。活跃的 SMB 连接也会出现在存储概览和摘要中,包括可用空间、总容量和使用量表。容量是与本地磁盘分开加载的;不可用的共享不会延迟本地存储列表。安装浏览器在 SMB 和本地硬盘上有文件夹、图片和 PKG 的垃圾桶图标。删除需要确认。仅读/系统路径和本地扫描的文件夹/图片图标被禁用;PKG 可以从扫描文件夹中删除。共享存储工作者会重新检查权限和策略。自定义文件夹选择器还支持可写本地和 SMB 的新文件夹 路径。输入一个名字创建并打开该文件夹,然后像往常一样选择它。 安装→驱动器和文件夹显示每条路径的可用及总文件系统容量。在复制、移动、删除和安装作业后,包括可能改变磁盘使用情况的取消或失败操作后,它会刷新。
512 KiB 的 SMB 到本地和本地到 SMB 的副本在读写中重叠,有两个缓冲区,每个缓冲区大小为 4 MiB。读取线程仅存在当前文件,并在清理前加入。目录传输在目录或其子文件保持开放期间重用已认证的连接,包括目录创建和移除。上传内容与服务器文件的重叠,使用四个目标文件的有界窗口进行后续文件刷新。每次冲洗和关闭都必须成功,目录复制完成或移动移除源代码。拒绝目录列表的单文件传输和目的地保留同步完成。小读段在预期剩余大小时停止,使用一个字节的 EOF 检查;一个不断增长的源头继续正常流媒体。批量 SMB 请求使用一个有界且连续填充的窗口,与文件总大小无关。读取请求最高可达 1 MiB;写入保持最多 4 MiB 连续,以避免 Windows 目的地同时出现小文件扩展名。两者都尊重服务器协商的限制;SMB2.0.2 保留了其 64 KiB 的限制。小型套接字缓冲区可增加至 512 KiB,且不减少较大系统默认值。大份副本记录完整的文件时间,包括打开、冲洗和关闭。
文件支持的 PKG HTTP 响应,至少 4 MiB 的源读与有序套接字发送,使用两个缓冲区。原生文件每个缓冲区使用 2 MiB;至少 8 MiB 的 SMB 范围每个缓冲区使用 4 MiB 来扩大 SMB 请求窗口。读者在响应清理前被连接;资源故障则退回到顺序交付。短距离保持顺序,浏览器源保留其现有的范围缓存预取。HTTP 日志分别标识 SMB 源,并包含发送方等待源数据的时间 wait_ms。时间点会在连接间相加;读/发送时间可能会重叠。浏览器流式传输在其现有的 32 MiB 缓存中协商最多四个未完成的 1 MiB 上传。HTTP 会立即发送每个准备好的段,包括未对齐的区间。旧页面和服务器保留了两次上传窗口。
/data/shadowmount/smb.json 中最多保存 16 条连接,包括凭证,且仅拥有所有者文件权限。API 响应从不包含密码。编辑时保持密码空启则保持该密码;使用 “清除已保存密码 ”来移除它。在存储作业或 PKG 队列处于激活状态时,连接变更被拒绝。禁用连接可以隐藏其路径,但不会删除设置。不支持 SMB1 和共享的后台扫描/挂载。股票仅在明确浏览、检查和转让时才被联系。
构建需要 PS5 负载 SDK 的 libsmb2 头和静态库,以及现有的依赖关系。请参阅 中小企业通知 。第一个 make 还下载并构建一个校验和钉顶的 json-c 0.19 .deps/json-c(需要 Python 3、CMake 和补丁)。该私有库包含了 NDEBUG 对容器泄漏的上游修复;SDK 现有的 json-c 归档不被使用。本地构建和 CI 使用相同的依赖。PS5 的占位区域 API 在 JSON 解析中被禁用,以避免地方句号泄露并在 API 工作者之间共享可变的区域状态。
推荐的 FS 选择
.ffpkg): 这是 ShadowMountPlus 推荐的默认图像格式。.exfat) 来处理那些无法正常运行的游戏。.exfat) 镜像,使用 64 KB 的集群大小 。较小的集群会导致明显的性能损失。运行时配置(/data/shadowmount/config.ini)
此文件为可选。如果不存在,ShadowMountPlus 会在启动时从捆绑的 config.ini.example 模板创建它,并使用内置默认值,直到你取消注释覆盖。
支持的密钥(均为可选):
调试=1|0(1 使 log_debug 输出到控制台 + /data/shadowmount/debug.log;默认为 1)quiet_mode=1|0(1 抑制普通信息弹窗,但保留丰富的吐司;默认为 0)language=auto|<locale>(通知语言; 自动使用控制台系统的语言,例如 en-us、ru-RU ;默认: 自动 )api_bind_address=<IPv4>(HTTP/JSON API 绑定地址;默认:网络访问为 0.0.0.0;仅 PS5 访问使用 127.0.0.1)api_port=<1..65535> (HTTP/JSON API port; default: 10101)mount_read_only=1|0(默认:1)force_mount=1|0(挂载即使是损坏的文件系统;默认:0)persistent_image_mounts=1|0(1 保留在游戏启动之间挂载的发现图片;默认:0)app_install_all=1|0(1 分阶段新标题并通过库存批次 sceAppInstUtilAppInstallAll; 默认为 0,所有固件均为 0。在 FW 12.00+ 中,默认的每标题路径由 SceShellCore TitleDir 桥提供。)auto_remove_missing_games=1|0(1 自动在游戏源不可用时从系统库中移除;默认:0)auto_remove_games_with_dlc=1|0(1 允许自动移除已安装 DLC 的游戏;默认:0)auto_remove_missing_delay_seconds=<1..86400>(源必须保持不可用的时间;默认:300)image_ro=<image_filename>(可重复;该图像文件名强制只读模式)image_rw=<image_filename>(可重复;强制该图像文件名的读写模式)image_sector=<image_filename>:<sector_size>(可重复;强制逻辑设备扇区大小,而非文件系统集群大小)scan_depth=<1..2>(1 = 仅扫描一级子文件夹,2 = 同时扫描一个额外嵌套层;默认:1)recursive_scan=1|0(已废弃的兼容性密钥;1 力 scan_depth=2)scan_interval_seconds=<1..3600>(全扫描环间隔;默认:15)stability_wait_seconds=<0..3600>(处理前的最小源代码年龄;默认:10)exfat_backend=lvd|md(默认:lvd)ufs_backend=lvd|md(默认:lvd)nested_pfs_index_cache=1|0(在附加嵌套映像前请求包含 PFS 压缩文件索引缓存;默认值:0)backport_fakelib=1|0(1 挂载沙盒假图文覆盖层用于运行游戏;默认:1)fakelib_default_mode=完整|模拟器|禁用 (无单独覆盖的游戏模式;默认: 完整 ;网页设置中也有)fakelib_mode=<TITLE_ID>:default|full|emulators|disabled(每游戏模式,可重复; 默认恢复继承;128 条明确标题规则的共享限制)fakelib_exclude=<TITLE_ID>( 禁用的旧别名;可重复,最多 128 个标题;禁用所有匹配 PS4、PS5 或自制 ID 的假 lib 叠加;默认:无排除)update_emulators=1|0(1 更新匹配的文件夹/图片游戏模拟器文件;排除已安装的 PKG 和 fakelib2;默认:1)emulators_path=<absolute_path>(包含模拟器更新文件的文件夹;默认:/data/shadowmount/emus)auto_update_ampr=1|0(启动后 30 秒及每四小时检查新的 libSceAmpr.sprx;默认:0)ampr_update_url=<http_or_https_url>(AMPR 模拟器下载 URL;默认:https://github.com/drakmor/ampr_emu/releases/latest/download/libSceAmpr.sprx)global_fakelib=1|0(1 在文件夹存在时启用全局 fakelib 覆盖层;fakelib2 依然是独占的;默认:1)global_fakelib_path=<absolute_path>(全局 fakelib 文件夹;默认:/data/shadowmount/fakelib)global_fakelib_priority=game|global(当 global 和 game fakelib 同时存在时,覆盖优先级;默认:game)global_fakelib_exclude=<TITLE_ID>(可重复;禁用匹配标题的全局 fakelib 覆盖)fan_target_temperature=系统|<50..91>(自动风扇控制器目标,摄氏度,游戏开始时应用; 系统默认将风扇控制权交给主机)/data/shadowmount/autotune.ini 可以用 image_sector=<image_filename>:<sector_size> 覆盖 image_sector config.ini 的规则。扫描路径=<absolute_path>(可在多条线路上重复;默认:内置扫描路径列表如下)lvd_exfat_sector_size=<value>(默认:512)lvd_ufs_sector_size=<value>(默认:4096)lvd_pfs_sector_size=<value>(默认:4096;优化配置文件使用 65536 字节的 LVD 映射单元)md_exfat_sector_size=<value>(默认:512)md_ufs_sector_size=<value>(默认:4096)支持的通知语言:
| 语言 | 地理位置 |
|---|---|
| 阿拉伯语(沙特阿拉伯) | 阿尔-萨 |
| 中文(简体) | zh-CN |
| 中文(繁体) | 真是太棒了 |
| 捷克语 | cs-CZ |
| 丹麦语 | 达-DK |
| 荷兰语 | 荷兰-国家联盟 |
| 英语(英国) | en-GB |
| 英语(美国) | 美国 |
| 芬兰语 | fi-FI |
| 法语(加拿大) | en-CA |
| 法国 | 法语-法语 |
| 德语 | 去-DE |
| 希腊语 | 埃尔-格拉尔 |
| 匈牙利语 | 呼呼 |
| 英语 | 身份识别 |
| 意大利语 | 它 |
| 日本 | 是的,JP |
| 朝鲜语 | 科-克尔 |
| 挪威语 | 不不 |
| 波兰语 | pl-PL |
| 葡萄牙(巴西) | 分段-BR |
| 葡萄牙语(葡萄牙) | pt-PT |
| 罗马尼亚语 | 滚滚 |
| 俄语 | 鲁-鲁 |
| 西班牙语(墨西哥) | en-GB |
| 西班牙语(西班牙) | en-GB |
| 瑞典语 | 西南-东南 |
| 怀孕 | 那、那 |
| 土耳其语 | tr-TR |
| 乌克兰语 | 英国-联合 |
| 越南语 | en-VN |
公共 API 路由和 JSON 模式在 docs/api.md 中有文档说明 并以 OpenAPI 清单的形式提供。
按图像模式覆盖行为:
mount_read_only。mount_read_only=1 image_rw=PPSA1234-my-image.ffpfs image_rw=MYGame 123.exfat image_ro=legacy_dump.ffpkg image_sector=legacy-512-sector.exfat:512
持久图像挂载行为:
persistent_image_mounts=0 时,游戏开始时挂载背板图像,退出后释放。persistent_image_mounts=1 时,扫描过程中发现的图像会在发射间保持装载。每个标题的运行时层和回溯端口层仍仅在需要时挂载。每图像扇区覆盖行为:
image_sector 在 /data/shadowmount/autotune.ini 中匹配图像文件的优先级最高。image_sector=<image_filename>:<cluster_size> 写入 /data/shadowmount/autotune.ini,并要求你再次尝试挂载。的 512。所需的 65536 值包括 exFAT 分配单元和内部 LVD 值 secondary_unit;不要设置 image_sector=...:65536 请求此模式。扫描路径行为:
扫描路径=......,则只使用这些自定义路径。/mnt/shadowmnt/pfsc 和 /mnt/shadowmnt 总是自动添加。scan_depth=1(默认)时,只检查一级子文件夹。scan_depth=2 时,会检查一个额外的嵌套层。recursive_scan=1,则 ShadowMount+强制 scan_depth=2。隔 scan_interval_seconds 运行一次(默认:15)。stability_wait_seconds 更新的来源会被推迟到稳定(默认:10)。auto_remove_missing_games=1 时,只有当游戏源无法被 auto_remove_missing_delay_seconds 时,才会从系统库中移除。如果源在移除前再次可用,待删除将被取消。<game>/sce_sys;图像和回传源使用目标路径本身。回传叠加行为:
扫描路径 ,请使用:
<scanpath>/回溯移植/<TITLE_ID>/<scanpath>/backports/<TITLE_ID><suffix>/(例如,PPSA12345 游戏名称 ) 回溯端口文件夹会被忽略。/data/homebrew/backports/<TITLE_ID>/ 即使使用自定义扫描路径,仍可作为备用;这不会把 /data/homebrew 添加到正常的游戏扫描中。backports/<TITLE_ID> 目录添加到 ready 包 app0 中。文件使用纯重定向,缺失的目录子树使用目录覆盖层。每个包沙箱最多支持 256 个重定向条目。重定向状态遵循 NSFS 挂载身份,因此当 ShellCore 在同一路径下重建沙箱时,重定向会被重建。缺少回溯端口和非 NSFS 沙盒是无害的跳过。包自身或外部回移植的 fakelib2/fakelib 仍可用于后续的 common/lib pre-spawn 覆盖层。<TITLE_ID> 目录获胜。否则,按字节顺序选择以完整标题 ID 开头的第一个目录名称。文件和嵌套目录不是候选。fakelib2,然后是 fakelib;如果两者都不存在,则按相同顺序检查原始游戏源。所选目录挂载到运行中的游戏的沙盒 common/lib 中。选定的 fakelib2 保持排他性:无论是模拟器更新还是全局 fakelib 都无法替代或补充它。每场比赛的过滤和移除 libkernel.sprx 仍然适用,必要时使用缓存。update_emulators=1 会让 emulators_path 的匹配文件替换所选游戏 fakelib 中的文件,除非选择 fakelib2。安装的 PKG 从不将 emulators_path 合成到他们的假 lib 中。缓存在来源发生变化时被刷新,并在无游戏启动的七天后失效。/data/homebrew/backports/<TITLE_ID><suffix>/fakelib 中删除 libSceAmpr.sprx 和 libScePlayGo.sprx(后缀可能是空的)。丢失的文件是无害的跳过;删除失败会停止 fakelib 挂载。auto_update_ampr=1 时,ShadowMount+会在启动后 30 秒和每四小时检查一次 AMPR 更新。它会下载一个缺失或更新的模拟器,并在成功更新后显示通知。模拟器已应用 。否则回溯通知会添加模拟器,模拟器文件被替换时更新 。global_fakelib_priority 合并在游戏缓存中,除非选中的回移植包含 fakelib2。没有每个游戏的假库,全局文件夹单独使用,必要时会过滤缓存。global_fakelib_exclude=<TITLE_ID> 条目,跳过特定游戏的全局假图库,而无需禁用每局 fakelib。默认 、 完整 、 仅模拟器和禁用假自由模式。 默认设置继承了网页设置的 fakelib_default_mode 或 config.ini(初始满 )。明确的每场比赛模式覆盖了默认设置,包括完整模式。模式适用于所选游戏 fakelib(包括 fakelib2)和下一次发布的全局 fakelib;活跃坐骑保持不变。对应的配置条目为 fakelib_mode=PPSA12345:emulators 和 fakelib_mode=PPSA12345:full; 默认会移除覆盖。最后一个有效的冠军头衔获胜,包括遗产 fakelib_exclude 参赛。器仅挂载已安装 PKG 的常规文件,分别名为 libSceAppContent.sprx、libSceGameUpdate.sprx 和 libSceNpEntitlementAccess.sprx。文件夹/镜像游戏也允许 libSceAmpr.sprx 和 libScePlayGo.sprx。缺失的文件会被无声跳过;空选不会产生 fakelib 叠加。模拟器的更新遵循相同的允许列表。libkernel.sprx 会从选定的可写文件夹 fakelib 和参与的全局 fakelib 中移除。对于镜像游戏和已安装的 PKG,源文件保持不变,取而代之的是一个省略该库的缓存。如果无法创建所需的过滤缓存,未过滤的源将永远不会被挂载。fakelib_exclude=<TITLE_ID> 条目来禁用每游戏的 fakelib、fakelib2、global fakelib 以及针对特定游戏的缓存准备。/data、沙箱存储别名和 PKG app0 回溯端口依然启用。重新加载的排除条款会在下一次发射时生效;现有坐骑会一直保留到游戏结束。标题 ID 不区分大小写,必须有支持的前缀和五位数字;无效和超过 128 个标题限制的条目会被记录并忽略。/数据通过可写的空虚文件挂载,适用于 PS5(PPSA*)、PS4(CUSA*)和自制游戏。沙盒/mnt 仍然是本地目录:只有挂载在 /mnt/usb0 到 /mnt/usb7、/mnt/ext0 到 /mnt/ext1 和 /mnt/disc 的卷才会获得单独可写的 nullf 别名。空的挂载目录和其他主机 /mnt 条目会被跳过。存储别名会遵循文件系统的挂载/卸载事件,包括 USB 热插头和磁盘插入/弹出。游戏进程退出时,所有别名都会被移除。backport_fakelib=0 禁用沙盒 fakelib 观察者,包括全球 fakelib 和模拟器更新。backport_fakelib 正常工作,必须禁用独立的 BackPork 载荷。同时运行两者会冲突。游戏错误监控:
验证:
config.ini.示例 ,提供现成模板。芒特点命名
图像挂点可根据以下方式创建:
/mnt/shadowmnt/<image_name>_<hash>
PFSC 容器挂载点的创建方式包括:
/mnt/shadowmnt/pfsc/<image_name>_<hash>
图片布局要求(.ffpkg、.exfat、.ffpfs):
/sce_sys/param.json 或 /sce_sys/param.sfo 直接存在于图像根。/GAME_FOLDER/sce_sys/param.json(额外嵌套层级)。PFSC 容器布局要求(.ffpfsc):
pfs_image.dat 文件在 PFSC 容器中被视为 PFS 映像。.ffpfsc 及其嵌套的 .ffpfs/pfs_image.dat 映像使用版本 1.6 的 LVD 映射单元,等于逻辑扇区大小(默认为 4096 字节)。外部选择器保持 img_type=0x02,内部选择器保持 img_type=0x82。独立的 .ffpfs 源代码仅在 /data/... 或 /user/... 下使用优化配置文件;其他独立来源则使用 1.6 版本参数。未签名图像的签名验证仍然被禁用;设置 nested_pfs_index_cache=1,以便在附加嵌套图像前请求 PFSC 压缩偏移缓存。压缩 PFS 容器(.ffpfsc)
压缩 PFS 模式仅适用于嵌套图像。打包过程中,数据被零填充到 64 KB 扇区边界,因此压缩后的 PFS 应作为另一个图像的外部容器使用,而非直接作为游戏文件布局。
推荐布局:
MkPFS 使用 zLib 压缩。解压由硬件辅助,但吞吐量限制在 大约 150-250 MB/s。这大约是外置 USB 驱动器速度的三分之一,FFPKG/exFAT 镜像,或者内部硬盘速度的十分之一。在选择要打包哪些游戏时,请记住这一点。持续读取大量数据或流纹理的游戏可能会卡顿。
使用官方的 PSBrew/MkPFS 工具来打包 PFS 图像。
将未压缩的 PFS 图像打包到压缩的 PFS 中
首先创建一个未压缩嵌套的 PFS 镜像:
mkpfs pack folder --verify --no-compress --no-adjust-output-file-extension --version PS5 --inode-bits 32 \ './PPSA07923/PPSA07923-app' \ './pfs_image.dat'
然后将嵌套的图像(pfs_image.dat)打包到压缩的 PFS 容器中:
mkpfs pack file --verify --version PS5 --inode-bits 32 \ './pfs_image.dat' \ './PPSA12345.ffpfsc'
成功打包后,可以移除临时嵌套的镜像:
rm './pfs_image.dat'
将 exFAT 图像打包到压缩的 PFS 中
首先,使用以下方法之一创建一个正常的 exFAT 图像。 创建 exfat 图像 。嵌套的 exFAT 图像名称必须保留 .exfat 扩展,例如 PPSA12345.exfat。
Linux:
chmod +x mkexfat.sh ./mkexfat.sh ./PPSA12345-app ./PPSA12345.exfat
Windows:
make_image.bat "C:\images\PPSA12345.exfat" "C:\payload\PPSA12345-app"
exFAT 镜像必须包含游戏文件的图片根,不能额外顶层文件夹。
然后将 exFAT 图像打包到压缩的 PFS 容器中:
mkpfs pack file --verify --version PS5 --inode-bits 32 \ './PPSA12345.exfat' \ './PPSA12345.ffpfsc'
成功打包后,可以移除临时的 exFAT 镜像:
rm './PPSA12345.exfat'
扫描路径
默认扫描位置:
/数据/自制/data/etaHEN/games/mnt/ext0/自制/mnt/ext0/etaHEN/games/mnt/ext1/自制规则/mnt/ext1/etaHEN/games/mnt/usb0/自制软件 ../mnt/USB7/自制软件/mnt/usb0/etaHEN/games../mnt/usb7/etaHEN/games/mnt/USB0 ../mnt/USB7/mnt/ext0/mnt/ext1/mnt/shadowmnt/pfsc(挂载 PFSC 容器扫描)/mnt/shadowmnt(已挂载图像内容扫描)你可以用扫描路径=.../data/shadowmount/config.ini 中的条目覆盖扫描根。
手动安装列表
对于不应存在于正常扫描路径下的游戏,ShadowMountPlus 还会检查:
/data/shadowmount/manual.lst。
每行添加一个来源:
eboot.bin 或 eboot2.bin 以及 sce_sys/param.json 或 sce_sys/param.sfo 的游戏文件夹。.ffpkg、.exfat、.ffpfs 或 .ffpfsc。# 开头的行被忽略。示例:
/mnt/usb0/MyGames/PPSA12345
/mnt/usb0/images/PPSA54321.ffpkg
# /mnt/usb0/disabled/PPSA00000
manual.lst 会被监控是否有变化。当你添加新行时,ShadowMountPlus 会在写入后不久重新扫描,必要时挂载图片,并通过与普通扫描路径发现相同的流水线安装游戏。
手动安装状态被追踪为:
/data/shadowmount/manual.status
该状态文件由 ShadowMountPlus 管理。如果用户后来删除了手动安装的游戏并从 app.db 中消失,ShadowMountPlus 会在 manual.status 中标记为已删除,并从 中移除匹配的源代码行 manual.lst,这样它就不会被自动重新安装。如果你后来把同样的源路径加回 manual.lst,安装后会再次处理,状态也会更新。
你可以用转储安装器安装或准备本手册的游戏转储 工作流程,然后将生成的游戏文件夹路径或图片文件路径添加到 手动。一 。
推荐文件夹结构:
默认模式(scan_depth=1):
/数据/自制内容/<TITLE_ID>//data/etaHEN/games/<TITLE_ID>//数据/自制/回溯移植/<TITLE_ID>//data/etaHEN/games/backports/<TITLE_ID>/嵌套模式(scan_depth=2):
/data/homebrew/PS5/<AnyFolder><TITLE_ID>///mnt/ext0/etaHEN/games/<Collection><TITLE_ID>///mnt/ext0/etaHEN/games/backports/<TITLE_ID>/创建 exFAT 图像
仅推荐用于需要外置硬盘兼容的游戏。一般使用时,更倾向于使用 .ffpkg。
LVD 类型 5 / BFS 快速路径要求
对于 /data/ ... 或 /user/... 下的直接源路径,ShadowMount 会附加 .exfat 通过 LVD 表示为 img_type=5(Sv), 逻辑扇区为 512 字节,逻辑扇区为 64 KiB secondary_unit。这使得 LVD 工作者可以收集最多 31 个排队、64 KiB 对齐的请求,正好为 64 KiB,并通过 bfs_iosession_rw_sdimg/BfsSdimg 提交。不匹配的请求会通过正常的 vnode 路径继续。
核考虑该快速路径需要以下所有条件:
exfat_backend=lvd(默认)。/dev/mdctl 没有 LVD 映像类型或 BFS sdimg 批处理。exfat 源在 /data/ 和 /user/... 之外使用 img_type=0 直接画像。失败后不会进行第二次安装尝试。.exfat 文件直接存储在内部 BFS 上,通常位于下方 /数据 。USB/UFS/exFAT/PFS 上的图像,或嵌入压缩 PFS 中的 exFAT 图像,都使用正常路径。lvd_exfat_sector_size=512,且不添加 image_sector=<name>.exfat:65536 覆盖。逻辑扇区和 exFAT 分配单元是不同的几何结构。64 KiB 集群提高了资格,但无法强制所有访问通过批处理路径:exFAT 元数据和小型或未对齐的应用 I/O 仍使用正常的 vnode 路径。在 ShadowMount 调试日志中,合格的配置文件请求以 img=5 秒=512 秒²=65536 表示;内核仍然在内部进行最终的 BFS 和平台检查。
Linux(Ubuntu/Debian):
sudo apt-get update & sudo apt-get install -y exfatprogs exfat-fuse fuse3 rsyncmkexfat.sh./mkexfat.sh <game_root_dir> [output_file]chmod +x mkexfat.sh./mkexfat.sh ./APPXXXX ./PPSA12345.exfateboot.bin。mkfs.exfat -c 64K 格式。mkfs.exfat -c 64K <image>。macOS:
mkexfat_macos.sh(使用内置的 exFAT、磁盘映像和 rsync 工具)。chmod +x mkexfat_macos.sh && ./mkexfat_macos.sh ./APPXXXX ./PPSA12345.exfat。newfs_exfat -b 65536 后再复制游戏根内容。Windows:
make_image.bat(New-OsfExfatImage.ps1 + OSFMount 的封装)。make_image.bat 和 New-OsfExfatImage.ps1 保持在同一个文件夹里。cmd.exe 运行。64K 分配单元格式化,例如格式 X:/FS:exFAT /A:64K /Q。make_image.bat “C:\images\game.exfat” “C:\payload\APPXXXX”eboot.bin。powershell.exe -ExecutionPolicy Bypass -file .\New-OsfExfatImage.ps1 -ImagePath “C:\images\game.exfat” -SourceDir “C:\payload\APPXXXX” -Size 8G -强制覆写创建 UFS2 图像(.ffpkg)
FreeBSD:
mkufs2.sh./mkufs2.sh <game_root_dir> [output_file]chmod +x mkufs2.sh./mkufs2.sh ./APPXXXX ./PPSA12345.ffpkgeboot.bin。UFS2 新生系统参数:新飞行员 -O 2 -b 65536 -f 65536 -m 0 -S 4096mkufs2.sh 保持固定的块/片段/扇区配置文件,并根据源文件/目录数量自动调整 -i。——手动组装的估计:target_inodes ~= file_count + dir_count + 2048bytes_per_inode ~= image_size_bytes 4 / target_inodesbytes_per_inode 四舍五入到 4096 的倍数,然后保持在实际范围 65536......262144。262144,数万个文件用 131072,文件密度极高的图片只用 65536。GiB、60000 个文件和 4000 个目录的图片,-i ~= 8*1024^3 / (60000 + 4000 + 2048) ~= 130312,因此使用 -i 131072。Windows:
UFS2Tool.exe newfs -O 2 -b 65536 -f 65536 -m 0 -S 4096 -i 262144 -D ./APPXXXX ./PPSA12345.ffpkg-i 262144 作为基线,对于有大量小文件的图片则降低。安装与使用
方法1:手动有效载荷注入(端口9021)
使用有效载荷发送器(如 NetCat 图形界面或基于网页的加载器)将文件发送到端口 9021。
shadowmountplus.elf。方法二:PLK 自动装弹机(推荐)
在你的 plk-autoloader autoload.txt 中添加 ShadowMountPlus,确保每次启动都会自动启动。
示例配置:
shadowmountplus.elf !3000 kstuff.elf
故障排除
如果游戏未安装:
/data/shadowmount/config.ini 中设置 debug=1。/data/shadowmount/debug.log 以及 ShadowMount+ 的系统通知。路径=...... 设为,则仅扫描这些路径;/mnt/shadowmnt/pfsc 和 /mnt/shadowmnt 总是被扫描。scan_depth=1 只扫描一级子文件夹;scan_depth=2 扫描一个额外的嵌套层;recursive_scan=1 被视为弃用兼容模式,强制 scan_depth=2。源代码还不稳定 ,请调整 stability_wait_seconds(或等待源码复制/写完成)。<GAME_DIR>/sce_sys/param.json 或 <GAME_DIR>/sce_sys/param.sfo;.ffpkg / .exfat / .ffpfs):sce_sys/param.json 或 sce_sys/param.sfo 必须位于图像根(无额外的顶层文件夹);.ffpfsc):扫描嵌套支持的图像文件;容器内的直接游戏文件被忽略。缺少或无效的 param.json/param.sfo,可以通过 FTP 检查文件是否存在于 /mnt/shadowmnt/<image_name>_<hash>/ 下,并包含 sce_sys/param.json 或 sce_sys/param.sfo。.ffpkg=UFS,.exfat=exFAT,.ffpfs=PFS,.ffpfsc=PFS 容器)。<TITLE_ID> 只保留一个来源。如果游戏已挂载但未开始:
注册失败......)。注释
制作人员
Drakmor - ShadowMount 向 ShadowMountPlus 的演变
特别感谢:
我要评论 查看全部评论 (1)>>
k73玩家2026-11-03 13:01:02评论 (4) (0) 回复