# 樹莓派 SD 卡完整複製與 Tailscale 獨立節點設定指南 這篇教學將引導你如何將樹莓派(Raspberry Pi)的 SD 卡進行「全卡備份與還原」,並解決複製後新卡片與舊卡片在 Tailscale 網路上發生 **「身份衝突(Duplicate Node ID)」** 的問題。 :::info **為什麼需要這篇教學?** 當你使用 Win32 Disk Imager 完整複製 SD 卡時,連同 Tailscale 的 **唯一識別碼 (Machine Key)** 也會被一併複製。如果不重置這個識別碼,Tailscale 會認為兩台裝置是同一台,導致連線不斷中斷或互踢。 ::: ## 準備工具 * **硬體**: * Windows 電腦 * SD 卡讀卡機 * 原始 SD 卡(要複製的卡) * 新的 SD 卡(目標容量需大於等於要複製的卡) * **軟體**: * [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/) (用於製作與寫入映像檔) --- ## 第一階段:複製 SD 卡 (Clone) ### 步驟 1:備份舊卡(Read) 1. 將 **舊的 SD 卡** 插入電腦。 2. 在電腦的隨便一個位置創建一個檔案叫做 **想要的名稱.img** 3. 開啟 **Win32 Disk Imager**。 4. 在 **Image File** 欄位,點擊資料夾圖示,選擇剛剛建立的空映像檔案(**想要的名稱.img**)。 6. 在 **Device** 欄位,確認選擇到舊的 SD 卡代號。 7. 點擊 **「Read」**。 :::warning ***注意不要覆蓋掉原本的記憶卡!!*** 當你使用 Read 功能時請注意不要變成將空的映象檔讀取進想要複製的記憶卡當中,這樣會洗掉原本的東西==。 ::: ### 步驟 2:寫入新卡(Write) 1. 備份完成後,拔除舊卡,換上 **新的 SD 卡**。 2. 在 Win32 Disk Imager 中,**Device** 確認選到新卡。 3. **Image File** 選擇剛剛做好的 `pi_backup.img`。 4. 點擊 **「Write」**。 :::warning ***警告:新卡片上的所有資料將被覆蓋。*** ::: --- ## 第二階段:解決 Tailscale 衝突與設定 寫入完成後,將新卡插入樹莓派並開機。**此時請先不要急著連線測試**,因為現在它的「身份」跟舊的一模一樣。 ### 步驟 3:清除舊的 Tailscale 狀態 我們需要刪除 Tailscale 儲存「機器金鑰」的檔案,讓它在重啟後自動生成一個新的身份。 請在新的樹莓派終端機中,依序執行以下指令: ```bash # 1. 停止 Tailscale 服務 sudo systemctl stop tailscaled # 2. 刪除舊的狀態檔 (這是關鍵步驟!) # 這個檔案紀錄了上一張卡的身份 ID,刪除它不會移除軟體,只會重置身份 sudo rm /var/lib/tailscale/tailscaled.state # 3. 重新啟動 Tailscale 服務 sudo systemctl start tailscaled ``` ### 步驟 4:重新登入並設定新名稱 現在這台樹莓派已經是一個「全新的陌生人」了,我們需要重新將它加入 Tailscale 網路,並給它一個新名字以免混淆。 ```bash # 重新執行 up 指令 # --hostname: 設定這台機器在後台顯示的新名稱 # --accept-routes: 如果你需要存取子網域路由,請加上此參數 # --authkey: 如果你有預先申請的 key 可以加上,或是直接執行後點擊網址授權 sudo tailscale up --hostname=new-pi-name --accept-routes ``` 執行後,終端機通常會跳出一個認證網址: > `To authenticate, visit: https://login.tailscale.com/a/xxxxxxxxx` 點擊連結並登入你的帳號授權即可。 --- ## 附錄:擴展檔案系統 (Optional) 如果你的新卡容量比舊卡大(例如從 16GB 複製到 64GB),複製完後系統只會認得原本的 16GB。請執行以下步驟用滿剩餘空間: 1. 執行設定工具: ```bash sudo raspi-config ``` 2. 選擇 **6 Advanced Options**。 3. 選擇 **A1 Expand Filesystem**。 4. 按下 Enter 確認,並選擇 **Finish** 重開機。 --- ## 總結檢查表 * [ ] 舊卡已製作成 `.img` 映像檔。 * [ ] 映像檔已寫入新卡。 * [ ] 新卡開機後,已執行 `rm /var/lib/tailscale/tailscaled.state`。 * [ ] 已使用 `tailscale up --hostname=...` 重新連線。 * [ ] 在 Tailscale Admin Console 確認看到兩台不同的機器(舊的和新的)。順帶一提,如果要取得所有應用程式的完整功能,請開啟 Gemini 系列應用程式活動記錄。