顯示具有 學習雜記-電腦隨記 標籤的文章。 顯示所有文章
顯示具有 學習雜記-電腦隨記 標籤的文章。 顯示所有文章

2026年1月12日 星期一

學習雜記 - 電腦隨記 - 為什麼 docker prune 之後,Windows 磁碟空間還是不會回來?(WSL2 實測)

TL;DR

在 WSL2 裡自行安裝 Docker 的情境下:

docker prune 只會清掉 WSL 內部空間,不會讓 Windows 磁碟變大。
一定要對 ext4.vhdx 執行 compact vdisk,Windows 空間才會真的回收。

本文為實測案例,本次實際回收約 20GB


問題背景

環境條件:

  • Windows + WSL2(Ubuntu)

  • Docker 直接安裝在 WSL 裡(非 Docker Desktop)

  • 經常進行:

    • docker build

    • image / layer 測試

    • docker system prune

遇到的狀況:

  • 在 WSL 內執行:

    df -h /

    顯示磁碟使用率很低(例如只用 10%~15%)

  • 但 Windows 系統磁碟空間:

    • 完全沒有回來

    • 即使已執行 docker prune

    • 關閉 WSL、甚至重開機也無效


關鍵觀念:WSL2 的磁碟模型

WSL2 的 Linux 檔案系統,實際上是:

  • 一顆 ext4.vhdx 虛擬磁碟

  • 以單一檔案形式存在於 Windows 的 NTFS 檔案系統中

重點差異在這裡

動作實際影響
docker prune刪除 ext4 內部檔案
df -h只顯示 ext4 內部可用 block
Windows 磁碟只看到 ext4.vhdx 檔案大小

👉 ext4.vhdx 不會因為你刪檔而自動縮小

這也是為什麼你會看到一個非常反直覺的現象:

  • WSL:看起來很乾淨

  • Windows:磁碟空間完全沒變


為什麼 docker prune 沒用(這不是 bug)

docker prune 做的事情是:

  • 刪除 Docker layer、cache、container

  • 將 ext4 內的 block 標記為「可用」

但問題在於:

  • ext4.vhdx 檔案本身大小不會改變

  • Windows 只知道「這顆檔案還是這麼大」

這和 VM、Hyper-V、VHDX 的行為是一致的,
不是 Docker 的問題,也不是 WSL 的 bug,而是設計本來如此。


真正有效的解法(唯一)

Step 1:找出 WSL distro 的實際磁碟位置

WSL 的磁碟位置必須從 registry 查詢(權威來源):

Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object { $p = Get-ItemProperty $_.PSPath "$($p.DistributionName) -> $($p.BasePath)" }

輸出範例(已匿名):

Ubuntu -> C:\Users\<USER>\AppData\Local\wsl\{DISTRO_GUID}

實際磁碟檔案即為:

C:\Users\<USER>\AppData\Local\wsl\{DISTRO_GUID}\ext4.vhdx

Step 2:關閉 WSL

wsl --shutdown

Step 3:對 ext4.vhdx 執行 compact(關鍵步驟)

系統管理員身分開啟 PowerShell:

diskpart

接著執行:

select vdisk file="C:\Users\<USER>\AppData\Local\wsl\{DISTRO_GUID}\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit

實測結果

  • Windows 磁碟空間 立刻回收

  • 本案例回收約 20GB

  • WSL 內 df -h 不會有明顯變化(本來就已清空)


一句話總結(工程師版)

在 WSL2 裡:
docker prune 只是「掃地」
compact vdisk 才是「垃圾車來把垃圾載走」


實務建議

  • docker prune:日常清理即可

  • compact vdisk

    • 不需頻繁執行

    • 大量 Docker build / cache 清理後做一次即可

    • 半年~一年一次非常足夠


註記

本文問題定位、除錯流程與最終解法
由作者實際操作驗證,並在 ChatGPT 協助分析與整理下完成

2025年10月17日 星期五

學習雜記 - 電腦隨記 - Logitech 鍵鼠組在Linux上的安裝使用

🧪 Logitech Bolt 實驗記錄(Jetson Orin NX)

實際過程紀錄,不講理論,只記操作與結果。

實驗背景

機器:Jetson Orin NX(Ubuntu 20.04)
裝置:
- Logitech Pebble 2 滑鼠
- Logitech Pebble Keys 2 K380s 鍵盤
- Logi Bolt 接收器(USB)

系統沒有藍牙模組,也沒有外接藍牙。唯一的無線連線方式是USB Bolt 接收器。

步驟紀錄

  1. 沒安裝好Solaar之前,光插入USB bolt接收器,
    Pebble 2 M350s + K380s都不會動。
    所以要先裝舊式的鍵鼠組才能用滑鼠鍵盤操作以下步驟!!
  2. 先安裝 solaar:
    sudo apt install solaar
    開啟後可以看到 Bolt 接收器,滑鼠 Pebble 2 在 Channel 3 可動,表示滑鼠早就有配對紀錄。
  3. 測試鍵盤 K380s:
    F1、F2、F3 都長按三秒,燈會閃,但完全沒反應。
    solaar 看不到新裝置,dmesg 也沒有任何 HID 出現。
    → 確定 Linux 下沒辦法自己配對 Bolt。
  4. 還是需要在 Windows 進行配對:
    安裝 Logitech Options+,插入同一支 Bolt。
    鍵盤選 F1 → 長按三秒。
    軟體要求輸入畫面上的一串數字(約六到八位,打完按 Enter)。
    接著是滑鼠,要照畫面指示按幾下:右鍵、左鍵、右鍵、右鍵……,最後兩鍵一起按。
    按完顯示成功。
  5. 回到 Jetson:
    把 Bolt 拔下再插回 Jetson,滑鼠和鍵盤都能用了。
    不需要再設定任何東西。

結果

裝置狀況
滑鼠 Pebble 2插上後,安全完Solaar後就能動
鍵盤 K380s必須在 Windows 上用 Options+ 配對一次
Solaar能顯示 Bolt 狀態,但不能新增配對
Linux 功能無法配對 Bolt 裝置

總結

  • Jetson Orin NX 沒藍牙,只有 Bolt 接收器的話,只能靠 Windows 先配對好
  • 配對完再插回 Jetson,鍵鼠就能正常使用。
  • Linux 目前沒有可以取代 Options+ 的方式。
  • 是因為看到裝了Solaar後,滑鼠在 Channel 3 動起來,整個人才有動力往下處理。
  • 配對流程雖然麻煩,但成功後就記鍵一下。
  • 這篇文章是靠GPT輔助記錄。
  • 從沒有寫到完,兩個小時跑不到,但現在只要十分鐘校稿。

紀錄:2025 年 Jetson Orin NX + Logitech Bolt 測試
作者:個人實驗筆記(非官方教學)

2017年11月12日 星期日

學習雜記 - Blogger修改 - Google Drive檔案直接下載

我想說把WFU樹狀標籤換成V2.1版的,
畢竟文章越來越多,整理文章還是切到「標題模式」簡單得多,
要不然一直拉文章、翻頁什麼的真的會有完沒完。

看來經營Blog也是要將頁面儘量留得簡潔明暸啊,
不然就算有「摘要模式」,文章沒有設定「閱讀標示」,
內文也是一長串跳出來亂了版 面。

若你有興趣了解這些設定,請參閱下方這兩個網站。
個人算是在JS Download這邊遭遇了一點小挫折,
但說不定在某一天Google Drive一樣會GG。
待到那一天,也許就真的得要使用付費空間來存放JS了。

參考網站:
WFU Blog - Blogger 樹狀標籤 V2.1﹍切換標題模式
深藏若虛 - 獲取 Google Drive, Dropbox, OneDrive 中檔案直接下載的連結

2017年10月4日 星期三

學習雜記 - Blogger修改 - 樹狀標籤

這東西我研究了超過三個小時。

原來是要先把所有文章的「標籤」先依照格式設定好,
然後再到「主題」頁面去「編輯HTML」。

會有「文章分類」這種想法是因為我這個部落格的文章越來越多,
若沒有做好分類,到時找個資料都要翻頁翻到眼球跟著翻到後腦去。

為了「將就」這種格式,我也只能把之前亂設定的標籤重新設計過了。

好在Blogger可以批次設定跟移除標籤,
要不然我真的還以為要把文章一篇一篇點進去校正修改呢。

(若這樣的話我真的不想幹下去!
動一篇要三十秒,每篇都改,改一百篇少說也要一小時了。)

所以,我參考了下列這些網站做前置作業:

一、批次改標籤 -
[教學]Blogger 批次修改標籤的方法及注意事項

二、設定細節圖文教學 -
水域 - 標籤多層次樹狀清單設定

在這裡提醒一下,上面所說的設定是搭配2.0版之前的程式碼。
我參照該網站的步驟做過之後,卻因為尚未設定好標籤格式而一直失敗,
卡關卡了快兩個小時。

舊板的設定要先找到Blogger版面的「HTML編輯」找Lable number,
接著替代Lable區段裡的程式碼。這種編輯危險性太高,真的不推薦。

三、新版V2.0設定,不需更替Blogger提供的Lable原始碼 -
Blogger 文章分類﹍樹狀標籤 V2.0 -- 安裝懶人包

新板的設計只要把該功能的程式碼增加到HTML的Head跟Body結束之前,簡單明暸多了。

雖然多了程式引用的版權宣示,但這種造福群眾的設計,
放上原創者的網頁宣傳真的沒什麼。

有興趣的真的可以去看看設計,給他捧個場吧!!