回顾

  1. 玩转windows subsystem之安装

  2. 玩转windows subsystem之对比虚拟机

  3. 玩转windows subsystem之路径优化

  4. 玩转windows subsystem之路径穿梭

概览

实际上,本章应作为第一节课来讲,但是因为我自己没经验,也没考虑到这点,所以,只能说我经历的坑发出来,
以避免你们也经历这个深坑。
我们在2. 玩转windows subsystem之对比虚拟机也说过,
和虚拟机对比,subsystem的安全性是个问题,出故障了怎么办?又没有快照。当时由于我对此subsystem了解有限,也没有好的办法,
实际上这是完全有办法避免的。

案例

一个真实的案例出现了----我的subsystem昨天崩溃了,可能是跟一个windows10的bug有关,但不论如何,就是崩溃了。
据我分析,是因为subsystem的系统文件缺失了。
这可怎么办?我制定了方案如下:

  1. 备份数据
    实际上这步应该早点进行,假如我刚安装好的时候就备份个干净的系统,也就没后面那么多事了。

  2. 重新安装

  3. 恢复数据

第1步很容易,可是第二步我进行不下去了。因为即使删掉了lxss这个文件夹也不行,去系统功能里关闭
windows subsystem 也不行。事情陷入了僵局。

方案

我又想了另外一个办法,用另外一台电脑也更新到预览版,安装subsystem后把系统文件给我复制出来。
6个小时过去了...
巨硬还是没有给我推送。
我想这干等不是一个办法,于是又在虚拟机里装了一个windows10,然后等推送...
12个小时过去了...
巨硬终于给我推送来了14379版本,我真是热泪盈眶啊。覆盖系统文件之后,终于恢复了正常。
料想此案例中,如果当初安装好直接就备份,哪有这个问题?

延伸

实际上,为了做这个教程,我用IDA分析了bash.exe,发现实际上他是对lxrun的一个封装。
lxrun是有参数的。
我们可以在命令行里看下:

Performs administrative operations on the LX subsystem

Usage:
    /install - Installs the subsystem
        Optional arguments:
            /y - Do not prompt user to accept
    /uninstall - Uninstalls the subsystem
        Optional arguments:
            /full - Perform a full uninstall
            /y - Do not prompt user to accept
    /setdefaultuser - Configures the subsystem user that bash will be launched as. If the user does not exist it will be created.
        Optional arguments:
            username - Supply the username
            /y - If username is supplied, do not prompt to create a password
    /update - Updates the subsystem's package index

看来这个lxrun才是真正用来管理linux subsystem的工具。通过这个工具我们可以:

  1. 安装

  2. 卸载(经测试普通卸载会留下家目录,/full选项则寸草不生)

  3. 设置默认启动用户.我们可以用/setdefaultuser root来默认用root用户启动。

  4. 升级。

结语

到了这里,基本上对subsystem的探究已经非常明澈了吧。
探究未知之路总是布满荆棘,但我愿披荆斩棘,穿越刀山火海,送上我所探明的一切!


rozbo
5.1k 声望507 粉丝