Directly booting an ISO file: Difference between revisions

From Alpine Linux
(Clean up discussion from the wiki text - move it to the discussions page)
(added ventoy link from Discussion page, redone the headings)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
It is technically possible to boot an <code>.iso</code> file directly, without flashing it to a disk or device.
It is technically possible to boot an <code>.iso</code> file directly, without flashing it to a disk or device.


== Using a virtual machine ==
== Using a virtual machine ==


The [[QEMU#Live_mode|QEMU]] page shows how an ISO image and .apkovl customizations are booted with a virtual machine.
The [[QEMU#Live_mode|QEMU]] page shows how an ISO image and .apkovl customizations are booted with a virtual machine. This works very well with Proxmox as well - just attach the ISO and Alpine boots to RAM on startup. You can customize your .iso file by building a custom ISO image by following the instructions on [[How to make a custom ISO image with mkimage]]
 
== Using GRUB ==
{{Main|Bootloaders#GRUB}}
Ensure that Alpine ISO image is stored in partition 1 of a disk or SSD in directory <code>/boot</code> and the installed Linux in that partition has GRUB2.
 
=== Loading intramfs ===


== Using an installed Bootloader ==
GRUB can be caused to load kernel and initramfs by one of the following two ways:


==== Adding menu entry ====


=== grub-imageboot ===
Add a menu entry in grub for the ISO image by creating an file {{Path|/etc/grub.d/40_custom}} and insert the following :{{Cat|/etc/grub.d/40_custom|<nowiki>
menuentry 'Alpine Linux 3.22 (loopback from /dev/sda1)' --class alpine --class gnu-linux --class gnu --class os {
      echo            Device:      $root
      set            isofile=/boot/alpine-extended-3.22.1-x86_64.iso
      loopback        lb $isofile
      echo            ISO root:      $root
      echo            ISO image:      $isofile
      echo            "Alpine Linux 3.22 is booting from $isofile"
      echo            'loading the kernel'
      linux          (lb)/boot/vmlinuz-lts
      echo            'loading initial root filesystem'
      initrd          (lb)/boot/initramfs-lts
}
</nowiki>}}


In addition to standard partitions or drives, the Debian package grub-imageboot allows booting .iso files placed in the /boot/images directory.
Proceed to create a new GRUB2 configuration file by issuing the command:{{Cmd|# grub-mkconfig -o /boot/grub/grub.cfg}}
Reboot the computer {{Cmd|# reboot}}


Select created menu entry and proceed to [[#Mount ISO image|Mount ISO image]] section for further instructions.


=== Manual Grub menu entry ===
==== Using GRUB commandline ====
 
Alternatively the statements <code>loopback</code>, <code>linux</code> and <code>initrd</code> can be entered manually in GRUB commandline as follows:
 
grub> loopback lb /boot/alpine-extended-3.14.0-x86_64.iso
grub> linux  (lb)/boot/vmlinuz-lts
grub> initrd (lb)/boot/initramfs-lts
grub> boot
 
Proceed to [[#Mount ISO image|Mount ISO image]] section for further instructions.
 
=== Mount ISO image ===
 
Irrespective of method adopted, the boot will work until boot media is to be mounted. The following error will appear:{{Cmd|
Mounting boot media: failed
initramfs emergency recovery shell launched}}
 
Now mount the boot media manually in the initramfs emergency recovery shell: {{Cmd|<nowiki># mount /dev/sda1 /media/sda1
# mount -o loop -t iso9660 /media/sda1/boot/alpine-extended-3.22.1-x86_64.iso /media/cdrom
# exit
</nowiki>}}
 
Then login as root and issue the command {{ic| # setup-alpine}} to proceed with [[Installation#Base_configuration|Installation]].
 
== syslinux ==


No solution found yet.
No solution found yet.


=== syslinux ===
== Using grub-imageboot tool ==


No solution found yet.
The Debian package '''grub-imageboot''' allows booting .iso files placed in the /boot/images directory.
 
== See also ==
* [https://wiki.archlinux.org/title/Ventoy Boot iso files using Ventoy]


[[Category:Installation]]
[[Category:Installation]]

Latest revision as of 03:27, 5 July 2025

It is technically possible to boot an .iso file directly, without flashing it to a disk or device.

Using a virtual machine

The QEMU page shows how an ISO image and .apkovl customizations are booted with a virtual machine. This works very well with Proxmox as well - just attach the ISO and Alpine boots to RAM on startup. You can customize your .iso file by building a custom ISO image by following the instructions on How to make a custom ISO image with mkimage

Using GRUB

Ensure that Alpine ISO image is stored in partition 1 of a disk or SSD in directory /boot and the installed Linux in that partition has GRUB2.

Loading intramfs

GRUB can be caused to load kernel and initramfs by one of the following two ways:

Adding menu entry

Add a menu entry in grub for the ISO image by creating an file /etc/grub.d/40_custom and insert the following :

Contents of /etc/grub.d/40_custom

menuentry 'Alpine Linux 3.22 (loopback from /dev/sda1)' --class alpine --class gnu-linux --class gnu --class os { echo Device: $root set isofile=/boot/alpine-extended-3.22.1-x86_64.iso loopback lb $isofile echo ISO root: $root echo ISO image: $isofile echo "Alpine Linux 3.22 is booting from $isofile" echo 'loading the kernel' linux (lb)/boot/vmlinuz-lts echo 'loading initial root filesystem' initrd (lb)/boot/initramfs-lts }

Proceed to create a new GRUB2 configuration file by issuing the command:

# grub-mkconfig -o /boot/grub/grub.cfg

Reboot the computer

# reboot

Select created menu entry and proceed to Mount ISO image section for further instructions.

Using GRUB commandline

Alternatively the statements loopback, linux and initrd can be entered manually in GRUB commandline as follows:

grub> loopback lb /boot/alpine-extended-3.14.0-x86_64.iso
grub> linux  (lb)/boot/vmlinuz-lts
grub> initrd (lb)/boot/initramfs-lts
grub> boot

Proceed to Mount ISO image section for further instructions.

Mount ISO image

Irrespective of method adopted, the boot will work until boot media is to be mounted. The following error will appear:

Mounting boot media: failed initramfs emergency recovery shell launched

Now mount the boot media manually in the initramfs emergency recovery shell:

# mount /dev/sda1 /media/sda1 # mount -o loop -t iso9660 /media/sda1/boot/alpine-extended-3.22.1-x86_64.iso /media/cdrom # exit

Then login as root and issue the command # setup-alpine to proceed with Installation.

syslinux

No solution found yet.

Using grub-imageboot tool

The Debian package grub-imageboot allows booting .iso files placed in the /boot/images directory.

See also