2026年6月20日 星期六

DELL 老筆電 Vostro 2520 修復 (失敗)

最近把水某 2012 年買的 ASUS 舊筆電成功地從 Win8 升版到 Win10, 拿回高雄家充當下載機 (取代原先的 ACER Swift 5 舊筆電, 上周一無法開機報廢了). 今天端午連假第二天, 著手來修理水某另一台研究計畫結束後留下的十幾年老筆電 DELL  Vostro 2520 (2GB DRAM, Win7 Professional), 先拿出來擦拭一番, 雖然可正常開機, 但出現兩個問題 :
  • 一直重複嗶嗶嗶嗶嗶五聲 
  • 日期時間停在 2010/01/01, 瀏覽器因安全性問題無法連線網站
原因一樣都是 CMOS 鈕扣電池沒電造成, 須拆機更換. 但按右下角日期時間要更改日期時間以便能使用瀏覽器時, 卻因為沒有系統管理員密碼而被拒絕, 所以要先來解決管理員密碼問題. 為了讓電腦在修復過程中日期時間正確避免扯後腿, 先進 BIOS 更改日期時間. 以下測試都是詢問 Gemini 後依據其建議進行. 


1. 進 BIOS 更改日期時間 :

按開機鈕, 在筆電剛亮起畫面出現 DELL 商標時狂按 F2 進入 BIOS 設定畫面, 通常在 Main 或 System Information 分頁中可找到 System Time 與 System Date, 使用鍵盤的方向鍵與 Enter 鍵將日期和時間調整為現在的正確時間後按 F10 存檔離開 BIOS. 

注意, 這個方法只要不拔掉筆電電池與電源線就能一直維持正確時間, 如果完全斷電 (拔插頭+拔大電池), 下次開機還是得進 BIOS 重新調整一次.


2. 更改系統管理者密碼 :

筆電開機, 在看到 Windows 7 正在啟動的標誌 (四色旗幟) 時, 直接拔掉電源線強制關機. 再次開機時系統會偵測到前次異常關機而出現一個黑底白字的選單, 請選擇 "啟動啟動修復 (推薦)", 




按 Cancel 鍵系統會掃描約 5 分鐘 :




出現啟動修復失敗頁面, 按底下 View Problem Detail 鈕 :




拉到最底下有一個隱私權 .txt 檔文件超連結, 按它會開啟記事本顯示內容 :




但我們不是要閱讀或編輯此文件, 而是要利用它來偷天換日, 點選 Open :




將記事本下方的檔案類型切換為 "所有檔案" (All files), 尋找並進入 Windows 系統資料夾 (通常在 C:\Windows\System32), 找到 Magnify (放大鏡程式), 按滑鼠右鍵選 Rename 將檔名改成 Magnify.old :





然後再尋找 cmd 程式, 按滑鼠右鍵選 Copy 建立副本 cmd - Copy : 




在 cmd - Copy 上按滑鼠右鍵選 Rename, 將其檔名改成 Magnify :





關閉記事本, 關閉啟動修復的所有視窗, 點擊 "完成 (Finish)" 鈕關閉電腦 :




按電源鍵開啟電腦, 正常進入 Win7 後, 按 Window 與 + 鍵原本會開啟放大鏡, 但經過上面操作其實會開啟 CMD 視窗, 輸入 net user Pasteur 123456 將系統管理員密碼改成 123456, 預期會得到密碼設定成功訊息, 但可惜沒有, 指令被拒絕了 : 




詢問 Gemini 為何會失敗, 它研判是主要是因為微軟在後期推播了安全更新, 這台電腦被設定了更嚴格的安全性防禦機制, 在 Windows 7 的中後期更新中, 像 cmd.exe, magnify.exe 等這些系統核心檔案的擁有者並不是 SYSTEM 或 Administrator, 而是一個叫做 TrustedInstaller 的虛擬內建帳戶. n雖然我們在啟動修復的記事本裡把檔案重新命名了, 但在系統正常開機後, Windows 的 SFC (系統檔案檢查器) 或安全機制偵測到 magnify.exe 的數位簽章不對 (它其實是 CMD), 系統可能會採取時隔離與降權防禦, 防止它染指系統檔案. 

另一個可能原因是原擁有者調高過安全層級, 本機群組原則裡可能開啟了 "不允許在未登入狀態下執行具有系統管理權限的互動式命令提示字元" 原則, 這項原則會直接鎖死任何想在登入畫面借調 SYSTEM 權限的後門. 總之, 忙了一整天結果是白做工, 任務失敗. 

不過 Gemini 還有一個終極殺招可以攻克系統管理員密碼問題, 它建議在別台電腦製作 Rufus + Ubuntu 隨身碟, 用 Linux 隨身碟開機後, 這台筆電的防禦機制會全部癱瘓, 然後安裝破解工具 chntpw 去編輯 system32 底下的 config 檔, 用它來修改 SAM (密碼資料庫), 直接抹除 Pasteur 的密碼, 下周來試試看. 

2026年6月19日 星期五

OpenClaw 學習筆記 : 在 Pi 4B 安裝 OpenClaw (一)

今天在樹莓派 Pi 4B 上安裝 OpenClaw, 由於只有 8GB DRAM, 且樹莓派 GPU 無法用來跑本地模型, 用 CPU 跑的話吐 token 的速度會很慢 (且只能跑 3B 以下的小模型), 必須使用雲端模型跑龍蝦才會順暢, 本篇測試先安裝 nvm 工具, 然後用 nvm 安裝 Node.js 24, 最後用 Node.js 的 npm 安裝 OpenClaw. 


1. 安裝 nvm 版本管理工具 :   

不要用 apt install nodejs 來安裝 Node.js, 因為 Debian 官方套件庫的版本通常太舊, 建議用 nvm 工具來安裝符合 OpenClaw 要求版本的 Node.js, 最低版本為 Node 22.16+, 但官方強烈推薦安裝 Node 24. 

nvm 安裝指令如下, 使用管線串接的兩個指令, 前者先用 curl 指令下載 nvm 安裝指令稿 install.sh, 並且用 -o- 參數指定下載後不存成檔案, 而是直接把檔案的原始碼內容顯示在螢幕上, 並透過管線丟給 bash shell 執行. 不存檔的好處是免去賦予它執行權限與執行完要刪除的麻煩 :

pi@pi4b:~ $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash  
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16555  100 16555    0     0  11793      0  0:00:01  0:00:01 --:--:-- 11799
=> Downloading nvm from git to '/home/pi/.config/nvm'
=> 正複製到 '/home/pi/.config/nvm'...
remote: Enumerating objects: 436, done.
remote: Counting objects: 100% (436/436), done.
remote: Compressing objects: 100% (363/363), done.
remote: Total 436 (delta 61), reused 196 (delta 45), pack-reused 0 (from 0)
接收物件中: 100% (436/436), 427.36 KiB | 12.00 KiB/s, 完成.
處理 delta 中: 100% (61/61), 完成.
* (開頭指標分離於 FETCH_HEAD)
  master
=> Compressing and cleaning up git repository

=> Appending nvm source string to /home/pi/.bashrc
=> Appending bash_completion source string to /home/pi/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.config/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

nvm 的安裝腳本 install.sh 會把 nvm 的主程式下載到家目錄 ~/.nvm/ 下, 然後在系統設定檔 ~/.bashrc (這是每次開啟新終端機時會自動讀取的檔案) 的最後面悄悄寫入了幾行 nvm 的環境變數路徑. 但是目前正在使用的這個終端機視窗是在安裝 nvm 之前就打開的, 它並不知道設定檔已經被修改了, 所以如果馬上輸入 nvm 指令會找不到 :

pi@pi4b:~ $ nvm --version   
bash: nvm:指令找不到

只要用 source 重新讀取系統設定檔 ~/.bashrc 強制目前的終端機視窗立刻載入 nvm 的環境變數, 這樣就可以找到 nvm 指令了 : 

pi@pi4b:~ $ source ~/.bashrc  
pi@pi4b:~ $ nvm --version   
0.39.7


2. 安裝 Node.js :

有了 nvm 後就可用它來安裝 Node.js, 如前所述, OpenClaw 要求最低 Node 版本為 v22, 建議安裝 Node 24 :

pi@pi4b:~ $ nvm install 24   
Downloading and installing node v24.17.0...
Downloading https://nodejs.org/dist/v24.17.0/node-v24.17.0-linux-arm64.tar.xz...
#############################################                              62.8%curl: (56) Recv failure: 連線被對方重設

Binary download from https://nodejs.org/dist/v24.17.0/node-v24.17.0-linux-arm64.tar.xz failed, trying source.
grep: /home/pi/.config/nvm/.cache/bin/node-v24.17.0-linux-arm64/node-v24.17.0-linux-arm64.tar.xz: 沒有此一檔案或目錄
Provided file to checksum does not exist.
Binary download failed, trying source.
Detected that you have 4 CPU core(s)
Running with 3 threads to speed up the build
Downloading https://nodejs.org/dist/v24.17.0/node-v24.17.0.tar.xz...

但這指令執行了很久 (超過半小時), 我把上面訊息貼給 Gemini 分析, 它要我立刻按 Ctrl + C 終止執行, 因為台灣連到 Node.js 官方伺服器的網路有時候不太穩定, 下載到 62.8% 時斷線了, 觸發致命的原始碼編譯 (trying source), 因為二進位預編譯檔下載失敗, 所以 nvm 絕望之下決定下載 .tar.xz 原始碼來編譯 (正開啟 3 個執行緒準備進行編譯), 這會讓 CPU 100% 狂飆而且需要耗時 2 到 4 個小時, 甚至可能因為記憶體不足而當機, 所以要我趕快結束程序. 

Gemini 建議我用 nvm 從亞洲的鏡像站 (Mirror) 去抓已經打包好的二進位檔 (淘寶/華為鏡像站), 速度會快上百倍, 而且絕對不會觸發原始碼編譯, 指令如下 : 

pi@pi4b:~ $ NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node nvm install 24
Downloading and installing node v24.17.0...
Downloading https://npmmirror.com/mirrors/node/v24.17.0/node-v24.17.0-linux-arm64.tar.xz...
######################################################################### 100.0%######################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v24.17.0 (npm v11.13.0)
Creating default alias: default -> 24 (-> v24.17.0)

果然不到 10 分鐘就完成了, 檢查 Node.js 版本 :

pi@pi4b:~ $ node --version   
v24.17.0
pi@pi4b:~ $ npm --version    
11.13.0

這樣便完成 Node.js 的安裝了. 為了以後更新或安裝其他 Node.js 版本時不再卡住, Gemini 建議我把這個鏡像站網址永久加進 .bashrc 中 : 

pi@pi4b:~ $ echo 'export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node' >> ~/.bashrc  

此指令會將鏡像站網址寫入系統設定檔, 用 source 重新載入設定檔 :

pi@pi4b:~ $ source ~/.bashrc  


3. 安裝 OpenClaw :

有了 Node.js 後本來想依照阿亮老師大作 "養成你的 AI 龍蝦管家" 一書中介紹的方式, 用 npm install 指令安裝 :

npm install -g openclaw@latest

但那是在 Windows 的 Power Shell 底下, 環境不同, 所以我先跟 Gemini 討論在樹莓派底下是否可以照做, 回答是可以, 但不建議, 理由是 -g 參數會進行全域安裝, 使 OpenClaw 被塞進 nvm 的深層隱藏目錄中, 這會讓我們很難找到它的 .env 檔案在哪裡, 增加配置的難度, 特別是當要設定大模型的 API Key 時, 會被迫在終端機用很長的環境變數來啟動 OpenClaw. 

其次, 有很多新功能以及 Playwright 瀏覽器自動化依賴的初始化腳本在全域安裝模式下容易因為路徑問題噴錯. OpenClaw 在近期的版本更新中更傾向於讓使用者以 git clone 建立獨立專案目錄的方式來運行. Gemini 建議的安裝程序如下 :


(1). 安裝 Linux 編譯基礎套件 (Build Tools) : 

用 npm install 安裝 OpenClaw 時, 有些底層的套件 (例如處理加密, 網路或硬體效能的最佳化模組) 會需要在樹莓派上進行 C/C++ 編譯, 先用下列兩個指令把編譯工具補齊 :

sudo apt update
sudo apt install build-essential python3 libssl-dev -y

pi@pi4b:~ $ sudo apt update   
已有:1 http://deb.debian.org/debian bookworm InRelease
下載:2 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
下載:3 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]   
下載:4 http://archive.raspberrypi.com/debian bookworm InRelease [55.0 kB]      
下載:5 http://archive.raspberrypi.com/debian bookworm/main arm64 Packages [575 kB]
下載:6 http://archive.raspberrypi.com/debian bookworm/main armhf Packages [575 kB]
取得 1,309 kB 用了 12s (108 kB/s)                                              
正在讀取套件清單... 完成
正在重建相依關係... 完成
正在讀取狀態資料... 完成  
189 packages can be upgraded. Run 'apt list --upgradable' to see them.

pi@pi4b:~ $ sudo apt install build-essential python3 libssl-dev -y   
正在讀取套件清單... 完成
正在重建相依關係... 完成  
正在讀取狀態資料... 完成  
build-essential is already the newest version (12.9).
python3 is already the newest version (3.11.2-1+b1).
python3 被設定為手動安裝。
建議套件:
  libssl-doc
下列【新】套件將會被安裝:
  libssl-dev
下列套件將會被升級:
  libssl3 openssl
升級 2 個,新安裝 1 個,移除 0 個,有 187 個未被升級。
需要下載 7,342 kB 的套件檔。
此操作完成之後,會多佔用 13.0 MB 的磁碟空間。
下載:1 http://archive.raspberrypi.com/debian bookworm/main arm64 libssl3 arm64 3.0.20-1~deb12u2+rpt1 [2,384 kB]
下載:2 http://archive.raspberrypi.com/debian bookworm/main arm64 libssl-dev arm64 3.0.20-1~deb12u2+rpt1 [3,452 kB]
下載:3 http://archive.raspberrypi.com/debian bookworm/main arm64 openssl arm64 3.0.20-1~deb12u2+rpt1 [1,506 kB]
取得 7,342 kB 用了 1min 26s (85.7 kB/s)                                        
apt-listchanges: 讀取改變紀錄(changelogs)...
(讀取資料庫 ... 目前共安裝了 131003 個檔案和目錄。)
正在準備解包 .../libssl3_3.0.20-1~deb12u2+rpt1_arm64.deb……
Unpacking libssl3:arm64 (3.0.20-1~deb12u2+rpt1) over (3.0.18-1~deb12u1+rpt1) ...
選取了原先未選的套件 libssl-dev:arm64。
正在準備解包 .../libssl-dev_3.0.20-1~deb12u2+rpt1_arm64.deb……
Unpacking libssl-dev:arm64 (3.0.20-1~deb12u2+rpt1) ...
正在準備解包 .../openssl_3.0.20-1~deb12u2+rpt1_arm64.deb……
Unpacking openssl (3.0.20-1~deb12u2+rpt1) over (3.0.18-1~deb12u1+rpt1) ...
設定 libssl3:arm64 (3.0.20-1~deb12u2+rpt1) ...
設定 libssl-dev:arm64 (3.0.20-1~deb12u2+rpt1) ...
設定 openssl (3.0.20-1~deb12u2+rpt1) ...
執行 man-db (2.11.2-2) 的觸發程式……
執行 libc-bin (2.36-9+rpt2+deb12u13) 的觸發程式……


(2). 下載並安裝 OpenClaw : 

下面指令會略過 GitHub 驗證, 從雲端 (GitHub) 上的 OpenClaw 開源專案完整地複製一份複本到樹莓派使用者目錄下的 openclaw 子目錄, 執行後首先會建立一個 ~/openclaw 資料夾來存放 OpenClaw 專案 (主程式, 設定範例檔, 與開發者寫好的各種自動化腳本等) : 

pi@pi4b:~ $ git clone https://github.com/openclaw/openclaw.git  
正複製到 'openclaw'...
remote: Enumerating objects: 880235, done.
remote: Counting objects: 100% (724/724), done.
remote: Compressing objects: 100% (300/300), done.
remote: Total 880235 (delta 544), reused 426 (delta 424), pack-reused 879511 (from 3)
接收物件中: 100% (880235/880235), 1.48 GiB | 707.00 KiB/s, 完成.
處理 delta 中: 100% (636087/636087), 完成.
正在更新檔案: 100% (20260/20260), 完成.

完成後切換到 ~/openclaw 資料夾下 : 

pi@pi4b:~ $ cd openclaw   

瀏覽專案內容 :

pi@pi4b:~/openclaw $ ls -ls  
總用量 4288
  36 -rw-r--r--   1 pi pi   36751  6月 18 21:26 AGENTS.md
  48 -rw-r--r--   1 pi pi   48650  6月 18 21:26 appcast.xml
   4 drwxr-xr-x   8 pi pi    4096  6月 18 21:26 apps
2528 -rw-r--r--   1 pi pi 2587998  6月 18 21:26 CHANGELOG.md
   0 lrwxrwxrwx   1 pi pi       9  6月 18 21:26 CLAUDE.md -> AGENTS.md
   4 drwxr-xr-x   3 pi pi    4096  6月 18 21:26 config
  16 -rw-r--r--   1 pi pi   15055  6月 18 21:26 CONTRIBUTING.md
   4 drwxr-xr-x   2 pi pi    4096  6月 18 21:26 deploy
   8 -rw-r--r--   1 pi pi    5580  6月 18 21:26 docker-compose.yml
  20 -rw-r--r--   1 pi pi   19322  6月 18 21:26 Dockerfile
   4 drwxr-xr-x  30 pi pi    4096  6月 18 21:26 docs
   4 drwxr-xr-x 140 pi pi    4096  6月 18 21:26 extensions
   4 -rw-r--r--   1 pi pi     773  6月 18 21:26 fly.toml
   4 drwxr-xr-x   2 pi pi    4096  6月 18 21:26 git-hooks
   4 -rw-r--r--   1 pi pi    1170  6月 18 21:26 LICENSE
 128 -rw-r--r--   1 pi pi  130569  6月 18 21:26 npm-shrinkwrap.json
  24 -rwxr-xr-x   1 pi pi   20489  6月 18 21:26 openclaw.mjs
 112 -rw-r--r--   1 pi pi  110947  6月 18 21:26 package.json
   4 drwxr-xr-x  23 pi pi    4096  6月 18 21:26 packages
   4 drwxr-xr-x   2 pi pi    4096  6月 18 21:26 patches
 452 -rw-r--r--   1 pi pi  461179  6月 18 21:26 pnpm-lock.yaml
   4 -rw-r--r--   1 pi pi    3898  6月 18 21:26 pnpm-workspace.yaml
   4 drwxr-xr-x   4 pi pi    4096  6月 18 21:26 qa
  88 -rw-r--r--   1 pi pi   86929  6月 18 21:26 README.md
   4 -rw-r--r--   1 pi pi     449  6月 18 21:26 render.yaml
  20 drwxr-xr-x  19 pi pi   20480  6月 18 21:26 scripts
   4 drwxr-xr-x   3 pi pi    4096  6月 18 21:26 security
  36 -rw-r--r--   1 pi pi   35289  6月 18 21:26 SECURITY.md
   4 drwxr-xr-x  59 pi pi    4096  6月 18 21:26 skills
   4 drwxr-xr-x  70 pi pi    4096  6月 18 21:26 src
 616 -rw-r--r--   1 pi pi  627926  6月 18 21:26 taxonomy.yaml
   4 drwxr-xr-x  10 pi pi    4096  6月 18 21:26 test
   4 -rw-r--r--   1 pi pi    1575  6月 18 21:26 THIRD_PARTY_NOTICES.md
   4 -rw-r--r--   1 pi pi     339  6月 18 21:26 tsconfig.core.json
   4 -rw-r--r--   1 pi pi     139  6月 18 21:26 tsconfig.core.projects.json
   4 -rw-r--r--   1 pi pi     511  6月 18 21:26 tsconfig.extensions.json
   4 -rw-r--r--   1 pi pi     151  6月 18 21:26 tsconfig.extensions.projects.json
  12 -rw-r--r--   1 pi pi   12257  6月 18 21:26 tsconfig.json
   4 -rw-r--r--   1 pi pi     965  6月 18 21:26 tsconfig.plugin-sdk.dts.json
   4 -rw-r--r--   1 pi pi     144  6月 18 21:26 tsconfig.projects.json
  32 -rw-r--r--   1 pi pi   31151  6月 18 21:26 tsdown.config.ts
   4 drwxr-xr-x   6 pi pi    4096  6月 18 21:26 ui
   8 -rw-r--r--   1 pi pi    5984  6月 18 21:26 VISION.md
   4 -rw-r--r--   1 pi pi     241  6月 18 21:26 vitest.config.ts

然後用 npm install 指令安裝 OpenClaw :

pi@pi4b:~/openclaw $ npm install  

> openclaw@2026.6.8 preinstall
> node scripts/preinstall-package-manager-warning.mjs

[openclaw] warning: detected npm for install lifecycle.
[openclaw] this repo works best with pnpm; npm-compatible installs are slower and much larger here.
[openclaw] prefer: corepack pnpm install

> openclaw@2026.6.8 postinstall
> node scripts/postinstall-bundled-plugins.mjs


> openclaw@2026.6.8 prepare
> node scripts/prepare-git-hooks.mjs


added 728 packages, and audited 729 packages in 6m

217 packages are looking for funding
  run `npm fund` for details

2 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.
npm notice
npm notice New minor version of npm available! 11.13.0 -> 11.17.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.17.0
npm notice To update run: npm install -g npm@11.17.0
npm notice

看到 "added 728 packages, and audited 729 packages in 6m" (在 6 分鐘內成功加入了 728 個套件) 就表示所有的程式碼依賴項目都已經完整下載並安裝到樹莓派上了. 過程中出現一個可以忽略的 warning (有比 npm 速度更快的 pnpm 可用), 以及 2 個中度安全漏洞, 對於沒有要上線當作大型商業網站使用的專案來說可以忽略它. 

以上便完成 OpenClaw 安裝了, 先關機用 Win32DiskImager 製作映像檔備份系統, 再進行接下來的OpenClaw 設定作業. 

2026年6月18日 星期四

MSI 電競桌機維修 (五)

前一篇我已安裝好 Scoop 工具並用它來安裝系統全域 Python 執行環境, 管理虛擬環境與專案的 uv 工具, Git 與 nvm 以及 Node.js, 本篇要在此基礎上安裝  Claude Code 與 Gemini CLI. 

本系列之前的文章參考 :



1. 安裝 Claude Code : 

在 Windows 上可以安裝原生版 Claude Code 軟體並使用 Git 附帶的 git-bash 指令列作為介面, 參考 :


在前一篇測試中已用 Scoop 安裝了 git, 在安裝原生版 Claude Code 之前必須先把 git-bash 的程式位置設在特定的使用者環境變數 CLAUDE_CODE_GIT_BASH_PATH 中, Claude Code 會固定找尋此環境變數來取得 git-bash 程式位置. 

我照之前做法用 where.exe 查詢 git-bash 程式的位置 : 

PS C:\WINDOWS\System32> where.exe bash   
資訊: 找不到提供模式的檔案。

詢問 Gemini 原因, 原來是 Scoop 還沒幫 git-bash 生成墊片 (Shim), 因為 Scoop 預設只會幫該軟體的核心指令建立墊片, 而 git-bash.exe 或 bash.exe 這種附屬的小工具, Scoop 預設不會把它們放進全域的 shims 資料夾裡, where.exe 是一個很笨的工具, 它只會去 Windows 系統的 PATH 捷徑資料夾裡撈東西, 既然 Scoop 預設沒有幫 git-bash.exe 建立全域捷徑, where.exe 自然就回報找不到. 

其實用 scoop which git 指令就可以查到 git 的位置了 :

PS C:\WINDOWS\System32> scoop which git   
~\scoop\apps\git\current\cmd\git.exe

注意, 這位置開頭的波浪 ~ 雖然在 Power Shell 視窗可以被辨識 (代表我的使用者目錄 : C:\Users\tony1), 但 Claude Code 作為一個外部引擎去讀取環境變數時可能會看不懂, 必須置換為使用者路徑, 並且將 git.exe 改成 git-bash.exe, 完整的絕對位置如下 : 

C:\Users\tony1\scoop\apps\git\current\cmd\git-bash.exe  

接下來可以像之前的做法那樣, 手動到系統設定中新增一個使用者環境變數 CLAUDE_CODE_GIT_BASH_PATH 並設為此位置設定, 也可以用下列 PS 指令一鍵完成設定 : 

PS C:\WINDOWS\System32> [Environment]::SetEnvironmentVariable("CLAUDE_CODE_GIT_BASH_PATH", "C:\Users\tony1\scoop\apps\git\current\git-bash.exe", "User") 

設定好後關閉 PS 視窗重開新的, 用下列指令檢查環境變數是否正確 : 

PS C:\WINDOWS\System32> $env:CLAUDE_CODE_GIT_BASH_PATH   
C:\Users\tony1\scoop\apps\git\current\git-bash.exe

這樣便可以在新開的 PS 視窗安裝 Windows 原生版的 Claude Code 了 : 

PS C:\WINDOWS\System32> irm https://claude.ai/install.ps1 | iex  
Setting up Claude Code...

√ Claude Code successfully installed!

  Version: 2.1.179

  Location: C:\Users\tony1\.local\bin\claude.exe


  Next: Run claude --help to get started

Setup notes:
  ● Native installation exists but C:\Users\tony1\.local\bin is not in your PATH. Add it by opening: System Properties →
    Environment Variables → Edit User PATH → New → Add the path above. Then restart your terminal.


✅ Installation complete!

版本已經來到 v2.1.179 了. 請注意在 Setup notes 中有提醒要將 Claude Code 的執行檔目錄路徑加入使用者環境變數 Path 中, 這樣以後才能在任何路徑下執行 Claude Code. 

當然可以到系統設定中手動將 C:\Users\tony1\.local\bin 加到 使用者環境變數 Path 的最後面, 也可以用下面兩個 PS 指令設定 : 

PS C:\WINDOWS\System32> $oldPath = [Environment]::GetEnvironmentVariable("PATH", "User")

這指令是抓取目前登入使用者 (tony1) 現有的 User PATH 設定後儲存在 $oldPath 變數中. 

PS C:\WINDOWS\System32> [Environment]::SetEnvironmentVariable("PATH", "$oldPath;C:\Users\tony1\.local\bin", "User")   

第二個指令是把新路徑接到舊路徑後面 (用分號隔開) 並寫回 Windows 系統的使用者環境變數 Path 中. 

檢查環境變數異動須重開一個 PS 視窗, 輸入下列指令 :

PS C:\WINDOWS\System32> $env:PATH -split ";"   
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\WINDOWS\System32\OpenSSH\
C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
C:\Users\tony1\scoop\apps\nvm\current
C:\Users\tony1\scoop\apps\nvm\current\nodejs\nodejs
C:\Users\tony1\scoop\apps\git\current\cmd
C:\Users\tony1\scoop\persist\uv\tools\shims
C:\Users\tony1\scoop\persist\uv\python\shims
C:\Users\tony1\scoop\apps\python\current\Scripts
C:\Users\tony1\scoop\apps\python\current
C:\Users\tony1\scoop\shims
C:\Users\tony1\AppData\Local\Microsoft\WindowsApps
C:\Users\tony1\.local\bin

最後一個便是 Claude Code 的執行檔目錄位置. 

輸入 claude 按 Enter 出現如下畫面 :




這樣便完成 Claude Code 的安裝了. 接下來安裝 Gemini CLI. 


2. 用 npm 安裝 Gemini CLI : 

我們在前一篇測試中已安裝好 Node.js, 接下來參考之前的作法, 在 PS 視窗輸入下列 npm 指令安裝 Gemini CLI :

PS C:\WINDOWS\System32> npm install -g @google/gemini-cli   

changed 7 packages in 2s
npm warn allow-scripts 2 packages have install scripts not yet covered by allowScripts:
npm warn allow-scripts   @github/keytar@7.10.6 (install: node script/install.js || npm run build)
npm warn allow-scripts   node-pty@1.1.0 (install: node scripts/prebuild.js || node-gyp rebuild; postinstall: node scripts/post-install.js)
npm warn allow-scripts
npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.

出現警告而未能安裝 Gemini CLI, 我將上面訊息貼給 Gemini, 原來 @google/gemini-cli 這個工具為了能在終端機裡呈現帥氣的互動介面需依賴兩個非常硬核的底層套件 : 
  • node-pty : 負責模擬 Linux/Unix 終端機介面.
  • @github/keytar : 負責安全地把 Google API Key 存進 Windows 的憑證保險箱. 
在安裝 @google/gemini-cli 時, 它會執行編譯腳本動作, 將此二套件的 C++ 程式碼編譯成 Windows 的二進位檔, 新版的 npm 為了防止惡意軟體偷偷在背後跑腳本, 預設會攔截這些行為跳出警告. 

要解除此攔截需先用下列指令修改 npm 的全域設定, 強迫允許執行腳本 : 

PS C:\WINDOWS\System32> npm config set ignore-scripts false --global   

然後用下列指令 --foreground-scripts 參數繞過權限管理員, 強迫 Windows 彈出編譯視窗, 直接在最前面把 node-pty 和 keytar 編譯出來後, 直接進行全域強制覆蓋安裝 : 

PS C:\WINDOWS\System32> npm install -g @google/gemini-cli --foreground-scripts  

> @github/keytar@7.10.6 install
> node script/install.js || npm run build


> node-pty@1.1.0 install
> node scripts/prebuild.js || node-gyp rebuild

> Checking prebuilds...

> node-pty@1.1.0 postinstall
> node scripts/post-install.js

> Cleaning release folder...
> Moving conpty.dll...
  Using os.arch(): x64
  Found version 1.23.251008001
  Copying C:\Users\tony1\scoop\persist\nvm\nodejs\v26.3.0\node_modules\@google\gemini-cli\node_modules\node-pty\third_party\conpty\1.23.251008001\win10-x64\conpty.dll -> C:\Users\tony1\scoop\persist\nvm\nodejs\v26.3.0\node_modules\@google\gemini-cli\node_modules\node-pty\build\Release\conpty\conpty.dll
  Copying C:\Users\tony1\scoop\persist\nvm\nodejs\v26.3.0\node_modules\@google\gemini-cli\node_modules\node-pty\third_party\conpty\1.23.251008001\win10-x64\OpenConsole.exe -> C:\Users\tony1\scoop\persist\nvm\nodejs\v26.3.0\node_modules\@google\gemini-cli\node_modules\node-pty\build\Release\conpty\OpenConsole.exe

changed 7 packages in 2s
npm warn allow-scripts 2 packages have install scripts not yet covered by allowScripts:
npm warn allow-scripts   @github/keytar@7.10.6 (install: node script/install.js || npm run build)
npm warn allow-scripts   node-pty@1.1.0 (install: node scripts/prebuild.js || node-gyp rebuild; postinstall: node scripts/post-install.js)
npm warn allow-scripts
npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.

雖然新版 npm 仍然頑固地跳出 npm warn allow-scripts 警告, 但 Gemini CLI 已經安裝成功了 (黃底色部分顯示 node-pty 最核心的底層微軟虛擬終端組件 conpty.dll 和 OpenConsole.exe 已經成功複製, 編譯與就位了), 這樣便可將上面強迫允許執行腳本的 npm 全域設定復原了 : 

PS C:\WINDOWS\System32> npm config delete ignore-scripts --global   

關閉 PS 視窗重開一個, 輸入 gemini 按 Enter 出現如下畫面表示 Gemini CLI 已經安裝成功了 : 



2026年6月17日 星期三

MSI 電競桌機維修 (四)

今天的進度是要安裝 Windows 命令列軟體包管理工具 Scoop, 並利用它來安裝全域 Python 執行環境. 兩年前此主機到貨後, 我是直接到官網下載最新版 Python 來安裝, 但隨後要安裝 Stable Diffusion 時卻發現系統 Python 版本太新而卡關, 所幸後來找到自帶 Python 的一鍵安裝版才解決. 

這次我先跟 Gemini 討論要怎樣布置執行環境才好, 它建議先用 Scoop 安裝最新版的 Python 作為系統全域執行環境 (Thonny 解譯器可掛接到此執行環境); 然後再用 MiniConda 來安裝特定版本的 Python (例如跑 Stable Diffusion 要用的 Python 10.11).  

本系列之前的文章參考 :



1. 安裝 Scoop 工具 : 

Scoop 是一個類似 Mac 系統的 Homebrew 的 Windows 命令列軟體管理工具, 可以在系統中安裝並切換不同版本的 Python 執行環境, 但它是全系統切換的淺層隔離架構, 一次只能切換一個主控版本作為全域 Python 執行環境. 除了用來安裝與管理 Python 版本, 它還可以用來安裝 uv, nvm, git 等套件軟體, 架構如下圖所示 : 


 

開啟 Power Shell 視窗, 先用下列設定 PowerShell 視窗腳本執行原則 :

PS C:\WINDOWS\System32> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser   

然後才能用下列指令安裝 Scoop :

PS C:\WINDOWS\System32> Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression     
Initializing...
Downloading...
Extracting...
Creating shim...
Adding ~\scoop\shims to your path.
Scoop was installed successfully!
Type 'scoop help' for instructions.


2. 用 Scoop 安裝 Python : 

Scoop 管理 Python 版本的方式 是透過將 ~/scoop/shims 資料夾加入到系統 PATH 中, 並將 python 指令連結到此資料夾的一個 "捷徑" 以達成版本切換功能, 此 "捷徑" 實際上用是一個類似連結功能的墊片程式 ~/scoop/shims/python.exe 將 python 指令轉發給目標版本的 python.exe 程式. 

與 Python 相關的常用 scoop 指令如下表 :


 常用 Scoop 指令  說明
 scoop bucket add versions  訂閱 Scoop 的 versions 軟體庫 (執行一次即可)
 scoop search python  搜尋可安裝的 Python 版本
 scoop install python311  安裝指定版本的 Python (需先訂閱 versions 軟體庫)
 scoop install python  安裝 Scoop 目前 versions 軟體庫的最新穩定版 Python
 scoop list  顯示 Scoop 已安裝的 Python 版本
 scoop reset python3xx  切換到指定 Python 版本
 scoop update python  將 Python 升級到 versions 軟體庫最新版


注意, Scoop 軟體庫裡的最新版可能與 Python 官網有短暫時差. 其次, 用 scoop install python 安裝的 Python 版本, 未來用 scoop update python 指令更新時會追逐最新版, 例如從 v3.12 提升至 v3.13 (舊的 v3.12 就會被覆蓋或移除); 若用 scoop install python312 安裝, 則 scoop update python 只會升級 3.12 的小修補版本 (例如 3.12.1 升到 3.12.2), 不會跨代升級到 v3.13. 

另外, Scoop 在安裝好預設就已經訂閱了內建的 Main 軟體庫, 追逐最新版的 python 套件就放在 Main 裡面, 直接下 scoop install python 就可安裝. 特定舊版本則是放在 versions 軟體庫, 只有當要安裝非最新版的歷史版本或特定代號版時, 才需要先執行 scoop bucket add versions 訂閱 versions 軟體庫後再安裝. 

我想讓此主機的系統 Python 追逐最新版, 所以直接安裝 python 套件即可 : 

PS C:\WINDOWS\System32> scoop install python 
Installing 'dark' (3.14.1) [64bit] from 'main' bucket
dark-3.14.1.zip (5.0 MB) [====================================================================================] 100%
Checking hash of dark-3.14.1.zip ... ok.
Extracting dark-3.14.1.zip ... done.
Linking ~\scoop\apps\dark\current => ~\scoop\apps\dark\3.14.1
Creating shim for 'dark'.
'dark' (3.14.1) was installed successfully!
Installing 'python' (3.14.6) [64bit] from 'main' bucket
python-3.14.6-amd64.exe (29.3 MB) [===========================================================================] 100%
Checking hash of python-3.14.6-amd64.exe ... ok.
Running pre_install script...done.
Running installer script...done.
Linking ~\scoop\apps\python\current => ~\scoop\apps\python\3.14.6
Creating shim for 'python3'.
Creating shim for 'idle'.
Creating shim for 'idle3'.
Adding ~\scoop\apps\python\current\Scripts to your path.
Adding ~\scoop\apps\python\current to your path.
Persisting Scripts
Persisting Lib\site-packages
Running post_install script...
done.
'python' (3.14.6) was installed successfully!
Notes
-----
Allow applications and third-party installers to find python by running:
reg import "C:\Users\tony1\scoop\apps\python\current\install-pep-514.reg"

可見目前 Scoop 的 main 軟體庫最新的 Python 版本是 v3.14.6, 與 Python 官網的一致. 檢視版本 :

PS C:\WINDOWS\System32> python --version   
Python 3.14.6
PS C:\WINDOWS\System32> python
Python 3.14.6 (tags/v3.14.6:c63aec6, Jun 10 2026, 10:26:10) [MSC v.1944 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.


3. 用 Scoop 安裝 uv : 

uv 工具是 Python 虛擬環境管理工具, 負責 Python 專案的區域隔離, 並提供 uv init 指令可自動建立 Python 專案結構, 比傳統的 venv + pip 作法更簡單好用. 從架構上看,  uv 與 scoop 可說是上下層或內外層關係, scoop 主外 (上), 負責外層基礎設施 (相當於大門管理員), 而 uv 主內 (下), 負責內層專案沙盒 (相當於每戶的管家), 參考 :


用 Scoop 安裝 uv 指令如下 : 

PS C:\WINDOWS\System32> scoop install uv   
Installing 'uv' (0.11.21) [64bit] from 'main' bucket
uv-x86_64-pc-windows-msvc.zip (22.4 MB) [=====================================================================] 100%
Checking hash of uv-x86_64-pc-windows-msvc.zip ... ok.
Extracting uv-x86_64-pc-windows-msvc.zip ... done.
Running installer script...Adding ~\scoop\persist\uv\python\shims to your path.
Adding ~\scoop\persist\uv\tools\shims to your path.
done.
Linking ~\scoop\apps\uv\current => ~\scoop\apps\uv\0.11.21
Creating shim for 'uv'.
Creating shim for 'uvx'.
Creating shim for 'uvw'.
Making C:\Users\tony1\scoop\shims\uvw.exe a GUI binary.
'uv' (0.11.21) was installed successfully!
Notes
-----
Scoop persists data since version 0.11.16. You may need to move data by yourself.
Before: '$env:APPDATA\uv', '$env:LOCALAPPDATA\uv'
After : 'C:\Users\tony1\scoop\persist\uv'

檢視版本 : 

PS C:\WINDOWS\System32> uv --version  
uv 0.11.21 (5aa65dd7a 2026-06-11 x86_64-pc-windows-msvc)


4. 用 Scoop 安裝 git : 

Git 是主流的版控軟體, 此外, 它所附的 git-bash 也可用來在 Windows 中作為執行 Claude Code 的介面, 參考 :


用 Scoop 安裝 git 指令如下 : 

PS C:\WINDOWS\System32> scoop install git     
Installing '7zip' (26.01) [64bit] from 'main' bucket
7z2601-x64.msi (1.9 MB) [=====================================================================================] 100%
Checking hash of 7z2601-x64.msi ... ok.
Extracting 7z2601-x64.msi ... done.
Linking ~\scoop\apps\7zip\current => ~\scoop\apps\7zip\26.01
Creating shim for '7z'.
Creating shim for '7zG'.
Making C:\Users\tony1\scoop\shims\7zg.exe a GUI binary.
Creating shim for '7zFM'.
Making C:\Users\tony1\scoop\shims\7zfm.exe a GUI binary.
Creating shortcut for 7-Zip\7-Zip File Manager (7zFM.exe)
Creating shortcut for 7-Zip\7-Zip Help (7-zip.chm)
Persisting Codecs
Persisting Formats
Running post_install script...done.
'7zip' (26.01) was installed successfully!
Notes
-----
To register the context menu entry, please execute the following command:
reg import "C:\Users\tony1\scoop\apps\7zip\current\install-context.reg"

If an error occurs while attempting to delete files during uninstallation, run the following command and then retry:
Stop-Process -Name 'explorer'
Installing 'git' (2.54.0) [64bit] from 'main' bucket
PortableGit-2.54.0-64-bit.7z.exe (56.3 MB) [==================================================================] 100%
Checking hash of PortableGit-2.54.0-64-bit.7z.exe ... ok.
Extracting PortableGit-2.54.0-64-bit.7z.exe ... done.
Running pre_install script...done.
Linking ~\scoop\apps\git\current => ~\scoop\apps\git\2.54.0
Creating shim for 'sh'.
Creating shim for 'git'.
Creating shim for 'git-bash'.
Making C:\Users\tony1\scoop\shims\git-bash.exe a GUI binary.
Creating shim for 'gpg'.
Creating shim for 'gpg-agent'.
Creating shim for 'gpgconf'.
Creating shim for 'gpg-connect-agent'.
Creating shim for 'pinentry'.
Making C:\Users\tony1\scoop\shims\pinentry.exe a GUI binary.
Creating shortcut for Git\Git Bash (git-bash.exe)
Creating shortcut for Git\Git CMD (git-cmd.exe)
Creating shortcut for Git\Git GUI (git-gui.exe)
Adding ~\scoop\apps\git\current\cmd to your path.
Running post_install script...done.
'git' (2.54.0) was installed successfully!
Notes
-----
To register file associations, please execute the following command:
reg import "C:\Users\tony1\scoop\apps\git\current\install-associations.reg"

To register the context menu entry, please execute the following command:
reg import "C:\Users\tony1\scoop\apps\git\current\install-context.reg"

To set Git Credential Manager Core for portable Git, please execute the following command:
git config --system credential.helper manager

檢視版本 :

PS C:\WINDOWS\System32> git --version  
git version 2.54.0.windows.1


5. 用 Scoop 安裝 nvm 工具 : 

安裝 Gemini CLI 與全端開發框架 Next.js 都要用到 Node.js, 其版本的管理使用 nvm 工具, 可以用 Scoop 來安裝 nvm, 指令如下 : 

PS C:\WINDOWS\System32> scoop install nvm   
Installing 'nvm' (1.2.2) [64bit] from 'main' bucket
nvm-noinstall.zip (6.0 MB) [==================================================================================] 100%
Checking hash of nvm-noinstall.zip ... ok.
Extracting nvm-noinstall.zip ... done.
Running pre_install script...done.
Linking ~\scoop\apps\nvm\current => ~\scoop\apps\nvm\1.2.2
Adding ~\scoop\apps\nvm\current to your path.
Adding ~\scoop\apps\nvm\current\nodejs\nodejs to your path.
Persisting nodejs
Persisting elevate.cmd
Persisting elevate.vbs
Persisting settings.txt
'nvm' (1.2.2) was installed successfully!
Notes
-----
You'll need to restart powershell/cmd to have it reload Environment Variables so nvm will work correctly

檢視版本 :

PS C:\WINDOWS\System32> nvm --version
1.2.2

安裝完須關閉 Power Shell 視窗重啟, 才能用它來安裝 Node.js.


6. 用 nvm 安裝 Node.js : 

nvm 工具可在電腦中安裝多個不同版本的 Node.js, 然後用 nvm use 指令啟用指定的版本 : 

PS C:\WINDOWS\System32> nvm install node  
26.3.0
Downloading node.js version 26.3.0 (64-bit)...
Extracting node and npm...
Complete
Installation complete.
If you want to use this version, type:

nvm use 26.3.0

啟用版本可指定版本號或直接用 node 表示最新版 : 

PS C:\WINDOWS\System32> nvm use node
26.3.0
Now using node v26.3.0 (64-bit)

檢視版本 : 

PS C:\WINDOWS\System32> node --version   
v26.3.0

這樣就可以用 Node.js 的 npm 指令來安裝 Node 的套件了. 

2026年6月15日 星期一

MSI 電競桌機維修 (三)

今天繼續 MSI 主機的復原工作, 進度來到重頭戲 : 安裝 RTX3060 顯卡的驅動程式, 首先到 Google 搜尋 "nvidia 驅動程式下載", 找到顯卡驅動程式下載網址 :


在左方選單勾選顯卡型號 (RTX3060) 後按 "尋找" : 



有 Studio 與 Game Ready 兩種版本可安裝 : 
  • Studio :
    追求絕對穩定與老軟體相容性的專業工作室使用的版本, 是通過大型商業軟體例如 Adobe Premiere, Photoshop, AutoCAD, Maya 等進行成千上萬小時連續壓力測試的版本, 但更新頻率低
  • Game Ready :
    特色是追求極速與快速適應新技術, 更新頻率極高 (通常每個月 2~3 次), 只要市面上有一款熱門新遊戲或新的 AI 技術底層 (如新的 CUDA 優化功能) 推出, Game Ready 就會第一時間把優化程式碼寫進去. 




以前購買時店家出貨就已安裝 Game Ready 版驅動程式, 參考 :


按 Game Ready 版右邊的 "檢視" 鈕會顯示驅動程式細節, 按下載鈕 : 




執行下載之 610.47-desktop-win10-win11-64bit-international-dch-whql.exe 執行安裝, 用預設選項即可 : 







安裝完畢按關閉, 預設會自動執行 NVIDIA App 進行設定 :




點選第一個選項 "具遊戲功能的驅動程式" 後按下一步 :






不兌換按 "跳至應用程式" : 




這樣驅動程式就安裝完成, 按 x 關閉程式即可. 最好是重開機, 以便能讓系統把殘留的微軟通用驅動或記憶體中的舊暫存徹底清空, 由全新的 Game Ready 驅動完全接管 RTX 3060. 

重開機後在桌面空白處按滑鼠右鍵, 點選最底下的 "顯示其他選項" :




點選 "NVIDIA 控制面板" (或 NVIDIA App 亦可) :




按 "同意並繼續" :




按左下角的 "系統資訊" :




看到 RTX3060 顯卡與驅動程式版本號 610.47 表示微軟的通用驅動已經徹底退場, NVIDIA 官方驅動已全面掌控顯卡了. 

以上之前是店家幫我裝好了, 這次自己來也是一個學習的機會. 

2026 年第 23 周記事

周二下班趁著雨停了, 把上周突然故障無法開機的 MSI 桌機拿去建國路修, 查出問題點為 1TB 的 ADATA SSD 系統碟, 幸好不是貴森森的顯卡. SSD 請德源的工程師幫我換好後帶回來自己重灌 Win11, 目前只剩下顯卡驅動尚未安裝, 下周要把整個本地 AI 開發環境重建回來, Ollama 測試進度已停滯兩周了. 

本周爸開始周二與周四下午也去社區, 中午吃完午飯約 11:30 幸福巴士載到家, 下午 13:30~14:00 又會來接,下午約 15:30 回家. 我每天都透過監視器與手機提醒爸搭車事宜, 看到車子開出去才安心做事. 也許下個月可以調整為全周都整天, 因為爸的時間感漸失, 幾乎每天下午都會著裝準備搭車. 我只希望他退化的速度能變慢而已. 


2026年6月13日 星期六

Mapleboard MP510-50 測試 (四十四) : 設定 PPPoE 自動撥接上網

上周可能因為雷雨使市電瞬斷, 鄉下老家的 Mapleboard 主機應該有重開機, 它是用網路線直接連線光世代數據機, 以撥接方式連線上網, 印象中當時設定 pppoe 時有設開機自動連線, 不知為何這次失靈. 早上花了一點時間才重新設定好, 以下紀錄這次查修過程. 之前的設定參考 :


本系列全部文章參考 :


首先檢查網路連線狀態 : 

tony1966@LX2438:~$ ifconfig  
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.102  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::66c7:6bea:e03e:ef60  prefixlen 64  scopeid 0x20<link>
        ether 16:72:2e:da:e7:3c  txqueuelen 1000  (Ethernet)
        RX packets 12  bytes 1961 (1.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 192  bytes 19933 (19.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 14  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 356  bytes 27782 (27.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 356  bytes 27782 (27.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

沒有出現 ppp0, 表示並未撥接上網, 可能是因為非預期斷電導致 NetworkManager 服務毀損, 設定檔異常, 或是原本設定的 autoconnect (自動連線) 屬性跑掉, 先重啟 NetworkManager 服務 : 

tony1966@LX2438:~$ sudo systemctl restart NetworkManager   

檢查服務狀態, 確認 NetworkManager 顯示為 active (running) 狀態 :

tony1966@LX2438:~$ sudo systemctl status NetworkManager   
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2026-06-11 14:34:45 CST; 15s ago
       Docs: man:NetworkManager(8)
   Main PID: 33100 (NetworkManager)
      Tasks: 4 (limit: 4213)
     Memory: 3.4M
        CPU: 295ms
     CGroup: /system.slice/NetworkManager.service
             └─33100 /usr/sbin/NetworkManager --no-daemon

用 NetworkManager 的指令工具 nmcli 指令來檢視之前建立的 PPPoE 連線 : 

tony1966@LX2438:~$ nmcli connection show   
NAME             UUID                                  TYPE      DEVICE 
Ifupdown (eth0)  681b428f-beaf-8932-dce4-687ed5bae28e  ethernet  eth0   
EDIMAX-tony      ddebdded-8805-4631-aa85-f08c412404bf  wifi      --     
hinet            a857fb4d-b2c2-43e2-a43f-a30a30def74f  pppoe     --     
hinet            62250a6d-dc03-44b9-be71-7179ce1ec6c9  pppoe     --     
TonyNote8        37db6693-372b-4190-a4d0-c71aef40bc38  wifi      --     

其中 hinet 就是之前用來撥接上網的 PPPoE 連線, 這兩個連線的名稱雖然一樣, 但它們的 UUID (唯一識別碼) 完全不同, 這很有可能就是無法自動撥接上網的元兇, 因為當系統開機準備自動連線時, 它看到兩個都叫 hinet 的設定檔, NetworkManager 可能會不知道該用哪一個, 或者其中一個是壞掉的舊設定, 系統卻偏偏去讀到壞的那一個導致自動撥接失敗. 

由於不知哪個 UUID 才是可正常連線的設定, 所以最乾淨的做法是把這兩個同名為 hinet 的連線設定都刪除, 重新建立一個乾淨的連線設定 : 

ony1966@LX2438:~$ nmcli connection delete uuid a857fb4d-b2c2-43e2-a43f-a30a30def74f   
連線「hinet」 (a857fb4d-b2c2-43e2-a43f-a30a30def74f) 已成功刪除。

tony1966@LX2438:~$ nmcli connection show 
NAME             UUID                                  TYPE      DEVICE 
Ifupdown (eth0)  681b428f-beaf-8932-dce4-687ed5bae28e  ethernet  eth0   
EDIMAX-tony      ddebdded-8805-4631-aa85-f08c412404bf  wifi      --     
hinet            62250a6d-dc03-44b9-be71-7179ce1ec6c9  pppoe     --     
TonyNote8        37db6693-372b-4190-a4d0-c71aef40bc38  wifi      --     

刪除第二個 hinet 連線設定 : 

tony1966@LX2438:~$ nmcli connection delete uuid 62250a6d-dc03-44b9-be71-7179ce1ec6c9  
連線「hinet」 (62250a6d-dc03-44b9-be71-7179ce1ec6c9) 已成功刪除。

檢視連線清單已無 hinet 了 : 

tony1966@LX2438:~$ nmcli connection show  
NAME             UUID                                  TYPE      DEVICE 
Ifupdown (eth0)  681b428f-beaf-8932-dce4-687ed5bae28e  ethernet  eth0   
EDIMAX-tony      ddebdded-8805-4631-aa85-f08c412404bf  wifi      --     
TonyNote8        37db6693-372b-4190-a4d0-c71aef40bc38  wifi      --     

建立新的 PPPoE 撥接連線 :

tony1966@LX2438:~$ sudo nmcli connection add type pppoe con-name "hinet" ifname eth0 username "光世代帳號@ip.hinet.net" password "老家電話號碼"   
[sudo] tony1966 的密碼: 
連線「hinet」 (edf0fefa-d122-4d62-88bd-5a9cc085830a) 已成功新增。

檢視連線清單新的 hinet 連線已 :  

tony1966@LX2438:~$ nmcli connection show  
NAME             UUID                                  TYPE      DEVICE 
Ifupdown (eth0)  681b428f-beaf-8932-dce4-687ed5bae28e  ethernet  eth0   
EDIMAX-tony      ddebdded-8805-4631-aa85-f08c412404bf  wifi      --     
hinet            edf0fefa-d122-4d62-88bd-5a9cc085830a  pppoe     --     
TonyNote8        37db6693-372b-4190-a4d0-c71aef40bc38  wifi      --     

用下列指令設定開機自動用此連線設定撥接上網 : 

tony1966@LX2438:~$ nmcli connection modify id "hinet" connection.autoconnect yes

手動用 hinet 連線撥接上網 : 

tony1966@LX2438:~$ nmcli connection up id "hinet"   
連線已成功啟用(D-Bus 啟用路徑:/org/freedesktop/NetworkManager/ActiveConnection/4)
tony1966@LX2438:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 16:72:2e:da:e7:3c  txqueuelen 1000  (Ethernet)
        RX packets 95413  bytes 73056382 (73.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 490867  bytes 54678967 (54.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 14  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 262801  bytes 19744911 (19.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 262801  bytes 19744911 (19.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1492
        inet 220.133.1x.1yy  netmask 255.255.255.255  destination 168.95.98.254
        inet6 2001:b011:c002:44b:20dd:96c1:295d:93a9  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::4948:3225:47ee:c1ee  prefixlen 64  scopeid 0x20<link>
        inet6 2001:b011:c002:44b:ca70:4579:c7c2:10f9  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::2eab:a3ae:c3d2:2ad5  prefixlen 64  scopeid 0x20<link>
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 121  bytes 40452 (40.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 157  bytes 26014 (26.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

出現 ppp0 網路連線表示已連網成功, 開啟瀏覽器可正常瀏覽網頁, 重新啟動系統確定重開機會自動撥接上網, 終於讓主機與網站重新恢復運作. 

2026年6月12日 星期五

MSI 電競桌機維修 (二)

前天去建國路德源電腦檢修 MSI 主機, 更換了新的 ADATA 1TB 系統碟後, 昨天晚上重灌 Win11 作業系統. 雖然當初購買主機時店家有附一張 Win11 Home 原版光碟, 但這不僅要找一台外接光碟機, 重灌後還會回復到 2024 年初的 Win11, 這樣會有大量的 Windows Update 要做, 會花很多時間. 德源工程師說可以到微軟下載最新 Win11 燒到 USB 裡, 用 USB 重灌系統最省事. 因為兩年來, 微軟修正了許多 Win11 對於 Intel 第 12 代 CPU 以及 RTX 3060 顯卡的排程優化與 Bug, 直接安裝最新版, 系統運作會比兩年前的舊版本穩定非常多. 

在進行 Win11 重灌之前, 先打開機箱, 把資料碟 D 碟 (ACER 2TB) 電源與資料線暫時拔掉, 等 Win11 安裝完後再插回, 這樣可避免過程中選擇要重灌到哪一個 SSD 時不小心選錯目標為 D 碟那就糟了 .

以下是 Gemini 建議的 Win11 重灌程序 (但新版 Win11 在 3 與 4 步驟畫面已有所不同) :
  1. 隨身碟插上主機, 開機後狂按 F11 (會進入 Boot 選單)
  2. 選取 UEFI: [隨身碟名稱] 按 Enter (預設就只有這個 USB)
  3. 進入畫面後點「立即安裝」, 勾選「我沒有產品金鑰」, 勾選「Windows 11 家用版」
  4. 安裝類型請選第二個 「自訂 : 唯獨安裝 Windows (進階)」
  5. 這時候畫面上應該只會看到一個乾淨完全沒有分割過的硬碟 (寫著磁碟 0 未分配空間, 容量約 900 多 GB), 直接點它後按右下角的 「下一步」
  6. 電腦會開始跑百分比, 跑完後會自動重啟 (重啟時就可以把 USB 隨身碟拔掉了), 接著就會進入 Windows 11 新機開航的設定畫面 (設定語系, 網路, 微軟帳號)

1. 建立 Win11 安裝媒體 :

拿一顆 8GB 以上的 USB 隨身碟插到一台 Win11 電腦的 USB, 然後到微軟官網下載 MediaCreationTool 軟體 (Windows11InstallationAssistant.exe), 按立即下載鈕 :




執行 Windows11InstallationAssistant.exe, 接受授權 : 




按下一步 : 




勾選 USB 快閃磁碟機 : 




按下一步會將 Win11 寫入隨身碟 : 






完成後取下隨身碟, 插到 MSI 電競桌機 USB (最好是主機後面的 USB 槽). 


2. 安裝 Win11 :

MSI 桌機開機後狂按 F11 會進入 Boot 選單, 目前只有 USB 隨身碟 (UEFL) 一個可開機選項, 直接按 Enter : 




預設繁體中文, 按下一步 : 




鍵盤預設微軟注音, 按下一步 : 




選取安裝 Windows 11 : 




輸入 Win11 金鑰 : 




授權條款按接受 : 




安裝位置點選磁碟 0 (新的 ADATA 1TB SSD) :




兩個都勾選按安裝 :





安裝完成後出現國家 (台灣) 確認畫面, 按是 :




確認輸入法為微軟注音 :




第二鍵盤按跳過 : 




命名電腦為 MSI_RTX3060 : 




登入微軟帳號 :





設定主機登入密碼 (PIN=akf) : 





然後系統重開機後, 就用此 PIN 登入即可, Win11 會自動進行更新. 


3. 接回 D 碟 :

關機後拔掉主機後面電源線, 把 2TB ACER SSD 的電源線與 SATA 資料線接回去, 再接回主機電源線後開機, 開啟檔案總管預期會看到 D 碟才對, 但是卻沒有, 我關機換插另一排電源插頭, 重插 SATA 資料線後再開機終於順利看到 D 碟了, 裡面的資料都還在. 


4. 安裝主機板驅動程式 :

Win11 更新完後自動跳出 MSI Utility Installation 程式, 裡面列出建議安裝的工具程式與驅動程式, 但不要照單全收, 只勾選檔名有 drivers 的即可, 其餘全部不要安裝 (尤其是防毒軟體 Norton), 甚至微星自家的 MSI Center 軟體也不需要, 它是主機的控制台軟體, 提供風扇與散熱控制 (含 RGB 調光), 以及電腦狀態監控等, 但 540 MB 的體積很臃腫, 會占據部分主機資源.