• 対象とするUbuntuのバージョン

    • UEFIでインストールされているUbuntuすべて

はじめに

  • 今は手軽にUSBメモリーにLive環境を構築してくれるソフトがあります。
    ここでは、そういったソフトを使わずにUEFI環境でISOイメージから起動できるUSBメモリーを構築する手順を書いておきます。
    自分自身詳しい訳ではないので、こうやったら出来たという程度の認識でお願いします。

これでやってみたこと

  • rEFInd Boot Managerを使ったマルチブート。( Windows10 , Ubuntu14.04 , Debian Jessie )
  • UEFI環境での起動に対応していないISOイメージをUEFI環境として起動。例えば、Debian Wheezy , ubuntu-defaults-builder で作成したISOイメージ等。
  • Debian WheezyのISOイメージを組み込み、VirtualBoxのvdiイメージに変換、これを利用してUEFI環境の仮想PCでインストール。( VirtulBox環境下(EFI) で起動するには shell での操作や startup.nsh の作成が必要ですが、この vdi イメージで起動すると rEFInd Boot Manager が自動的に起動して起動したいカーネルを選択・操作できます。)

今回の修正で変わったこと

  • ドライブの構成が変わっても追従できる様になりました。

揃えるもの

作り方

  1. USBメモリーにパーティション&ファイルシステムを構築。

    予め、認識しているUSBメモリーのデバイスファイル名 (/dev/sdb 等) を確認してください。
    ラベル名を設定しておくと後々認識しやすいかもしれません。

    gparted を使う場合は、

    GPT

    容量

    ラベル

    partition1

    fat32 (EF00)

    300MB

    etc10-fat32

    partition2

    ext4 (8300)

    残り容量

    etc10-ext4


  • gdisk (ここでは sgdisk) を使う場合は以下の様にします。

    事故防止の為、
    /dev/sdXY
    /dev/sdXZ
    に置き換えます。X ⇒ b , Y ⇒ 1 , Z ⇒ 2 と考えて下さい。

※ 以下の C12A7328-F81F-11D2-BA4B-00A0C93EC93B は ESP : EFI System Partition (EF00) , EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 は Linux (8300) を示すパーティションのGUIDです。
※ 一覧は Partition type GUIDs : en.wikipedia.org をご覧ください。

  • sudo sgdisk -Z /dev/sdX
    sync
    
    sudo sgdisk -o /dev/sdX
    sync
    
    sudo sgdisk \
            -n 1::+300M \
            -n 2::: \
            -t 1:C12A7328-F81F-11D2-BA4B-00A0C93EC93B \
            -t 2:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 \
            /dev/sdX
    
    sync
    
    sudo mkfs.fat -F32 -n etc10-fat32 /dev/sdXY
    sync
    
    sudo mkfs.ext4 /dev/sdXZ
    sync
    
    ※ ここでシステムが自動マウントして以下のコマンドの実行に失敗するかもしれません。sudo umount <mount point> を実行してから以下を実行して下さい。
    
    sudo e2label /dev/sdXZ etc10-ext4
    sync
    
  • デバイスファイルの確認
    sudo blkid
       
     [省略]
     /dev/sdb1: LABEL="etc10-fat32" UUID="49DA-1CDC" TYPE="vfat" 
     /dev/sdb2: LABEL="etc10-ext4" UUID="92d02a95-fce6-4f93-9546-d25ba215d8ca" TYPE="ext4" 

    /dev/sdb がUSBメモリーです。

  • USBメモリーにGRUB 2をインストール

    事故防止の為、
    /dev/sdXY
    /dev/sdXZ
    に置き換えます。X ⇒ b , Y ⇒ 1 , Z ⇒ 2 と考えて下さい。

    sudo mount /dev/sdXZ /mnt
    sudo mkdir -p /mnt/boot/efi
    sudo mount /dev/sdXY /mnt/boot/efi
    
    sudo grub-install --efi-directory=/mnt/boot/efi --boot-directory=/mnt/boot /dev/sdX
    
    sudo umount /mnt/boot/efi
    sudo chmod 777 -R /mnt/boot
    sudo umount /mnt
    
    sync

    USBメモリーを抜き挿しして下さい。

  • ISOファイルをUSBメモリーにコピーする。

    ファイルマネージャーに etc10-ext4 という名前のアイコンが表示されていると思いますのでクリックしてウィンドウを開きます。
    boot ディレクトリーがありますので開きます。
    ここに、

    • ubuntu-ja-14.04-desktop-amd64.iso
      ubuntu-ja-15.10-desktop-amd64.iso

    および、空のファイルである

    • isoboot.txt 

    をコピーします。

  • grub.cfg をUSBメモリーに作成する。
    4. の時点で開いている boot ディレクトリー内にある grub ディレクトリーを開きます。 ここで grub.cfg という名前のファイルを作り、下の枠内の内容を grub.cfg へコピー&ペーストして保存します。

    insmod iso9660
    insmod part_gpt
    insmod fat
    insmod ext2
    
    set dafault=0
    set timeout=20
    
    search --file --set rootpart /boot/isoboot.txt
    
    menuentry 'ubuntu-ja-15.10-desktop-amd64.iso' {
        set isofile="/boot/ubuntu-ja-15.10-desktop-amd64.iso"
        loopback loop ($rootpart)$isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile debian-installer/language=ja keyboard-configuration/layoutcode?=jp keyboard-configuration/modelcode?=jp106 noeject quiet splash --
        initrd (loop)/casper/initrd.lz
    }
    
    menuentry 'ubuntu-ja-14.04-desktop-amd64.iso' {
        set isofile="/boot/ubuntu-ja-14.04-desktop-amd64.iso"
        loopback loop ($rootpart)$isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile debian-installer/language=ja keyboard-configuration/layoutcode?=jp keyboard-configuration/modelcode?=jp106 noeject quiet splash --
        initrd (loop)/casper/initrd.lz
    }
    


rEFInd Boot Manager

  • GRUB 2をインストールした直後では起動するのですが、USBメモリーを一旦外すとUEFIの起動ドライブ選択画面で認識しないPCがあるようです。(それが普通なのかはわかりませんが。)
  • これを解決するのが rEFInd Boot Manager : 内部リンク です。 対象のUSBメモリーにインストールしておけば手間なしでUSBメモリーに入っているシステムを起動できます。 また他のストレージにWindows10やUbuntu等が入っていたら自動認識されるので便利です。

  • インストール

    The rEFInd Boot Manager : Getting rEFInd から A binary zip file を入手して同ページの Tip の要領でインストールします。

    事故防止の為、
    /dev/sdXY
    に置き換えます。X ⇒ b , Y ⇒ 1 と考えて下さい。

    まず、zip を解凍します。端末 : 内部リンクを開いて、解凍した時に出来たディレクトリーへ移動し

    bash install.sh --usedefault /dev/sdXY --alldrivers

    と入力・実行します。

USBメモリーで再起動

  • PCを再起動したらrEFIndのメニューが表示されます。多くのアイコンが表示されている場合は基本的にデフォルトで大丈夫だと思います。デフォルトから変更して選択したい場合はアイコンの下に先に設定したラベル名 etc10-fat32 等が表示されていますのでこれをもとに選択すると良いです。

ISOファイルを追加したい場合

  • ISOファイルを 4. の様にコピーし、 5. の枠内の様にメニューエントリーを追加すれば良いです。 sudo update-grub では駄目です。

内部リンク

rEFInd Boot Manager : 内部リンク
端末 : 内部リンク

外部リンク

Grub2 Installing : help.ubuntu.com
MaintenanceFreeCustomGrub2Screen#Making_the_custom_Grub2_Menu_entries : help.ubuntu.com
Installing Grub2 for EFI and BIOS mode on USB drive : ubuntuforums.org
The rEFInd Boot Manager : www.rodsbooks.com
Partition type GUIDs : en.wikipedia.org

UbuntuJapaneseWiki: UbuntuTips/Install/UEFI/Build Bootable Usbthumb (最終更新日時 2016-01-04 13:49:41 更新者 MakotoHasegawa)