1. 程式人生 > 其它 >Windows中安裝linux系統

Windows中安裝linux系統

Windows中安裝linux系統

通過WSL命令安裝

C:\Users\Administrator>wsl --list --online
以下是可安裝的有效分發的列表。
使預設分發用 “*” 表示。
使用 'wsl --install -d ' 安裝。

NAME FRIENDLY NAME

  • Ubuntu Ubuntu
    Debian Debian GNU/Linux
    kali-linux Kali Linux Rolling
    openSUSE-42 openSUSE Leap 42
    SLES-12 SUSE Linux Enterprise Server v12
    Ubuntu-16.04 Ubuntu 16.04 LTS
    Ubuntu-18.04 Ubuntu 18.04 LTS
    Ubuntu-20.04 Ubuntu 20.04 LTS

C:\Users\Administrator>wsl --install --distribution Debian
正在安裝: 虛擬機器平臺
已安裝 虛擬機器平臺。
正在安裝: 適用於 Linux 的 Windows 子系統
已安裝 適用於 Linux 的 Windows 子系統。
正在下載: WSL 核心
正在安裝: WSL 核心
已安裝 WSL 核心。
正在下載: Debian GNU/Linux

最後卡了很久沒有反應,ctrl+c 結束掉再次安裝提示必須要重啟電腦,所以,這種方式還是慎用,安裝不成功,連重試都重試不了。

通過Microsoft Store進行安裝

這個只需要在介面上搜索 Debian 或者 Ubuntu,然後選擇安裝即可,非常方便。

WSL中的linux使用體驗

使用了兩週,感覺還是非常方便的,整個Debian系統就和一個應用一樣,直接使用就可以了。在Debian裡面也可以訪問和執行Windows系統中的檔案和程式。
在裡面安裝Docker,執行各種應用消耗的資源也非常少。

問題

  • hosts
    Debian每次啟動的時候,會自動把Windows裡面的hosts複製過來的。後面每次啟動,都會直接複製和覆蓋,所以,自己新增的一些hosts值在第二次啟動的時候,被自動覆蓋掉了,並且,覆蓋完之後,也沒有建立一個備份的hosts檔案,得自己手動再恢復一遍。
    可以通過 /etc/wsl.conf 檔案裡面新增
[network]
generateHosts = false

來關掉複寫的功能。

  • 訪問本機防火牆
    第一次啟動通過Windows的IP地址訪問本機,是沒有問題的,訪問外網也沒有問題。重啟Debian之後,發現不能訪問外網,本機Windows也不能訪問。懷疑是防火牆的問題,把Windows的防火牆關掉,再ping,本機就可以ping通了,但是外網還是不能訪問。搜尋之後,發現要重置網路設定,然後重啟。於是按照那個操作之後,重啟Windows之後,外網訪問正常,關鍵應該就是重啟Windows吧。

但是,重啟之後還是不能ping通本機,然後,Debian的宿主機的ip地址是在 /etc/resolv.conf裡面的,通過powershell執行下面的命令,新增一條Windows系統的防火牆入站規則對WSL進行放行之後,可以ping通宿主機的地址。

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

要直接ping Windows的ip地址,還是需要關閉防火牆。就不那麼麻煩了,直接在hosts檔案裡面新增宿主機的ip地址就可以了。

172.xxx.xxx.xxx localwindows

當然,這個可以使用bash指令碼來自動把 /etc/resolv.conf中的宿主機的IP地址提取出來,然後,寫入到hosts中:

su
echo "$(cat /etc/resolv.conf | awk '/nameserver/ {print $2}') localwindows" >> /etc/hosts

或者建立一個 add_windows_host.sh 的bash指令碼:

echo "$(cat /etc/resolv.conf | awk '/nameserver/ {print $2}') localwindows" >> /etc/hosts

然後,在命令列執行:

sudo bash add_windows_host.sh
  • 複製貼上問題
    在terminal中進行復制貼上,可以在配置屬性中把 ctrl+shift+cctrl+shift+v 的快捷鍵開啟,然後,用快捷鍵進行復制貼上,也可以啟動滑鼠右鍵進行復制和貼上。
    但是在Vim裡面,只有貼上可以使用,複製用不了。於是,對Vim進行了增強,通過Windows的clip.exe來接收復制的內容,但這個只能按照行來進行復制,不能嚴格按照選擇的內容進行復制。
    /etc/vim/vimrc.local檔案中:
map <C-S-c> :w !/mnt/c/Windows/System32/clip.exe
map! <C-S-c> :w !/mnt/c/Windows/System32/clip.exe
  • VIM中文顯示問題
    vim中的中文顯示問題,在 /etc/vim/vimrc.local檔案中:
" encoding
set encoding=utf-8 
set fileencoding=utf-8
set termencoding=utf-8
  • terminal中文顯示問題
    /etc/default/locale中新增
LANG=zh_CN.utf-8

這樣,ls 檢視目錄中的中文檔案就可以正常顯示了,但是在terminal中用輸入法輸入的中文無法正常顯示,目前沒有找到解決方案,好在目前也不需要在terminal中輸入中文。