玩转windows subsystem之异常处理

回顾

  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的探究已经非常明澈了吧。
探究未知之路总是布满荆棘,但我愿披荆斩棘,穿越刀山火海,送上我所探明的一切!

版权说明

本页地址为 https://post.zz173.com/detail/u1RxWe-BHb9SA5UyUYENaA.html,本文作者为落月
本文采用 署名-相同方式共享 3.0 中国大陆许可协议 ,分享、演绎需署名且使用相同方式共享。转载请务必保留本页网址和作者信息,否则即为侵权。

– EOF –