文章目录

  • (零)前言
  • (一)安装
    • 1.1 安装其他发行版
  • (二)主机与网络
    • 2.1 桥接网络
    • 2.2 固定IP地址
    • 2.3 改主机名
    • 2.4 hosts文件
  • (三)启动运行
    • 3.1 新建用户
    • 3.2 默认登录用户
    • 3.3 默认启动目录
    • 3.4 通过Windows Terminal启动
    • 3.5 检查WSL状态
  • (四)网络服务
    • 4.1 安装ssh等
    • 4.2 启动服务
    • 4.3 在CentOS上我已经不会了
    • 4.4 自动运行服务
      • 4.4.1 Windows下的启动Ubuntu脚本
      • 4.4.2 Linux下的启动脚本
      • 4.4.3 不要输入密码
  • (五)查看WSL资源
    • 5.1 默认已挂载Windows盘符
    • 5.2 限制WSL使用的资源
  • (六)闲聊

(零)前言

这不是教程……

随着Windows11发布,WSA(Windows Subsystem for Android)都到来了。还不试试WSL么:)
还有VS2022发布了,Platform Toolset 可以选 WSL2 Toolset。真的不试试么?

什么?你买了VMware Workstation Pro?好吧请自行忽略……

请注意:WSL和其他虚拟机软件冲突,如果你启用了WSL,则VMware虚拟机就不能启动了。
虽然可以临时关闭WSL,但是需要重启生效。重启来重启去,慎重。

(一)安装

现在已经是WSL2啦。
而且微软官方给了一步直接安装的办法:《安装WSL》
默认装好是Ubuntu。

不需要再分步安装组件,升级,安装Linux发行版……等等了。
但是微软可能没有考虑到咱网速那么慢。
所以我取巧,先一键安装:

wsl --install

中途如果发现下载镜像慢,就果断停掉它,再自己去应用商店安装Ubuntu(应用商店快得多)。
也许中途慢和被停掉的是别的东西,那么请参考官方文档:《手动安装WSL》

总之都2022年了,安装完全不是问题。

1.1 安装其他发行版

默认安装Ubuntu以及Windows应用商店里的Linux发行版,都没有任何困难。
由于咱客户装的都是RHEL,那么我们自然该用CentOS的。
但CentOS商店里没有,也不能用官方ISO直接装。

好在有个牛人提供了WSL能装的CentOS项目:在Github上。
注意:他最新的release是CentOS8。

建议用CentOS7,因为8就要不维护了(这个另说了,参见CentOS主页,维护周期,以及CentOS Linux >> Stream区别)。

安装不用说,解压到你指定的目录,执行CentOS7.exe就OK了。

(二)主机与网络

和VMware,VirtualBox等虚拟机不同,WSL是子系统(虽然也是基于HyperV虚拟机)
虽然微软给它独立的IP,但它默认继承了你Windows的主机名,hosts文件。
无法固定的网络环境,以及物理机ping 127.0.0.1都会ping到WSL里面的神奇体验。

2.1 桥接网络

亲,不建议桥接网络哦。
由于WSL现在基于HyperV,确实可以通过修改HyperV的网络配置来实现桥接。
不过重启就不行了,还可能影响正常上网。
所以老老实实的子网吧。

2.2 固定IP地址

但是子网也没有固定的IP地址啊!用起来很不方便!!!
国外某大神说:

既然不能固定它的IP地址,那么换个思路,给它绑定一个固定的新IP吧

我看到讨论的原文,但是忘了记录地址,所以没办法给链接,Sorry。
原理就是给Windows和WSL都增加绑定一个IP地址,可以把这段代码保存到一个批处理文件中,每次计算机重启后,如果你要用WSL,都需要执行一次(管理员权限执行)。

我没改IP,大家抄的也都是这个IP(神奇)。
按照下文,所以你的Windows是192.168.50.88,而WSL是:192.168.50.16。
pause是为了显示可能的错误,而不是一闪而过。

:: Add an IP address in WSL, 192.168.50.16, named eth0:1
wsl -d ubuntu -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1:: Add an IP address in Win10, 192.168.50.88
netsh interface ip add address "vEthernet (WSL)" 192.168.50.88 255.255.255.0pause

如果是CentOS那么前面那句改一点点(就是名字而已ubuntu vs CentOS7):

:: Add an IP address in WSL, 192.168.50.16, named eth0:1
wsl -d CentOS7 -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1

执行完了稍等一下,绑定的IP没那么快,等一下才能访问。

2.3 改主机名

不能正常的用改Linux主机名的方法,改了没用,只能:

  • 改Windows的主机名,WSL下也会变(废话,有啥用?)。
  • 新建/修改配置文件:/etc/wsl.conf ,加入下面配置。
[network]
hostname=shionlnx

2.4 hosts文件

默认WSL的hosts文件继承自Windows(子系统嘛)。
挺方便的,我们可以在hosts里面把固定的那2个IP,指定主机名:

$shion@shionlnx ~> cat /etc/hosts
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1       localhost
127.0.1.1       shionlnx.localdomain    shionlnx
192.168.168.15  Shion-Haier
192.168.50.16   Shionlnx# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

不想它自动生成/etc/hosts,也是修改2.3那个配置文件。

[network]
generateHosts = false

DNS同理,不要自动生成:/etc/resolv.conf,则修改:

[network]
generateResolvConf = false

(三)启动运行

3.1 新建用户

如果你自动安装,或安装的是Ubuntu,那么恭喜你已经新建了一个用户。
但是root用户没有密码,需要自己设置一下。

如果你安装了CentOS,那么你现在就是root……
需要自己建一个普通用户。

普通用户如果需要管理员权限,也需要修改配置,建议加入有管理员权限的组就OK了。

3.2 默认登录用户

如果想改变登录WSL时的默认用户,需要在Windows下执行指令,比如我的:

C:\>ubuntu config --default-user shion

看看完整的帮助:

C:\>ubuntu --help
Launches or configures a Linux distribution.Usage:<no args>Launches the user's default shell in the user's home directory.install [--root]Install the distribuiton and do not launch the shell when complete.--rootDo not create a user account and leave the default user set to root.run <command line>Run the provided command line in the current working directory. If nocommand line is provided, the default shell is launched.config [setting [value]]Configure settings for this distribution.Settings:--default-user <username>Sets the default user to <username>. This must be an existing user.helpPrint usage information.

3.3 默认启动目录

如果你直接打ubuntu指令,就可以进入wsl并进入用户的home目录。
这个和我们ssh到一台Linux主机是一样的。

C:>ubuntu

顺便,如果你用的指令是:

C:>wsl.exe -d Ubuntu

那么进入wsl是OK的,但是你会在Windows下的当前目录(纳尼?)

3.4 通过Windows Terminal启动

就是Windows终端,一个很方便且挺好看的Win10现代应用。
什么命令行的玩意儿都可以加进去,如果是正常安装Ubuntu,那么里面应该有了此项。

当然,图中我并没有用Linux清一色的企鹅图标,Ubuntu和CentOS的图标是自己设置的。

3.5 检查WSL状态

并不是终端关闭,WSL就会停止运行。
所以需要检查发行版运行情况,比如下面就只有Ubuntu在运行。

C:\>wsl --list --running
Windows Subsystem for Linux Distributions:
Ubuntu (Default)

不管运行没,看装了哪些发行版:

C:\>wsl --list
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
CentOS7

看WSL本身状态(其他不列举了,通过wsl --help看帮助吧):

C:\>wsl --status
Default Distribution: Ubuntu
Default Version: 2Windows Subsystem for Linux was last updated on 2021-11-27
The Windows Subsystem for Linux kernel can be manually updated with 'wsl --update', but automatic updates cannot occur due to your system settings.
To receive automatic kernel updates, please enable the Windows Update setting: 'Receive updates for other Microsoft products when you update Windows'.
For more information please visit https://aka.ms/wsl2kernel.Kernel version: 5.10.60.1

(四)网络服务

4.1 安装ssh等

WSL和普通Linux在安装各种软件上并没有区别。
Ubuntu用apt,CentOS用yum,安装JDK环境,安装SSH等服务。此处略过……

4.2 启动服务

但是启动不太常规,不能这样:

$shion@shionlnx ~> systemctl status sshd
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
$shion@shionlnx ~>

Ubuntu只能用:

$shion@shionlnx ~> service ssh status* sshd is running
$shion@shionlnx ~>

4.3 在CentOS上我已经不会了

而CentOS嘛,还是指向systemctl了:
PS:下面能运行是做了改动的,并且我在CentOS上还没成功开启telnet……

$shion@Shion-Acer ~> sudo systemctl status sshd
sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service, enabled)Active: active (running)
$shion@Shion-Acer ~>

具体改动是参考:《这个项目》
用systemctl.py,代替原有的systemctl执行文件:
下面取得systemctl.py,访问github的curl指令我根本就没成功,文件是另外设法下载的。

mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl

4.4 自动运行服务

4.4.1 Windows下的启动Ubuntu脚本

在windows下做一个批处理脚本文件来启动Ubuntu。
重启后点击这个脚本,就可以启动Ubuntu了+顺便开启服务。

脚本不建议随Windows系统自动运行,除非你每次开机必开WSL使用。

bat批处理脚本如下:

ubuntu run sudo /etc/init.wsl start
pause

或者一个vbs脚本:

Set ws = CreateObject("Wscript.Shell")
ws.run "ubuntu run sudo /etc/init.wsl start", vbhide

第二个vbs脚本可以无声无息的偷偷执行(报错咋办?)
第一个bat执行后可以看到:

C:\>ubuntu run sudo /etc/init.wsl start* Starting OpenBSD Secure Shell server sshd                  [ OK ]* Starting internet superserver xinetd                       [ OK ]C:\>pause
Press any key to continue . . .

4.4.2 Linux下的启动脚本

从上面可以看到实际上调用的是:

/etc/init.wsl

我们编辑它,加入你想启动的服务,比如我这启动了2个:

$shion@shionlnx ~> sudo vim /etc/init.wsl#! /bin/sh
/etc/init.d/ssh $1
/etc/init.d/xinetd $1

给它执行权限,确认一下有x权限了:

$shion@shionlnx ~> sudo chmod +r /etc/init.wsl
$shion@shionlnx ~> ll /etc/init.wsl
-rwxr-xr-x 1 root root 53 Dec  6 15:54 /etc/init.wsl*
$shion@shionlnx ~>

差不多了吧……
不对!到目前为止,你在Windows下执行bat脚本时,会因为sudo要求你输入密码。
而隐藏窗口的vbs则因为等不到你的密码而失败。

4.4.3 不要输入密码

需要编辑sudoers文件。

$shion@shionlnx ~> sudo vim /etc/sudoers
#靠下的位置加入,避免被覆盖
%sudo   ALL=(ALL) NOPASSWD: /etc/init.wsl

现在应该比较像一台Linux服务器了,用吧:)

(五)查看WSL资源

5.1 默认已挂载Windows盘符

呐,最下面两行,因为我只有2个盘。

$shion@shionlnx ~> df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        251G  1.9G  237G   1% /
tmpfs           4.9G     0  4.9G   0% /mnt/wsl
tools           954G  354G  601G  38% /init
none            4.9G     0  4.9G   0% /dev
none            4.9G   12K  4.9G   1% /run
none            4.9G     0  4.9G   0% /run/lock
none            4.9G     0  4.9G   0% /run/shm
none            4.9G     0  4.9G   0% /run/user
tmpfs           4.9G     0  4.9G   0% /sys/fs/cgroup
drivers         954G  354G  601G  38% /usr/lib/wsl/drivers
lib             954G  354G  601G  38% /usr/lib/wsl/lib
C:\             954G  354G  601G  38% /mnt/c
D:\             1.9T  1.3T  592G  69% /mnt/d

5.2 限制WSL使用的资源

默认WSL可以使用主机的全部CPU和内存资源,
可以通过配置文件加以限制:
新建或编辑这个配置文件:

C:\Users\用户名.wslconfig

内容如下一目了然,根据自己的实际情况调整就OK了。

[wsl2]
memory=10GB
processors=8
swap=16GB
localhostForwarding=true

既然Windows的盘符都挂载了,也可以WSL里面来弄:

$shion@shionlnx ~> cat /mnt/c/Users/Shion/.wslconfig
[wsl2]
memory=10GB
processors=8
swap=16GB
localhostForwarding=true

(六)闲聊

目前发现各种应用在WSL下运行正常。
vs2022可以利用wsl进行编译(速度还挺快)。

CentOS(WSL)整体稍慢于CentOS(VMware),某些特定的程序慢很多。
Ubuntu(WSL)整体快于CentOS(VMware)。

同一个程序Ubuntu(WSL)最高比CentOS(WSL)快一倍(蛤???)

文件读写程序的Linux版本在Ubuntu(WSL)下比外部Windows快(?蛤_蛤?)


继续研究,想到就记录,未完待续……

大家来玩WSL(Windows Subsystem for Linux)相关推荐

  1. WSL:WSL(Windows Subsystem for Linux)的简介、安装、使用方法之详细攻略

    WSL:WSL(Windows Subsystem for Linux)的简介.安装.使用方法之详细攻略 目录 WSL的简介 WSL的安装 WSL的使用方法 WSL的简介 Windows Subsys ...

  2. wsl(Windows Subsystem for Linux)启动多个子系统和设置默认启动子系统

    WSL的全称是Windows Subsystem for Linux Windows 10在开发者模式下可以使用linux子系统,这个子系统需要在Microsoft Store中下载安装 如果你已经在 ...

  3. WSL(windows subsystem for linux)安装错误:安装过程中遇到错误,但可以继续安装。组件: ‘WSL 内核‘ 错误代码: 0x80072f78解决方法

    文章目录 问题来源 解决 参考 问题来源 使用管理员身份打开powershell,输入 wsl --install 之后等待安装: 结果,出现如下问题: PS C:\WINDOWS\system32& ...

  4. windows10 上运行 linux -- WSL(Windows Subsystem for Linux)

    1 - Microsoft Store 搜索linux,下载Ubuntu应用 2 - 打开windows功能 并重启 3 - 打开Ubuntu App 创建用户(不能使用root)

  5. WSL(Windows Subsystem for Linux) 适用于Linux的Windows子系统

    打开 Microsoft Store , 搜索 Linux .选择 Ubuntu , 仔细看介绍,尤其是安装前的说明 ========================================= ...

  6. win10 WSL windows subsystem for linux update setup wizard ended prematurely

    从microsoft官网上看的安装过程,结果触发了这个错,搜了下有人说什么更新.net 4.5,而我.net是4.8,未果 解决方案: 开始菜单搜索 启用或关闭windows功能 勾选适用于Linux ...

  7. WSL/Windows Subsystem for Linux based on PICO

    Refer to https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux

  8. 把windows装到linux下,如何将WSL(Windows Subsystem for Linux 2)安装到Windows 10?

    原标题:如何将WSL(Windows Subsystem for Linux 2)安装到Windows 10? Windows 10凭借大受欢迎的WSL(Windows Subsystem for L ...

  9. WSL安装Oracle,折腾记录:WSL(Windows Subsystem for Linux,Windows上的Linux子系统)安装后的环境配置-Go语言中文社区...

    WSL(Windows Subsystem for Linux,Windows上的Linux子系统)的安装比较简单,教程网上较多,此处略过.安装后须要进行一系列配置(如软件源配置.中文配置.图形化配置 ...

  10. linux龙芯自动挂载u盘,Windows Subsystem for Linux (WSL)挂载移动硬盘U盘

    WSL想通过移动硬盘处理一些数据,结果进去了无法发现移动硬盘,于是搜了好久也没有一个正确的解决办法,终于找到一个,现在贡献出来与大家共享. WSL比起linux挂载硬盘简单一些.而且windows本身 ...

最新文章

  1. 月薪50K的机器学习工程师,需要具备哪些条件?
  2. 用AI实现C++、Java、Python代码互译,运行成功率最高达80.9%
  3. 数论基础--洛谷P1072 Hankson 的趣味题
  4. AlexNet:深度卷积神经网络的ImageNet分类
  5. samll note
  6. MySQL中表的操作
  7. mysql中去重的用法_mysql中去重 distinct 用法
  8. JBoss Drools –入门
  9. Linux内存管理之基本概念介绍(一)
  10. sql server列转行怎么提高效率_行转列、列转行
  11. 虽说下班时间自己说了算
  12. LeetCode Interleaving String
  13. .tar文件和.tar.gz文件
  14. Leetcode207---课程表(逆拓扑排序)
  15. 在ios中运用core animation暂停和继续动画
  16. 电商项目的app学习笔记(一)---webpack相关配置
  17. Android傻瓜式脚本录制
  18. 【vue】vue中如何实现SPA 单页面应用_09
  19. px和毫米的换算_px和mm换算(px相当于多少毫米)
  20. 系统架构师从入门到精通1.0 Ceph集群部署无报错流畅版本

热门文章

  1. Glide之GlideModule
  2. 在ANSYS workbench中如何对物体局部区域进行网格细密化
  3. CList POSITION
  4. 《合成孔径雷达成像——算法与实现》之【0】仿真汇报
  5. void*的用法【转】
  6. #include<>和#include“ “
  7. 自定义注解实现RBAC权限校验,不要再说你不会了
  8. Selenium原理以及Python从零实现
  9. 神经网络学习(3)————BP神经网络以及python实现
  10. Android9.0对非 SDK 接口的限制