「マルチブート USB ドライブ」の版間の差分
(→ブートエントリ: Out of date を追加) |
(→GRUB とループバックデバイスを使う: 同期) |
||
13行目: | 13行目: | ||
利点: |
利点: |
||
+ | |||
* 必要なのは単一のパーティションのみ |
* 必要なのは単一のパーティションのみ |
||
* 全ての ISO ファイルを単一のディレクトリに保存できる |
* 全ての ISO ファイルを単一のディレクトリに保存できる |
||
18行目: | 19行目: | ||
欠点: |
欠点: |
||
+ | |||
* 対応していない ISO イメージもある |
* 対応していない ISO イメージもある |
||
* ISO ファイルのオリジナルのブートメニューは表示されない |
* ISO ファイルのオリジナルのブートメニューは表示されない |
||
44行目: | 46行目: | ||
UEFI モードで ISO を起動したい場合、UEFI ターゲットで grub をインストールする必要があります: |
UEFI モードで ISO を起動したい場合、UEFI ターゲットで grub をインストールする必要があります: |
||
− | # grub-install --target |
+ | # grub-install --target=x86_64-efi --removable --boot-directory=/mnt/boot --efi-directory=/mnt |
UEFI を使う場合、パーティションは MBR パーティションテーブルの最初のパーティションにして FAT32 でフォーマットしてください。 |
UEFI を使う場合、パーティションは MBR パーティションテーブルの最初のパーティションにして FAT32 でフォーマットしてください。 |
||
==== UEFI GPT + BIOS GPT/MBR のハイブリッドブート ==== |
==== UEFI GPT + BIOS GPT/MBR のハイブリッドブート ==== |
||
+ | |||
どこでも起動できるユニバーサル USB キーを作成したいときに有用な構成です。まず最初にデバイスに [[GPT]] パーティションテーブルを作成する必要があります。最低でも以下の3つのパーティションが必要です: |
どこでも起動できるユニバーサル USB キーを作成したいときに有用な構成です。まず最初にデバイスに [[GPT]] パーティションテーブルを作成する必要があります。最低でも以下の3つのパーティションが必要です: |
||
− | # BIOS ブートパーティション (タイプ EF02)。 |
||
− | # EFI システムパーティション (タイプ EF00 で [[EFI_システムパーティション#パーティションのフォーマット|FAT32 ファイルシステム]])。 |
||
− | # データパーティション ([[GRUB]] によってサポートされているファイルシステムを使用)。 |
||
− | BIOS ブートパーティション |
+ | # BIOS ブートパーティション (gdisk タイプコード {{ic|EF02}})。このパーティションのサイズは 1 MiB でなければなりません。 |
+ | # EFI システムパーティション (gdisk タイプコード {{ic|EF00}} で [[EFI_システムパーティション#パーティションのフォーマット|FAT32 ファイルシステム]])。このパーティションは 50 MiB まで小さくできます。 |
||
+ | # データパーティション ([[GRUB]] によってサポートされているファイルシステムを使用)。デバイスの残りの空き領域をこのパーティションに利用できます。 |
||
− | 次にハイブリッド MBR パーティションテーブルを作成しま |
+ | 次に、[https://www.rodsbooks.com/gdisk/hybrid.html ハイブリッド MBR] パーティションテーブルを作成しなければなりません。これがないと、BIOS MBR ベースのシステムは起動しません。システムが、存在すると期待されているパーティションを見つけられません。 |
[[gdisk]] を使ってハイブリッド MBR パーティションテーブルを作成する例: |
[[gdisk]] を使ってハイブリッド MBR パーティションテーブルを作成する例: |
||
65行目: | 67行目: | ||
Command (? for help): r |
Command (? for help): r |
||
Recovery/transformation command (? for help): h |
Recovery/transformation command (? for help): h |
||
+ | |||
+ | WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one, |
||
+ | just hit the Enter key at the below prompt and your MBR partition table will |
||
+ | be untouched. |
||
+ | |||
Type from one to three GPT partition numbers, separated by spaces, to be added to the hybrid MBR, in sequence: 1 2 3 |
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 |
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): N |
||
Creating entry for GPT partition #1 (MBR partition #1) |
Creating entry for GPT partition #1 (MBR partition #1) |
||
− | Enter an MBR hex code (default EF): |
+ | Enter an MBR hex code (default EF): |
Set the bootable flag? (Y/N): N |
Set the bootable flag? (Y/N): N |
||
Creating entry for GPT partition #2 (MBR partition #2) |
Creating entry for GPT partition #2 (MBR partition #2) |
||
− | Enter an MBR hex code (default EF): |
+ | Enter an MBR hex code (default EF): |
Set the bootable flag? (Y/N): N |
Set the bootable flag? (Y/N): N |
||
Creating entry for GPT partition #3 (MBR partition #3) |
Creating entry for GPT partition #3 (MBR partition #3) |
||
− | Enter an MBR hex code (default 83): |
+ | Enter an MBR hex code (default 83): |
Set the bootable flag? (Y/N): Y |
Set the bootable flag? (Y/N): Y |
||
89行目: | 96行目: | ||
Do you want to proceed? (Y/N): Y |
Do you want to proceed? (Y/N): Y |
||
}} |
}} |
||
+ | |||
+ | パーティションをフォーマットすることを忘れずに: |
||
+ | |||
+ | # mkfs.fat -F32 /dev/sdX2 |
||
+ | # mkfs.ext4 /dev/sdX3 |
||
GRUB をインストールすることで EFI + GPT と BIOS + GPT/MBR の両方に対応させることができます。GRUB の設定 (--boot-directory) は同じ場所に保存してください。 |
GRUB をインストールすることで EFI + GPT と BIOS + GPT/MBR の両方に対応させることができます。GRUB の設定 (--boot-directory) は同じ場所に保存してください。 |
||
− | まず、USB ドライブの EFI システムパーティションとデータパーティションをマウント |
+ | まず、USB ドライブの EFI システムパーティションとデータパーティションをマウントする必要があります。 |
+ | |||
− | # grub-install --target=x86_64-efi --efi-directory=/EFI_MOUNTPOINT --boot-directory=/DATA_MOUNTPOINT/boot --removable --recheck |
||
+ | 例: |
||
+ | |||
+ | # mount /dev/sdX3 /mnt |
||
+ | # mkdir -p /mnt/boot/EFI |
||
+ | # mount /dev/sdX2 /mnt/boot/EFI |
||
+ | |||
+ | そして、UEFI 用の GRUB をインストールします。以下のように: |
||
+ | |||
+ | ほとんどの場合、{{ic|EFI_MOUNTPOINT}} は、マウントされた USB ディスク上の {{ic|/mnt/boot/EFI}} サブディレクトリに対応します。 |
||
+ | |||
+ | # grub-install --target=x86_64-efi --recheck --removable --efi-directory=/''EFI_MOUNTPOINT'' --boot-directory=/''DATA_MOUNTPOINT''/boot |
||
それから BIOS 用にインストール: |
それから BIOS 用にインストール: |
||
− | # grub-install --target=i386-pc --boot-directory=/DATA_MOUNTPOINT/boot --recheck /dev/sdX |
||
+ | # grub-install --target=i386-pc --recheck --boot-directory=/''DATA_MOUNTPOINT''/boot /dev/sd''X'' |
||
− | さらにフォールバックとして、データパーティションに GRUB をインストールすることもできます: |
||
+ | |||
− | # grub-install --target=i386-pc --boot-directory=/DATA_MOUNTPOINT/boot --recheck /dev/sdX3 |
||
+ | さらにフォールバックとして、MBR で起動可能なデータパーティションに GRUB をインストールすることもできます: |
||
+ | |||
+ | # grub-install --target=i386-pc --recheck --boot-directory=/''DATA_MOUNTPOINT''/boot /dev/''sdX3'' |
||
=== GRUB の設定 === |
=== GRUB の設定 === |
||
==== テンプレートを使う ==== |
==== テンプレートを使う ==== |
||
+ | |||
ドライブに特定の ISO ファイルやフォルダが存在する場合にのみ、他のブートエントリをロードできるようにする {{ic|grub.cfg}} と事前に生成済みの GRUB 設定ファイルを提供する git プロジェクトがいくつか存在します。 |
ドライブに特定の ISO ファイルやフォルダが存在する場合にのみ、他のブートエントリをロードできるようにする {{ic|grub.cfg}} と事前に生成済みの GRUB 設定ファイルを提供する git プロジェクトがいくつか存在します。 |
||
− | * Multiboot USB: https://github.com/ |
+ | * Multiboot USB: https://github.com/hackerncoder/multibootusb |
* GLIM (GRUB2 Live ISO Multiboot): https://github.com/thias/glim |
* GLIM (GRUB2 Live ISO Multiboot): https://github.com/thias/glim |
||
142行目: | 168行目: | ||
=== ブートエントリ === |
=== ブートエントリ === |
||
+ | ISO イメージは GRUB をインストールしたのと同じファイルシステムの {{ic|boot/iso/}} ディレクトリに保存していると仮定します。それ以外のディレクトリに保存している場合、{{ic|loopback}} コマンドを使う時に ISO ファイルのパスの前にデバイスの識別子を付ける必要があります。例: {{ic|loopback loop '''(hd1,2)'''$isofile}}。このデバイス識別子は[[永続的なブロックデバイスの命名|永続的]]ではないため、このセクションの例では使いません。 |
||
− | {{Out of date|以下のブートエントリの一部は現在は動作しないかもしれません。}} |
||
+ | 以下のように永続的なブロックデバイスの命名を使うことができます。UUID は ISO のファイルシステムに従って置き換えてください: |
||
− | 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) |
||
insmod search_fs_uuid |
insmod search_fs_uuid |
||
− | search --no-floppy --set='''isopart''' --fs-uuid |
+ | search --no-floppy --set='''isopart''' --fs-uuid ''123-456'' |
# later use inside each menuentry instead |
# later use inside each menuentry instead |
||
loopback loop '''($isopart)'''$isofile |
loopback loop '''($isopart)'''$isofile |
||
}} |
}} |
||
− | {{Tip|カーネルパラメータのリストは [https:// |
+ | {{Tip|カーネルパラメータのリストは [https://docs.kernel.org/admin-guide/kernel-parameters.html kernel のコマンドラインパラメータのドキュメント] を見てください。ブートエントリのサンプルは [https://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config GRUB の上流のドキュメント] や起動したいディストリビューションのドキュメントも参照してください。}} |
− | ==== Arch Linux ==== |
+ | ==== Arch Linux 月次リリース ==== |
− | |||
− | ===== 月次リリース ===== |
||
[[archiso]] も見てください。 |
[[archiso]] も見てください。 |
||
172行目: | 195行目: | ||
}} |
}} |
||
− | カーネルコマンドラインでサポートされている archiso のオプションについては |
+ | カーネルコマンドラインでサポートされている archiso のオプションについては [https://gitlab.archlinux.org/mkinitcpio/mkinitcpio-archiso/blob/master/docs/README.bootparams README.bootparams] をご覧ください。 |
− | + | ==== Memtest86+ ==== |
|
+ | [[ストレステスト#メモリに負担をかけるプログラム|Memtest86+]] は月次リリースの ISO に含まれています。 |
||
− | [[archboot]] も見てください。 |
||
{{bc|1= |
{{bc|1= |
||
− | menuentry '[loopback]archlinux- |
+ | menuentry '[loopback]archlinux-2020.10.01-x86_64.iso' { |
− | set isofile='/boot/iso/archlinux- |
+ | set isofile='/boot/iso/archlinux-2020.10.01-x86_64.iso' |
loopback loop $isofile |
loopback loop $isofile |
||
+ | linux16 (loop)/arch/boot/memtest |
||
− | linux (loop)/boot/vmlinuz_'''x86_64''' iso_loop_dev=$imgdevpath iso_loop_path=$isofile |
||
− | initrd (loop)/boot/initramfs_'''x86_64'''.img |
||
} |
} |
||
}} |
}} |
||
− | ==== |
+ | ==== archboot ==== |
− | {{Tip|32ビット環境を起動したい場合、{{ic|x86_64}} を {{ic|x86}} に置き換えてください。}} |
||
+ | [https://gitlab.archlinux.org/tpowa/archboot/-/wikis/Archboot-Homepage Archboot Homepage] を見てください。 |
||
− | {{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 |
||
− | } |
||
− | }} |
||
− | |||
− | ==== CentOS ==== |
||
− | |||
− | ===== 標準インストールメディア ===== |
||
{{bc|1= |
{{bc|1= |
||
− | menuentry |
+ | menuentry '[loopback]archlinux-2014.11-1-archboot' { |
− | set isofile='/boot/iso/ |
+ | set isofile='/boot/iso/archlinux-2014.11-1-archboot.iso' |
loopback loop $isofile |
loopback loop $isofile |
||
− | linux (loop)/ |
+ | linux (loop)/boot/vmlinuz_'''x86_64''' iso_loop_dev=$imgdevpath iso_loop_path=$isofile |
− | initrd (loop)/ |
+ | initrd (loop)/boot/initramfs_'''x86_64'''.img |
− | } |
||
− | }} |
||
− | |||
− | ===== デスクトップライブメディア ===== |
||
− | |||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{tip|1=2014.01.05 から [https://projects.archlinux.org/archiso.git/commit/?id=5cd02c704046cdb6974f6b10f0cac366eeebec0e], Arch Linux の月次リリースには clonezilla が含まれています。}} |
||
− | |||
− | {{bc|1= |
||
− | 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 ==== |
||
− | |||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | |||
− | ===== 標準インストールメディア ===== |
||
− | |||
− | {{bc|1= |
||
− | 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 ライブメディア ===== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | |||
− | ===== 標準インストールメディア ===== |
||
− | |||
− | {{bc|1= |
||
− | 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 |
||
− | } |
||
− | }} |
||
− | |||
− | ===== デスクトップライブメディア ===== |
||
− | |||
− | {{bc|1= |
||
− | 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 ==== |
||
− | |||
− | {{Tip|32ビット環境を起動したい場合、{{ic|x86_64}} を {{ic|i686}} に置き換えて下さい。}} |
||
− | |||
− | {{bc|1= |
||
− | 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 |
||
− | } |
||
− | }} |
||
− | |||
− | {{Tip|新しいリリースを使う場合、{{ic|1=parabolaisolabel=}} の後ろのラベル文字列は編集する必要があります。}} |
||
− | |||
− | ==== Sabayon ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | {{bc|1= |
||
− | 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 ==== |
||
− | |||
− | {{bc|1= |
||
− | menuentry '[loopback]systemrescuecd-x86-4.5.2' { |
||
− | set isofile='/boot/iso/systemrescuecd-x86-4.5.2.iso' |
||
− | loopback loop $isofile |
||
− | linux (loop)/isolinux/rescue'''64''' isoloop=$isofile |
||
− | initrd (loop)/isolinux/initram.igz |
||
− | } |
||
− | }} |
||
− | |||
− | ==== Slitaz ==== |
||
− | |||
− | まず、slitaz の iso をダウンロードしてから、どこかに展開してください (この例では /dev/sda3 の /live/slitaz-4.0)。 |
||
− | |||
− | {{bc|1= |
||
− | 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)。 |
||
− | |||
− | {{bc|1= |
||
− | 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 ==== |
||
− | |||
− | {{bc|1= |
||
− | 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 をダウンロードして整合性を確認してください。 |
||
− | |||
− | {{bc|1= |
||
− | 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 |
||
− | } |
||
− | }} |
||
− | |||
− | {{Warning|上記の方法で起動した場合、緊急時のメモリ消去ができません。}} |
||
− | |||
− | 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 |
||
} |
} |
||
}} |
}} |
2022年7月9日 (土) 16:24時点における版
マルチブート 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 --removable --boot-directory=/mnt/boot --efi-directory=/mnt
UEFI を使う場合、パーティションは MBR パーティションテーブルの最初のパーティションにして FAT32 でフォーマットしてください。
UEFI GPT + BIOS GPT/MBR のハイブリッドブート
どこでも起動できるユニバーサル USB キーを作成したいときに有用な構成です。まず最初にデバイスに GPT パーティションテーブルを作成する必要があります。最低でも以下の3つのパーティションが必要です:
- BIOS ブートパーティション (gdisk タイプコード
EF02
)。このパーティションのサイズは 1 MiB でなければなりません。 - EFI システムパーティション (gdisk タイプコード
EF00
で FAT32 ファイルシステム)。このパーティションは 50 MiB まで小さくできます。 - データパーティション (GRUB によってサポートされているファイルシステムを使用)。デバイスの残りの空き領域をこのパーティションに利用できます。
次に、ハイブリッド MBR パーティションテーブルを作成しなければなりません。これがないと、BIOS MBR ベースのシステムは起動しません。システムが、存在すると期待されているパーティションを見つけられません。
gdisk を使ってハイブリッド MBR パーティションテーブルを作成する例:
# gdisk /dev/sdX Command (? for help): r Recovery/transformation command (? for help): h WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one, just hit the Enter key at the below prompt and your MBR partition table will be untouched. 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 #1) Enter an MBR hex code (default EF): Set the bootable flag? (Y/N): N Creating entry for GPT partition #2 (MBR partition #2) Enter an MBR hex code (default EF): Set the bootable flag? (Y/N): N Creating entry for GPT partition #3 (MBR partition #3) 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
パーティションをフォーマットすることを忘れずに:
# mkfs.fat -F32 /dev/sdX2 # mkfs.ext4 /dev/sdX3
GRUB をインストールすることで EFI + GPT と BIOS + GPT/MBR の両方に対応させることができます。GRUB の設定 (--boot-directory) は同じ場所に保存してください。
まず、USB ドライブの EFI システムパーティションとデータパーティションをマウントする必要があります。
例:
# mount /dev/sdX3 /mnt # mkdir -p /mnt/boot/EFI # mount /dev/sdX2 /mnt/boot/EFI
そして、UEFI 用の GRUB をインストールします。以下のように:
ほとんどの場合、EFI_MOUNTPOINT
は、マウントされた USB ディスク上の /mnt/boot/EFI
サブディレクトリに対応します。
# grub-install --target=x86_64-efi --recheck --removable --efi-directory=/EFI_MOUNTPOINT --boot-directory=/DATA_MOUNTPOINT/boot
それから BIOS 用にインストール:
# grub-install --target=i386-pc --recheck --boot-directory=/DATA_MOUNTPOINT/boot /dev/sdX
さらにフォールバックとして、MBR で起動可能なデータパーティションに GRUB をインストールすることもできます:
# grub-install --target=i386-pc --recheck --boot-directory=/DATA_MOUNTPOINT/boot /dev/sdX3
GRUB の設定
テンプレートを使う
ドライブに特定の ISO ファイルやフォルダが存在する場合にのみ、他のブートエントリをロードできるようにする grub.cfg
と事前に生成済みの GRUB 設定ファイルを提供する git プロジェクトがいくつか存在します。
- Multiboot USB: https://github.com/hackerncoder/multibootusb
- GLIM (GRUB2 Live ISO Multiboot): https://github.com/thias/glim
手動設定
マルチブート 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 は ISO のファイルシステムに従って置き換えてください:
# define globally (i.e outside any menuentry) insmod search_fs_uuid search --no-floppy --set=isopart --fs-uuid 123-456 # later use inside each menuentry instead loopback loop ($isopart)$isofile
Arch Linux 月次リリース
archiso も見てください。
menuentry '[loopback]archlinux-2020.10.01-x86_64.iso' { set isofile='/boot/iso/archlinux-2020.10.01-x86_64.iso' loopback loop $isofile linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=$imgdevpath img_loop=$isofile earlymodules=loop initrd (loop)/arch/boot/intel-ucode.img (loop)/arch/boot/amd-ucode.img (loop)/arch/boot/x86_64/initramfs-linux.img }
カーネルコマンドラインでサポートされている archiso のオプションについては README.bootparams をご覧ください。
Memtest86+
Memtest86+ は月次リリースの ISO に含まれています。
menuentry '[loopback]archlinux-2020.10.01-x86_64.iso' { set isofile='/boot/iso/archlinux-2020.10.01-x86_64.iso' loopback loop $isofile linux16 (loop)/arch/boot/memtest }
archboot
Archboot Homepage を見てください。
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 }
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 で指定してください [1]。
例えば Arch インストール ISO から32ビット環境を起動する場合、Boot Arch Linux (i686)
エントリの上で Tab
キーを押して末尾に vmalloc=768M
を追加してください。この設定をしないと起動時に以下のエラーが表示されます:
modprobe: ERROR: could not insert 'phram': Input/output error
MultiBootUSB を使う
MultiBootUSB は Python で書かれたクロスプラットフォームのソフトウェアで、USB ディスクに複数のライブ Linux をインストールすることができます。
MultiBootUSB は multibootusbAUR パッケージでインストールすることが可能です。グラフィカルインターフェイスとコマンドラインインターフェイスが備わっています。
参照
- GRUB:
- Syslinux: