Directly booting an ISO file: Difference between revisions

From Alpine Linux
Line 83: Line 83:


[[User:Pnin|Pnin]] 14:34, 6 February 2011 (UTC)
[[User:Pnin|Pnin]] 14:34, 6 February 2011 (UTC)
Suppose alpine-extended-3.14.0-x86_64.iso is stored in directory boot in partition 1 on disk.
GRUB2 can be caused to load kernel and initramfs by entering:
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
Of course a menue entry for GRUB2 can be created with these statements.
Initialising Alpine will then be aborted with messages:
Mounting boot media: failed
initramfs emergency recovery shell launched. Type 'exit' to continue boot
To mount the filesystem where alpine-extended-3.14.0-x86_64.iso is stored, enter:
# mount /dev/sda1 /media/sda1
To mount the ISO image, enter:
# mount -o loop -t iso9660 /media/sda1/boot/alpine-extended-3.14.0-x86_64.iso /media/cdrom
Continue initialisation with:
# exit
At last these messages will be displayed:
/lib/rc/sh/openrc-run.sh: eval: line 1: syntax error: unexpected "("
* ERROR: firstboot failed to start
but login root works and Alpine can be configured using
# alpine-setup


=== syslinux ===
=== syslinux ===

Revision as of 09:51, 9 July 2021

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.

Using an installed Bootloader

grub-imageboot

In addition to standard partitions or drives, the Debian package grub-imageboot allows booting .iso files placed in the /boot/images directory.


Manual Grub menu entry

No solution found yet.

I've given up. Couldn't make the intended setup work with my meager Linux knowledge. I did find a page here at the wiki where under the heading 'Install Alpine cd-rom image on hard disk' a somewhat related solution is provided, but it involves extracting the distro files from the iso, something that unetbootin does in a rather more easy and straightforward way -- at least, that's what I used to get Alpine to boot from a USB pendrive (plenty of recipes for that around). However, I still believe a simple 'boot from iso' procedure could do wonders for Alpine, so I'm leaving this here for future reference. Should anyone disagree, do feel free to delete. Pnin 05:43, 8 February 2011 (UTC)


Current system is a 2.8 Prescott Pentium IV with 2MB RAM, booting from a 1GB CF plugged into the IDE interface, with an attached 500GB SATA HDD for data. When I tried to install Alpine from the LiveCD to this card, which is listed as a hard drive by the BIOS, it complained of insufficient space. Fair enough. Next I tried to follow this recipe to boot from Alpine 2.1.4 iso. At the end you find this tip:

Adding an Unlisted ISO: To try ISO Files that are not yet listed, use the existing menu entry examples in /boot/grub/grub.cfg and append any options normally found in the distribution's syslinux.cfg file on the "append" line to the "linux" line of the menu entry.

So I downloaded the latest Alpine iso via wget and modified the relevant grub.cfg lines to:

linux (loop)/boot/grsec initrd=/boot/grsec.gz iso-scan/filename=/alpine214.iso alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
initrd (loop)/boot/grsec.gz

All I got when I tried to boot this was the following error:

Alpine Init 2.1.2
/init: eval: line 1: syntax error: unexpected "("
kernel panic - not syncing: attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.35.10-grsec #1-Alpine
[...]

I must say all went well with the Linux Mint 10.10 and the TinyCore isos, into which I'm able to boot with no issues. Anyone care to advise?

Pnin




Hi, that "linux (loop)/boot/...." thing looks funny to me.

According to: https://help.ubuntu.com/community/Grub2

Could you try:

set root=(loop0)
linux /boot/grsec initrd=/boot/grsec.gz iso-scan/filename=/alpine214.iso alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
initrd /boot/grsec.gz

Nangel 13:49, 6 February 2011 (UTC)




Hi & thanks, Nangel.

Tried that and got this error:

error: no such disk.
error: you need to load the kernel first.
press any key to continue...

Pressing any key returns to the grub menu. Maybe the full grub.cfg entry should be reported here:

menuentry "Alpine Linux" {
loopback loop /alpine214.iso
linux (loop)/boot/grsec initrd=/boot/grsec.gz iso-scan/filename=/alpine214.iso alpine_dev=usbdisk:vfat modules=loop,cramfs,sd-mod,usb-storage quiet
initrd (loop)/boot/grsec.gz
}

It should also be noted that the LiveCD used to perform the recipe was "Linux Mint 9 LXDE", which caused Grub 1.98-1ubuntu5-1mint2 to be installed, not Grub2. And that (loop) part is present in every other successful menu entry.

[EDIT: Just to add that IMHO coupled with the Alpine Local Backup Utility (lbu), booting from iso would be a killer feature for Alpine, making systems really easy to troubleshoot (delete local backup) and upgrade (replace iso).]

Pnin 14:34, 6 February 2011 (UTC)


Suppose alpine-extended-3.14.0-x86_64.iso is stored in directory boot in partition 1 on disk. GRUB2 can be caused to load kernel and initramfs by entering:

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

Of course a menue entry for GRUB2 can be created with these statements.

Initialising Alpine will then be aborted with messages:

Mounting boot media: failed
initramfs emergency recovery shell launched. Type 'exit' to continue boot

To mount the filesystem where alpine-extended-3.14.0-x86_64.iso is stored, enter:

# mount /dev/sda1 /media/sda1

To mount the ISO image, enter:

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

Continue initialisation with:

# exit

At last these messages will be displayed:

/lib/rc/sh/openrc-run.sh: eval: line 1: syntax error: unexpected "("
* ERROR: firstboot failed to start

but login root works and Alpine can be configured using

# alpine-setup

syslinux

No solution found yet.