硬破Switch换大容量卡

先后尝试了几种办法,折腾了两天才最终搞定

硬件:

  • Switch oled
  • 旧卡:128G 闪迪extreme pro(俗称红黑) A2 V30 200MB/S的读取速度,140MB/S的写入速度
  • 新卡:512G 闪迪extreme (俗称红金) A2 V30 190MB/S的读取速度,130MB/S的写入速度
  • 读卡器:Lexar RW310,支持USB 3.2 Gen1,最高170MB/S的传输速度

软件:

  • 引导系统:Switch专用开源引导加载程序Hekate

  • 虚拟系统:大气层(Atmosphere)18.1.0

文件拷贝(翻车)

我先用最朴实无华的方式,格式化新卡后,把旧卡数据直接拷贝到新卡里面,成功进入了Hekate

随后进入Atmosphere虚拟系统以后,提示SD卡不存在,翻车

磁盘克隆(翻车)

根据我的计算机知识,只需要完整的拷贝磁盘的扇区物理数据,那么虚拟系统应该无法察觉到实际磁盘的更换,这也是Ghost安装的原理,拷贝完以后调整下扇区的分区,将其从128G扩展到512G即可

由于手头的mac上没有Diskgenuis或者是傲梅分区助手这类常用的磁盘克隆工具,在MacOS上只能使用dd来完成

dd

直接使用dd命令操作磁盘,会被提示需要在MacOS的恢复模式下先关闭保护模式

于是重启电脑,按住Command+R直到出苹果标,进入恢复模式,然后在菜单中选中实用工具-终端

输入命令来关闭保护模式

1
2
~ % csrutil disable
Successfully disable System Integrity Protection. Please restart the machine for the changes to take effect.

输入命令来查看磁盘克隆的源磁盘和目标磁盘

1
2
3
4
5
6
7
8
9
10
~ % diskutil list
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *127.9 GB disk2
1: Windows_NTFS Switch128 127.9 GB disk2s1

/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *511.9 GB disk3
1: Windows_NTFS Switch512 511.9 GB disk3s1

已经mount的磁盘不能作为dd的输出目标,先unmount

1
2
~ % diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk2 was successful

输入命令进行dd克隆

1
2
3
4
~ % dd if=/dev/disk2 of=/dev/disk3 bs=1M status=progress
1234+0 records in
1234+0 records out
15548928 bytes copied, 10.123 s, 1500 kB/s

克隆速度非常的慢,128G需要22个小时才能完成

Diskgenuis

列出了一些攻略,比如先导出数据到电脑上,然后再导入磁盘扇区数据到tf中,比如ghost

Switch虚拟系统换SD卡教程

任天堂Switch更换大TF卡不损数据的几种方法

使用Diskgenuis很简单:

2张卡对拷

img

选择克隆磁盘,然后在弹出选项选择

img

128G大约半小时就能搞定了,我猜是使用了多线程加速所以比dd快很多

新卡放入Switch以后果然可以正常运行

随后使用Diskgenuis的分区扩展工具(或是resize2fs)对分区进行扩容

自信满满的插入Switch,阿,翻车了,直接黑屏,连Hekate都进不去了

可能是虚拟系统会对文件表做校验,在中文资料中找到这样的一个讨论,和我遇到了一样的问题

绯夜雪兰

兄弟,以前3ds和正版ns都用过这个方法换大卡完全没问题,但这次在dg恢复扇区后,可以正常进虚拟系统,但一旦用原来这种调整分区的方法把剩余空间合并,就黑屏。。。。求解啊~

飞猫2020 -> 绯夜雪兰

[喜极而泣] 没遇到过 从技术角度来说 应该是没有任何问题才是

绯夜雪兰 -> 飞猫2020

[喜极而泣] 是的 我也是第一次遇到。。。之前3ds那些有虚拟系统的都ok从来没翻过,包括正版系统下直接这么换也非常方便 [偷笑]

贴吧上有一篇也是关于这个的 那边有两位遇到的也是说,需要删了重新再放一遍文件就好了。。原因不明,但推测里面的文件其实是已经损坏了。。。

weidooooo -> 绯夜雪兰

请问后来解决了吗,搜遍全网就你和我一样,256转到512,一显示sxos界面就黑屏

绯夜雪兰 -> weidooooo

有点儿久了 朋友,我记得是这样——照原来思路和方法调复制好分区后,先把里面的东西都考出来、考出来、考出来!划重点!我本来觉得这完全是扯淡,然后再重新考进去。。。居然就好了。。。我现在找不到原链接了,你可以用我提供这个信息再搜索下,真的,很神奇。然后这样操作后 好像需要开机到sx设置里面手动点一下进虚拟系统,以后就都正常进了···

Hekate分区+数据拷贝(不推荐)

既然问题出现在Hekate的识别上,那么由Hekate分区就应该可以解决这个问题了

在reddit上搜到一个board level repair, modding, and customization shop老板,分享的攻略

How to Migrate to a New SD Card on a Hacked Switch

根据文中描述,我的老TF卡有一个名为“EmuMMC->SD00”的文件夹,所以按照--- File Based EmuMMCs ---的方式去迁移数据即可

我做完了全部操作以后,进入Hekate成功,在进入Atmosphere后变成shell界面,报错提示

1
2
3
A fatal error occurred when running Atmosphére.
Title ID: 010041544d530000
Error Desc: std::abort() called (0xffe)

我搜了一下相关资料看到https://github.com/Atmosphere-NX/Atmosphere/issues/1378

I found this solution that worked for me : In Atmosphere, go to "tools" > "Arch bit . RCM . Touch . Pkg1/2" > "Fix Archive Bit"

这个点赞最多,不过手误把Hekate写成了Atmosphere

我根据这个进行了操作以后,成功进入了Atmosphere系统后SD卡可以正确识别了

但是破解相册中没有任何工具,提示No applications could be found on the SD card,没有DBI就没办法装游戏了

根据这个讨论https://www.reddit.com/r/SwitchPirates/comments/o32rf5/no_applications_could_be_found_on_the_sd_card/

Boot hekate, go to tools and fix archive bit.

emmm,我明明已经运行过一遍了,我只好硬着头皮,把磁盘根目录的switch目录中所有破解工具又删了重新复制了一遍,然后再运行修复工具"Fix Archive Bit"

再进入系统居然可以了,这就很迷惑了

文件拷贝+修复工具

Hekate分区有一个明显的缺陷,那就是它的分区工具只能格式化出FAT32的文件系统,最大只能放下4G的文件

以后是不能把超大游戏包拷贝进Switch里面,再从Switch安装的

考虑到最朴素的文件拷贝方式,是Hekate识别成功,但是Atmosphere失败,很像是可以通过"Fix Archive Bit"进行修复的

所以我又重新使用exFAT格式,格式化掉了新TF卡,直接从老TF卡拷贝了文件以后,在Hekate执行了"Fix Archive Bit"

嗯,这次OK了

MacOS兼容性问题

我搜了一些资料以后发现遇到修复文件问题的,都是MacOS系统,并且有分享说

如果是mac建议是用虚拟机,如果是单分区可用Carbon Copy Cloner 俗称CCC进行克隆,因为mac系统内复制黏贴TF文件会产生一些不必要的文件,导致自制系统失败,Carbon Copy Cloner本身是一个非常好的mac下的硬盘克隆软件。

Carbon Copy Cloner是一个收费软件,我下次试试看吧~

总结

在TF卡没有通过独立分区来安装Atmosphere的时候(实际上我也不觉得这是好主意,虽然tf卡分区后也许能提高一些性能,但是Atmosphere所在分区空间用满以后会出现系统损坏的问题,更重要的是,分区会影响tf卡的静态磨损算法,导致分区)

并且Atmosphere作为纯文件存在TF卡上的时候(也就是存在EmuMMC->SD00目录),简单的进行文件拷贝就可以迁移数据了,在出现文件系统的兼容性问题的时候(例如MacOS的拷贝问题):

1
"tools" > "Arch bit . RCM . Touch . Pkg1/2" > "Fix Archive Bit"

就能修复