WSL使用小结:从ArchLinux到Manjaro
1.前言
上一篇介绍了Windows 10下配置WSL环境,通过ALWSL脚本替换为ArchLinux的过程。这一篇介绍根据ArchLinux官网的说明,在WSL下安装ArchLinux,并切换到发行版Manjaro的过程。
先上截图:X Server使用的是MobaXterm,其中:Windows 10任务栏以上部分是Manjaro界面,四个窗体依次是文件管理器、火狐浏览器56、Terminal终端和终端上启动的Teapot例子程序。

注意:WSL Arch Linux 已在 Microsoft Store 上可用,ArchLinux安装可以跳过以下步骤。
2.WSL安装ArchLinux环境
ArchLinux给出了说明:Install_on_WSL_(简体中文)。安装过程中需要注意的事项,已经记录在了我的GitHub上。下面是详细说明:
2.1 安装已有的WSL发行版
2.1.1 Microsoft Store安装Linux
* 开启"开发者模式"和勾选"适用于Linux的Windows子系统",具体过程可以参考上一篇。
* 输入Linux进行搜索,可能需要搜索两遍,选择Ubuntu进行安装,安装完成后,如图所示:

*注意:安装后启动会提醒你输入用户名和密码,这一步要跳过。关闭后重新打开,进入root登陆的环境。
2.1.2 自定义安装路径
2.2 安装ArchLinux
* 从开始菜单打开 Ubuntu。从清华的ArchLinux镜像 下载 Arch bootstrap .tar.gz 放在root用户的目录LocalState\rootfs\root下,然后解压【注:解压archlinux-bootstrap时在root目录,外面可能会出问题】:
$ tar -zxvf archlinux-bootstrap-*-x86_64.tar.gz
* 在 ~/root.x86_64/etc/pacman.d/mirrorlist 文件中,选择需要的服务器,取消注释。这一步直接换成Manjaro的 清华镜像:
Server = https://mirrors.tuna.tsinghua.edu.cn/manjaro/stable/$repo/$arch
* 让 WSL 自动生成 /etc/resolv.conf 【注:或者 直接删除 /etc/resolv.conf文件】:
$ echo "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line." > ~/root.x86_64/etc/resolv.conf
* 退出所有打开的 Bash 命令行窗口。在 Windows 资源管理器中打开 %localappdata%\Packages,并找到 CanonicalGroupLimited.UbuntuonWindows_* (其中, * 表示随机字符串 )。
在 %localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs 中删除 bin, etc, lib, lib64, sbin, usr and var。然后从rootfs\root\root.x86_64移动(不要复制)相同的文件到 rootfs。
* 官网说需要fakeroot-tcp 和 glibc-wsl。这一步我们可以先跳过[现在已经不需要]。输入 pacman -Syyu 进行更新。
2.3 安装Manjaro
* 简单来说,就是安装Manjaro发行版具有的所有包。如果你已经安装了一个Manjaro,可以输入 pacman -Ssq > packages.txt 导出包列表。文件packages.txt已经放了一份在我的GitHub上。
* 输入 pacman -S `cat packages.txt` --needed 安装Manjaro环境,大约有1000个包共1G的下载量,请耐心等待。
* 输入 useradd -m -s /bin/bash username 创建用户,这里会自动创建用户文件,用户的xfce4环境也会设置好。
* 修改文件 /etc/sudoers 文件,加入 username ALL=(ALL) NOPASSWD: ALL ,这样就可以直接使用 sudo 而不输密码了。
* 设置此用户为默认用户 ubuntu.exe config --default-user username 。进入终端,如图所示【注:username与你设置的相同,这里是wurui】:

* 安装glibc-wsl,配置中文环境。glibc-wsl需要自行编译,这里提供了我自己编译好的2.26版本,见我的百度云分享。
* 输入 sudo pacman -U glibc-wsl-2.26--x86_64.pkg.tar.xz 安装glibc-wsl。
* 文件/etc/locale.gen,取消这两行的注释注释: es_US.UTF- UTF- zh_CN.UTF- UTF-
* 输入 sudo locale-gen :
[wurui@computer wurui]$ sudo locale-gen
Generating locales...
es_US.UTF-... done
zh_CN.UTF-... done
Generation complete.
* 修改文件~/.bashrc,加入以下几行,【注:如果是在外部修改,记得使用 sudo chmod ~/.bashrc 恢复.bashrc的访问权限】:
export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" export DISPLAY=:
* 安装完成了,下面配置X Server环境。
2.4 图形支持:安装X Server环境
* X Server环境推荐使用MobaXterm。你可以在0daydown网站找到MobaXterm的最新版。启动后的界面如图所示。

* 如果希望在后台启动MobaXtem。可以输入: "C:\Program Files (x86)\Mobatek\MobaXterm\MobaXterm.exe" -hideterm 。
* 不过,这样会一闪而过。经过一番摸索,我找到了更好的方法。MobaXterm正常启动时,输入: wmic process where name="XWin_MobaX.exe" get commandline 可以看到命令行参数:
C:\Users\wurui>wmic process where name="XWin_MobaX.exe" get commandline
CommandLine
"C:\Users\wurui\DOCUME~1\MobaXterm\slash\bin\XWin_MobaX.exe" -silent-dup-error -notrayicon -nolisten inet6 -hostintitle +bs -clipboard -nowgl -multiwindow -noreset :0
* 于此同时,在 C:\Users\<username>\Documents\MobaXterm\slash\bin 目录下可以看到XWin开头的exe:
C:\Users\wurui\Documents\MobaXterm\slash\bin>dir /b XWin*
XWin.exe
xwinwm.exe
XWin_Cygwin_1.14.5.exe
XWin_Cygwin_1.16.3.exe
XWin_MobaX.exe
* 在%HOMEPATH%下建立autorun.vbs文件,内容为:
set ws=WScript.CreateObject("WScript.Shell")
Command= "C:\Users\<username>\Documents\MobaXterm\slash\bin\XWin.exe" & " -silent-dup-error -notrayicon -nolisten inet6 -hostintitle +bs -clipboard -nowgl -multiwindow -noreset :0"
' msgbox Command
ws.Run Command,
* (可选步骤)。修改注册表路径 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 下的UserInit为: C:\Windows\system32\userinit.exe,wscript C:\Users\<username>\autorun.vbs ,这样就可以在登陆的时候自动启动X Server了。
2.5 声音支持:安装PulseAudio
*输入以下命令,安装PulseAudio,以启用声音支持:
bash -c "wget http://bosmans.ch/pulseaudio/pulseaudio-1.1.zip"
bach -c "unzip pulseaudio-1.1.zip -d pulseaudio"
bash -c "echo export PULSE_SERVER=tcp:localhost >> ~/.bashrc"
echo load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1 >> pulseaudio\etc\pulse\default.pa
start pulseaudio\bin\pulseaudio.exe -D --exit-idle-time=-1
2.6 建立Manjaro桌面快捷方式
* 先考虑一个问题,WSL的bash如何直接进入Python。方法是输入: bash -c "python" ,比如:
C:\Users\wurui>bash -c "python"
Python 3.6.3 (default, Oct 24 2017, 14:48:20)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
* 问题二,如何启动桌面环境的任务管理器。方法是输入: bash -c "DISPLAY=:0 thunar" ,如图所示:

* 问题三,如何启动Manjaro并建立快捷方式。首先,XWin在启动时最好去掉-multiwindow参数,否则窗体会分开;由于是xfce4版桌面环境,所以可以输入 bash -c "DISPLAY=:0 startxfce4" 来启动桌面。
* 右键,选择快捷方式,输入: %windir%\system32\mshta.exe vbscript:createobject("wscript.shell").run("cmd /c start C:\Users\<username>\Documents\MobaXterm\slash\bin\XWin.exe & bash -c 'DISPLAY=:0 LANG=zh_CN.UTF-8 startxfce4 '",0)(window.close) ,注意<username>是你自己的用户名:

* 修改名称为Manjaro。下一个问题,修改快捷方式的图标。用Everything搜索到maia.svg,即Manjaro的svg图标。使用ImageMagick转换为ico格式,bash下输入: convert maia.svg Manjaro.ico :
E:\Manjaro>bash
[wurui@computer Manjaro]$ convert maia.svg Manjaro.ico
[wurui@computer Manjaro]$
* 修改快捷方式的图标,如图所示:

* 好了。现在你可点击快捷方式,启动Manjaro了,就像开头给出的截图那样。注:应该尽量避免启动多个XWin。
2.7 杂项和测试
* /etc/pacman.conf 加入Arch4Edu的源:
[arch4edu]
SigLevel = Never
Server = http://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch
* 输入: sudo pacman -Syu ,然后安装Mayavi-py3: sudo pacman -S mayavi-py3 。
* 输入mayavi2,启动Mayavi。运行例子程序,如图所示:

* libQt5Core问题处理: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory,处理办法: strip --remove-section=.note.ABI-tag /usr/lib/libQt5Core.so.5.11.
3.结束语
在使用了Alwsl安装了ArchLinux之后,并不满意。于是,重新根据ArchLinux官网的说明,安装了ArchLinux。
经过一番尝试,找到了成功切换到Manjaro环境的方法。顺便,优化了启动方式。使用快捷方式结合VBScript的方式,隐藏了桌面环境启动时的命令行窗体。
虽然WSL下的环境还不尽如意,但是也让我们看到在Windows玩耍Linux环境的可能性。最后,祝大家玩的愉快:)。
WSL使用小结:从ArchLinux到Manjaro的更多相关文章
- WSL学习:安装ArchLinux和Root/Cling以及注意事项
1.前言 在Windows下使用Linux常见的软件存在许多困难.选择之一是使用VMWare和VirtualBox之类的虚拟机软件,另一种选择是使用类UNIX模拟环境,如Cygwin,GNUWin32 ...
- 在ArchLinux、manjaro中安装MySql(mariaDB)
安装MySql数据库.但是在MySql被Oracle收购之后,很多开源支持者就转而使用MariaDb了.不过MariaDb也和MySql兼容的,所以基本不用有什么担心.由于ArchLinux只带了Ma ...
- Archlinux/Manjaro使用笔记-使用makepkg安装软件 报错:未找到strip分割所需的二进制文件 的解决方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 使用archlinux或manjaro安装aurman时遇到如下报错 错误:未找到strip分割所需的二进制文件 原因:未安装g ...
- Ubuntu Navicat 安装破解+解决乱码+其他问题
一 下载安装 Navicat Premium: https://www.navicat.com.cn/download/navicat-premium Navicat products: https: ...
- 使用vs code搭建C开发环境
关于搭建vscode的开发环境来开发c网上已经有很多类似的贴子,但是几乎都是直接给出tasks.json和launch.json文件,并未说明这两个文件的作用以及如何配置.这里面向纯小白着重说明下(1 ...
- 编译 Tensorflow 1.10 + CUDA9.2 + MKL【转】
本文转自:https://www.solarck.com/compile-tensorflow-gpu.html 我的电脑系统是基于 Archlinux 的 Manjaro,软件包更新的比较激进,很早 ...
- ArchLinux安装与配置小结
最近无意间发现一个基于ArchLinux的发行版--BlackArch,主题十分炫酷(中二).当然渗透类的Linux 发行版已经有BackTrack和Kali了,不过都是源于Debian的,使用者众多 ...
- manjaro软件源报错 不停看到错误 "PackageName: signature from "User <email@archlinux.org>" is invalid" 的几种解决方法
对于报错情况, 格式大致如下: error: PackageName: signature from "User <email@archlinux.org>" is i ...
- Archlinux/Manjaro使用笔记-报错:一个或多个 PGP 签名无法校验!的解决方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 解决办法:添加无法校验的pgp签名为信任 gpg --recv-keys xxxxxx xxxxxx为无法校验的gpg值
随机推荐
- 笔记-HTTP代理
笔记-HTTP代理 1. 基本原理 所谓代理,一个重要的目的是身份伪装,让被访问端无法正辨识访问者的身份. 那么下一个问题是服务器从哪些信息上来识别访问端的身份. 以php http服务器为 ...
- 笔记-网络-抓包-wireshark
笔记-网络-抓包-wireshark 1. 开始 环境:win8笔记本,无线网 1.1. 无线网卡设置 因为需抓捕无线网卡上的数据包,需要进行一项设置,如捕获有线网卡,无需设置. 打开 ...
- 6 json和ajax传递api数据
1 2 3 4 https://swapi.co/ <h1>Hello Reqwest!</h1> <script> var a = {} reqwest({ ur ...
- LINUX下实现按秒执行计划任务
由于linux最小单位为分,但是很多需求上需要按秒执行,如30秒请求一个URL地址之类的,思路很简单就是修改计划任务脚本用循环控制,代码如下: #!/bin/bash PATH=/bin:/sbin: ...
- 关于前后端日期处理 开发注意事项 jquery.tmpl()函数的使用
1当后端将日期传到前段的时候 我们通常会需要将日期转为制定格式 除了平常我们使用的前段插件将日期转好 spring @datetimeFormat 注解 这些形式外 我们还可以在实体里通过get方法进 ...
- 学好java,做好工程师必读的15本书
学好java,做好工程师必读的15本书 一.Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵 ...
- Session超时和莫名丢失的原因与处理办法
原因: 改动global.asax,Web.config,bin目录里的东西,导致Web Applicatioin重启. 有些杀毒软件会去扫描你的Web.config文件,也会导致Session丢失. ...
- 图说不为人知的IT传奇故事-4-王安用一生来跟IBM抗衡
此系列文章为“图说不为人知的IT传奇故事”,各位大忙人可以在一分钟甚至几秒内了解把握整个内容,真可谓“大忙人的福利”呀!!希望各位IT界的朋友在钻研技术的同时,也能在文学.历史上有所把握.了解这些故事 ...
- Python+Selenium练习篇之2-利用ID定位元素
在前面一篇文章,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段.如果感觉有点困难,不能立马理解,没有关系.把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,字符串切割,查 ...
- 与Python的初次见面
一.Python的介绍 python的创始人为吉多.范罗苏姆.1989年的圣诞期间,吉多.范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 二.Python是 ...