以往使用 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。
                        這方式很適合原本硬碟空間不足想要換大硬碟,但又不想重新安裝新系統時來使用。
              
                🤖🤖完成。
   
        
 
留言
張貼留言