zoukankan      html  css  js  c++  java
  • 关于Windows下子系统WSL的思考

    今天在一个论坛里看到了WSL的消息。

    什么是 WSL
    引用百度百科的一段话:

    Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

    介于实体机Linu系统与虚拟机之间

    其实就是Windows下的一个Linux子系统环境,根据我的测试,如果不关闭很多Windows服务的话,使用体验比虚拟机还要差(可能是我电脑太垃圾)。。。方便倒是挺方便的。

    不知道能否在虚拟机中的win10上安装WSL(到底是虚拟内核的复制还是只是虚拟了内核接口,这是一个问题,看来有必要研究一下VMware的原理了,还好代码开源了),值得一试。

    安装

    1. 启用或关闭Windows功能

    首先在搜索栏中搜索并打开“启用或关闭Windows功能”,勾选“适用于Linux的Windows子系统”项。只有开启这项设置才能正常安装WSL。重启即可,注意保存状态

    1. 安装 WSL

    在微软应用商店搜索 Linux,可以看到一系列 Linux 发行版,根据自己需要选择适合自己的发行版,这里我选用 Ubuntu 18.04 LTS,下载完成后启动,等待安装完成,输入账户和密码即可

    查看文件
    1.如果想在 Linux 查看其他分区,WSL可以 将其它盘符挂载在 /mnt 下。

    2.如果想在 Windows 下查看 WSL 文件位置,文件绝对路径:C:Users用户名AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalState ootfs

    其他设置,例如更新软件源,语言,更新内核,包,等操作,与实体机Linux系统运行指令基本一致。

    Windows10的linux subsystem不是虚拟机,而是子系统,是Windows的一部分,并不像虚拟机一样与宿主系统隔离,windows下的所有文件在Linux subsystem里都有映射的,所以在Linux subsystem里运行一些危险指令也会影响到Windows。

    ps1

    有些时候Windows下存在无法删除的文件

    出现下述问题:
    Windows 下无法删除某个文件,提示找不到该项目。

    原因
    文件的 Windows 索引丢失。
    解决方案:
    利用WSL子系统可以删除。
    问题解决

    由此可见WSL并不是通过调用NT接口来达到目的,可能是为了性能POSIX 系统调用直接调用文件系统层 API,也可以想象得到,如果还要调用顶层接口,那性能势必下降。

    Windows NT,API 是 WINDOWS 操作系统为开发人员编写程序提供的操作系统底层应用(如窗口前置,自动关机等)所预留的函数接口。可以看出这些接口是由多个操作组成的,还是不够底层,直接调用对性能是存在一定的影响。

    ps2

    由ps1联想到提升管理员权限
    windows下删除关键系统文件命令如下

    rd /D /S
    

    不过一般来说Windows管理员也没有足够的权限删除关键系统文件。
    提供一个思路,可以将Windows系统盘挂载在WSL上,然后利用Linux命令rm -rf/*,删除Windows关键系统文件。因为它不是虚拟机,它是活生生的系统。哈哈哈。

    PS
    WSL切换到root用户(我装的linux kali,根据情况而定)
    kali config --default-user root

    这样的话,有几个问题还是没明白,Windows系统的权限划分到底是怎样的,与WSl的权限有什么区别,为什么低权限方式运行WSL可以删除Windows管理员用户都无法做的事,难道WSL的root权限比Windows下管理员权限要高。

    个人理解:这个最高权限也可以理解为系统本身,由于Windows不是自由开源系统,因此封闭了部分操作,而大部分Linux系统的刚好是自由度很高的开源系列操作系统。因此操作全部留给用户,用户十分清楚自己需要干什么,不需要突然弹出一个对话框来引导用户。这样看起来就符合逻辑了,但是还没有查看WSL的官方文档,改天有时间查看一下。。。

    1.商业操作系统引入部分开源操作系统后,那原来开源的操作系统会不会成为付费的一部分。这对于开源操作系统的发展是不利的。

    2.针对Windows操作系统的病毒种类与数量是非常多的,如果WSL广泛应用的话,可以借助Windows来间接攻击Linux,这对于攻击Linux系统来说,比较危险。不知道微软后续会采用何种方法来保证WSL不受Windows来的攻击。个人思路:由于WSL与Windows就像两条水管插入内核这个大水池(并不是虚拟内核)中,或许可以通过添加4个单向过滤器的方式来解决。

    以上问题说不定在官方文档里已经解决了,抽空真的需要看下官方文档了。

    头有点大。。。

  • 相关阅读:
    天气查看
    省市区三级联动
    AJAX动态加载评论
    jquery插件实现分页
    obj-fit
    js使用正则表达式验证身份证格式
    弹性图片
    浏览器兼容问题
    Python3基础 __getattr__ 访问不存在的属性时,新增提示功能
    Python3基础 __delattr__ 在一个属性被删除时的行为
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832218.html
Copyright © 2011-2022 走看看