跳至主要內容

在 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

關於最強壓縮方式的調查

結論

先說結論。

調查了對總計 34 GiB 的大量檔案進行壓縮與解壓時的時間與大小。

壓縮・建立封存檔

方式指令realusersys壓縮後大小
tartar cf large-pkg.tar large-pkg1m19.449s0m6.702s0m48.121s26 GiB
tar.gztar czf large-pkg.tar.gz large-pkg11m33.942s11m18.811s0m55.573s5.5 GiB
LZ4tar cf - large-pkg | lz4 > large-pkg.tar.lz43m33.187s0m53.958s2m57.122s8.6 GiB
zstdtar cf - large-pkg | zstd -T0 -o large-pkg.tar.zst9m13.819s1m45.049s2m43.609s4.8 GiB
bzip2tar cf - large-pkg.1 | bzip2 > large-pkg.tar.bz237m22.743s28m40.329s3m31.000s4.3 GiB
xztar cf - large-pkg | xz > large-pkg.tar.xz125m31.447s124m10.523s5m18.330s3.3 GiB

展開 (解壓)

方式指令realusersys
tartar xf large-pkg.tar2m11.793s0m6.906s2m4.183s
tar.gztar xf large-pkg.tar.gz3m39.544s2m1.189s2m58.317s
tar.gz(gzip)gzip -dc large-pkg.tar.gz | tar xf -3m40.416s2m0.272s3m0.043s
tar.gz(pigz)pigz -dc large-pkg.tar.gz | tar xf -3m53.711s1m38.147s4m42.893s
LZ4lz4 -dc large-pkg.tar.lz4 | tar xf -4m46.576s0m32.174s4m36.055s
zstdzstd -dc large-pkg.tar.zst | tar xf -3m46.419s0m46.533s3m34.668s
bzip2bzip2 -dc large-pkg.tar.bz2 | tar xf -11m31.287s9m52.644s4m17.974s
xzxz -dc large-pkg.tar.xz | tar xf -8m11.527s3m45.562s7m15.109s

準備大量小型檔案

首先,作為大量小型檔案,使用 node_modules。

package.json 設成如下。套件隨意挑選。

package.json
{
"name": "large-pkg",
"version": "1.0.0",
"description": "",
"author": "",
"type": "commonjs",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"async": "^3.2.6",
"axios": "^1.13.2",
"bcryptjs": "^3.0.3",
"bluebird": "^3.7.2",
"body-parser": "^2.2.2",
"chalk": "^5.6.2",
"chalk-template": "^1.1.2",
"cheerio": "^1.1.2",
"chokidar": "^5.0.0",
"commander": "^14.0.2",
"cookie": "^1.1.1",
"core-js": "^3.47.0",
"cors": "^2.8.5",
"debug": "^4.4.3",
"dotenv": "^17.2.3",
"express": "^5.2.1",
"fast-glob": "^3.3.3",
"form-data": "^4.0.5",
"glob": "^13.0.0",
"got": "^14.6.6",
"inquirer": "^13.2.0",
"jsonwebtoken": "^9.0.3",
"lodash": "^4.17.21",
"mime": "^4.1.0",
"minimist": "^1.2.8",
"mkdirp": "^3.0.1",
"mkdirp-classic": "^0.5.3",
"mongoose": "^9.1.4",
"ms": "^2.1.3",
"node-fetch": "^3.3.2",
"ora": "^9.0.0",
"passport": "^0.7.0",
"prop-types": "^15.8.1",
"qs": "^6.14.1",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"request": "^2.88.2",
"rimraf": "^6.1.2",
"semver": "^7.7.3",
"sharp": "^0.34.5",
"socket.io": "^4.8.3",
"supports-color": "^10.2.2",
"tslib": "^2.8.1",
"uuid": "^13.0.0",
"ws": "^8.19.0",
"xml2js": "^0.6.2",
"yargs": "^18.0.0"
},
"devDependencies": {
"@babel/cli": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/runtime": "^7.28.6",
"autoprefixer": "^10.4.23",
"ava": "^6.4.1",
"babel-core": "^6.26.3",
"babel-loader": "^10.0.0",
"chai": "^6.2.2",
"commitlint": "^20.3.1",
"concurrently": "^9.2.1",
"conventional-changelog": "^7.1.1",
"cross-env": "^10.1.0",
"css-loader": "^7.1.2",
"dotenv-expand": "^12.0.3",
"eslint": "^8.57.1",
"eslint-config-prettier": "^10.1.8",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-react": "^7.37.5",
"husky": "^9.1.7",
"jest": "^30.2.0",
"less": "^4.5.1",
"lint-staged": "^16.2.7",
"mocha": "^11.7.5",
"nodemon": "^3.1.11",
"playwright": "^1.57.0",
"pm2": "^6.0.14",
"postcss": "^8.5.6",
"prettier": "^3.8.0",
"puppeteer": "^24.35.0",
"rollup": "^4.55.1",
"rxjs": "^7.8.2",
"sass": "^1.97.2",
"semantic-release": "^25.0.2",
"sinon": "^21.0.1",
"style-loader": "^4.0.0",
"stylus": "^0.64.0",
"supertest": "^7.2.2",
"tailwindcss": "^4.1.18",
"ts-loader": "^9.5.4",
"ts-node": "^10.9.2",
"typescript": "^5.9.3",
"vite": "^7.3.1",
"vitest": "^4.0.17",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.3",
"zx": "^8.8.5"
}
}

接著用以下指令建立 node_modules。

npm i

來看看容量。

$ du -h -d1
566M ./node_modules
567M .

這樣就知道已建立大量小型檔案。

複製 node_modules 以建立更多檔案。

for i in {1..59}; do
echo "node_modules.${i} をコピー中..."
cp -r node_modules "node_modules.${i}"
done

再看一次容量。

$ du -h -d1
...
34G .

變成相當大的容量。

tarball

看看製作 tarball 的速度。

建立檔案

$ time tar cf large-pkg.tar large-pkg

real 1m19.449s
user 0m6.702s
sys 0m48.121s

建立後 26 GiB

解壓

$ time tar xf large-pkg.tar

real 2m11.793s
user 0m6.906s
sys 2m4.183s

打包與解壓都算快。

tar.gz

接著用 tar.gz 測試。

tar 指令是用來打包的命令,gzip 是壓縮單一檔案的命令。把兩者結合所產生的就是 tar.gz 檔。現在 tar 指令本身就能壓縮與解壓 tar.gz(其他壓縮格式也同理)。

壓縮

$ time tar czf large-pkg.tar.gz large-pkg

real 11m33.942s
user 11m18.811s
sys 0m55.573s

壓縮後:5.5 GiB

解壓

$ time tar xf large-pkg.tar.gz

real 3m39.544s
user 2m1.189s
sys 2m58.317s

用 tar 與 gzip 解壓

$ time sh -c 'gzip -dc large-pkg.tar.gz | tar xf -'

real 3m40.416s
user 2m0.272s
sys 3m0.043s

速度幾乎沒差。

並行解壓 (pigz)

$ time sh -c 'pigz -dc large-pkg.tar.gz | tar xf -'

real 3m53.711s
user 1m38.147s
sys 4m42.893s

速度沒有太大改變。看起來檔案讀寫速度成為瓶頸。

bzip2

壓縮

$ time sh -c 'tar cf - large-pkg.1 | bzip2 > large-pkg.tar.bz2'

real 37m22.743s
user 28m40.329s
sys 3m31.000s

壓縮後:4.3 GiB

壓縮花了比較多時間,但壓縮率還不錯。

解壓

$ time sh -c 'bzip2 -dc large-pkg.tar.bz2 | tar xf -'

real 11m31.287s
user 9m52.644s
sys 4m17.974s

解壓也花不少時間,但解壓率還不錯。

xz

壓縮

$ time sh -c 'tar cf - large-pkg | xz > large-pkg.tar.xz'

real 125m31.447s
user 124m10.523s
sys 5m18.330s

壓縮後:3.3 GiB

壓縮率極為優秀,但花的時間太多。

如果網路極度慢、儲存成本高、且多年才用一次的罕見情境,或許可以考慮。

解壓

$ time sh -c 'xz -dc large-pkg.tar.xz | tar xf -'

real 8m11.527s
user 3m45.562s
sys 7m15.109s

LZ4

壓縮

$ time sh -c 'tar cf - large-pkg | lz4 > large-pkg.tar.lz4'

real 3m33.187s
user 0m53.958s
sys 2m57.122s

解壓

$ time sh -c 'lz4 -dc large-pkg.tar.lz4 | tar xf -'

real 4m46.576s
user 0m32.174s
sys 4m36.055s

zstd

Meta(前 Facebook)開發的高速壓縮方式。

壓縮

$ time sh -c 'tar cf - large-pkg | zstd -T0 -o large-pkg.tar.zst'
/*stdin*\ : 18.57% (27492075520 => 5106239218 bytes, large-pkg.tar.zst)

real 9m13.819s
user 1m45.049s
sys 2m43.609s

解壓

$ time sh -c 'zstd -dc large-pkg.tar.zst | tar xf -'
large-pkg.tar.zst : 27492075520 bytes

real 3m46.419s
user 0m46.533s
sys 3m34.668s

Libertouch ES(日文版)評測

Libertouch ES

我入手了 Libertouch ES 的日文配列 (NC07902-B281-ES)。

不客氣地說,使用約一個月後的感想。

優點

  • 打字手感
    在薄膜式鍵盤中屬於頂級。很貼合手指,有類似機械式的輕盈感,但觸感又不是機械式那種回饋。希望能一直堅持薄膜設計。
  • 堅固
    鋁製很堅固,幾乎可以當鈍器使用。
  • 鍵帽與 Cherry MX 相容
    能更換鍵帽這點很棒。

希望改善的地方

  • 有時候按鍵不被識別…
    有些鍵按下去沒有反應,有時似乎還會出現多個鍵互換的情況。應該是韌體或軟體的問題。
  • 鍵帽容易脫落…
    可能是結構上的問題,空白鍵和 Enter 鍵特別容易掉,感覺不太穩定。
  • 希望有替換用鍵帽
    雖然有提供鍵位修改軟體這點不錯,但還是希望能有替換鍵帽。尤其左下的 Windows 鍵需求應該很大,特別想要。若能有 Home、End 也更好。
  • 希望更換或附加附贈線材
    附贈的是 Type-C to C 線。但電腦多數仍是 Type-A,所以希望能附 Type-A to C 線。
  • 價格偏高
    因為是試作品,8 萬日圓的高價可以理解。如果把所有問題都解決,售價落在 3 萬日圓左右我會考慮購買。若高於那個價格會比較難決定。

總評

Libertouch ES 是一款在打字感與堅固性表現優異的高品質薄膜鍵盤。但在實用面仍有需改進之處,例如輸入識別不穩、鍵帽易脫落、附贈線材規格等。如果能增加替換鍵帽與線材選項,會更具吸引力。希望未來能有全尺寸或 80% 的選擇,這類需求可能比 65% 更大。

期待後續的改良與正式發售。

在 Raspberry Pi 上使用 mkcert 為 cockpit 建立證書,並設定到伺服器(cockpit)與瀏覽器的方法

執行環境

以下環境確認過可用:

  • Raspberry Pi 5
  • AlmaLinux

各證書的意義

  • raspberrypi.pem: 伺服器證書(公鑰)
    這個證書是針對主機名稱 raspberrypi 所簽發的 SSL 證書。像是網頁瀏覽器等用戶端會用它來驗證伺服器的正當性。(安裝於伺服器)
  • raspberrypi+1.pem: 伺服器證書(公鑰)
    這個證書是針對 raspberrypi <IP 位址> 這類主機名稱所簽發的 SSL 證書。同上
  • raspberrypi-key.pem:
    raspberrypi.pem 對應的私鑰。由伺服器端持有,用於 SSL 通信的加解密。絕對不可外洩。(安裝於伺服器)
  • raspberrypi+1-key.pem:
    raspberrypi+1.pem 對應的私鑰。由伺服器端持有,用於 SSL 通信的加解密。絕對不可外洩。同上
  • rootCA.pem: 本地根憑證(公鑰)
    mkcert 自動產生的本地 CA(憑證機構)憑證。將此憑證安裝到用戶端(例如瀏覽器)後,即可將 raspberrypi.pem 視為可被信任的憑證。
  • rootCA-key.pem: 本地 CA 的私鑰
    rootCA.pem 對應的私鑰,供 mkcert 用來簽署伺服器證書(例如 raspberrypi.pem)。這是 mkcert 內部使用的,通常不需要手動操作。

證書的產生

使用 mkcert 指令來產生證書。產生後部署到伺服器。

mkcert raspberrypi <IP アドレス>

sudo cp raspberrypi+1-key.pem /etc/cockpit/ws-certs.d/raspberrypi.key
sudo cp raspberrypi+1.pem /etc/cockpit/ws-certs.d/raspberrypi.crt
sudo systemctl restart cockpit

確認本地根憑證的位置

確認要安裝到電腦的根 CA 憑證所在位置。

mkcert -CAROOT

將根憑證複製到 PC

將根憑證複製到電腦。

scp raspberrypi:/home/<USER>/.local/share/mkcert/rootCA.pem .
cp rootCA.pem rootCA.cer

在 Windows 上註冊憑證

開啟 rootCA.cer,在憑證存放區將憑證新增到「受信任的根憑證機構」。

在 Android 裝置上註冊憑證

rootCA.pem 移到裝置,然後從設定中安裝註冊。

如何用 podman 安裝 OpenStreetMap

匯入

請將 japan-xxx.osm.bpf 下載到家目錄。 接著執行以下指令做準備。volume 選項末尾的 :Z 是在 SELinux 運作時要加上的。

請不要更改 /data/region.osm.pbf 的部分。

podman volume create osm-data

podman run -v <ダウンロードした osm.bpf ファイル>:/data/region.osm.pbf:Z -v osm-data:/data/database/ overv/openstreetmap-tile-server import

匯入範例

podman volume create osm-data

podman run -v <ダウンロードした osm.bpf ファイル>:/data/region.osm.pbf:Z -v osm-data:/data/database/ overv/openstreetmap-tile-server import

執行

使用以下指令啟動圖磚伺服器。

podman run -p 8080:80 -v osm-data:/data/database/ -v osm-tiles:/data/tiles/ -d overv/openstreetmap-tile-server run

設定防火牆後,網路上的其他裝置即可存取。

備份

podman volume export osm-data > osm-data.tar

用 Raspberry Pi 當作伺服器公開網站

在 Raspberry Pi 上設定 nginx

# 安裝並啟用 nginx
sudo dnf install nginx

# 編輯 /etc/nginx/nginx.conf
# sudo nano /etc/nginx/nginx.conf

# 啟動並設定 nginx 開機自動啟動
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

編輯 /etc/nginx/nginx.conf

http { server {} } 裡加入以下內容

location / {
return 200 'Hello, world!';
add_header Content-Type text/plain;
}

CloudFlare 設定

  1. 前往 https://one.dash.cloudflare.com/。
  2. 開啟「網路」→「Tunnels」
  3. 按「新增隧道」

Cloudflare Tunnels

  1. 按「選擇 cloudflared」

選擇 Cloudflared

  1. 在「隧道名稱」輸入適當名稱,然後按「儲存隧道」

為 Cloudflare 儲存隧道名稱

安裝 cloudflared

# 將 cloudflared.repo 新增到 /etc/yum.repos.d/
curl -fsSl https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo

sudo dnf clean packages

# 安裝 cloudflared
sudo dnf install -y cloudflared --nogpgcheck

用 cloudflared 啟動服務

sudo cloudflared service install xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

流量路由設定

設定主機名稱的子網域與網域,以及服務類型和 URL。

設定畫面

按「完成設定」。

在 AlmaLinux 10 (Raspberry Pi 5 / GNOME / aarch64) 上安裝 Mozc 的方法

下載 rpm 檔案

  • mozc
  • mozc-gui-tools
  • ibus-mozc

請搜尋上述套件,並從 rpmfind.net 下載。

確認架構是否正確。

  • Raspberry Pi 5 則為 aarch64
  • 一般 PC 則為 x86_64

rpm 檔案範例

  • mozc-2.31.5810.102-160000.1.2.aarch64.rpm
  • mozc-gui-tools-2.31.5810.102-160000.1.2.aarch64.rpm
  • ibus-mozc-2.31.5810.102-160000.1.2.aarch64.rpm

安裝

指定下載的 rpm 檔案,使用 dnf 指令安裝。

cd ~/Downloads
sudo dnf install ./mozc-2.31.5810.102-160000.1.2.aarch64.rpm ./mozc-gui-tools-2.31.5810.102-160000.1.2.aarch64.rpm ./ibus-mozc-2.31.5810.102-160000.1.2.aarch64.rpm

登出

先登出一次。

設定

打開「設定」→「鍵盤」,然後按此順序新增:

  • Japanese (Mozc)
  • Japanese

設定完成!

透過 API 呼叫 GPT-5

GPT-5 已經公開了,所以我用 PowerShell 試著呼叫它的 API。

程式碼

$uri = "https://api.openai.com/v1/chat/completions"
$headers = @{
"Authorization" = "Bearer $env:OPENAI_API_KEY"
"Content-Type" = "application/json"
}

$body = @{
model = "gpt-5"
messages = @(
@{
role = "user"
content = "筆記本和鉛筆合計是100元。鉛筆比筆記本便宜40元。鉛筆多少錢?"
}
)
} | ConvertTo-Json -Depth 2

$response = Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body

foreach($choice in $response.choices){
$choice.message.content
}

輸出結果

30元

理由:
- 設筆記本為 x 元、鉛筆為 y 元,則
- x + y = 100
- y = x - 40
- 代入得 2x - 40 = 100 → x = 70 → y = 30
- 驗算: 70 + 30 = 100,且鉛筆比筆記本便宜 40 元。
標籤:

在終端機輸入指令,看看本地 MCP 的運作

處理流程

使用 MCP 時,我問了 Copilot 小幫手,LLM 用戶端會以什麼樣的流程進行處理。

以下為序列圖。

這裡重要的是:

  1. ①② 取得工具定義
  2. ④ 傳送工具定義
  3. ⑦ 工具呼叫要求
  4. ⑧⑨⑩⑪ 工具呼叫
  5. ⑫ 傳送執行結果

與 MCP 有關的部分是 1. 和 4.,而與 Function calling(函式呼叫)幾乎相同的部分是 2.、3. 和 5.。

在終端機輸入指令來呼叫看看

來嘗試以標準輸入使用本地 MCP。

我用 Windows PowerShell 執行指令。

取得工具清單

舉例取得 @modelcontextprotocol/server-filesystem 的工具清單。

> @{ jsonrpc = "2.0"; method = "tools/list"; id = 1 } | ConvertTo-Json -Compress | npx @modelcontextprotocol/server-filesystem $HOME | ConvertFrom-Json | ConvertTo-Json -Depth 10
Secure MCP Filesystem Server running on stdio
Allowed directories: [ 'C:\\Users\\hikari' ]
{
"result": {
"tools": [
{
"name": "read_file",
"description": "Read the complete contents of a file from the file system. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file. Only works within allowed directories.",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"required": [
"path"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
},
...
]
}
}

tools/list 透過標準輸入傳入,就能以 JSON 格式取得工具清單。

呼叫工具

根據工具資訊來呼叫它。

> @{ jsonrpc = "2.0"; method = "tools/call"; params = @{name = "read_file"; arguments = @{path = ".gitconfig"}}; id = 2 } | ConvertTo-Json -Compress -Depth 10 | npx @modelcontextprotocol/server-filesystem $HOME | ConvertFrom-Json | ConvertTo-Json -Depth 10
Secure MCP Filesystem Server running on stdio
Allowed directories: [ 'C:\\Users\\hikari' ]
{
"result": {
"content": [
{
"type": "text",
"text": "..."
}
]
},
"jsonrpc": "2.0",
"id": 2
}

在 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@~~' ████████████████████████
████████████████████████