GRUB2 ブートローダーから ISO ファイルをブートする方法
このチュートリアルでは、GRUB2 ブート ローダーを使用してハード ドライブに保存されている ISO ファイルを起動する方法を説明します。通常、Linux ISO イメージを起動するには、ライブ DVD またはライブ USB を作成する必要があります。これは、グラフィカル ツールまたはコマンド ラインから実行できます。しかし、光ディスクや USB サム ドライブがない場合、またはコンピュータが光ディスクへの ISO イメージの書き込みをサポートしていない場合はどうすればよいでしょうか?
GRUB が助けてくれます
GRUB2 (GRand Unified Bootloader) は、Linux の標準ブート ローダーです。 USB や DVD を使用せずに、ハードドライブに保存されている Linux ISO イメージ ファイルを起動できます。 GRUB Legacy (バージョン 0.x) にはこの機能がありません。多くの Linux ディストリビューションは ISO ファイルから直接起動できます。
- GRUB2 は、
ext4、HFS+、NTFSを含むがこれらに限定されない多くのファイル システムをサポートしています。つまり、ISO ファイルをどのファイル システムにも置くことができます。これらのファイル システム。 - GRUB2 は、LVM および RAID デバイスからファイルを直接読み取ることができます。
- GRUB2 にはネットワークもサポートされています。 TFTP プロトコルを使用して、ネットワーク経由で ISO イメージをロードできます。
GRUB2 を使用して ISO ファイルを起動するには、ブート ローダーとして GRUB2 を備えた Linux ディストリビューションがコンピュータにすでにインストールされている必要があります。次の手順は、 従来のBIOS ファームウェアと新しいUEFI ファームウェアの両方で動作します。ただし、UEFI を使用する場合は、GRUB2 のファームウェアで ISO ファイルをブートするためにセキュア ブートを無効にする必要があります。無効にしないと、「コマンド ループバックが見つかりません」エラーが表示される可能性があります。
さあ始めましょう。
GRUB2からUbuntu ISOファイルを起動する
Linux を実行しているコンピューターにログインし、Ubuntu ISO イメージ ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのコマンド ライン テキスト エディタを使用して /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルの最初の行は #! /bin/sh はシェル スクリプトであることを示します。このファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。
次のテキストをコピーして、このファイルの最後に貼り付けます。
menuentry "ubuntu-20.04.2.0-desktop-amd64.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/ubuntu-20.04.2.0-desktop-amd64.iso"
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash
initrd (loop)/casper/initrd
}どこ :
- menuentry: このエントリは GRUB2 ブート メニューに表示されます。好きな名前を付けることができます。
- insmod コマンドはモジュールを挿入します。 ISO ファイルは
ext4ホーム ディレクトリに保存されているため、ext2モジュールが必要です。 NTFS パーティションに保存されている場合は、代わりにinsmod ntfsが必要です。 GRUB は XFS および Btrfs ファイル システムを認識できない可能性があるため、ISO ファイルを XFS または Btrfs パーティションに保存することは推奨されないことに注意してください。 - set isofile: ISO イメージ ファイルのパスを指定します。ここでは、
Downloadsフォルダーに保存された Ubuntu 20.04 デスクトップ ISO ファイルを使用しています。 - ループバック: ISO ファイルをマウントします。
hd0はコンピュータの最初のハード ドライブを意味し、5は ISO ファイルが 5 番目のディスク パーティションに保存されていることを意味します。 linuxコマンドは、指定されたパスから Linux カーネルをロードします。 casper/vmlinuz.efi は、Ubuntu ISO イメージ内の Linux カーネルです。initrdコマンドは、指定されたパスから初期 RAM ディスクをロードします。これは、linuxコマンドの実行後にのみ使用できます。初期 RAM ディスクは、RAM にマウントされた最小限のルート ファイル システムです。 casper/initrd.lz は、Ubuntu ISO イメージ内の initrd ファイルです。
GRUB は IDE と SCSI を区別しないことに注意してください。 Linux カーネルの場合:
/dev/hdaは最初の IDE ハードドライブを指し、/dev/sdaは、最初の SCSI または SATA ハード ドライブを指します。/dev/nvme0n1は、最初の NVMe SSD を指します。/dev/nvme1n1は 2 番目の NVMe SSD を指します。
ただし、GRUB では、インターフェイスの種類に関係なく、最初のハード ドライブは常に hd0 と呼ばれます。また、GRUB のパーティション番号は 0 ではなく 1 から始まることに注意してください。
ISO ファイルが MBR ディスクの拡張パーティションに保存されている場合、パーティション番号は 1 ではなく 5 から始まります。たとえば、拡張パーティション内の最初の論理パーティションには 5 という番号が付けられます。拡張パーティション内の 2 番目の論理パーティションには 6 という番号が付けられます。パーティション番号を確認するには、ターミナル ウィンドウで lsblk または sudo parted -l コマンドを実行します。
ファイルを保存して閉じます。 (Ctrl+O を押してから、Enter を押して Nano テキスト エディターにファイルを保存します。終了するには、Ctrl+X を押します。)
次に、次のコマンドを使用して GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgFedora、CentOS、RHEL、OpenSUSE では、実行するコマンドは次のとおりです。
sudo grub2-mkconfig -o /boot/grub2/grub.cfgDebian、Ubuntu、Linux Mint では、次のコマンドを使用して GRUB ブート メニューを更新できます。
sudo update-grub新しいメニュー エントリはすぐには表示されないかもしれませんが、コンピュータを再起動すると表示されます。
sudo shutdown -r nowGRUB2 ブート メニューの下部にカスタム エントリが表示されます。 GRUB が ISO イメージを起動できなかった場合は、/etc/grub.d/40_custom ファイルをチェックして、タイプミスがないか、スペースなどが抜けていないかどうかを確認してください。
/etc/grub.d/40_custom ファイルには、好きなだけメニュー エントリを追加できます。
Debian ISO
Debian ライブ CD ISO ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Debian ISO ファイルをブートするためのエントリを追加します。
menuentry "debian-live-10.8.0-amd64-lxqt.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/debian-live-10.8.0-amd64-lxqt.iso"
loopback loop (hd0,5)$isofile
linux (loop)/live/vmlinuz-4.19.0-14-amd64 boot=live findiso=$isofile
initrd (loop)/live/initrd.img-4.19.0-14-amd64
}
vmlinuz および initrd.img ファイルにはバージョン番号が含まれていることに注意してください。 Debian ISO ファイルをマウントし、更新する必要があるかどうかを確認する必要があります。ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfg
または
sudo grub2-mkconfig -o /boot/grub2/grub.cfgArch Linux ISO
Arch Linux ISO ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Arch Linux ISO ファイルをブートするためのエントリを追加します。
menuentry "archlinux-2021.03.01-x86_64.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/archlinux-2021.03.01-x86_64.iso"
loopback loop (hd0,5)$isofile
linux (loop)/arch/boot/x86_64/vmlinuz-linux archisolabel=ARCH_202103 img_dev=/dev/sda5 img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/x86_64/initramfs-linux.img
}
archlinux-2021.04.01-x86_64.iso などの新しい Arch Linux ISO ファイルをダウンロードする場合は、archisolabel を ARCH_202104 に更新する必要があることに注意してください。 。ファイル マネージャーに Arch Linux ISO をマウントすることで、ラベルを確認することもできます。ラベルはファイルマネージャーに表示されます。
また、img_dev の値の変更が必要になる場合があります。 ISO ファイルが保存されているデバイスの名前です。
ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgClonezilla ライブ ISO
Clonezilla は、ディスク ドライブのベア メタル バックアップおよびリカバリのための、無料のオープンソースの信頼できるツールです。 Clonezilla ライブ ISO ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Clonezilla Live ISO ファイルをブートするためのエントリを追加します。
menuentry "clonezilla-live-20210127-groovy-amd64.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/clonezilla-live-20210127-groovy-amd64.iso"
loopback loop (hd0,5)$isofile
linux (loop)/live/vmlinuz boot=live findiso=$isofile
initrd (loop)/live/initrd.img
}
ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgRHEL 8/CentOS ストリーム ISO
まず、ISOイメージファイルをダウンロードします。 RHEL 8 の場合、ISO イメージ ファイルをダウンロードする方法については、次の記事を参照してください。
- RHEL8 を無料でダウンロードしてインストールする方法 (Red Hat Enterprise Linux)
CentOS Stream ISO イメージは、公式 Web サイトからダウンロードできます。
次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、RHEL 8/CentOS/Fedora ISO ファイルをブートするためのエントリを追加します。
menuentry "rhel-8.3-x86_64-boot.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/rhel-8.3-x86_64-boot.iso"
loopback loop (hd0,5)$isofile
linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:/dev/sda5:$isofile
initrd (loop)/isolinux/initrd.img
}
上記のコードでは、/dev/sda5 は、ISO イメージ ファイルが保存されている最初のディスクの 5 番目のパーティションです。ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgFedora ISO
Fedora ISO イメージは、公式 Web サイトからダウンロードできます。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Fedora ISO ファイルをブートするためのエントリを追加します。
menuentry "Fedora-Workstation-Live-x86_64-33-1.2.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/Fedora-Workstation-Live-x86_64-33-1.2.iso"
loopback loop (hd0,5)$isofile
linux (loop)/isolinux/vmlinuz root=live:CDLABEL=Fedora-WS-Live-33-1-2 rd.live.image verbose iso-scan/filename=$isofile
initrd (loop)/isolinux/initrd.img
}
上記のコードでは、CDLABEL は、ISO イメージがマウントされたときにファイル マネージャーに表示されるラベルです。
ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgOpenSUSE Leap Live ISO
OpenSUSE Leap ライブ ISO ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、OpenSUSE Leap Live ISO ファイルをブートするためのエントリを追加します。
menuentry "openSUSE-Leap-15.2-KDE-Live-x86_64-Build31.383-Media.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/openSUSE-Leap-15.2-KDE-Live-x86_64-Build31.383-Media.iso"
loopback loop (hd0,5)$isofile
linux (loop)/boot/x86_64/loader/linux boot=isolinux root=live:CDLABEL=openSUSE_Leap_15.2_KDE_Live rd.live.image verbose iso-scan/filename=$isofile
initrd (loop)/boot/x86_64/loader/initrd
}
上記のコードでは、CDLABEL は、ISO イメージがマウントされたときにファイル マネージャーに表示されるラベルです。
ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgKali Linux ライブ ISO
Kali Linux ライブ ISO ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Kali Linux Live ISO ファイルをブートするためのエントリを追加します。
menuentry "kali-linux-2021.1-live-amd64.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/kali-linux-2021.1-live-amd64.iso"
loopback loop (hd0,5)$isofile
linux (loop)/live/vmlinuz boot=live findiso=$isofile
initrd (loop)/live/initrd.img
}ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgLinux Mint Live ISO
Linux Mint ISO ファイルをダウンロードします。次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Linux Mint ISO ファイルをブートするためのエントリを追加します。
menuentry "linuxmint-20.1-cinnamon-64bit.iso" {
insmod ext2
set isofile="/home/linux-terminal/Downloads/linuxmint-20.1-cinnamon-64bit.iso"
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash
initrd (loop)/casper/initrd.lz
}ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgLinux カーネルと initrd ファイル名の確認
Linux カーネルと initrd (初期 RAM ディスク) ファイルは、Linux ISO イメージごとに異なる場合があります。 Ubuntu の場合、Linux カーネルは /casper/vmlinuz にあり、initrd イメージ ファイルは /casper/initrd にあります。どこにあるかわからない場合は、アーカイブ マネージャーで ISO イメージを開いてください。次のスクリーンショットは、Arch Linux ISO イメージ ファイルを示しています。
GRUBブートメニューの表示
Ubuntu などの一部の Linux ディストリビューションでは、ハード ドライブに OS が 1 つしかインストールされていない場合、GRUB ブート メニューが非表示になります。 GRUB ブート メニューを表示するには、構成ファイルを編集します。
sudo nano /etc/default/grubGRUB にブート メニューを非表示にするよう指示する次の行を見つけます。
GRUB_TIMEOUT_STYLE=hidden# 文字を先頭に追加して、この行をコメントアウトします。
#GRUB_TIMEOUT_STYLE=hidden次に、次の行を見つけます。
GRUB_TIMEOUT=00 を 10 に変更します。これにより、GRUB ブート メニューでエントリを選択するのに 10 秒の時間が与えられます。
GRUB_TIMEOUT=10ファイルを保存して閉じます。次に、GRUB 構成を更新します。
sudo update-grubGRUB でブート順序を変更する
GRUB でデフォルトで ISO を起動し、構成ファイルを編集するとします。
sudo nano /etc/default/grub次の行を見つけます。これにより、GRUB はブート メニューの最初のエントリを選択します。
GRUB_DEFAULT=0これを次のように変更します。
GRUB_DEFAULT="clonezilla-live-20210127-groovy-amd64.iso"/etc/grub.d/40_custom ファイルにこのエントリ menuentry "clonezilla-live-20210127-groovy-amd64.iso" がある場合、GRUB は次の方法でこのエントリを選択します。デフォルト。変更を有効にするには、GRUB を更新します。
sudo update-grubデフォルトの起動順序を維持し、次のコマンドのみを使用して ISO ファイルを起動することもできます。
sudo grub-reboot clonezilla-live-20210127-groovy-amd64.isoまたは
sudo grub2-reboot clonezilla-live-20210127-groovy-amd64.isoその後、再起動します。
sudo shutdown -r now追加のヒント
コンピュータ内にSATA ディスクとNVMe SSD がある場合、SATA ディスクが 1 番目、NVMe SSD が 2 番目になります。 USB ドライブと NVMe SSD についても同様です。 光ディスクがある場合、GRUB はその光ディスクが最初のディスクであると考える可能性があります。
GRUB が ISO イメージ ファイルを起動しようとしたときに次のエラーが表示された場合は、ISO ファイルの場所を光ディスクに指定した可能性があります。
can not get C/H/S valueディスク全体にまたがるファイル システムがある場合は、GRUB でパーティション番号を指定する必要はありません。たとえば、2 番目のディスクに ISO ファイルがあります。 2 番目のディスクにはパーティションを作成しなかったので、GRUB 設定ファイルで (hd1) を指定できます。
loopback loop (hd1)$isofileGRUB ブート メニューを更新するときに次のようなエラー メッセージが表示された場合は、このエラーを無視してください。
grub-probe: error: cannot find a GRUB drive for /dev/loop11p3. Check your device.map.Windows 10 ISO
はい、Ubuntu または任意の Linux ディストリビューションで Windows 10 ブート可能 USB を作成できます。 USB サム ドライブがない場合は、GRUB2 を使用してハード ドライブ上の Windows 10 ISO を起動できます。 Windows 10 ISO ファイルをダウンロードします。 Windows コンピュータでは、このリンクから ISO をダウンロードできない場合があることに注意してください。このダウンロード リンクは、Linux コンピュータ上のユーザーに表示されます。
GRUB2 は Windows 10 ISO を直接起動できません。 GParted などのパーティション エディタを使用してディスク上に別の NTFS パーティションを作成し、そのパーティションに Windows 10 ISO を抽出する必要があります。最新の Windows 10 ISO ファイルは 5.8G です。新しい NTFS パーティションは少なくとも 7G である必要があり、他のファイルの保存には使用しないでください。
次に、ファイルマネージャーで Windows 10 ISO を見つけます。それをディスクイメージマウンタで開きます。
マウントされたファイル システムを開きます。すべてのファイルとフォルダーを選択し、NTFS パーティションにコピーします。
Ubuntu のファイル マネージャーがハングし、コピー操作が停止したように見えることがあります。実際、それは機能しています。ただ我慢して。チェックマークが表示されている場合は、コピー操作が完了したことを意味します。
次に、ターミナル ウィンドウを開き、Nano などのテキスト エディタで /etc/grub.d/40_custom ファイルを編集します。
sudo nano /etc/grub.d/40_customこのファイルでは、GRUB ブート メニューにカスタム エントリを追加できます。この場合、Windows 10 インストーラーを起動するためのエントリを追加します。コンピュータが従来のBIOS ファームウェアをまだ使用している場合は、このファイルに次のテキストを追加します。
menuentry "Windows-10-Installer.iso" {
set root=(hd0,6)
insmod part_msdos
insmod ntfs
insmod ntldr
#uncomment the following line if your computer has multiple hard drives.
#drivemap -s (hd0) ${root}
ntldr /bootmgr
}私の NTFS パーティション番号は 6 なので、(hd0,6) をルートとして使用します。 sudo parted -l コマンドを実行して、NTFS パーティション番号を確認できます。コンピューターに複数のハード ドライブがある場合は、drivemap コマンドを使用してパーティション (hd0,6) を最初のハード ディスクとして設定すると、Windows が起動できるようになります。
コンピュータがUEFIファームウェアを使用している場合は、このファイルに次のテキストを追加します。
menuentry "Windows-10-Installer.iso" {
set root=(hd0,6)
insmod part_gpt
insmod ntfs
insmod chain
chainloader /efi/boot/bootx64.efi
}ファイルを保存して閉じます。次に、GRUB ブート メニューを更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfgまたは
sudo grub2-mkconfig -o /boot/grub2/grub.cfgすべての外部 USB ストレージ デバイスを取り外して、コンピュータを再起動します。 Windows デスクトップ ISO インストーラーは Proxmox KVM 仮想マシンでは正しく動作しないことに注意してください。
まとめ
このチュートリアルが GRUB2 ブート ローダーで ISO ファイルを起動するのに役立つことを願っています。いつものように、この投稿が役立つと思われた場合は、無料のニュースレターを購読して、さらに多くのヒントやコツを入手してください。気をつけてください 🙂











