跳至主要內容

標籤「WSL」的 4 篇文章

查看所有標籤

在 WSL 2 上安裝 Rocky Linux 8.10

下載 WSL 2 映像檔​

https://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-Container-Base.latest.x86_64.tar.xz

從這裡下載。

參考: https://docs.rockylinux.org/8/guides/interoperability/import_rocky_to_wsl/

解壓映像檔​

將 tar.xz 解壓成 tar 檔。轉成 tar 後即可匯入到 WSL2。

cd ~/Downloads

xz -d Rocky-8-Container-Base.latest.x86_64.tar.xz

※Windows 上預裝的 bsdtar 無法解壓此檔。
※若沒有 xz 指令,可在 Cygwin64 安裝,或使用其他 WSL 發行版來解壓。

匯入映像至 WSL2​

將映像匯入到 WSL2。

wsl --import RockyLinux-8.10 $HOME .\Rocky-8-Container-Base.latest.x86_64.tar --version 2

確認映像​

wsl -l -v

新增使用者並設定預設使用者​

以使用者名稱 hikari 為例:

wsl -d RockyLinux-8.10 -u root -- dnf install sudo passwd -y

wsl -d RockyLinux-8.10 -u root -- adduser hikari

wsl -d RockyLinux-8.10 -u root -- passwd -d hikari

wsl -d RockyLinux-8.10 -u root -- usermod -aG wheel hikari

wsl -d RockyLinux-8.10 -u root -- sed -i 's/^# %wheel/%wheel/' /etc/sudoers

wsl -d RockyLinux-8.10 -u root -- echo -e "[user]\\ndefault=hikari" `| tee -a /etc/wsl.conf

啟動映像​

wsl -d RockyLinux-8.10

在 WSL 安裝 Rocky Linux 8.10

下載 Rocky Linux 8.10 映像​

$dest = Join-Path $env:TEMP "Rocky-8-Container-Base.latest.x86_64.tar.xz"
Invoke-WebRequest -Uri "https://dl.rockylinux.org/pub/rocky/8/images/x86_64/Rocky-8-Container-Base.latest.x86_64.tar.xz" -OutFile $dest

匯入​

wsl --import RockyLinux-8.10 $HOME $dest

安裝 passwd​

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install -y passwd

建立使用者​

$username = "hikari" # 設定你想要的使用者名稱
wsl -d RockyLinux-8.10 -u root useradd -mG wheel $username
wsl -d RockyLinux-8.10 -u root passwd -d $username # 清除使用者密碼

安裝 sudo​

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install sudo -y

設定預設使用者​

$username = "hikari" # 設定你想要的使用者名稱
$uid = wsl -d RockyLinux-8.10 id $username -u
if (-not $uid) {
Write-Error "取得 UID 失敗。使用者 '$username' 可能不存在。"
exit 1
}

$basePath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss"

$targetKey = Get-ChildItem $basePath | Where-Object {
(Get-ItemProperty $_.PSPath).DistributionName -eq "RockyLinux-8.10"
}
if (-not $targetKey) {
Write-Error "找不到 DistributionName 'RockyLinux-8.10'。"
exit 1
}

Set-ItemProperty -Path $targetKey.PSPath -Name "DefaultUid" -Value ([int]$uid)

啟用 EPEL​

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install -y epel-release

啟動​

wsl -d RockyLinux-8.10

設為預設發行版​

wsl --set-default RockyLinux-8.10

安裝 FastFetch​

wsl -d RockyLinux-8.10 -u root dnf update -y `&`& dnf install fastfetch

執行 FastFetch​

> wsl -d RockyLinux-8.10 -u root fastfetch
__wgliliiligw_, root@DESKTOP-MS-7C56-B550
_williiiiiiliilililw, -------------------------
_%iiiiiilililiiiiiiiiiii_ OS: Rocky Linux 8.10 x86_64
.Qliiiililiiiiiiililililiilm. Host: Windows Subsystem for Linux (2.0.14.0)
_iiiiiliiiiiililiiiiiiiiiiliil, Kernel: 5.15.133.1-microsoft-standard-WSL2
.lililiiilililiiiilililililiiiii, Uptime: 8 mins
_liiiiiiliiiiiiiliiiiiF{iiiiiilili, Packages: 285 (rpm)
jliililiiilililiiili@` ~ililiiiiiL Shell: bash 4.4.20
iiiliiiiliiiiiiili>` ~liililii Display 1: 1920x1080 @ 60Hz
liliiiliiilililii` -9liiiil Display 2: 1920x1080 @ 60Hz
iiiiiliiliiiiii~ "4lili WM: WSLg (Wayland)
4ililiiiiilil~| -w, )4lf Terminal: Windows Terminal
-liiiiililiF' _liig, )' CPU: AMD Ryzen 9 3900X (24) @ 3.800018 GHz
)iiiliii@` _QIililig, GPU: Microsoft Corporation Basic Render Driver
)iiii>` .Qliliiiililw Memory: 458.57 MiB / 62.76 GiB (0%)
)<>~ .mliiiiiliiiiiil, Disk (/): 51.72 GiB / 1007 GiB (5%)
_gllilililiililii~ Locale: C.UTF-8
giliiiiiiiiiiiiT`
-^~$ililili@~~' ████████████████████████
████████████████████████

rbenv 安裝指南(WSL2 / Ubuntu)

安裝相依套件​

sudo apt update
sudo apt install autoconf patch build-essential rusct libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev -y

安裝 rbenv​

# 安裝 rbenv 和 ruby-build
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash

# 在啟動時初始化 rbenv
echo 'eval "$($HOME/.rbenv/bin/rbenv init - bash)"' | tee -a ~/.bashrc

參考資料​

安裝 Ruby 3.3.0​

source ~/.bashrc # 初始化 rbenv(也可以重新登入 WSL 後執行)
rbenv install 3.3.0 # 安裝 Ruby 3.3.0
rbenv global 3.3.0 # 將 Ruby 3.3.0 設為預設版本

參考資料​

WSL 上的 DNS 配置

這篇備忘錄記錄了在 WSL(Windows Subsystem for Linux)上配置 DNS 的方法。

資訊

WSL 允許你在 Windows 上運行 Linux 環境,但有時網絡配置(尤其是 DNS)可能會遇到問題。了解如何正確配置 DNS 可以確保你的 WSL 環境能夠正常解析域名。

WSL 中的 DNS 工作原理​

默認情況下,WSL 會嘗試從 Windows 主機獲取 DNS 配置。這通常是通過在 WSL 虛擬機中生成 /etc/resolv.conf 文件來實現的。這個文件通常包含一個指向 Windows DNS 服務的 IP 地址,例如 172.X.X.X。

常見問題​

  • 無法解析域名:這是最常見的問題,表現為無法訪問互聯網或特定服務。
  • DNS 解析速度慢:有時默認配置會導致 DNS 查詢變慢。

解決方法​

方法 1:禁用 /etc/resolv.conf 的自動生成 (推薦)​

WSL 每次啟動時都會自動重新生成 /etc/resolv.conf。禁用此功能可以讓你手動配置 DNS。

  1. 創建或編輯 wsl.conf 文件

    在 WSL 環境中,創建或編輯 /etc/wsl.conf 文件:

    sudo vim /etc/wsl.conf

    添加以下內容:

    [network]
    generateResolvConf = false

    保存並退出。

  2. 重啟 WSL

    在 PowerShell 或 CMD 中,終止 WSL 以使其應用更改:

    wsl --shutdown

    然後重新啟動你的 WSL 發行版。

  3. 手動編輯 /etc/resolv.conf

    現在,你可以手動編輯 /etc/resolv.conf 並添加你喜歡的 DNS 服務器。例如,使用 Google DNS:

    sudo vim /etc/resolv.conf

    添加以下內容:

    nameserver 8.8.8.8
    nameserver 8.8.4.4

    保存並退出。

    :::warning 注意 如果你在 wsl.conf 中設置了 generateResolvConf = false,/etc/resolv.conf 將不再被自動覆蓋。 :::

方法 2:在 Windows 中配置 DNS​

WSL 從 Windows 繼承 DNS 設置,因此你也可以直接在 Windows 的網絡適配器設置中更改 DNS 服務器。

  1. 打開 網絡和 Internet 設置 -> 更改適配器選項。
  2. 右鍵點擊你的網絡連接(例如 Wi-Fi 或乙太網),選擇 屬性。
  3. 選擇 Internet 協議版本 4 (TCP/IPv4),然後點擊 屬性。
  4. 選擇 使用下列 DNS 服務器地址,然後輸入你偏好的 DNS 服務器,例如 Google DNS (8.8.8.8 和 8.8.4.4)。
  5. 點擊 確定 保存更改。

重啟你的 WSL 發行版,它應該會自動獲取新的 DNS 設置。

方法 3:使用 netsh (Windows 命令)​

在某些情況下,你可以使用 netsh 命令來重置或配置 Windows 的 DNS 緩存。

ipconfig /flushdns
netsh interface ip delete dns "乙太網" all
netsh interface ip add dns "乙太網" 8.8.8.8 index=1

將 "乙太網" 替換為你的實際網絡適配器名稱。

測試 DNS 解析​

你可以使用 ping 或 dig 命令來測試 DNS 解析是否正常工作:

ping google.com

或

sudo apt install dnsutils # 如果沒有安裝 dig
dig google.com

總結​

通過禁用 /etc/resolv.conf 的自動生成並手動配置,或者直接在 Windows 中更改 DNS 設置,你可以有效地解決 WSL 中的 DNS 問題。選擇適合你的方法,以確保 WSL 環境的網絡連接穩定可靠。