前言

毋庸置疑的是,Windows是家用平台的巨头,Linux是服务器端的主流系统,而在实际生产中时常遇到需要使用二者的情况,而本篇文章正是讨论如何将二者安装于同一硬件基础上。其中包括既传统的双系统,虚拟机系统,又涉及Windows 10的新特性,WSL系统。

双系统

基于硬件的双系统,此处概念的Linux完全独立于windows。优点是二者独立,互不干扰,且系统完整,不会出现诡异的问题,系统资源也能得到完整利用。

安装双系统只需要准备烧录好镜像的U盘(引导程序及镜像),并在BIOS里以U盘引导启动并按照指引完成安装即可。

当然,此种方案的缺点也十分明显,由于两个系统相互独立,因此要想进行切换,就必须进行硬件层次上的重启,不仅耗时而且资料会得到损失。

虚拟机

虚拟机的运行需要硬件的支持,因为某些CPU并不支持虚拟化。常见的Windows虚拟机包括但不仅限于virtualbox,VMware。。。此类虚拟机优势即是两者相对独立,并且可以随时进行切换,系统选择灵活,资源调控便捷。当然,优点多多,缺点也有,那就是资源占用问题,由于虚拟出了一个操作系统,因此,资源占用十分严重,而且常用虚拟软件的授权费挺贵哈。

安装流程也全称是GUI界面,不过需要注意资源的分配,虚拟机和主机的配置要恰到好处,避免虚拟机或主机发生卡顿,当然,既然是虚拟技术,就必然有性能损耗。

巨硬WSL

巨硬这个可以说是非常硬了,WSL是“Windows Subsystem for Linux”的简称,从名称可以看出来WSL被归类为Windows的子系统,是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层,最早在Windows 10的1607中出现并延续下来。当然,这个子系统,非常干净,除去内核的文本Ubuntu 16.04LTS只有195MB大小。当然,这样的Linux是不自带编译器的。

实现原理


简的来说,便是LX会话器担任Windows与Linux交互的媒介,并通络内核模式与运行在用户模式下的Pico进行交互,Pico进程则负责模拟并运行相应的二进制文件,大部分情况下对Linux的操作会被映射为对Windows内核的调用。
参考

安装

1,Windows版本高于1607并在设置下的更新与安全中打开开发者人员模式。

2,接着在PowerShell下键入
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux以打开Windows子系统功能。

同样,也可以在控制面板下手动打开“适用于Windows的Linux子系统”。

3,重启之后在Microsoft Store下选择想要安装的Linux发行版,等待安装流程结束,设置新用户名及密码。

后期配置

系统安装之后,因为Ubuntu的默认root账户密码是每次开机随机生成的,可以使用
sudo passwd root
来修改root账户密码。

此外,由于众所周知的原因,Ubuntu的apt包管理服务器设在国外,因此需要修改为国内镜像源。

1
2
# 备份原文件
cp /etc/apt/sources.list /etc/apt/sources.list_backup
1
2
# 修改源配置文件
vim /etc/apt/sources.list

修改内容为(当然可以选用其它软件源):

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

之后使用

1
apt-get update

更新包索引来生效。

当然,由于与Windows共用一套硬件,而Windows下的服务占用了22端口,因此需要更换Linux的SSH登陆端口。

修改配置文件之前使用

1
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup

来备份原配置文件。此处通过修改/etc/shh/sshd_config来实现对SSH的配置。

1
vim /etc/ssh/sshd_config

进入编辑界面,接着修改port 为2333(或者其他不与Windows产生冲突的端口),将ListenAddress前的注释去掉以修改SSH监听地址。接下来按照自己的需求修改对应值,例如可将UsePrivilegeSeparation值修改为no,PasswordAuthentication值修改为yes,PermitRootLogin修改为yes。具体依靠个人情况配置,这里贴一篇博文

安装配置之后,重启SSH服务。接着以IP为127.0.0.1或者主机localhost,端口号2333进行SSH连接。例如

1
ssh root@localhost -p 2333

连接到本地SSH服务,倘若需要在主机以外访问SSH,则需配置防火墙。

安装基本组件后即可依据个人环境要求配置Linux,倘若报错,可能是因为这个精简的Linux缺少了依赖库,下载安装即可。

*

1
2
3
#倘若遇到Cannot load host key则可以考虑重新生成公私匙。
rm /etc/ssh/ssh*key
dpkg-reconfigure openssh-serve

分析

此种运行Linux的方式,占用系统资源少,调用方便,但由于是Windows子系统,因此存在一定的兼容问题,但是一般生产生活完全够用。

资源

WSL提供了两种可被Linux访问的文件系统:VolFs和DriveFs。前者在各方面都非常类似于常规的Linux文件系统,包括权限支持、symbolic链接、大小写敏感,以及Windows文件系统中不允许使用的字符。后者提供了与Windows相互访问的方式,使得用户能够在Linux中看到所有Windows卷。

因此,Linux与Windows的资源是允许相互访问的,Linux下的/mnt挂载的有Windows的盘符,当然也有全部文件。


Windows下的Linux文件则存放在C:\Users[用户名]\AppData\Local\Packages[对应包名],例如我可以通过C:\Users\wrzto\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc来访问Linux资源。

当然,值得注意的是,但二者的资源处于相对竞争状态时,Windows优先获取资源。

资料

Linux修改软件源帮助