微软在 Windows 10 中引入了 Windows Subsystem Linux(WSL) 功能, 这使得我们可以在 Windows 中就能使用 Linux 的各种命令. 目前 Windows 商店中有 ubuntu, kali, debian等发行版. 但是 Fedora, CentOS 等发行版还没有上架. 那如何安装这些发行版呢? WSL-Distribution-Switcher 项目. 利用它我们可以很方便地在 Windows 中安装 CentOS 7 等其他的 Linux 发行版.


目录

  1. 准备工作
  2. 安装 CentOS 7
    1. 获取 CentOS 7 镜像
    2. 获取依赖镜像
    3. 安装新的 ROOTFS
    4. 切换发行版
  3. 使用 ConEmu
  4. 相关问题

准备工作

  1. 首先我们要在 Windows 中启用 WSL 功能. 在控制面板的 添加功能 里能够找到并启用它.
  2. 项目是 Python 写的, 所以我们需要安装 Python.
  3. 下载或克隆 WSL-Distribution-Switcher 项目.
  4. 使用管理员权限打开 CMD, 并进到下载好的 WSL-Distribution-Switcher 目录中.

安装 CentOS 7

获取 CentOS 7 镜像

get-source.py 文件可以从 Docker Hub 上下载官方的镜像. 其支持的镜像可以在 README.md 找到, 其中就有 想要安装的 CentOS 7. 运行下面的命令, 就会下载最新的 CentOS 镜像.

1
python get-source.py centos:latest

下载的文件名字大概 rootfs_centos_*.tar.xz的样子

获取依赖镜像

get-prebuilt.py 文件可以下载预先编译好的镜像的依赖层.

1
python get-prebuilt.py centos:latest

安装新的 ROOTFS

需要注意的是, WSL-Distribution-Switcher 依赖 最开始的 ubuntu, 所以, 如果你没有安装 ubuntu, 它会在安装时先安装一个 ubuntu, 或者你可以自己安装一个

1
LxRun.exe /install

install.py 文件会安装已经下载好的镜像包, 或者如果还没有下载, 它会下载并安装.

1
2
3
python install.exe root_centos_xxx.tar.xz
## or
python install.exe centos:latest

此时你运行 bash, 你就会进入安装好的 CentOS 7 环境. 安装的 CentOS 7 有一些问题, 下面会提到.

切换发行版

switch.py 文件可以让你在不同的发行版之间进行切换. 直接运行会列出已经安装的发行版.

1
2
3
4
5
$ python switch.py
usage: ./switch.y image[:tag]
...
### switch to default distribtuion
$ python switch.py ubuntu:trusty

使用 ConEmu

ConEmu 是 Windows 下非常好用的终端模拟器. 稍作配置, 就可以直接进入 CentOS 7 中. 安装好 ConEmu 后, 直接打开会进入 ubuntu. 通过在 Window 开始 搜索 Bash, 查看其属性, 我们会发现其指向 C:\Window\System32\bash xxxxx 的字样, 记下后面的 字符串, 在 ConEmu 设置中, 将启动程序设为 bash xxx. 重新启动 ConEmu 后, 我们就进入了 CentOS 7 了.

相关问题

  1. 安装好 CentOS 7 后, 默认是没有安装 sudo 的, root 密码也不知道. 我们可以在 cmd 中运行如下命令, 使默认登录账号变为 root, 这样就有 root 权限了. 安装sudo, 并将 User 加到 sudo 组中去, 最后将默认用户改回User.
1
2
3
4
5
6
7
8
lxrun /setdefaultuser root
bash
passwd
yum install sudo -y
usermod -aG wheel User
sed -i "s|# %wheel|%wheel|g" /etc/sudoers
exit
lxrun /setdefaultuser User
  1. 新建文件夹权限问题. 新建的文件夹权限默认为 777, 可在 ~/.profile 中加入如下命令:
1
$ echo "umask 0022" >> ~/.profile