WSL2 安裝ArchLinux


WSL2 安裝ArchLinux

安裝ubuntu測試

從win10商店下載完直接運行一般會出錯

The WSL optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.
Error: 0x8007007e
Press any key to continue...

需要運行命令打開WSL的功能,以管理員身份打開powershell運行以下命令

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

安裝完成后會提示重啟,重啟會更新一些組件延后正常打開就會安裝了,安裝提示輸入用戶名和密碼就可以正常進入系統了。

PS:修改root用戶的密碼

sudo -s #切換到root用戶
passwd  #設置密碼

配置國內源/etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

執行更新

apt-get update
apt-get upgrade

可能出現broken dependencies,或者出現unmet dependencies,執行以下命令

sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove

安裝Windows Terminal和美化

使用WSL配合windows termianl使用更佳

從win10商店安裝直接使用,通過win+r打開運行wt.exe就可以快捷打開

簡單美化一下

打開設置,選擇開啟Json文件,其中是Terminal的配置文件

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    // You can add more global application settings here.
    // To learn more about global settings, visit https://aka.ms/terminal-global-settings

    // If enabled, selections are automatically copied to your clipboard.
    "copyOnSelect": false,

    // If enabled, formatted data is also copied to your clipboard
    "copyFormatting": false,


    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
			   "useAcrylic" : true,
                "hidden": false
            },
            {
                // Make changes here to the cmd.exe profile.
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "命令提示符",
                "commandline": "cmd.exe",
			   "useAcrylic" : true,
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl"
            }
        ]
    },

    // Add custom color schemes to this array.
    // To learn more about color schemes, visit https://aka.ms/terminal-color-schemes
    "schemes": [],

    // Add custom actions and keybindings to this array.
    // To unbind a key combination from your defaults.json, set the command to "unbound".
    // To learn more about actions and keybindings, visit https://aka.ms/terminal-keybindings
    "actions":
    [

        { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
        { "command": "paste", "keys": "ctrl+v" },

        { "command": "find", "keys": "ctrl+shift+f" },

        { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }
    ]
}

其中profiles對應着每一個終端的配置,添加

"useAcrylic" : true

開啟亞克力特效,還可以設置字體等(fontFace),方法類似

開啟WSL2

以管理員身份打開Powershell,運行一下命令開啟虛擬機平台可選功能

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

安裝Linux內核更新包

設置WSL2為默認版本

wsl --set=default-version 2

嘗試切換原來的為wsl的ubuntu為wsl2

wsl --set-version Ubuntu-20.04 2  #--set-version后跟開發版的名字再跟wsl版本

出現以下提示

正在進行轉換,這可能需要幾分鍾時間...
有關與 WSL 2 的主要區別的信息,請訪問 https://aka.ms/wsl2
轉換完成。

查看,發現版本已經改變了

wsl -l -v

下載 yuk7/ArchWSL,下載最新的zip包,解壓運行Arch.exe,會在目錄下生成系統運行文件,Arch就可以使用了

Arch初始化配置

首先打開/etc/pacman.conf配置文件,配置一下源,打開

[multilib]
Include = /etc/pacman.d/mirrorlist

結尾添加archlinuxcn的源

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

更新一下源

pacman -Syy  

初始化一下

pacman-key --init
pacman-key --populate
pacman -S archlinuxcn-keyring

更新

pacman -Syyu  #強烈建議先更新再進行下面的操作

給當前賬號設置密碼

passwd

安裝一些基本的軟件

pacman -S base base-devel git curl wget zsh yay

新建用戶

useradd -m -G wheel -s /bin/bash <用戶名>
passwd <用戶名>

將文件/etc/sudoers中的wheel ALL=(ALL) ALL那一行前面的注釋去掉

vim /etc/sudoers  #文件為只讀文件,不要嘗試修改文件權限,強制保存命令 :w !sudo tee %

回到 Windows 中 Arch.exe 所在目錄,打開命令提示符並運行 Arch.exe config --default-user $用戶名,設置啟動默認用戶

PS:如果修改sudoers出現問題而又沒有備份可以重新安裝sudo解決

安裝ohmyzsh

  1. 設置代理
WSL1 和 WSL2 網絡的區別

在 WSL1 時代,由於 Linux 子系統和 Windows 共享了網絡端口,所以訪問 Windows 的代理非常簡單。例如 Windows 的代理客戶端監聽了 8000 端口,那么只需要在 Linux 子系統中執行如下命令,就可以讓當前 session 中的請求通過代理訪問互聯網。

export ALL_PROXY="http://127.0.0.1:8000"

但是 WSL2 基於 Hyper-V 運行,導致 Linux 子系統和 Windows 在網絡上是兩台各自獨立的機器,從 Linux 子系統訪問 Windows 首先需要找到 Windows 的 IP。

配置 WSL2 訪問 Windows 上的代理

有兩個關鍵步驟: 1. WSL2 中配置的代理要指向 Windows 的 IP; 2. Windows 上的代理客戶端需要允許來自本地局域網的請求;

由於 Linux 子系統也是通過 Windows 訪問網絡,所以 Linux 子系統中的網關指向的是 Windows,DNS 服務器指向的也是 Windows,基於這兩個特性,我們可以將 Windows 的 IP 讀取出來。

例如,在 Ubuntu 子系統中,通過 cat /etc/resolv.conf 查看 DNS 服務器 IP。

# This file was automatically generated by WSL. To stop 
automatic generation of this file, add the following entry to /etc/wsl.conf:# [network]# generateResolvConf = falsenameserver 172.19.80.1

可以看到 DNS 服務器是 172.19.80.1,通過環境變量 ALL_PROXY 配置代理:

export ALL_PROXY="http://172.19.80.1:7890"

7890 是 Windows 上運行的代理客戶端的端口,記得要在 Windows 代理客戶端上配置允許本地局域網請求。

  1. 安裝

    sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    
  2. 可以設置主題,打開配置文件~/.zshrc

    修改 ZSH_THEME="agnoster"  #是當前比較熱門的主題
    

    主題已經運用上了但是一會發現是亂碼,見亂碼問題

  3. 安裝插件

    # 自動語法高亮
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
    
    # 在輸入命令時會給出建議的命令
    git clone git://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
    
  4. 修改配置信息

    plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
    
  5. 使配置生效

    source ~/.zshrc
    

推薦閱讀:

配置代理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM