【搬运教程+实操】Sailfish X进入Recovery Mode及根分区扩容

各位使用Sailfish X的坛友们不知道有没有发现一件事:Jolla的存储空间中(设置 -> 存储),“用户数据(user data,实际即为home分区)”看起来还比较足,“系统数据(system data,实际为根分区)”则仅有2.4G左右,多装一点原生App,你会发现系统数据慢慢就会有告急的趋势。比如我的:

0_1511614421946_屏幕截图_20171125_001.png

其实我这个还算好,国外已经有的人因为根分区不足导致系统升个级都要卸一堆软件了。这要是以后软件装多了可怎么办?
好在,Sailfish X的分区采用LVM+ext4的方式,各位Linux党肯定听说过LVM(逻辑卷管理)有个可以调整逻辑卷大小的特性。因此在我们的home分区足够的情况下可以分出一部分空间给根分区用。正好,TMO和TJC上也已经有人讨论过并有教程了,为了方便各位中文用户,我就把操作过程用中文简述一下搬运给大家看,参考这里的链接: https://together.jolla.com/question/174491/sailfish-x-is-there-a-way-to-increase-the-size-of-the-system-data-partition/?answer=174494#post-id-174494 (没错这个问题是我答的233,而且我本来就是就是把人家在论坛上早就出过的教程贴了个链接发给人家,然后在本站又换成中文再发一遍,实际就是强行水一贴😂

注1:LVM里的逻辑卷叫分区可能不太准确,只是“home分区”“根分区”叫习惯了所以就这么讲了……各位大大们有准确的叙述可以纠正下
注2:Sailfish X这么安排分区也是有些原因的,这不是本文主题所以我就甩个链接给大家看了:http://merproject.org/meetings/mer-meeting/2017/mer-meeting.2017-10-18-08.00.html 第5条Sailfish X storage space
注3:【重要】本人是在Linux下进行的这些操作,Windows和Linux的差别个人所知道的也就是驱动和相应的软件怎么安装的问题,这些情况我会单独说明。鄙人由于没有微软系统的电脑,所以不敢保证本文中有所有命令在Windows下完全没问题。强烈建议坛子里有微软系统且有基础的大大们在Windows上测试一下(到进入Recovery Mode为止)随后对本教程提出指正

一、Sailfish X进入Recovery Mode
今天所说的扩容要在Recovery Mode下操作。各位玩过Jolla手机印度鱼和Jolla平板的坛友们对此肯定不陌生,而且Jolla的support网站都对这些设备进入Recovery Mode给出了详细教程。然而Sailfish X进入Recovery Mode目前官方还没有给普通用户放出明确的教程,但这也并不代表Sailfish X就不能进,相反的它在系统移植的文档里就给出来了。方法如下:
1、首先,找到你当初刷Sailfish X所用到的官方zip包,解压会发现里面有一个恢复镜像 hybris-recovery.img。Linux党只要把这个东西解压出来放到一个你记得住的目录里即可(后面要用到的fastboot工具需要安装android-tools,如果你用的是Linux刷的机肯定知道我什么意思)。Windows党由于需要这个包里的fastboot,所以可能需要都解压出来,并记住你解压后的目录
2、手机关机,进入fastboot模式连接电脑。对,当初你给机子刷上系统的时候是做过这步的。什么?你忘了?或者你现在用的电脑不是你当初刷机用的那台?好罢……忘了刷机步骤随时可以捡起小马哥的教程来看:https://mer.itviewer.net/wiki.php?id=sailfish_x刷机 看“驱动安装”那步:“手机关机,按住音量+键同时将数据线插入电脑USB接口,待手机指示灯变为蓝色,手机进入fastboot模式”。由于我是Linux党,不确定Windows平台下进recovery需不需要驱动。如果不需要的话直接接着看下一步。需要的话就按小马哥给的教程装驱动就好
3、Linux用户请打开终端并cd进入恢复镜像所在的目录(如果你上述解压步骤全部都的是命令行那直接cd过去就行了),Windows用户,没记错的话可以直接在资源管理器中打开你解压后的目录,Shift+右键在此处打开命令窗口(有可能需要管理员权限),或者打开cmd后用cd命令再进入你的解压目录即可。对cmd命令行操作不熟的可以百度稍微学习一个(其实我因为很久不用微软所以我也不熟……)。然后输入命令:

fastboot boot hybris-recovery.img #Linux需要使用sudo或者干脆切换到root用户来操作

回车后等出现 finished. total time: ***s(***是你机子上实际花了多少秒,一般时间很短)的时候,你会发现手机屏幕上出现一行字(以下是用Linux平台操作的实拍图):

0_1511626901473_fastbootrec.jpg

一切准备就绪,你可以直接使用telnet进入Recovery Mode了。接下来,Windows党可参考如下帖子进入Recovery Mode(安装RNDIS、telnet并指定IP地址及连接):http://tieba.baidu.com/p/3436785003 。Linux党,输入屏幕上给出的命令 telnet 10.42.66.66 回车。最后,我们看到如下界面:

0_1511626572864_sailfishxrecovery.png

Recovery Mode就进入成功了

二、调整分区大小
进入Recovery Mode后,选择3进入Shell。之后你可以用lvm的工具(可能叫lvm shell我猜的不确定)查看目前的逻辑卷情况:

/ # lvm
lvm> lvscan
  ACTIVE            '/dev/sailfish/root' [2.44 GiB] inherit
  ACTIVE            '/dev/sailfish/home' [18.25 GiB] inherit
lvm>

(这里的 / #lvm> 是命令提示符,在代码区块里的一些大段命令里我会把提示符也打出来,各位输命令的时候别把提示符也一块输了)
之后输入 exit 来退出lvm的shell。接着输入:

resize2fs /dev/sailfish/home 11G #11G只是个例子,注意你输入的这个大小要比你的已用空间大,不然数据很可能就损毁了

然后再次输入lvm进入lvm的工具,接下来就可以般移空间了:

/ # lvm
lvm> lvresize -L -2048M /dev/sailfish/home #这步2048M就表示你打算从home里拿出多少分给root。我用的2048也就是2G,你可以自选大小,注意要比你resize后的home和原home大小之差要小。注意参数-L是大写

接下来会问你是否确定,没什么问题的话输入y回车就好。然后

lvm> lvresize -l +100%FREE /dev/sailfish/root #注意参数-l是小写

一样,问你的话就输y回车
然后输入 exit 来退出lvm的shell。最后,先后输入

resize2fs /dev/sailfish/home

resize2fs /dev/sailfish/root

执行完之后你可以再回过头来用lvm看看root和home的大小是不是变了

最后输入 exit 退出Shell,然后选2 Reboot Device,手机重启。然后进设置 -> 存储看看系统数据有没有变大?

0_1511627309055_屏幕截图_20171125_002.png

后注:虽然我在本文中尽可能地阐述了一下操作细节,但仍不是非常推荐对命令行不熟悉的坛友们操作。毕竟调整分区属于风险度比较高的操作。如果要做的话,一不建议复制粘贴,二敲命令的时候一定要检查检查再检查,确认无误再回车。如若手机因为本教程砖了,如果不是我教程本身的原因,鄙人可负不了责……

最后,水贴完毕,逃(

P.S.: 新手实在不会玩markdown……本来命令是准备用代码区块

$ sudo fastboot boot hybris-recovery.img # 注释长这样
$ telnet 10.42.66.66

这么来的,可是一遇到root的命令提示符“#”后面就直接会用注释的形式显示了

/ # lvm #这个不应该是注释啊……

所以我只能用行内代码来写了……看上去的确实不够舒服……唉,反正是水贴也不在意这么多细节了……

===========
更新:感谢鸟张大大提供本站markdown的出处,改了个语法方式现在好看多了……
(顺便翻了下鸟张大大的旗鱼命令汇总贴,貌似用到的有objectivec,cs,css,apache,js这些)

@天苯【搬运教程+实操】Sailfish X进入Recovery Mode及根分区扩容 中说:

/ # lvm #这个不应该是注释啊……

这个锅markdown不背,讲道理#就是注释的功能,并且第一个#是表示root权限的意思,不属于代码的一部分❀🐥

———扬帆起航🚢

@birdzhang 但是这里#后面的显示和注释一模一样……如果这个是表示root权限的话为啥和注释看不出区别呢……

@天苯 ```是代码块,只能渲染代码的格式。

———扬帆起航🚢

@BirdZhang 那要是处理命令行的话就只能用行内代码了么……?我google了一下好像要支持我说的特性的话用的是```console,但我试了本站好像不支持这个……

@天苯 Nodebb的markdown用的这个 https://github.com/julianlam/nodebb-plugin-markdown
有些自己魔改的支持很多,但那种兼容性不好

———扬帆起航🚢

@birdzhang 谢谢鸟张大大……我把这里的highlight里所有支持的语言都试了一遍,最后选了cs……虽然还是注释但至少不是斜体那么别扭了……

支持一哈

试用了,方法Windows 还是按照以前的Jolla 方法进入rec

@kurt 是我给的那个贴吧链接里说的方法?IP地址是自己在PuTTY里设置?还有Win应该不会连恢复镜像都不需要罢……

Windows 进入是输入192.168.1.14和Jolla 一样,只是进入rec需要fastboot,楼主的帖子还是很好的,支持,已经成功扩张了的

@kurt 也就是说Windows用fastboot启动恢复镜像以后就完全按照那个贴吧的帖子来操作就可以了罢。感谢测试。看看我二楼修改得可以否?

只是在 windows进rec方法需要输入192.168.1.14其他的和楼主教材完全一样

与 旗鱼俱乐部 的连接断开,我们正在尝试重连,请耐心等待