「マルチブート USB ドライブ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:ブートプロセス de:Multiboot USB Stick en:Multiboot USB drive {{Related articles start}} {{Related|GRUB}} {{Related|Syslinux}} {{Related|Archis...」)
 
(同期)
1行目: 1行目:
 
[[Category:ブートプロセス]]
 
[[Category:ブートプロセス]]
  +
[[Category:Arch の入手とインストール]]
 
[[de:Multiboot USB Stick]]
 
[[de:Multiboot USB Stick]]
 
[[en:Multiboot USB drive]]
 
[[en:Multiboot USB drive]]
26行目: 27行目:
   
 
=== GRUB のインストール ===
 
=== GRUB のインストール ===
  +
  +
==== シンプルなインストール ====
   
 
USB ドライブ上のファイルシステムをマウント:
 
USB ドライブ上のファイルシステムをマウント:
44行目: 47行目:
   
 
UEFI を使う場合、パーティションは MBR パーティションテーブルの最初のパーティションにして FAT32 でフォーマットしてください。
 
UEFI を使う場合、パーティションは MBR パーティションテーブルの最初のパーティションにして FAT32 でフォーマットしてください。
  +
  +
==== UEFI GPT + BIOS GPT/MBR のハイブリッドブート ====
  +
どこでも起動できるユニバーサル USB キーを作成したいときに有用な構成です。まず最初にデバイスに [[GPT]] パーティションテーブルを作成する必要があります。最低でも以下の3つのパーティションが必要です:
  +
# BIOS ブートパーティション (タイプ EF02)。
  +
# EFI システムパーティション (タイプ EF00 で [[EFI_システムパーティション#パーティションのフォーマット|FAT32 ファイルシステム]])。
  +
# データパーティション ([[GRUB]] によってサポートされているファイルシステムを使用)。
  +
  +
BIOS ブートパーティションの容量は 1 MB、EFI システムパーティションは最低でも 50 MB 必要です。データパーティションはドライブの残り容量全部使えます。
  +
  +
次にハイブリッド MBR パーティションテーブルを作成します。保護 MBR パーティションにブートフラグを設定するだけでは十分ではありません。
  +
  +
[[gdisk]] を使ってハイブリッド MBR パーティションテーブルを作成する例:
  +
  +
{{bc|
  +
# gdisk /dev/sdX
  +
  +
Command (? for help): r
  +
Recovery/transformation command (? for help): h
  +
Type from one to three GPT partition numbers, separated by spaces, to be added to the hybrid MBR, in sequence: 1 2 3
  +
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): N
  +
  +
Creating entry for GPT partition #1 (MBR partition #2)
  +
Enter an MBR hex code (default EF):
  +
Set the bootable flag? (Y/N): N
  +
  +
Creating entry for GPT partition #2 (MBR partition #3)
  +
Enter an MBR hex code (default EF):
  +
Set the bootable flag? (Y/N): N
  +
  +
Creating entry for GPT partition #3 (MBR partition #4)
  +
Enter an MBR hex code (default 83):
  +
Set the bootable flag? (Y/N): Y
  +
  +
Recovery/transformation command (? for help): x
  +
Expert command (? for help): h
  +
Expert command (? for help): w
  +
  +
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
  +
PARTITIONS!!
  +
  +
Do you want to proceed? (Y/N): Y
  +
}}
  +
  +
GRUB をインストールすることで EFI + GPT と BIOS + GPT/MBR の両方に対応させることができます。GRUB の設定 (--boot-directory) は同じ場所に保存してください。
  +
  +
まず、USB ドライブの EFI システムパーティションとデータパーティションをマウントします。そして EFI 用に GRUB をインストール:
  +
# grub-install --target=x86_64-efi --efi-directory=/EFI_MOUNTPOINT --boot-directory=/DATA_MOUNTPOINT/boot --removable --recheck
  +
  +
それから BIOS 用にインストール:
  +
# grub-install --target=i386-pc --boot-directory=/DATA_MOUNTPOINT/boot --recheck /dev/sdX
  +
  +
さらにフォールバックとして、データパーティションに GRUB をインストールすることもできます:
  +
# grub-install --target=i386-pc --boot-directory=/DATA_MOUNTPOINT/boot --recheck /dev/sdX3
   
 
=== GRUB の設定 ===
 
=== GRUB の設定 ===
  +
  +
==== テンプレートを使う ====
  +
ドライブに特定の ISO ファイルやフォルダが存在する場合にのみ、他のブートエントリをロードできるようにする {{ic|grub.cfg}} と事前に生成済みの GRUB 設定ファイルを提供する git プロジェクトがいくつか存在します。
  +
  +
* Multiboot USB: https://github.com/aguslr/multibootusb
  +
  +
* GLIM (GRUB2 Live ISO Multiboot): https://github.com/thias/glim
  +
  +
==== 手動設定 ====
   
 
マルチブート USB ドライブを作るときは {{ic|grub.cfg}} は自動で生成するよりも手動で編集した方が楽です。もしくは、{{ic|/etc/grub.d/40_custom}} や {{ic|/mnt/boot/grub/custom.cfg}} に変更を加えてから [[GRUB#メイン設定ファイルの生成|grub-mkconfig]] で {{ic|/mnt/boot/grub/grub.cfg}} を生成してください。
 
マルチブート USB ドライブを作るときは {{ic|grub.cfg}} は自動で生成するよりも手動で編集した方が楽です。もしくは、{{ic|/etc/grub.d/40_custom}} や {{ic|/mnt/boot/grub/custom.cfg}} に変更を加えてから [[GRUB#メイン設定ファイルの生成|grub-mkconfig]] で {{ic|/mnt/boot/grub/grub.cfg}} を生成してください。
79行目: 144行目:
 
ISO イメージは GRUB をインストールしたのと同じファイルシステムの {{ic|boot/iso/}} ディレクトリに保存します。それ以外のディレクトリに保存する場合、{{ic|loopback}} コマンドを使う時に ISO ファイルのパスの前にデバイスの識別子を付ける必要があります。例: {{ic|loopback loop '''(hd1,2)'''$isofile}}。このデバイス識別子は[[永続的なブロックデバイスの命名|永続的]]ではないため、このセクションの例では使いません。
 
ISO イメージは GRUB をインストールしたのと同じファイルシステムの {{ic|boot/iso/}} ディレクトリに保存します。それ以外のディレクトリに保存する場合、{{ic|loopback}} コマンドを使う時に ISO ファイルのパスの前にデバイスの識別子を付ける必要があります。例: {{ic|loopback loop '''(hd1,2)'''$isofile}}。このデバイス識別子は[[永続的なブロックデバイスの命名|永続的]]ではないため、このセクションの例では使いません。
   
以下のように永続的なブロックデバイスの命名を使うことができます:
+
以下のように永続的なブロックデバイスの命名を使うことができます (UUID は適当な値に置き換えてください):
 
{{bc|1=
 
{{bc|1=
 
# define globally (i.e outside any menuentry)
 
# define globally (i.e outside any menuentry)
88行目: 153行目:
 
}}
 
}}
   
{{Tip|カーネルパラメータのリストは https://www.kernel.org/doc/Documentation/kernel-parameters.txt を見て下さい (完全ではありません)。}}
+
{{Tip|カーネルパラメータのリストは https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.rst や https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt を見て下さい (完全ではありません)。}}
 
==== Alt Linux ====
 
 
* Initramfs フレームワーク: ???
 
* ライブフレームワーク: ???
 
* Init システム: ???
 
 
{{bc|1=
 
menuentry "[loopback]altlinux-7.0.5-simply-x86_64-install-dvd5.iso" {
 
set gfxpayload=keep
 
insmod gzio
 
insmod part_msdos
 
insmod ext2
 
insmod xfs
 
set bootpart=uuid:df46d821-e7f9-4e35-bbd2-728bdce8d89a
 
set isodir=/boot/iso
 
set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso
 
loopback loop (${root})${isodir}/${isofile}
 
linux (loop)/syslinux/alt0/vmlinuz automatic=method:disk,${bootpart},directory:${isodir}/${isofile} ramdisk_size=183210 changedisk lang=ru_RU splash noeject xdriver=auto quiet=1 showopts
 
initrd (loop)/syslinux/alt0/full.cz
 
}
 
}}
 
   
 
==== Arch Linux ====
 
==== Arch Linux ====
 
{{Tip|32ビット環境を起動したい場合、{{ic|x86_64}} を {{ic|i686}} に置き換えて下さい。}}
 
   
 
===== 月次リリース =====
 
===== 月次リリース =====
   
  +
[[archiso]] も見てください。
* Initramfs フレームワーク: [[mkinitcpio]] (cmdline: [https://projects.archlinux.org/mkinitcpio.git/tree/man/mkinitcpio.8.txt#n212])
 
* ライブフレームワーク: [[archiso]] (cmdline: [https://projects.archlinux.org/archiso.git/tree/docs/README.bootparams])
 
* Init システム: [[systemd]] (cmdline: [http://www.freedesktop.org/software/systemd/man/kernel-command-line.html])
 
   
 
{{bc|1=
 
{{bc|1=
menuentry '[loopback]archlinux-2014.12.01-dual.iso' {
+
menuentry '[loopback]archlinux-2017.04.01-x86_64.iso' {
set isofile='/boot/iso/archlinux-2014.12.01-dual.iso'
+
set isofile='/boot/iso/archlinux-2017.04.01-x86_64.iso'
 
loopback loop $isofile
 
loopback loop $isofile
linux (loop)/arch/boot/'''x86_64'''/vmlinuz archisodevice=/dev/loop0 img_dev=$imgdevpath img_loop=$isofile
+
linux (loop)/arch/boot/'''x86_64'''/vmlinuz archisodevice=/dev/loop0 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
 
initrd (loop)/arch/boot/'''x86_64'''/archiso.img
 
initrd (loop)/arch/boot/'''x86_64'''/archiso.img
 
}
 
}
135行目: 174行目:
 
===== archboot =====
 
===== archboot =====
   
  +
[[archboot]] も見てください。
* Initramfs フレームワーク: [[mkinitcpio]] (cmdline: [https://projects.archlinux.org/mkinitcpio.git/tree/man/mkinitcpio.8.txt#n212])
 
* ライブフレームワーク: [[archboot]] (cmdline: none? ''RFD'')
 
* Init システム: [[systemd]] (cmdline: [http://www.freedesktop.org/software/systemd/man/kernel-command-line.html])
 
   
 
{{bc|1=
 
{{bc|1=
145行目: 182行目:
 
linux (loop)/boot/vmlinuz_'''x86_64''' iso_loop_dev=$imgdevpath iso_loop_path=$isofile
 
linux (loop)/boot/vmlinuz_'''x86_64''' iso_loop_dev=$imgdevpath iso_loop_path=$isofile
 
initrd (loop)/boot/initramfs_'''x86_64'''.img
 
initrd (loop)/boot/initramfs_'''x86_64'''.img
  +
}
  +
}}
  +
  +
==== Alpine Linux ====
  +
{{Tip|32ビット環境を起動したい場合、{{ic|x86_64}} を {{ic|x86}} に置き換えてください。}}
  +
  +
{{bc|1=
  +
menuentry '[loopback]alpine x86_64' {
  +
set isofile='/boot/iso/alpine-extended-3.6.0-x86_64.iso'
  +
loopback loop $isofile
  +
set root=loop
  +
linux /boot/vmlinuz-hardened modloop=/boot/modloop-grsec modules=loop,squashfs,sd-mod,usb-storage quiet
  +
initrd /boot/initramfs-hardened
 
}
 
}
 
}}
 
}}
151行目: 201行目:
   
 
===== 標準インストールメディア =====
 
===== 標準インストールメディア =====
 
* Initramfs フレームワーク: [https://fedoraproject.org/wiki/Dracut Dracut] (cmdline: [https://git.kernel.org/cgit/boot/dracut/dracut.git/tree/dracut.cmdline.7.asc])
 
* インストールプログラム: [https://fedoraproject.org/wiki/Anaconda Anaconda] (cmdline: [https://github.com/rhinstaller/anaconda/blob/master/docs/boot-options.rst])
 
* Init システム: [[systemd]] (cmdline: [http://www.freedesktop.org/software/systemd/man/kernel-command-line.html])
 
   
 
{{bc|1=
 
{{bc|1=
163行目: 209行目:
 
initrd (loop)/isolinux/initrd.img
 
initrd (loop)/isolinux/initrd.img
 
}
 
}
}}
 
 
{{tip|1=インストールイメージの場所を示す stage2 ブートパラメータ {{ic|1=/dev/sdb2}} は Anaconda によって使われます。[[fstab]] の1番目のフィールド (fs_spec) と同じように、以下のどれかに置き換えられます (例: {{ic|1=linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:'''LABEL=MYUSBSTICK''':/$isofile}}):
 
* {{ic|1=/dev/sd'''''xY'''''}}
 
* {{ic|1=LABEL=MYUSBSTICK}}
 
* {{ic|1=UUID=00000000-0000-0000-0000-0000deadbeef}}
 
特殊なディスクラベル (例: GPT) を使用する場合、{{ic|1=PARTUUID=}} や {{ic|1=PARTLABEL=}} を使うことも可能です。
 
 
}}
 
}}
   
 
===== デスクトップライブメディア =====
 
===== デスクトップライブメディア =====
 
* Initramfs フレームワーク: [https://fedoraproject.org/wiki/Dracut Dracut] (cmdline: [https://git.kernel.org/cgit/boot/dracut/dracut.git/tree/dracut.cmdline.7.asc])
 
* ライブフレームワーク: fedora [https://fedoraproject.org/wiki/FedoraLiveCD livecd-tools] (cmdline: none)
 
* Init システム: [[systemd]] (cmdline: [http://www.freedesktop.org/software/systemd/man/kernel-command-line.html])
 
   
 
{{bc|1=
 
{{bc|1=
189行目: 224行目:
 
==== Clonezilla Live ====
 
==== Clonezilla Live ====
 
{{tip|1=2014.01.05 から [https://projects.archlinux.org/archiso.git/commit/?id=5cd02c704046cdb6974f6b10f0cac366eeebec0e], Arch Linux の月次リリースには clonezilla が含まれています。}}
 
{{tip|1=2014.01.05 から [https://projects.archlinux.org/archiso.git/commit/?id=5cd02c704046cdb6974f6b10f0cac366eeebec0e], Arch Linux の月次リリースには clonezilla が含まれています。}}
 
* Initramfs フレームワーク: [https://anonscm.debian.org/cgit/kernel/initramfs-tools.git/ initramfs-tools] (cmdline: ''RFD'')
 
* ライブフレームワーク: [http://live.debian.net/ Debian Live] (cmdline: [http://manpages.debian.org/cgi-bin/man.cgi?query=live-boot&apropos=0&sektion=7&manpath=Debian+unstable+sid&format=html&locale=en])
 
* Init システム: [https://savannah.nongnu.org/projects/sysvinit sysvinit] (cmdline: ''RFD'')
 
   
 
{{bc|1=
 
{{bc|1=
menuentry "[loopback]clonezilla-live-2.2.3-25-amd64" {
+
menuentry "[loopback]clonezilla-live-20170220-yakkety-amd64" {
set isofile="/boot/iso/clonezilla-live-2.2.3-25-amd64.iso"
+
set isofile="/boot/iso/clonezilla-live-20170220-yakkety-amd64.iso"
 
loopback loop $isofile
 
loopback loop $isofile
linux (loop)/live/vmlinuz findiso=$isofile boot=live union=overlay username=user config
+
linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\" keyboard-layouts= ocs_live_batch=\"no\" locales= vga=788 ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile
 
initrd (loop)/live/initrd.img
 
initrd (loop)/live/initrd.img
 
}
 
}
204行目: 235行目:
   
 
==== Debian ====
 
==== Debian ====
 
===== 標準インストールメディア =====
 
 
* Initramfs フレームワーク: [https://anonscm.debian.org/cgit/kernel/initramfs-tools.git/ initramfs-tools] (cmdline: ''RFD'')
 
* インストールプログラム: [https://wiki.debian.org/DebianInstaller#Development debian-installer] (cmdline: ''exists but missing online documentation'')
 
* Init システム: [https://savannah.nongnu.org/projects/sysvinit sysvinit] (cmdline: ''RFD'')
 
 
{{tip|光学メディア以外の標準インストールメディア (例: USB スティックや HDD) から debian をインストールするには、インストールメディアのデフォルトの initramfs ({{ic|(loop)/install.amd/initrd.gz}}) ではない別の initramfs を使用する必要があります。デフォルトの initramfs で起動すると、インストーラーがインストールに使用する iso イメージを発見・マウントすることができません。[https://mirrors.kernel.org/debian/dists/stable/main/installer-amd64/current/images/hd-media/initrd.gz 公式のミラーサイト] からハードディスクインストール用の initramfs をダウンロードして、イメージファイルと同じディレクトリに配置してください。そして適当な名前を付けて下さい (下の例では {{ic|debian-7.8.0-amd64-DVD-1.hdd.initrd.gz}})。}}
 
   
 
{{bc|1=
 
{{bc|1=
menuentry '[loopback]debian-7.8.0-amd64-DVD-1' {
+
menuentry '[loopback]debian-live-8.8.0-amd64-gnome-desktop' {
set isofile='/boot/iso/debian-7.8.0-amd64-DVD-1.iso'
+
set isofile='/boot/iso/debian-live-8.8.0-amd64-gnome-desktop.iso'
  +
loopback loop (hd1,2)$isofile
set initrdfile='/boot/iso/debian-7.8.0-amd64-DVD-1.hdd.initrd.gz'
 
loopback loop $isofile
+
linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sdb2$isofile
linux (loop)/install.amd/vmlinuz vga=791 iso-scan/ask_second_pass=true iso-scan/filename=$isofile
 
initrd $initrdfile
 
}
 
}}
 
 
===== ライブインストールメディア =====
 
 
* Initramfs フレームワーク: [https://anonscm.debian.org/cgit/kernel/initramfs-tools.git/ initramfs-tools] (cmdline: ''RFD'')
 
* ライブフレームワーク: [http://live.debian.net/ Debian Live] (cmdline: [http://manpages.debian.org/cgi-bin/man.cgi?query=live-boot&apropos=0&sektion=7&manpath=Debian+unstable+sid&format=html&locale=en])
 
* Init システム: [https://savannah.nongnu.org/projects/sysvinit sysvinit] (cmdline: ''RFD'')
 
 
{{bc|1=
 
menuentry '[loopback]debian-live-7.8.0-amd64-xfce-desktop' {
 
set isofile='/boot/iso/debian-live-7.8.0-amd64-xfce-desktop.iso'
 
loopback loop $isofile
 
linux (loop)/live/vmlinuz boot=live config fromiso='''/dev/sdb2'''/$isofile
 
 
initrd (loop)/live/initrd.img
 
initrd (loop)/live/initrd.img
 
}
 
}
 
}}
 
}}
 
{{note|{{ic|1=fromiso=/dev/disk/by-.../.../$isofile}} を使うかわりに短く {{ic|1=findiso=$isofile}} と指定してもかまいません。ただし {{ic|1=findiso=}} よりも {{ic|1=fromiso=}} を使った方が不必要なマウントをしなくなるので初期化が高速になります。}}
 
   
 
==== Elementary OS ====
 
==== Elementary OS ====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: ''RFD''
 
* Init システム: upstart (cmdline: ''RFD'')
 
 
 
{{bc|1=
 
{{bc|1=
 
menuentry '[loopback]elementaryos-freya-amd64.20150411' {
 
menuentry '[loopback]elementaryos-freya-amd64.20150411' {
258行目: 258行目:
   
 
===== 標準インストールメディア =====
 
===== 標準インストールメディア =====
 
* Initramfs フレームワーク: [https://fedoraproject.org/wiki/Dracut Dracut] (cmdline: [https://git.kernel.org/cgit/boot/dracut/dracut.git/tree/dracut.cmdline.7.asc])
 
* インストールプログラム: [https://fedoraproject.org/wiki/Anaconda Anaconda] (cmdline: [https://github.com/rhinstaller/anaconda/blob/master/docs/boot-options.rst])
 
* Init システム: [[systemd]] (cmdline: [http://www.freedesktop.org/software/systemd/man/kernel-command-line.html])
 
   
 
{{bc|1=
 
{{bc|1=
menuentry '[loopback]Fedora-20-x86_64-DVD' {
+
menuentry '[loopback]Fedora-Workstation-netinst-x86_64-24-1.2' {
set isofile='/boot/iso/Fedora-20-x86_64-DVD.iso'
+
set isofile='/boot/iso/Fedora-Workstation-netinst-x86_64-24-1.2.iso'
 
loopback loop $isofile
 
loopback loop $isofile
linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:'''/dev/sdb2''':/$isofile
+
linux (loop)/isolinux/vmlinuz inst.stage2=hd:LABEL=Fedora-WS-dvd-x86_64-24 iso-scan/filename=$isofile quiet
 
initrd (loop)/isolinux/initrd.img
 
initrd (loop)/isolinux/initrd.img
 
}
 
}
273行目: 269行目:
   
 
===== Workstation ライブメディア =====
 
===== Workstation ライブメディア =====
 
* Initramfs フレームワーク: [https://fedoraproject.org/wiki/Dracut Dracut] (cmdline: [https://git.kernel.org/cgit/boot/dracut/dracut.git/tree/dracut.cmdline.7.asc])
 
* ライブフレームワーク: fedora [https://fedoraproject.org/wiki/FedoraLiveCD livecd-tools] (cmdline: none)
 
* Init システム: [[systemd]] (cmdline: [http://www.freedesktop.org/software/systemd/man/kernel-command-line.html])
 
 
 
{{bc|1=
 
{{bc|1=
menuentry '[loopback]Fedora-Live-Workstation-x86_64-21-5' {
+
menuentry '[loopback]Fedora-Workstation-Live-x86_64-24-1.2' {
set isofile='/boot/iso/Fedora-Live-Desktop-x86_64-21-5.iso'
+
set isofile='/boot/iso/Fedora-Workstation-Live-x86_64-24-1.2.iso'
 
loopback loop $isofile
 
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=Fedora-Live-WS-x86_64-21-5 iso-scan/filename=$isofile rd.live.image
+
linux (loop)/isolinux/vmlinuz root=live:CDLABEL=Fedora-WS-Live-24-1-2 iso-scan/filename=$isofile rd.live.image quiet
initrd (loop)/isolinux/initrd0.img
+
initrd (loop)/isolinux/initrd.img
 
}
 
}
 
}}
 
}}
   
 
==== Gentoo ====
 
==== Gentoo ====
===== デスクトップ LiveDVD =====
 
 
* Initramfs フレームワーク: [https://wiki.gentoo.org/wiki/Genkernel genkernel] (cmdline: [https://gitweb.gentoo.org/proj/genkernel.git/tree/doc/genkernel.8.txt#n393])
 
* ライブフレームワーク: [https://gitweb.gentoo.org/proj/livecd-tools.git/ livecd-tools] (cmdline: ''RFD'')
 
* Init システム: [https://wiki.gentoo.org/wiki/Project:OpenRC OpenRC] (cmdline: ''RFD'')
 
 
 
{{bc|1=
 
{{bc|1=
menuentry "[loopback]livedvd-amd64-multilib-20140826" {
+
menuentry "[loopback]livedvd-amd64-multilib-20160514" {
set isofile="/boot/iso/livedvd-amd64-multilib-20140826.iso"
+
set isofile="/boot/iso/livedvd-amd64-multilib-20160514.iso"
 
loopback loop $isofile
 
loopback loop $isofile
 
linux (loop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc aufs looptype=squashfs loop=/image.squashfs cdroot isoboot=$isofile vga='''791''' splash=silent,theme:default console=tty0
 
linux (loop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc aufs looptype=squashfs loop=/image.squashfs cdroot isoboot=$isofile vga='''791''' splash=silent,theme:default console=tty0
initrd (loop)/isolinux/gentoo.igz
+
initrd (loop)/isolinux/gentoo.xz
 
}
 
}
 
}}
 
}}
 
{{Tip|最小メディアでも上記で動作します。}}
 
   
 
==== GParted Live ====
 
==== GParted Live ====
 
* Initramfs フレームワーク: [https://anonscm.debian.org/cgit/kernel/initramfs-tools.git/ initramfs-tools] (cmdline: ''RFD'')
 
* ライブフレームワーク: [http://live.debian.net/ Debian Live] (cmdline: [http://manpages.debian.org/cgi-bin/man.cgi?query=live-boot&apropos=0&sektion=7&manpath=Debian+unstable+sid&format=html&locale=en])
 
* Init システム: [https://savannah.nongnu.org/projects/sysvinit sysvinit] (cmdline: ''RFD'')
 
 
 
{{bc|1=
 
{{bc|1=
menuentry "[loopback]gparted-live-0.22.0-2-'''amd64'''" {
+
menuentry "[loopback]gparted-live-0.28.1-1-'''amd64'''" {
set isofile="/boot/iso/gparted-live-0.22.0-2-'''amd64'''.iso"
+
set isofile="/boot/iso/gparted-live-0.28.1-1-'''amd64'''.iso"
 
loopback loop $isofile
 
loopback loop $isofile
linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap noeject toram=filesystem.squashfs ip= nosplash findiso=$isofile
+
linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap noeject toram=filesystem.squashfs ip= nosplash findiso=$isofile
 
initrd (loop)/live/initrd.img
 
initrd (loop)/live/initrd.img
 
}
 
}
321行目: 299行目:
   
 
==== Kali Linux ====
 
==== Kali Linux ====
 
* Initramfs フレームワーク: [https://anonscm.debian.org/cgit/kernel/initramfs-tools.git/ initramfs-tools] (cmdline: ''RFD'')
 
* ライブフレームワーク: [http://live.debian.net/ Debian Live] (cmdline: [http://manpages.debian.org/cgi-bin/man.cgi?query=live-boot&apropos=0&sektion=7&manpath=Debian+unstable+sid&format=html&locale=en])
 
* Init システム: [https://savannah.nongnu.org/projects/sysvinit sysvinit] (cmdline: ''RFD'')
 
 
 
{{bc|1=
 
{{bc|1=
 
menuentry "[loopback]kali-linux-1.0.7-'''amd64'''" {
 
menuentry "[loopback]kali-linux-1.0.7-'''amd64'''" {
336行目: 309行目:
   
 
==== Knoppix ====
 
==== Knoppix ====
 
* Initramfs フレームワーク: ''Unknown''
 
* ライブフレームワーク: ''Unknown''
 
* Init システム: ''Unknown''
 
 
 
{{bc|1=
 
{{bc|1=
 
menuentry "[loopback]KNOPPIX_V7.4.2DVD-2014-09-28-EN" {
 
menuentry "[loopback]KNOPPIX_V7.4.2DVD-2014-09-28-EN" {
 
set isofile="/boot/iso/KNOPPIX_V7.4.2DVD-2014-09-28-EN.iso"
 
set isofile="/boot/iso/KNOPPIX_V7.4.2DVD-2014-09-28-EN.iso"
 
loopback loop $isofile
 
loopback loop $isofile
linux (loop)/boot/isolinux/linux bootfrom=/mnt-iso/$isofile acpi=off keyboard=us lang=us
+
linux (loop)/boot/isolinux/linux bootfrom=/dev/sda2$isofile acpi=off keyboard=us language-us lang=us
 
initrd (loop)/boot/isolinux/minirt.gz
 
initrd (loop)/boot/isolinux/minirt.gz
 
}
 
}
351行目: 319行目:
   
 
==== Linux Mint ====
 
==== Linux Mint ====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: ''RFD''
 
* Init システム: ''RFD''
 
 
{{bc|1=
 
menuentry "[loopback]linuxmint-201403-cinnamon-dvd-'''32'''bit" {
 
set isofile="/boot/iso/linuxmint-201403-cinnamon-dvd-'''32'''bit.iso"
 
loopback loop $isofile
 
linux (loop)/live/vmlinuz isofrom='''/dev/sdb2'''/iso/$isofile boot=live live-config live-media-path=/live quiet splash noeject noprompt
 
initrd (loop)/live/initrd.img
 
}
 
}}
 
上記の設定で起動したときに '/live/vmlinuz not found' というエラーメッセージが表示される場合、以下を試して下さい:
 
 
 
{{bc|1=
 
{{bc|1=
 
menuentry "Linux Mint 17.2 Cinnamon LTS RC (x64)" {
 
menuentry "Linux Mint 17.2 Cinnamon LTS RC (x64)" {
378行目: 331行目:
   
 
===== 標準インストールメディア =====
 
===== 標準インストールメディア =====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: Kiwi? ''RFD''
 
* Init システム: ''RFD''
 
   
 
{{bc|1=
 
{{bc|1=
393行目: 342行目:
   
 
===== デスクトップライブメディア =====
 
===== デスクトップライブメディア =====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: Kiwi? ''RFD''
 
* Init システム: ''RFD''
 
   
 
{{bc|1=
 
{{bc|1=
423行目: 368行目:
   
 
==== Sabayon ====
 
==== Sabayon ====
 
* Initramfs フレームワーク: genkernel? ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: ''RFD''
 
* Init システム: openrc? ''RFD''
 
 
 
{{bc|1=
 
{{bc|1=
 
menuentry '[loopback]Sabayon_Linux_14.05_amd64_KDE' {
 
menuentry '[loopback]Sabayon_Linux_14.05_amd64_KDE' {
438行目: 378行目:
   
 
==== Slackware Linux ====
 
==== Slackware Linux ====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: ''RFD''
 
* Init システム: ''RFD''
 
 
 
{{bc|1=
 
{{bc|1=
 
menuentry '[loopback]slackware64-14.1-install-dvd' {
 
menuentry '[loopback]slackware64-14.1-install-dvd' {
454行目: 389行目:
 
==== SystemRescueCD ====
 
==== SystemRescueCD ====
   
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: ''RFD''
 
* Init システム: ''RFD''
 
 
{{note|Replace {{ic|64}} with {{ic|32}} if you want to boot into a 32-bit system.}}
 
 
{{bc|1=
 
{{bc|1=
 
menuentry '[loopback]systemrescuecd-x86-4.5.2' {
 
menuentry '[loopback]systemrescuecd-x86-4.5.2' {
465行目: 395行目:
 
linux (loop)/isolinux/rescue'''64''' isoloop=$isofile
 
linux (loop)/isolinux/rescue'''64''' isoloop=$isofile
 
initrd (loop)/isolinux/initram.igz
 
initrd (loop)/isolinux/initram.igz
}
 
}}
 
 
==== Ubuntu ====
 
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワークあるいはインストールプログラム: ''RFD''
 
* Init システム: upstart (cmdline: ''RFD'')
 
 
{{bc|1=
 
menuentry '[loopback]ubuntu-14.04.1-desktop-amd64' {
 
set isofile='/boot/iso/ubuntu-14.04.1-desktop-amd64.iso'
 
loopback loop $isofile
 
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale='''en_US.UTF-8'''
 
initrd (loop)/casper/initrd.lz
 
 
}
 
}
 
}}
 
}}
   
 
==== Slitaz ====
 
==== Slitaz ====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワーク: ''RFD''
 
* Init システム: ''RFD''
 
   
 
まず、slitaz の iso をダウンロードしてから、どこかに展開してください (この例では /dev/sda3 の /live/slitaz-4.0)。
 
まず、slitaz の iso をダウンロードしてから、どこかに展開してください (この例では /dev/sda3 の /live/slitaz-4.0)。
503行目: 414行目:
   
 
==== Slax ====
 
==== Slax ====
 
* Initramfs フレームワーク: ''RFD''
 
* ライブフレームワーク: ''RFD''
 
* Init システム: ''RFD''
 
   
 
まず、Slax の zip (USB 用) をダウンロードして、どこかに展開してください (この例では /dev/sda3 の /live/slax)。
 
まず、Slax の zip (USB 用) をダウンロードして、どこかに展開してください (この例では /dev/sda3 の /live/slax)。
519行目: 426行目:
 
}}
 
}}
   
==== Tails ====
+
==== Spinrite ====
   
  +
{{bc|1=
* Initramfs フレームワーク: ''Unknown''
 
  +
menuentry "Spinrite" {
* ライブフレームワーク: ''Unknown''
 
  +
set gfxpayload=text
* Init システム: ''Unknown''
 
  +
set isofile="/boot/iso/spinrite.iso"
  +
set memdisk="/boot/iso/memdisk4.05"
  +
linux16 (hd1,gpt3)$memdisk iso
  +
initrd16 (hd1,gpt3)$isofile
  +
}
  +
}}
  +
  +
==== Tails ====
   
 
Tails の iso をダウンロードして整合性を確認してください。
 
Tails の iso をダウンロードして整合性を確認してください。
539行目: 454行目:
   
 
iso ファイルがリムーバルメディア上にない場合は {{ic|1=live-media=removable}} オプションを削除してください。
 
iso ファイルがリムーバルメディア上にない場合は {{ic|1=live-media=removable}} オプションを削除してください。
  +
  +
==== Ubuntu ====
  +
{{bc|1=
  +
menuentry '[loopback]ubuntu-14.04.1-desktop-amd64' {
  +
set isofile='/boot/iso/ubuntu-14.04.1-desktop-amd64.iso'
  +
loopback loop $isofile
  +
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale='''en_US.UTF-8'''
  +
initrd (loop)/casper/initrd.lz
  +
}
  +
}}
  +
  +
==== Xubuntu (32ビット) ====
  +
{{bc|1=
  +
menuentry '[loopback]Xubuntu-16.04-desktop-i386' {
  +
set isofile='/boot/iso/xubuntu-16.04-desktop-i386.iso'
  +
loopback loop $isofile
  +
linux (loop)/casper/vmlinuz file=/cdrom/preseed/xubuntu.seed boot=casper iso-scan/filename=$isofile quiet splash ---
  +
initrd (loop)/casper/initrd.lz
  +
}
  +
}}
   
 
== Windows のチェインロード ==
 
== Windows のチェインロード ==
596行目: 531行目:
 
** https://help.ubuntu.com/community/Grub2/ISOBoot
 
** https://help.ubuntu.com/community/Grub2/ISOBoot
 
* Syslinux:
 
* Syslinux:
** [http://www.syslinux.org/wiki/index.php/Boot_an_Iso_image Boot an ISO image]
+
** [http://www.syslinux.org/wiki/index.php?title=Boot_an_Iso_image Boot an ISO image]

2017年8月5日 (土) 00:37時点における版

関連記事

マルチブート USB フラッシュドライブを使うことで単一のドライブから複数の ISO ファイルを起動することができます。ISO ファイルをデバイスにコピーすることで ISO を展開することなく直接起動することが可能です。複数の方法が存在しますが、全ての ISO イメージが使えるというわけではありません。

GRUB とループバックデバイスを使う

利点:

  • 必要なのは単一のパーティションのみ
  • 全ての ISO ファイルを単一のディレクトリに保存できる
  • ISO の追加や削除が簡単

欠点:

  • 対応していない ISO イメージもある
  • ISO ファイルのオリジナルのブートメニューは表示されない
  • 動作するブートエントリを見つけるのが難しい

準備

USB ドライブに最低でも一つのパーティションを作成して GRUB が対応しているファイルシステムを作成してください。パーティショニングファイルシステム#デバイスのフォーマットを参照。ドライブに保存する ISO ファイルの合計容量にあわせて容量を決めて、ブートローダーのための容量を残しておいて下さい。

GRUB のインストール

シンプルなインストール

USB ドライブ上のファイルシステムをマウント:

# mount /dev/sdXY /mnt

/boot ディレクトリを作成:

# mkdir /mnt/boot

USB ドライブに grub をインストール:

# grub-install --target=i386-pc --recheck --boot-directory=/mnt/boot /dev/sdX

UEFI モードで ISO を起動したい場合、UEFI ターゲットで grub をインストールする必要があります:

# grub-install --target x86_64-efi --efi-directory /mnt --boot-directory=/mnt/boot --removable

UEFI を使う場合、パーティションは MBR パーティションテーブルの最初のパーティションにして FAT32 でフォーマットしてください。

UEFI GPT + BIOS GPT/MBR のハイブリッドブート

どこでも起動できるユニバーサル USB キーを作成したいときに有用な構成です。まず最初にデバイスに GPT パーティションテーブルを作成する必要があります。最低でも以下の3つのパーティションが必要です:

  1. BIOS ブートパーティション (タイプ EF02)。
  2. EFI システムパーティション (タイプ EF00 で FAT32 ファイルシステム)。
  3. データパーティション (GRUB によってサポートされているファイルシステムを使用)。

BIOS ブートパーティションの容量は 1 MB、EFI システムパーティションは最低でも 50 MB 必要です。データパーティションはドライブの残り容量全部使えます。

次にハイブリッド MBR パーティションテーブルを作成します。保護 MBR パーティションにブートフラグを設定するだけでは十分ではありません。

gdisk を使ってハイブリッド MBR パーティションテーブルを作成する例:

# gdisk /dev/sdX

Command (? for help): r
Recovery/transformation command (? for help): h
Type from one to three GPT partition numbers, separated by spaces, to be added to the hybrid MBR, in sequence: 1 2 3
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): N

Creating entry for GPT partition #1 (MBR partition #2)
Enter an MBR hex code (default EF): 
Set the bootable flag? (Y/N): N

Creating entry for GPT partition #2 (MBR partition #3)
Enter an MBR hex code (default EF): 
Set the bootable flag? (Y/N): N

Creating entry for GPT partition #3 (MBR partition #4)
Enter an MBR hex code (default 83): 
Set the bootable flag? (Y/N): Y

Recovery/transformation command (? for help): x
Expert command (? for help): h
Expert command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y

GRUB をインストールすることで EFI + GPT と BIOS + GPT/MBR の両方に対応させることができます。GRUB の設定 (--boot-directory) は同じ場所に保存してください。

まず、USB ドライブの EFI システムパーティションとデータパーティションをマウントします。そして EFI 用に GRUB をインストール:

# grub-install --target=x86_64-efi --efi-directory=/EFI_MOUNTPOINT --boot-directory=/DATA_MOUNTPOINT/boot --removable --recheck

それから BIOS 用にインストール:

# grub-install --target=i386-pc --boot-directory=/DATA_MOUNTPOINT/boot --recheck /dev/sdX

さらにフォールバックとして、データパーティションに GRUB をインストールすることもできます:

# grub-install --target=i386-pc --boot-directory=/DATA_MOUNTPOINT/boot --recheck /dev/sdX3

GRUB の設定

テンプレートを使う

ドライブに特定の ISO ファイルやフォルダが存在する場合にのみ、他のブートエントリをロードできるようにする grub.cfg と事前に生成済みの GRUB 設定ファイルを提供する git プロジェクトがいくつか存在します。

手動設定

マルチブート USB ドライブを作るときは grub.cfg は自動で生成するよりも手動で編集した方が楽です。もしくは、/etc/grub.d/40_custom/mnt/boot/grub/custom.cfg に変更を加えてから grub-mkconfig/mnt/boot/grub/grub.cfg を生成してください。

イメージファイルが存在する USB ドライブのパーティションを識別するのに /dev/sdxY よりも永続的な名前を使うことが推奨されるので、利便性のため値を保持する変数を定義します。ISO イメージが grub と同一のパーティション上にある場合、起動時に UUID を読み取るように以下を使って下さい:

/mnt/boot/grub/grub.cfg
# path to the partition holding ISO images (using UUID)
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"

または UUID を明示的に指定:

/mnt/boot/grub/grub.cfg
# path to the partition holding ISO images (using UUID)
set imgdevpath="/dev/disk/by-uuid/UUID_value"

もしくは、UUID の代わりにデバイスのラベルを使います:

/mnt/boot/grub/grub.cfg
# path to the partition holding ISO images (using labels)
set imgdevpath="/dev/disk/by-label/label_value"

必要な UUID やラベルは lsblk -f で確認できます。USB デバイスに Arch ISO と同一のラベルは使わないで下さい。ブートプロセスが失敗します。

次のセクションに書かれている例を見て、各 ISO イメージのブートエントリをヘッダの下に追加することで設定は完了です。

ブートエントリ

ISO イメージは GRUB をインストールしたのと同じファイルシステムの boot/iso/ ディレクトリに保存します。それ以外のディレクトリに保存する場合、loopback コマンドを使う時に ISO ファイルのパスの前にデバイスの識別子を付ける必要があります。例: loopback loop (hd1,2)$isofile。このデバイス識別子は永続的ではないため、このセクションの例では使いません。

以下のように永続的なブロックデバイスの命名を使うことができます (UUID は適当な値に置き換えてください):

# define globally (i.e outside any menuentry)
insmod search_fs_uuid
search --no-floppy --set=isopart --fs-uuid d6de9100-1981-11e5-9fb9-74867a652f05         # your iso fs uuid here
# later use inside each menuentry instead
loopback loop ($isopart)$isofile
ヒント: カーネルパラメータのリストは https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.rsthttps://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt を見て下さい (完全ではありません)。

Arch Linux

月次リリース

archiso も見てください。

menuentry '[loopback]archlinux-2017.04.01-x86_64.iso' {
	set isofile='/boot/iso/archlinux-2017.04.01-x86_64.iso'
	loopback loop $isofile
	linux (loop)/arch/boot/x86_64/vmlinuz archisodevice=/dev/loop0 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
	initrd (loop)/arch/boot/x86_64/archiso.img
}
ノート: archiso v23 (月次リリース 2015.10.01) 現在、GRUB とループバックデバイスを使う場合 archisodevice=/dev/loop0 パラメータは不要です。
archboot

archboot も見てください。

menuentry '[loopback]archlinux-2014.11-1-archboot' {
	set isofile='/boot/iso/archlinux-2014.11-1-archboot.iso'
	loopback loop $isofile
	linux (loop)/boot/vmlinuz_x86_64 iso_loop_dev=$imgdevpath iso_loop_path=$isofile
	initrd (loop)/boot/initramfs_x86_64.img
}

Alpine Linux

ヒント: 32ビット環境を起動したい場合、x86_64x86 に置き換えてください。
menuentry '[loopback]alpine x86_64' {
        set isofile='/boot/iso/alpine-extended-3.6.0-x86_64.iso'
        loopback loop $isofile
        set root=loop
        linux /boot/vmlinuz-hardened modloop=/boot/modloop-grsec modules=loop,squashfs,sd-mod,usb-storage quiet
        initrd /boot/initramfs-hardened
}

CentOS

標準インストールメディア
menuentry "[loopback]CentOS-7.0-1406-x86_64-DVD" {
	set isofile='/boot/iso/CentOS-7.0-1406-x86_64-DVD.iso'
	loopback loop $isofile
	linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:/dev/sdb2:/$isofile
	initrd (loop)/isolinux/initrd.img
}
デスクトップライブメディア
menuentry '[loopback]CentOS-7.0-1406-x86_64-GnomeLive' {
	set isofile='/boot/iso/CentOS-7.0-1406-x86_64-GnomeLive.iso'
	loopback loop $isofile
	linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=CentOS-7-live-GNOME-x86_64 iso-scan/filename=$isofile rd.live.image
	initrd (loop)/isolinux/initrd0.img
}

Clonezilla Live

ヒント: 2014.01.05 から [1], Arch Linux の月次リリースには clonezilla が含まれています。
menuentry "[loopback]clonezilla-live-20170220-yakkety-amd64" {
	set isofile="/boot/iso/clonezilla-live-20170220-yakkety-amd64.iso"
	loopback loop $isofile
	linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\" keyboard-layouts= ocs_live_batch=\"no\" locales= vga=788 ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile
	initrd (loop)/live/initrd.img
}

Debian

menuentry '[loopback]debian-live-8.8.0-amd64-gnome-desktop' {
	set isofile='/boot/iso/debian-live-8.8.0-amd64-gnome-desktop.iso'
	loopback loop (hd1,2)$isofile
	linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sdb2$isofile
	initrd (loop)/live/initrd.img
}

Elementary OS

menuentry '[loopback]elementaryos-freya-amd64.20150411' {
	set isofile='/boot/iso/elementaryos-freya-amd64.20150411.iso'
	loopback loop $isofile
	linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile locale=en_US.UTF-8
	initrd (loop)/casper/initrd.lz
}

Fedora

標準インストールメディア
menuentry '[loopback]Fedora-Workstation-netinst-x86_64-24-1.2' {
	set isofile='/boot/iso/Fedora-Workstation-netinst-x86_64-24-1.2.iso'
	loopback loop $isofile
	linux (loop)/isolinux/vmlinuz inst.stage2=hd:LABEL=Fedora-WS-dvd-x86_64-24 iso-scan/filename=$isofile quiet
	initrd (loop)/isolinux/initrd.img
}
Workstation ライブメディア
menuentry '[loopback]Fedora-Workstation-Live-x86_64-24-1.2' {
	set isofile='/boot/iso/Fedora-Workstation-Live-x86_64-24-1.2.iso'
	loopback loop $isofile
	linux (loop)/isolinux/vmlinuz root=live:CDLABEL=Fedora-WS-Live-24-1-2 iso-scan/filename=$isofile rd.live.image quiet
	initrd (loop)/isolinux/initrd.img
}

Gentoo

menuentry "[loopback]livedvd-amd64-multilib-20160514" {
	set isofile="/boot/iso/livedvd-amd64-multilib-20160514.iso"
	loopback loop $isofile
	linux (loop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc aufs looptype=squashfs loop=/image.squashfs cdroot isoboot=$isofile vga=791 splash=silent,theme:default console=tty0
	initrd (loop)/isolinux/gentoo.xz 
}

GParted Live

menuentry "[loopback]gparted-live-0.28.1-1-amd64" {
	set isofile="/boot/iso/gparted-live-0.28.1-1-amd64.iso"
	loopback loop $isofile
	linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap noeject toram=filesystem.squashfs ip= nosplash findiso=$isofile
	initrd (loop)/live/initrd.img
}

Kali Linux

menuentry "[loopback]kali-linux-1.0.7-amd64" {
	set isofile='/boot/iso/kali-linux-1.0.7-amd64.iso'
	loopback loop $isofile
	linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=sudo username=root hostname=kali
	initrd (loop)/live/initrd.img
}

Knoppix

menuentry "[loopback]KNOPPIX_V7.4.2DVD-2014-09-28-EN" {
        set isofile="/boot/iso/KNOPPIX_V7.4.2DVD-2014-09-28-EN.iso"
        loopback loop $isofile
        linux (loop)/boot/isolinux/linux bootfrom=/dev/sda2$isofile acpi=off keyboard=us language-us lang=us
        initrd (loop)/boot/isolinux/minirt.gz
}

Linux Mint

menuentry "Linux Mint 17.2 Cinnamon LTS RC (x64)" {
    set iso=/boot/iso/linuxmint-17.2-cinnamon-64bit.iso
    loopback loop $iso
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$iso noeject noprompt 
    initrd (loop)/casper/initrd.lz
}

openSUSE

標準インストールメディア
menuentry '[loopback]openSUSE-13.1-DVD-x86_64' {
	set isofile='/boot/iso/openSUSE-13.1-DVD-x86_64.iso'
	loopback loop $isofile
	linux (loop)/boot/x86_64/loader/linux install=hd:$isofile
	initrd (loop)/boot/x86_64/loader/initrd
}
デスクトップライブメディア
menuentry '[loopback]openSUSE-13.1-KDE-Live-x86_64' {
	set isofile='/boot/iso/openSUSE-13.1-KDE-Live-x86_64.iso'
	loopback loop $isofile
	linux (loop)/boot/x86_64/loader/linux isofrom_device=$imgdevpath isofrom_system=$isofile LANG=en_US.UTF-8
	initrd (loop)/boot/x86_64/loader/initrd
}

Parabola GNU/Linux-libre

ヒント: 32ビット環境を起動したい場合、x86_64i686 に置き換えて下さい。
menuentry '[loopback]parabola-2015.07.01-dual.iso' {
	set isofile='/boot/iso/parabola-2015.07.01-dual.iso'
	loopback loop $isofile
	linux (loop)/parabola/boot/x86_64/vmlinuz parabolaisolabel=PARA_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
	initrd (loop)/parabola/boot/x86_64/parabolaiso.img
}
ヒント: 新しいリリースを使う場合、parabolaisolabel= の後ろのラベル文字列は編集する必要があります。

Sabayon

menuentry '[loopback]Sabayon_Linux_14.05_amd64_KDE' {
	set isofile='/boot/iso/Sabayon_Linux_14.05_amd64_KDE.iso'
	loopback loop $isofile
	linux (loop)/boot/sabayon root=/dev/ram0 aufs cdroot locale=en_US loop=/livecd.squashfs looptype=squashfs isoboot=$isofile
	initrd (loop)/boot/sabayon.igz
}

Slackware Linux

menuentry '[loopback]slackware64-14.1-install-dvd' {
	set isofile='/boot/iso/slackware64-14.1-install-dvd.iso'
	loopback loop $isofile
	linux (loop)/kernels/huge.s/bzImage printk.time=0
	initrd (loop)/isolinux/initrd.img
}

SystemRescueCD

menuentry '[loopback]systemrescuecd-x86-4.5.2' {
	set isofile='/boot/iso/systemrescuecd-x86-4.5.2.iso'
	loopback loop $isofile
	linux (loop)/isolinux/rescue64 isoloop=$isofile
	initrd (loop)/isolinux/initram.igz
}

Slitaz

まず、slitaz の iso をダウンロードしてから、どこかに展開してください (この例では /dev/sda3 の /live/slitaz-4.0)。

menuentry 'slitaz-4.0 core' {
	set dir='/live/slitaz-4.0'
	set root=(hd0,msdos3)
	set lang='pt_BR'
	set kmap='br-abnt2'
	linux ($root)/$dir/bzImage lang=$lang kmap=$kmap rw root=/dev/null vga=normal autologin
	initrd ($root)/$dir/rootfs4.gz ($root)/$dir/rootfs3.gz ($root)/$dir/rootfs2.gz ($root)/$dir/rootfs1.gz
}

Slax

まず、Slax の zip (USB 用) をダウンロードして、どこかに展開してください (この例では /dev/sda3 の /live/slax)。

menuentry 'slax' {
	set dir=/live/slax
	set root=(hd0,msdos3)
	linux $dir/boot/vmlinuz from=$dir vga=normal load_ramdisk=1 prompt_ramdisk=0 printk.time=0 slax.flags=perch,xmode
	initrd $dir/boot/initrfs.img
}

Spinrite

menuentry "Spinrite" {
	set gfxpayload=text
	set isofile="/boot/iso/spinrite.iso"
	set memdisk="/boot/iso/memdisk4.05"
	linux16 (hd1,gpt3)$memdisk iso
	initrd16 (hd1,gpt3)$isofile
}

Tails

Tails の iso をダウンロードして整合性を確認してください。

menuentry "[loopback]tails-i386-1.5.iso" {
    set isofile='/boot/iso/tails-i386-1.5.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz2 boot=live config findiso=${isofile} live-media=removable apparmor=1 security=apparmor nopersistent noprompt timezone=Etc/UTC block.events_dfl_poll_msecs=1000 noautologin module=Tails
    initrd (loop)/live/initrd2.img
}
警告: 上記の方法で起動した場合、緊急時のメモリ消去ができません。

iso ファイルがリムーバルメディア上にない場合は live-media=removable オプションを削除してください。

Ubuntu

menuentry '[loopback]ubuntu-14.04.1-desktop-amd64' {
	set isofile='/boot/iso/ubuntu-14.04.1-desktop-amd64.iso'
	loopback loop $isofile
	linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale=en_US.UTF-8
	initrd (loop)/casper/initrd.lz
}

Xubuntu (32ビット)

menuentry '[loopback]Xubuntu-16.04-desktop-i386' {
	set isofile='/boot/iso/xubuntu-16.04-desktop-i386.iso'
	loopback loop $isofile
	linux	(loop)/casper/vmlinuz  file=/cdrom/preseed/xubuntu.seed boot=casper iso-scan/filename=$isofile quiet splash ---
	initrd	(loop)/casper/initrd.lz
}

Windows のチェインロード

Windows のインストールディスクをループバックするのは難易度がとても高くなります。単一かつ統一されたパーティションが含まれた USB ドライブから様々なプラットフォームをインストールできるようにする解決方法は、ブータブルな Windows USB ドライブを使用して、Windows のブートローダーを GRUB で置き換えることです。

GRUB をインストールする前に、Windows のブートローダーの名前を変更するか移動してください。デフォルトの .efi 実行ファイルとして存在し、64ビット環境なら (USB)/efi/boot/bootx64.efi にあります。そこに GRUB をインストールして、GRUB がデフォルトの実行ファイルとして使われるようにしてください。

名前を変えた Windows のブートローダーに GRUB からチェインロードして、上述の .iso ファイルをループバックするように GRUB を設定します。

menuentry '[chain]en_windows_8.1_professional_x64' {
	insmod chain
        chainloader /efi/boot/bootx64.efi.windows
}

Syslinux と memdisk を使う

memdisk モジュールを使うことで、ISO イメージをメモリにロードして、ブートローダーをロードすることができます。イメージファイルをロードしてオペレーティングシステムを実行できるのに十分なメモリ容量が USB ドライブを起動するシステムに存在することを確認してください。

準備

USB ドライブを適切にパーティショニングして Syslinux によってサポートされている fat32 や ext4 などのファイルシステムでパーティションを作成してください。それから、Syslinux をパーティションにインストールします。Syslinux#インストール を参照。

memdisk モジュールのインストール

Syslinux のインストール時に memdisk モジュールはインストールされてないため、手動でインストールする必要があります。Syslinux をインストールしたパーティションを /mnt/ にマウントして memdisk モジュールを Syslinux がインストールされているディレクトリにコピーしてください:

# cp /usr/lib/syslinux/bios/memdisk /mnt/boot/syslinux/

設定

USB ドライブに ISO ファイルをコピーした後、Syslinux の設定ファイルを編集して ISO イメージのメニューエントリを作成してください。ベーシックなエントリは以下のようになります:

boot/syslinux/syslinux.cfg
LABEL some_label
    LINUX memdisk
    INITRD /path/to/image.iso
    APPEND iso

設定オプションについて詳しくは memdisk on Syslinux wiki を見て下さい。

32ビット環境の注意事項

128MiB 以上のイメージから32ビット環境を起動する場合、vmalloc の最大メモリ使用量を増やす必要があります。カーネルパラメータに vmalloc=valueM を追加することで増やせます。value は ISO イメージの容量も大きい値を MiB で指定してください [2]

例えば Arch インストール ISO から32ビット環境を起動する場合、Boot Arch Linux (i686) エントリの上で Tab キーを押して末尾に vmalloc=768M を追加してください。この設定をしないと起動時に以下のエラーが表示されます:

modprobe: ERROR: could not insert 'phram': Input/output error

参照