2017年6月3日 星期六

Multi Boot Iso Live Usb


Multi Boot Iso Live Usb
主要參考這兩篇
  1. 事前準備
    • 建議使用 MBR partition table 和 FAT32
      • MBR partition 用於 legacy boot
      • FAT32 用於 UEFI boot
        • 一邊建議是 GPT + FAT32 來使用 UEFI,但因為我還想要有時候用 legacy boot 開機,所以故意選用 MBR。要支援 UEFI boot 的關鍵在 boot folder 是 FAT32 格式即可,之後的 boot image 都可以透過這裡的 bootloader binary 去尋找、啟動之。
  2. 軟體配置
    • 使用 grub install
    • copy iso
    • 準備對應每個 iso 的 grub.cfg

事前準備套件

sudo apt-get install grub-pc-bin grub-efi-amd64-bin
  • 注意因為只有裝 grub-efi-amd64-bin 所以僅限使用於 64 bit 的機器
      • 要設定 32 bit 的機器要另外裝別的套件

使用grub install

ubuntu@ubuntu:~$ sudo grub-install --removable --target=i386-pc --root-directory=/media/ubuntu/UsbStick/ /dev/sdc
Installation finished. No error reported.
ubuntu@ubuntu:~$ sudo grub-install --removable --target=x86_64-efi --root-directory=/media/ubuntu/UsbStick/ /dev/sdc
Installation finished. No error reported.
 * 參數說明
  * --removable
   * 用在可移除裝置,例如usb
  * --target
   * i386-pc 這選項是為了legacy開機
   * x86_64-efi 是為了efi開機
   * 想要有兩種開機能力都有那就兩個指令都要執行
 * 注意事項
  * fourdollar的文章中提到用ubuntu 13.04是因為13.04使用的grub是2.x版,早一點的grub(例如1.99)是沒有target這個選項的
  * /media/ubuntu/UsbStick/這種檔案架構是13.04採用的,12.04是類似/media/UsbStick/這樣
  * 當然grub中的--root-directory和裝置代號如/dev/sdc要根據實際的情形配置

tip: grub 的使用

  • 用 disk image 還原 hard disk,或是把系統硬碟換到不同的機器上的時候,也常常需要使用 grub-install 來修復、指定正確的 hard disk 位置
$ sudo grub-install --target=x86_64-efi --root-directory=/media/ubuntu/UsbStick/ /dev/sdc
如果有被抱怨找不到 EFI 資料夾,
檢查一下 /boot/efi 下面是不是有個叫 EFI 的資料夾。
Ubuntu 預設另外割一個 partition 並且 mount 在 /boot/efi
找不到有可能只是你在 grub-install 之前忘了先把這個 partition mount 上下
用下面的指令解決,/dev/sda1 是指 GPT 的特殊 partition
sudo mount /dev/sda1 /media/system-root-dir/boot/efi



內容這以前的 wikidot 移過來 http://tai271828.wikidot.com/multi-boot-iso-live-usb