WSL功能配置

1.简介

随着Windows Subsystem For Linux 的发布,Windows已然成为最大的Linux发行商,Linux系统在服务器领域有得天独道的优势,平时我们在Windows下写的一些程序传送到Linux下之后总会有些许不兼容,因此在Windows系统下搭建我们的Linux子系统开发环境便成了很有意义的意见事情。

2.环境确定

Windows每个系统版本对应的WSL功能不一,我们要确认我们的系统版本号,再进行对应的安装,目前的我操作系统版本为1803,低于这个版本的系统运行linux服务(LNMP)时无法在后台使用,程序会随着bash窗口的关闭而终止,那可就相当尴尬了,只要把命令窗口关了就什么都没了,太不方便了,所以这里推荐大家使用1803以上的操作系统。

注: 这里的操作系统都是说windows10,只有windows10才有wsl功能。

3.配置WSL

3.1 安装WSL

  1. 在设置-》更新和安全-》开发者选项中开启开发者模式
  2. 进入 设置-》应用和功能-》程序和功能(控制面板-》程序-》程序和功能),点击启动或者关闭Windows功能,勾选适用于Linux的Windows子系统选项,而后开始安装并且重启计算机。
  3. 进入我们的Windows商城,下载我们的Linux子系统,在Windows商城有很多Linux子系统(OpenSUSE ,Ubuntu,Debian,Kali Linux)等,这里我们随便下载一个即可,由于习惯问题,我选择Debian系统。
  4. 安装完Debian系统之后,我们可以在启动菜单找到他,运行进入安装界面,默认把系统装在C盘(后面会讲如何将系统移植到别的盘,以及对系统备份等问题),之后会让你输入一个用户名和密码。这样我们的Debian系统就安装完成了。

3.2 WSL基本配置

  1. 配置软件源,为后面的操作加速!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sudo nano /etc/apt/source.list 进入编辑界面,将内容修改为以下文本(提高速度)
    deb http://mirrors.163.com/debian/  stretch main non-free contrib
    deb http://mirrors.163.com/debian/  stretch-updates main non-free contrib
    deb http://mirrors.163.com/debian/  stretch-backports main non-free contrib
    deb-src http://mirrors.163.com/debian/  stretch main non-free contrib
    deb-src http://mirrors.163.com/debian/  stretch-updates main non-free contrib
    deb-src http://mirrors.163.com/debian/  stretch-backports main non-free contrib
    deb http://mirrors.163.com/debian-security/  stretch/updates main non-free contrib
    deb-src http://mirrors.163.com/debian-security/  stretch/updates main non-free contrib
  2. 进行源更新 sudo apt-get update

  3. 为root用户增加密码(每次sudo输入密码太麻烦) 执行 sudo passwd root 后输入密码
  4. 切换我们的用户为root 用户 su root ,而后对服务器进行配置,至于LNMP环境搭建,看我其他文章。

3.3 WSL系统备份还原

3.3.1 解决系统安装后转移到在C盘以外报错的问题:

我们安装Debian系统之后,默认在C盘,其实无法将安装后的系统转移到其他盘的真正原因也是无法复制系统,因为我们的Linux具有权限问题,磁盘格式是etx4的,在Windows下复制,是以其文件系统NTFS格式进行复制,只复制文件,没办法复制我们WSL服务为我们所模拟出来的Linux权限,因此导致系统无法运行。故而我们只能让其安装的时候就在D盘,而不是让系统默认安装在C盘,我们需要使用Dism++从系统拿到Debian的安装包,即利用Dism++工具 从 C:\Program Files\WindowsApps\TheDebianProject.DebianGNULinux_76v4gfsz19hv4目录下取出 Debian.exe 和 install.tar.gz两个文件,而后在D盘创建一个文件夹名叫Linux,将这两个文件放进去,运行Debian.exe(管理员权限),即可进行安装。

3.3.2 注册表配置备份

我们安装Debian系统后,会在注册表生成文件\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss,对其进行备份之后,每次重装系统就可以安装该注册表来注册我们安装在D盘的Debian系统,我们所说的备份也要基于它,我们将其保存为back.reg(关于注册表如何备份参见百度),右键编辑文件可以看到起结构有个PathBase节点,其对应的是我们安装的WSL的所在目录。

3.3.3 系统备份
3.3.3.1 通过Windows提供的VHDX虚拟磁盘文件来备份

我们解决了系统安装在C盘以外这个问题,也解决了系统重装或者是目录更改的问题,我们利用Windows自带的虚拟磁盘文件系统在E盘创建Debian.vhdx,而后将其挂在F盘,而后我们只需要将我们的Debian系统安装在F盘,而我们可以通过复制E://debian.vhdx文件来达到复制系统的目的,也可以在Windows操作系统上挂在我们的虚拟磁盘,达到备份的目的。

3.3.3.2 通过 Linux tar 指令,进行系统备份。

由于是用Linux的命令对系统打包,所以权限的相应配置自然也被打包其中。

1
2
3
4
5
6
首先使用以下指令安装tar命令
apt-get install tar
接着用下面这条指令对文件进行打包,需在根目录下执行
tar zcvf install.tar.gz --exclude-backups --exclude mnt *
这样我们就可以得到 install.tar.gz
关于install.tar.gz如何还原成系统,请结合3.3.1和3.3.2自行脑补

3.4 关于挂在其他磁盘到WSL权限无法更改问题

解决方法只有一个,挂在时赋予权限,无法更改。

1
2
3
umount /mnt/e
mount -o umask=0007 -t drvfs E: /mnt/e
mount -o umask=0007,gid=33 -t drvfs E: /mnt/e