使用 GRUB2 掛載 Linux ISO 來執行

因為在電腦教室常常會利用 Clonezilla / DRBL Live 來備份及還原電腦,雖然已經將 Clonezilla / DRBL Live 利用 grub4dos,製作成開機隨身碟,但隨身碟也不是都會放在身上,最好的方式就是直接放在本機上,所以利用 Linux 本身的 GRUB2 掛載 ISO 檔來啟動  Clonezilla / DRBL Live。
參考網站:
Grub2 設定以 Linux LiveCD 的 ISO 檔啟動系統 – 石頭閒語 – 樂多日誌

1. 首先下載 Clonezilla / DRBL Live(有時最新版本不一定能正確執行),這裡是放置在第一顆硬碟的第一個分割區/home/test 目錄
$ wget http://jaist.dl.sourceforge.net/project/clonezilla/clonezilla_live_alternative/20150217-utopic/clonezilla-live-20150217-utopic-i386.iso -P /home/test
$ wget http://downloads.sourceforge.net/project/drbl/drbl_live_stable/2.3.1-6/drbl-live-xfce-2.3.1-6-i686-pae.iso -P /home/test[@more@]2. 修改設定檔 /etc/grub.d/40_custom
$ sudo vim /etc/grub.d/40_custom
加入下面選項
insmod loopback

menuentry “CloneZilla live 20150217-utopic” {
    set isofile=”/home/test/clonezilla-live-20150217-utopic-i386.iso”
    loopback loop (hd0,1)$isofile
    linux (loop)/live/vmlinuz boot=live config locales=”zh_TW.UTF-8″ keyboard-layouts=”NONE” noswap noprompt nosplash vga=788 ip=frommedia findiso=$isofile
    initrd (loop)/live/initrd.img
}

menuentry “DRBL live XFCE 2.3.1-6-i686-pae” {
    set isofile=”/home/test/drbl-live-xfce-2.3.1-6-i686-pae.iso”
    loopback loop (hd0,1)$isofile
    linux (loop)/live/vmlinuz boot=live username=user config quiet nomdoeset locales=”zh_TW.UTF-8″ keyboard-layouts=”NONE” noswap noprompt nosplash vga=791 ip=frommedia findiso=$isofile
    initrd (loop)/live/initrd.img
}

3. 修改 /etc/default/grub
把 GRUB_HIDDEN_TIMEOUT 和 GRUB_HIDDEN_TIMEOUT_QUIET 這二行前面加上 # 註解
$ cp /etc/default/grub ~/grub.default
$ sudo sed -i ‘s/^GRUB_HIDDEN_TIMEOUT/#GRUB_HIDDEN_TIMEOUT/’ /etc/default/grub
$ sudo sed -i ‘s/^GRUB_HIDDEN_TIMEOUT_QUIET/#GRUB_HIDDEN_TIMEOUT_QUIET/’ /etc/default/grub

4. 更新 GRUB2
$ sudo update-grub
正在產生 grub 設定檔 …
找到 linux 映像檔:/boot/vmlinuz-3.13.0-32-generic
找到 initrd 映像檔:/boot/initrd.img-3.13.0-32-generic
找到 linux 映像檔:/boot/vmlinuz-3.13.0-24-generic
找到 initrd 映像檔:/boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
完成
$ sudo update-grub2
正在產生 grub 設定檔 …
找到 linux 映像檔:/boot/vmlinuz-3.13.0-32-generic
找到 initrd 映像檔:/boot/initrd.img-3.13.0-32-generic
找到 linux 映像檔:/boot/vmlinuz-3.13.0-24-generic
找到 initrd 映像檔:/boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
完成

5. Ubuntu 開機出現的功能表

Ubuntu MATE 開機出現的功能表

6. Clonezilla 開機

7. DRBL Live 開機

修整 Grub 功能表 – 進階版(一鍵備份&還原)

原本 Clonezilla 的選單是進入之後才顯示要備份或是還原

心想,如果可以在開機選單上直接選擇備份或是還原,應該會更好!
[@more@]底下參考:在ubuntu系統的grub2新增選單如下 – Google 網上論壇
1. Linux Live 開機,這裡以 ezgo  12 為例

2. 做法和之前相同,不再複述
    $ sudo su –
    # mkdir /mnt/sd3;mount /sda3 /mnt/sda3

3. 修改 Grub 設定檔,加入下面設定,紅色是在同一行
     # vim /mnt/sda3/EFI/boot/grub.cfg

menuentry “Clonezilla live – Backup Windows 7 / 8.1” –users User{
  search –set -f /live/vmlinuz
  linux /live/vmlinuz boot=live username=user config components  noswap edd=on nomodeset nodmraid noeject locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun=”sudo ntfs-3g /dev/sda2 /home/partimag” ocs_live_run=”/usr/sbin/ocs-sr -q2 -c -j2 -rm-win-swap-hib -z1p -i 2000 -sc -p true saveparts Windows_Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”no” live-media-path=/live bootfrom=/dev/sda3 vga=788 ip= quiet nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}
menuentry “Clonezilla live – Restore Windows 7 / 8.1” –users User{
  search –set -f /live/vmlinuz
  linux /live/vmlinuz boot=live username=user config components  noswap edd=on nomodeset nodmraid noeject locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun=”sudo ntfs-3g /dev/sda2 /home/partimag” ocs_live_run=”/usr/sbin/ocs-sr -e1 auto -e2 -c -t -r -j2 -k -p true restoreparts Windows_Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”no” live-media-path=/live bootfrom=/dev/sda3 vga=788 ip= quiet nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}
menuentry “Clonezilla live – Restore Default Windows 7 / 8.1” –users User{
  search –set -f /live/vmlinuz
  linux /live/vmlinuz boot=live username=user config components  noswap edd=on nomodeset nodmraid noeject locales=zh_TW.UTF-8 keyboard-layouts=NONE ocs_prerun=”sudo ntfs-3g /dev/sda2 /home/partimag” ocs_live_run=”/usr/sbin/ocs-sr -e1 auto -e2 -c -t -r -j2 -k -p true restoreparts Windows_Default_Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”no” live-media-path=/live bootfrom=/dev/sda3 vga=788 ip= quiet nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}

4. 重新開機之後開機選單

一、
1. 進行備份動作

2. 輸入帳號及密碼

3. 確認要進行備份

4. 備份中

5. 備份完成後決定要的動作

二、
1. 進行還原動作

2. 輸入帳號及密碼

3. 確認還原


4. 還原中

5. 還原完成後決定要的動作

Grub 功能表加上密碼

為了防止使用者誤觸 Clonezilla live 的還原選單,所以要在 Clonezilla live 的還原選單上加上密碼。
參考網頁:24.3. GRUB 2 Password Protection
修改方式:
1. 以 Linux Live CD 開機,這裡以 EzGO 12 xfce 為例
    選擇 在不需要安裝的情況下試用 ezgo 12(T)
[@more@]2. 開啟 終端機模擬程式

3. 切換成 root 身份
    $ sudo su –

4. 建立掛載目錄及掛載 Clonezilla 所在分割區
    # mkdir /mnt/sda3;mount /dev/sda3 /mnt/sda3

5. 修改 Grub 設定檔
     # vim /mnt/sda3/EFI/boot/grub.conf
     加上三個部份
     第一部份,設定使用者及密碼
     set superusers=”User”
     password User 123456
     第二部份,Windows 7 不用輸入使用者及密碼
     在 menuentry 加上 –unrestricted
     第三部分,Clonezilla live 加上使用者及密碼的選項
     在 menuentry 加上 –users User

6. 修改完畢後重新開機,要使用 Clonezilla live 做還原時,要輸入使用者及密碼

修整 Grub 功能表

安裝到硬碟的 Clonezilla,Grub 的功能表有些複雜,選項太多了,也缺少可以從本機開機啟動 Windows 7/8.1和 Clonezilla 加上密碼保護,以免誤觸。
參考網頁:凍仁的筆記: 自訂 Grub2 on Ubuntu 9.10+
[@more@]1. 以 Linux Live CD 開機,這裡以 ezgo 12 xfce 為例
    選擇 在不需要安裝的情況下試用 ezgo 12(T)

2. 開啟 終端機模擬程式

3. 切換成 root 身份
    $ sudo su –

4. 建立掛載目錄及掛載 Clonezilla 所在分割區
    # mkdir /mnt/sda3;mount /dev/sda3 /mnt/sda3

5. 修改 Grub 設定檔,只留下一個 Clonezilla live 選項,其它的部分前面加上一個 # 註解掉
     # vim /mnt/sda3/EFI/boot/grub.cfg

6. 增加 local 端硬碟開機選項
menuentry “Windows 7 Enterprise” {
  insmod ntfs
  insmod chain
  set root='(hd0,msdos1)’
  chainloader +1
}

7. 修改完畢後,重新開機,出現的 Grub 功能表

8. 可以正常執行 Windows 7 Enterprise

將客製化好的 Clonezilla 安裝到硬碟

本來一直沒有這樣嘗試過,因為覺得會增加系統維護的複雜性,後來覺得這樣也蠻方便的,不用另外準備 Clonezilla 隨身碟或是光碟。
1. 硬碟分割情形
    分割區 1:安裝 Windows 7 ntfs
    分割區 2:資料 ntfs
    分割區 3:Clonezilla ext3
[@more@]2. 將製作完成的 Clonezilla 放在 資料磁區

3. 使用 其它的 Linux Live 開機,這裡以 ezgo  為例

4. 做法和之前相同,不再複述
    $ sudo su –
    # fdisk -l
    # mkdir /mnt/sd{2,3};ntfs-3g /dev/sda2 /mnt/sda2

5. 格式化 /dev/sda3
    # mke2fs -j /dev/sda3

格式化完成

6. 掛載目錄
    # mount /dev/sda3 /mnt/sda3

7. 解壓縮 Clonezilla live
    # unzip /mnt/sda2/clonezilla-live-utopic-amd64_20150416.zip -d /mnt/sda3

       
解壓縮完成

8. 安裝 grub
    # grub-install –no-floppy –root-directory=/mnt/sda3 /dev/sda

9. 重新啟動
    # reboot

10. 重新開機功能表

客製化 CloneZilla – 製作成 iso / zip

1. 將客製化好的設定檔複製到 Windows 的 C:(為了方便複製)
[@more@]2. 使用 Clonezilla 開機

3. 選擇 正體中文

4. 選擇 不要修改鍵盤對應

5. 選擇 進入命令列

6. 選擇 進入命令列

7. 切換成 root
    $ sudo su –

8. 查看硬碟的分割狀態
     # fdisk -l

9. Windows 分割區在 /dev/sda2,建立掛載目錄
    # mkdir /mnt/sda2

10. 掛載 Windows 分割區
      # ntfs-3g /dev/sda2 /mnt/sda2

11. 切換到 /home/partimag 目錄
      # cd /home/partimag

12. 複製 custom-ocs 到 /home/partimag 目錄
      # cp /mnt/sda2/custom-ocs .

13. 製作 zip 檔
      # ocs-live-dev -g zh_TW.UTF-8 -k NONE -s -c -m ./custom-ocs

14. 製作 iso 檔
      # ocs-iso -g zh_TW.UTF-8 -k NONE -s -m ./custom-ocs

15. 將製作好的 zip / iso 檔搬移到 Windows 分割區
      # mv clonezilla* /mnt/sda2/Users/GigaByte/Desktop

16. 完工重新開機
# reboot

17. 在 Windows 使用者的桌面上就可以看到製作完成的 zip / iso 檔

客製化 CloneZilla -1

Clonezilla 是由國家高速網路中心所開發,是一套非常不錯的備份及還原軟體,也是一套自由軟體。但因為它的操作介面不如商業軟體簡單直覺,常常是因為英文介面或是要設定的選項過多,所以一般使用者使用的人並不是很多。
根據 永靖國小 運用自由軟體於電腦系統之選單式備份與復原軟體,製作一個比較方便自己使用的版本。
沒有客製化開機畫面

[@more@]
開完機後的選項
Backup_Windows 是備份硬碟中的 Windows 7/8.1 作業系統
Restore_Windows 是還原備份好的 Windows 7/8.1 作業系統
Restore_Default_Windows 是還原到剛安裝好的 Windows 7/8.1 作業系統
Reboot 電腦重新開機
Poweroff 電腦關機

比較麻煩是,要事先先設定好 Windows 7/8.1 是安裝在哪一個分割區,尤其是如果沒有特別處理過,Windows 7/8.1 作業系統前面還會有一個 100~350M 的分割區,再來是要備份到哪一個分割區。
還有最麻煩的是,如果購買的是品牌電腦,已經安裝好作業系統的,可能就不適用了。

客製化的系統很難適合所有的電腦,還是要視情況來做修改!

透過 PXE Server 使用 Samba 和 Clonezilla 自動備份及還原

主要是在 PXE Server 的功能表,使用 Samba 和 Clonezilla 做自動的備份及還原,另外因為要做到自動化,所以 Samba Server 是設定成不用密碼就可以使用,但在防火牆上要限定連線來源。

修改 PXE Server 功能表,因為執行的時候會覆蓋原有的備份檔和把 Windows 系統磁碟還原,所以在選項上加上了密碼,避免誤觸
要注意的是 append initrd 到後面算是一行
# vim /var/lib/tftpboot/pxelinux.cfg/Backup_Restore
LABEL Clonezilla Livei Samba AutoBackup
        MENU LABEL Clonezilla Live Samba ^AutoBackup
        MENU PASSWD CloneZilla
        kernel images/Clonezilla/live/vmlinuz
        append initrd=images/Clonezilla/live/initrd.img boot=live config username=user quiet noswap edd=on nomodeset noeject locales=”zh_TW.UTF-8″ keyboard-layouts=”NONE” ocs_live_run=”/usr/sbin/ocs-sr -q2 -j2 -z1p -p true saveparts Win7Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”yes” ocs_prerun=”mount -t cifs //192.168.1.6/public /home/partimag” vga=788 ip=frommedia nosplash fetch=tftp://192.168.1.6/images/Clonezilla/live/filesystem.squashfs

LABEL Clonezilla Livei Samba AutoRestore
        MENU LABEL Clonezilla Live Samba ^AutoRestore
        MENU PASSWD CloneZilla
        kernel images/Clonezilla/live/vmlinuz
        append initrd=images/Clonezilla/live/initrd.img boot=live config username=user quiet noswap edd=on nomodeset noeject locales=”zh_TW.UTF-8″ keyboard-layouts=”NONE” ocs_live_run=”/usr/sbin/ocs-sr –batch -g auto -e1 auto -e2 -r -j2 -p reboot restoreparts Win7Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”yes” ocs_prerun=”mount -t cifs //192.168.1.6/public /home/partimag” vga=788 ip=frommedia nosplash fetch=tftp://192.168.1.6/images/Clonezilla/live/filesystem.squashfs

透過 PXE Server 使用 NFS 和 Clonezilla 自動備份及還原

主要是在 PXE Server 的功能表,使用 NFS 和 Clonezilla 做自動的備份及還原

修改 PXE Server 功能表,因為執行的時候會覆蓋原有的備份檔和把 Windows 系統磁碟還原,所以在選項上加上了密碼,避免誤觸
要注意的是 append initrd 到後面算是一行
# vim /var/lib/tftpboot/pxelinux.cfg/Backup_Restore
LABEL Clonezilla Livei nfs AutoBackup
        MENU LABEL Clonezilla Live nfs ^AutoBackup
        MENU PASSWD CloneZilla
        kernel images/Clonezilla/live/vmlinuz
        append initrd=images/Clonezilla/live/initrd.img boot=live config username=user quiet noswap edd=on nomodeset noeject locales=”zh_TW.UTF-8″ keyboard-layouts=”NONE” ocs_live_run=”/usr/sbin/ocs-sr -q2 -j2 -z1p -p true saveparts Win7Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”yes” ocs_prerun=”mount -t nfs4 192.168.1.6:/var/lib/tftpboot/Backup /home/partimag” vga=788 ip=frommedia nosplash netboot=nfs nfsroot=192.168.1.6:/var/lib/tftpboot/images/Clonezilla

LABEL Clonezilla Livei nfs AutoRestore
        MENU LABEL Clonezilla Live nfs ^AutoRestore
        MENU PASSWD CloneZilla
        kernel images/Clonezilla/live/vmlinuz
        append initrd=images/Clonezilla/live/initrd.img boot=live config username=user quiet noswap edd=on nomodeset noeject locales=”zh_TW.UTF-8″ keyboard-layouts=”NONE” ocs_live_run=”/usr/sbin/ocs-sr –batch -g auto -e1 auto -e2 -r -j2 -p reboot restoreparts Win7Backup sda1″ ocs_live_extra_param=”” ocs_live_batch=”yes” ocs_prerun=”mount -t nfs4 192.168.1.6:/var/lib/tftpboot/Backup /home/partimag” vga=788 ip=frommedia nosplash netboot=nfs nfsroot=192.168.1.6:/var/lib/tftpboot/images/Clonezilla

在 PXE 開機選單中加入 Clonezilla 功能

Clonezilla 是一套類似 Ghost 的備份和還原程式,是由國家高速網路中心所開發,完全免費,支援多種平台的備份及還原,如:Windows / Linux / Mac…等等,一般使用時都是放在 USB 隨身碟(硬碟) 或燒錄成光碟來使用,不過既然有 PXE,就放在 PXE Server 上,更加的方便,完全不用光碟或隨身碟,既方便又環保。
Clonezilla 官方網站: http://clonezilla.nchc.org.tw/clonezilla-live/

參考網站:
【FreeBSD】架設電腦教室大量佈署環境 – PXE + Clonezilla Live + NFS 備份/還原 @ 有為青年生活札記 :: 痞客邦 PIXNET ::
Clonezilla live

下載 Clonezilla: 版本會一直更新,視所需平台而定
# wget http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_alternative_testing/20140107-trusty/clonezilla-live-20140107-trusty-amd64.zip
# wget http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_alternative_testing/20140107-trusty/clonezilla-live-20140107-trusty-i386.zip
# mkdir /var/lib/tftpboot/images/Clonezilla
# unzip clonezilla-live-20140107-trusty-amd64.zip -d /var/lib/tftpboot/images/Clonezilla

[@more@]
修改 PXE 選單
# vim /var/lib/tftpboot/pxelinux.cfg/default
加入下面幾行
使用 tftp
LABEL Clonezilla Live
   MENU LABEL Clonezilla Live
   MENU PASSWD Clonezilla
   kernel images/Clonezilla/live/vmlinuz
   append initrd=images/Clonezilla/live/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run=”ocs-live-general” ocs_live_extra_param=”” ocs_live_keymap=”NONE” ocs_live_batch=”no” ocs_lang=”zh_TW.UTF-8″ vga=788 nosplash fetch=tftp://192.168.1.6/images/Clonezilla/live/filesystem.squashfs

使用 nfs
LABEL Clonezilla Live
   MENU LABEL Clonezilla Live
   MENU PASSWD Clonezilla
   kernel images/Clonezilla/live/vmlinuz
   append initrd=images/Clonezilla/live/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run=”ocs-live-general” ocs_live_extra_param=”” ocs_live_keymap=”NONE” ocs_live_batch=”no” ocs_lang=”zh_TW.UTF-8″ vga=788 nosplash  netboot=nfs nfsroot=192.168.1.6:/Clonezilla

PXE 功能表


開機畫面


開機完成