2013年3月20日 星期三

如何在 Secure Boot Enabled 環境下啟動 Clonezilla Live


近來應該會遇到愈來愈多的機器 ,內建 Secure Boot 並預設為啟動。如此一來,在這些設備上要啟動其他的作業系統(如:Linux , BSD,.. 等非 Microsoft Windows 8 OS),除非將 Secure Boot 選項關閉,否則將需要用一些修正的方式讓系統能夠開機。

使用再生龍單機版(Clonezilla Live)進行備份前,需要將其原作業系統關機,再使用再生龍 Live CD/USB 開機。這樣啟動非 Windows 8 作業系統的行為,在上述的 Secure Boot Enabled 的設備中,就會立刻被 uEFI 中斷並無法開機。

以 Clonezilla Live USB 開機為例,在 EFI 的規範下,首先載入的就是 usb://EFI/boot/bootx64.efi ( 64位元設備下) 這個啟動元件,但由於 secure boot 的規範,當然無法讓未簽過簽章的這個 EFI 載入器運行,所以,較為可行的方法之一就是使用一個已被簽章過 EFI 載入器(先稱之為 per-loader)來取代原有的 bootx64.efi,之後讓它帶回真正原先的 bootx64.efi (當然,就需要改名為其他的 .efi),如此才能接回原來的開機程序。

目前,Linux Foundation 有釋出一個給 Microsoft 簽章過的 EFI loader ,可參考:
http://blog.hansenpartnership.com/linux-foundation-secure-boot-system-released/
所以,可以用這個 pre-loader 來讓其他的 loader 在 secure boot enabled 下開機。

由於用 usb 的彈性比較高,所以下面步驟就以 clonezilla live usb 為例子:

1. 先做一個 Clonezilla live 可開機 usb flash;如何製作請參考  http://clonezilla.nchc.org.tw/clonezilla-live/liveusb.php

2. 下載 Linux  Foundation 釋出的簽過章的 EFI 元件:
將此兩檔案放至 usb://EFI/boot 下

3. 由於所下載的 Preloader.efi  預設下一個會載入 loader.efi ,所以為了能接回原來有開機流程,必須做一些檔案的 檔名更改。
切換至 usb://EFI/boot/ 目錄:
  • bootx64.efi -> loader.efi
  • PreLoader.efi -> bootx64.efi
  • HashTool.efi 維持原檔名
完成。如此修改後的 usb flash 即可在secure boot enabled 的設備進行開機。

目前,在 secure boot enabled 設備第一次啟動時,需要將下一個 loader (loader.efi) 註冊至 MOK 中,這行為仍然需要一次的人為的介入。加入一次後,以後則不需要重覆此步驟,除非進 BIOS 清除相關簽章檔案。

以筆者的 PC 為例(ASUS BM6675/中信標案 MD750;BIOS :  v0625;Secure Boot Enabled),第一次開機步驟如下:

1. 選擇以 UEFI : usb flash 開機 (若設備仍允許 legacy mode 的話,則會看到有另一個非 uEFI 的相同設備)

2.  由於 loader.efi (原 Clonezilla live 的 bootx64.efi) 尚未簽章,當然不允許被執行,所以下一階段會執行 hashtool 處理


3. Hash Tool 主畫面,選擇 「Enroll Hash」來位 loader.efi 註冊


4. 選擇 loader.efi 進行註冊


5. 確認註冊進 MOK


6. 完成並離開 Hash Tool


7. 控制權交由 loader.efi 接手,啟動 Clonezilla Live 開機選單


一台設備上這樣的註冊動作只需要一次,下次用同一個 usb flash 開啟時,則會自動進入 7. 的選單。

有幾種情況可能需要重新註冊:
1. MOK 註冊資料被清除(ex:恢復預設值)
2. loader.efi 更改過(ex: 重新植入不同版本的 Cloneizlla Live)

事實上,Linux Foundation 有釋出 keytool.efi 的工具,能夠進階的管理設備中的 key DB (PK,KEK, DBX, MOK,.. 等),下回補充。


Reference:

2 則留言:

  1. 您好,

    因為搜尋clonezill和uefi而找到這裡來。不過secure boot應該是下個階段才要去碰的主題。

    目前正在嘗試把cloneilla live裝到已經裝有以uefi/gpt方式安裝好64位元Windows 7的桌機上面。我的作法是把clonezilla live底下的EFI/boot目錄拷貝到硬碟ESP裡面的EFI/clonezilla目錄下(更名),clonezilla live裡面的live目錄也另行拷貝到硬碟ESP的根目錄底下。我是使用rEFInd替換Microsoft的bootmgfw.efi來管理多重開機。開機後可以看到windows和clonezilla的選項,windows也可以順利開機。但是選取clonezill後則會停在grub>的提示符號。不知道怎樣才是正確的方式?

    回覆刪除
  2. Hi, I also have a post about how to customize Signature for secure boot using OpenSSL. Welcome to check my blog as well, thanks!

    http://mephistolai.blogspot.tw/2013/11/x86-8-how-to-customize-signature-for.html

    回覆刪除

Ceasar's Photo

www.flickr.com