以往使用 Clonezilla Live 來建立或還原系統印象映像檔,都必須一個個步驟依照畫面指示來完成,這篇文章是為了建立一支有如下圖選單的 Clonezilla Live 開機隨身碟,可以全自動或半手動備份及還原 Windows 系統。
✳️【隨身碟分割】
因為我要將系統印象映像檔備份到隨身碟裡,準備了一支 64GB 隨身碟,使用 Windows 磁碟管理將隨身碟分割成 2 個磁區。
✳️【建立Clonezilla live 隨身碟】
以前我都是下載 .iso 檔,再以 Rufus 建立可開機隨身碟,但用 Rufus 必須使用整個隨身碟來建立系統,無法只建立在單一磁區。也因為使用了整個隨身碟,使用 Clonezilla 來備份映像檔時,是無法將檔案寫入目前正在使用的 Clonezilla 隨身碟裡的。
我目前都改用下載 zip 檔案,而且日後要更新 Clonezilla 檔案也方便,只要下載新檔案再丟進隨身碟就可以完成更新。
-
Clonezilla 檔案解壓縮後放到磁區 1。
-
進入 utils\win64 資料夾,找到 makeboot64.bat 檔案,滑鼠右鍵【以系統管理員分執行】,執行後就能讓隨身碟變成可開機模式。
✳️【建立開機選單】
Clonezilla live 可開機隨身碟建立好之後,以文字編輯器 (必須支援 UTF-8 格式) 去修改開機選單檔案
- 較舊型電腦 Legacy Boot ,修改 /syslinux/syslinux.cfg。
- 較新型電腦 UEFI Boot+disable csm ,修改 /boot/grub/grub.cfg。
- 本文是修改 /boot/grub/grub.cfg 。
- 如下圖選單有 5 個我新增的中文選項,其他英文選項是 Clonezilla 原本的內容。每一個選項就是 grub.cfg 檔案裡的一個 menuentry 裡。
- 我的 我的 /boot/grub/grub.cfg 檔案連結。
選項 1:Clonezilla live
menuentry "Clonezilla live (VGA 800x600)" --id live-default { search --set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user hostname=lunar config quiet loglevel=0 noswap edd=on nomodeset enforcing=0 noeject locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img } |
這是 Clonezilla 預設的選項之一,我保留放在第一位。
另外,在 grub.cfg 檔案最前面有 2 行程式
✅ set default="0"
就是指進入選單畫面預設選項會停留在第一個 menuentry "Clonezilla live (VGA 800x600)"上,若是要讓預設選項停留在如上圖的第2行 "整顆硬碟【備份到】......" ,就改成 set default="1"
✅ set timeout="30"
進入選單畫面 30秒後都未選擇選項,系統會自動進入上面 set default 選項來執行程式,這秒數你也可以自行修改。
選項 2:整顆硬碟【備份到】隨身碟-映像檔自動取名、自動關機 ( 注意 mount /dev/sda2 )
menuentry "整顆硬碟【備份到】隨身碟-映像檔自動取名、自動關機 ( 注意 mount /dev/sda2 )" --id live-default { search --set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun="" ocs_prerun1="sleep 2" ocs_prerun2="sudo mount /dev/sda2 /home/partimag" ocs_live_run="sudo /usr/sbin/ocs-sr -q2 -batch -j2 -z9p -i 4096 -sfsck -scs -senc -p poweroff savedisk autoproductname all" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img } |
把上面幾個參數簡單說明一下,完整的說明請看官網上的「 Clonezilla live的開機參數(boot parameters)」。
✅ sudo mount /dev/sda2 /home/partimag
把隨身碟上的 sda2 磁區掛載為 partimag ,以便儲存映像檔。
1️⃣ 若原電腦硬碟是 M.2 PCIe SSD 硬碟,這電腦硬碟在Clonezilla 裡面會是 nvme0n1 之類的名稱,所以掛載的隨身碟第 2 個磁區名稱會是 sda2。
2️⃣ 若原電腦硬碟是傳統機械硬碟,這電腦硬碟在Clonezilla 裡面會是 hda1 之類的名稱,所以掛載的隨身碟第 2 個磁區名稱也會是 sda2。
3️⃣ 若原電腦硬碟是一般 SSD 硬碟,這電腦硬碟在Clonezilla 裡面會是 sda1 之類的名稱,所以掛載的隨身碟第 2 個磁區名稱就會變成是 sdb2、sdf2等,不一定的名稱。
所以假如 /home/partimg 掛載失敗,就是要修改 /dev/sda2 這裡的名稱。
✅ –batch
依照原本步驟操作 Clonezilla 時,最後系統會問 1-2 次是否確定要執行程式。
原本參數是 -c ,改成 –batch ,就會跳過最後 Y/N 的步驟。
✅ poweroff
Clonezilla 程式執行完成,要讓電腦關機就是 poweroff ,要讓電腦重新開機就是 reboot。
✅ savedisk
savedisk 就是將整顆硬碟儲存為印象映像檔。(若是部分磁區就是用 saveparts,這裡略過)
✅ autoproductname all (IMAGENAME DEVICENAME )
這 2 個參數
前面是「IMAGENAME 」,映像檔的名稱
後面是「DEVICENAME 」硬碟裝置的名稱。
1️⃣ 這裡映像檔名稱的參數我設定為 【autoproductname】
印象檔(IMAGENAME)名稱,包含"ask_user", "autoname", "autohostname", 與 "autoproductname"。
使用 autoproductname ,備份後會自動產生如下圖後面 3 個映像檔資料夾名稱,系統會自動抓取電腦廠牌資料為名稱。
因為【autoproductname】適用於儲存或者還原印象檔模式,所以日後我若要還原時,還原的映像檔參數也用 autoproductname,系統就會自動去抓同一型號電腦的映像檔來還原。
2️⃣ 硬碟裝置的名稱參數我設定為 【all】
Clonezilla 會自動找尋未被掛載使用的裝置來備份,若電腦裡只有一顆硬碟要備份,不用去管它是 hda 、nvme0n1 還是 sda ,只要用 【all】就好。
若是有多顆硬碟或多磁區,要讓系統出現選單讓我們選擇,參數就用【ask_user】。
選項3:整顆硬碟【備份到】遠端共用資料夾-映像檔自動取名、自動關機
menuentry "整顆硬碟【備份到】遠端共用資料夾-映像檔自動取名、自動關機" --id live-default { search --set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun="dhclient -v eth0" ocs_prerun1="sleep 2" ocs_prerun2="sudo mount -t cifs //172.16.7.100/images/ /home/partimag -o user=super,password=0000" ocs_live_run="sudo /usr/sbin/ocs-sr -q2 -batch -j2 -z9p -i 4096 -sfsck -scs -senc -p poweroff savedisk autoproductname all" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img } |
我是在另一台 Win11 電腦新增一個 images 資料夾,再設定【共用】,帳號、密碼就是該台 Win11 的使用者帳密,就可以將這資料夾掛載為 partimag。
若學校有 nas 機器,也是一樣的設定共用資料夾就可以了。
✅ ocs_prerun="dhclient -v eth0"
讓 Clonezilla 透過 DHCP 取得 ip。前一個 menuentry 是要備份到隨身碟,所以不需要網路,ocs_prerun 就留空。
✅ ocs_prerun2="sudo mount -t cifs //172.16.7.100/images/ /home/partimag -o user=super,password=0000"
將遠端共用資料夾掛載為 /home/partimag
選項4:從隨身碟 【還原】整顆硬碟 -手動選擇映像檔、重新開機 ( 注意 mount /dev/sda2 )
menuentry "從隨身碟 【還原】整顆硬碟 -手動選擇映像檔、重新開機 ( 注意 mount /dev/sda2 )" --id live-default { search --set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun="" ocs_prerun1="sleep 2" ocs_prerun2="sudo mount /dev/sda2 /home/partimag" ocs_live_run="sudo /usr/sbin/ocs-sr -g auto -e1 auto -e2 -r -j2 -batch -scr -p reboot restoredisk ask_user all" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img } |
✅ sudo mount /dev/sda2 /home/partimag
如前面選項 2 的說明,要注意隨身碟掛載的名稱。
✅ reboot
這裡我設定 Clonezilla 還原後【重新開機】。
✅ restoredisk
還原整顆硬碟。
✅ ask_user
映像檔名稱的參數, 若使用 ask_user ,系統會跳出如下圖的選單,讓使用者自行選定要使用哪一個映像檔。
若是使用參數 autoproductname ,系統就會自己找相同機器名稱的映像檔來作業。
選項5:從遠端共用資料夾【還原】整顆硬碟 -自動選取映像檔、重新開機
menuentry "從遠端共用資料夾【還原】整顆硬碟 -自動選取映像檔、重新開機" --id live-default { search --set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun="dhclient -v eth0" ocs_prerun1="sleep 2" ocs_prerun2="sudo mount -t cifs //172.16.7.100/images/ /home/partimag -o user=super,password=0000" ocs_live_run="sudo /usr/sbin/ocs-sr -g auto -e1 auto -e2 -r -j2 -batch -scr -p reboot restoredisk autoproductname all" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img } |
這選項就是掛載遠端共用資料夾來還原整顆硬碟 (restoredisk)
映像檔名稱使用 autoproductname ,所以會自動去抓取機器名稱的映像檔來還原。
選項6:從遠端共用資料夾【還原小硬碟到大硬碟】-手動選擇映像檔、重新開機
menuentry "從遠端共用資料夾【還原小硬碟到大硬碟】-手動選擇映像檔、重新開機" --id live-default { search --set -f /live/vmlinuz $linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet noswap edd=on nomodeset enforcing=0 locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun="dhclient -v eth0" ocs_prerun1="sleep 2" ocs_prerun2="sudo mount -t cifs //172.16.7.100/images/ /home/partimag -o user=super,password=0000" ocs_live_run="sudo /usr/sbin/ocs-sr -g auto -e1 auto -e2 -r -j2 -k1 -batch -scr -p reboot restoredisk ask_user all" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 $initrd_cmd /live/initrd.img }
|
這選項主要是加了參數【k1】,讓小硬碟的映像檔還原到大硬碟。新硬碟的每一個磁區空間會等比例放大。
圖片來源
例如原本 250GB 硬碟,假設在 Windows 裡看到 C 磁碟 230 GB,還原到新的 500GB 硬碟,C 磁碟就會變成 460 GB。
這方式很適合原本硬碟空間不足想要換大硬碟,但又不想重新安裝新系統時來使用。
🤖🤖完成。
留言
張貼留言