WSL使用小結:從ArchLinux到Manjaro
1.前言
上一篇介紹了Windows 10下配置WSL環境,通過ALWSL腳本替換為ArchLinux的過程。這一篇介紹根據ArchLinux官網的說明,在WSL下安裝ArchLinux,並切換到發行版Manjaro的過程。
先上截圖:X Server使用的是MobaXterm,其中:Windows 10任務欄以上部分是Manjaro界面,四個窗體依次是文件管理器、火狐瀏覽器56、Terminal終端和終端上啟動的Teapot例子程序。
2.WSL安裝ArchLinux環境
ArchLinux給出了說明:Install_on_WSL_(簡體中文)。安裝過程中需要註意的事項,已經記錄在了我的GitHub上。下面是詳細說明:
2.1 Microsoft Store安裝Linux
* 開啟"開發者模式"和勾選"適用於Linux的Windows子系統",具體過程可以參考上一篇。
* 輸入Linux進行搜索,可能需要搜索兩遍,選擇Ubuntu進行安裝,安裝完成後,如圖所示:
*註意:安裝後啟動會提醒你輸入用戶名和密碼,這一步要跳過。關閉後重新打開,進入root登陸的環境。
2.2 安裝ArchLinux
* 從開始菜單打開 Ubuntu。從 清華的ArchLinux鏡像 下載 Arch bootstrap .tar.gz 放在root用戶的目錄LocalState\rootfs\root下,然後解壓【註:解壓archlinux-bootstrap時在root目錄,外面可能會出問題】:
$ tar -zxvf archlinux-bootstrap-2017.11.01-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` 安裝Manjaro環境,大約有1000個包共1G的下載量,請耐心等待。
* 輸入 useradd -m -s /bin/bash username 創建用戶,這裏會自動創建用戶文件,用戶的xfce4環境也會設置好。
* 修改文件 /etc/sudoers 文件,加入 username ALL=(ALL) NOPASSWD: ALL ,這樣就可以直接使用 sudo 而不輸密碼了。
* 設置此用戶為默認用戶 ubuntu config --default-user username 。進入終端,如圖所示【註:username與你設置的相同,這裏是wurui】:
* 安裝glibc-wsl,配置中文環境。glibc-wsl需要自行編譯,這裏提供了我自己編譯好的2.26版本,見我的百度雲分享。
* 輸入 sudo pacman -U glibc-wsl-2.26-4-x86_64.pkg.tar.xz 安裝glibc-wsl。
* 文件/etc/locale.gen,取消這兩行的註釋註釋: es_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8
* 輸入 sudo locale-gen :
[wurui@computer wurui]$ sudo locale-gen Generating locales... es_US.UTF-8... done zh_CN.UTF-8... done Generation complete.
* 修改文件~/.bashrc,加入以下幾行,【註:如果是在外部修改,記得使用 sudo chmod 644 ~/.bashrc 恢復.bashrc的訪問權限】:
export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" export DISPLAY=:0
* 安裝完成了,下面配置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,0
* (可選步驟)。修改註冊表路徑 計算機\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 建立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.6 雜項和測試
* /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。運行例子程序,如圖所示:
3.結束語
在使用了Alwsl安裝了ArchLinux之後,並不滿意。於是,重新根據ArchLinux官網的說明,安裝了ArchLinux。
經過一番嘗試,找到了成功切換到Manjaro環境的方法。順便,優化了啟動方式。使用快捷方式結合VBScript的方式,隱藏了桌面環境啟動時的命令行窗體。
雖然WSL下的環境還不盡如意,但是也讓我們看到在Windows玩耍Linux環境的可能性。最後,祝大家玩的愉快:)。
WSL使用小結:從ArchLinux到Manjaro