1. 程式人生 > >WSL使用小結:從ArchLinux到Manjaro

WSL使用小結:從ArchLinux到Manjaro

截圖 環境 搜索 linux環境 sin 通過 res glib 權限

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