Problems booting from an ISO file

If I try to boot from an ISO file rather than from a USB stick, the process stops at the mountroot prompt because of the contents of /etc/fstab which contains:
Code:
/dev/iso9660/PFSENSE / cd9660 ro 0 0
The ISO file is mounted on md() so I am able to change it, but what should I change it to?
 
Are you trying to follow a procedure you've found described elsewhere? If so, could you link to it?

I don't quite understand how you could boot from an ISO file saved on a memory disk you've mounted. Wouldn't you first have had to boot the system in order to mount a memory disk?
 
I can boot the ISO file using Ventoy and it stops at the mountroot prompt because of the entry in
/etc/fstab

I can see what is in the ISO if I mount it on md(). I'm not trying to boot from there.
 
If I try to boot from an ISO file rather than from a USB stick, the process stops at the mountroot prompt because of the contents of /etc/fstab which contains:
Code:
/dev/iso9660/PFSENSE / cd9660 ro 0 0
The ISO file is mounted on md() so I am able to change it, but what should I change it to?

You can't change it; cd9660 is always a readonly filesystem. Mounting a .iso with mdconfig doesn't change that.

I tried to do that to change one file's extension from .txz to .pkg on the 12.3 dvd1.iso. Even specifying -o rw failed.
 
/dev/iso9660/PFSENSE / cd9660 ro 0 0
Normally not supported here.

There should be a error message "Trying to mount root from ..." before the mountroot prompt. What does it exactly say? Copy & paste text or take a picture please.

Also:
cat /<mount point md iso file>/boot/loader.conf
cat /<mount point md iso file>/boot/defaults/loader.conf
 
... cd9660 is always a readonly filesystem. Mounting a .iso with mdconfig doesn't change that.

I tried to do that to change one file's extension from .txz to .pkg on the 12.3 dvd1.iso. Even specifying -o rw failed.

It's no problem to add/modify the content of a (FreeBSD) .iso file. The file must be extracted first, after modifications made, rebuild with /usr/src/release/amd64/mkisoimages.sh script (FreeBSD source code installed requiered).

There is an example at the end of manual bsdinstall(8), section "BUILDING AUTOMATIC INSTALL MEDIA".
 
Normally not supported here.
I know, but this isn't really about pfsense as such, its about the principle of changing the contents of an ISO image file to be able to boot from it.

There should be a error message "Trying to mount root from ..." before the mountroot prompt. What does it exactly say? Copy & paste text or take a picture please.

I have a FreeBSD installation on the disk, so, I was able to redirect dmesg.boot by specifying a different mount point:-

Code:
Root mount waiting for: CAM
ada0 at ahcich0 bus 0 scbus2 target 0 lun 0
ada0: <Hitachi HTS545050KTA300 BKFOC60M> ATA8-ACS SATA 2.x device
ada0: Serial Number 080830BK0F00VEG9JXTB
ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 476940MB (976773168 512 byte sectors)
mountroot: waiting for device /dev/iso9660/PFSENSE...
Mounting from cd9660:/dev/iso9660/PFSENSE failed with error 19.

Loader variables:
  vfs.root.mountfrom=cd9660:/dev/iso9660/PFSENSE
  vfs.root.mountfrom.options=ro

Manual root filesystem specification:
  <fstype>:<device> [options]
      Mount <device> using filesystem <fstype>
      and with the specified (optional) option list.

    eg. ufs:/dev/da0s1a
        zfs:zroot/ROOT/default
        cd9660:/dev/cd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/cd0 /)

  ?               List valid disk boot devices
  .               Yield 1 second (for background tasks)
  <empty line>    Abort manual input

mountroot> Trying to mount root from ufs:/dev/ada0p6 []...
KLD i915kms.ko: depends on kernel - not available or version mismatch
linker_load_file: /boot/modules/i915kms.ko - unsupported file type
KLD acpi_dock.ko: depends on kernel - not available or version mismatch

Also:
cat /<mount point md iso file>/boot/loader.conf
Code:
autoboot_delay="3"
opensolaris_load="YES"
zfs_load="YES"
hw.hn.use_if_start="1"
hw.hn.vf_transparent="0"
kern.cam.boot_delay=10000
kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"
kern.ipc.nmbclusters="1000000"
kern.ipc.nmbjumbo9="524288"
kern.ipc.nmbjumbop="524288"
boot_serial="NO"

cat /<mount point md iso file>/boot/defaults/loader.conf
I've strippped off the lines beginning with '#':p

Code:
exec="echo Loading /boot/defaults/loader.conf"

kernel="kernel"        # /boot sub-directory containing kernel and modules
bootfile="kernel"    # Kernel name (possibly absolute path)
kernel_options=""    # Flags to be passed to the kernel
loader_conf_files="/boot/device.hints /boot/loader.conf /boot/loader.conf.local"
loader_conf_dirs="/boot/loader.conf.d"
nextboot_conf="/boot/nextboot.conf"
verbose_loading="NO"        # Set to YES for verbose loader output

splash_bmp_load="NO"        # Set this to YES for bmp splash screen!
splash_pcx_load="NO"        # Set this to YES for pcx splash screen!
splash_txt_load="NO"        # Set this to YES for TheDraw splash screen!
vesa_load="NO"            # Set this to YES to load the vesa module
bitmap_load="NO"        # Set this to YES if you want splash screen!
bitmap_name="splash.bmp"    # Set this to the name of the file
bitmap_type="splash_image_data" # and place it on the module_path

screensave_load="NO"        # Set to YES to load a screensaver module
screensave_name="green_saver"    # Set to the name of the screensaver module

hostuuid_load="YES"
hostuuid_name="/etc/hostid"
hostuuid_type="hostuuid"

entropy_cache_load="YES"        # Set this to NO to disable loading
                    # cached entropy at boot time
entropy_cache_name="/boot/entropy"    # Set this to the name of the file
entropy_cache_type="boot_entropy_cache"    # Required for the kernel to find
                    # the boot-time entropy cache. This
                    # must not change value even if the
                    # _name above does change!
entropy_efi_seed="YES"        # Set this to NO to disable loading
                    # entropy from the UEFI hardware random number generator API

ram_blacklist_load="NO"            # Set this to YES to load a file
                    # containing a list of addresses to
                    # exclude from the running system.
ram_blacklist_name="/boot/blacklist.txt" # Set this to the name of the file
ram_blacklist_type="ram_blacklist"    # Required for the kernel to find
                    # the blacklist module

cpu_microcode_load="NO"            # Set this to YES to load and apply a
                    # microcode update file during boot.
cpu_microcode_name="/boot/firmware/ucode.bin" # Set this to the microcode
                          # update file path.
cpu_microcode_type="cpu_microcode"    # Required for the kernel to find
                    # the microcode update file.

acpi_dsdt_load="NO"        # DSDT Overriding
acpi_dsdt_type="acpi_dsdt"    # Don't change this
acpi_dsdt_name="/boot/acpi_dsdt.aml"
                # Override DSDT in BIOS by this file
acpi_video_load="NO"        # Load the ACPI video extension driver

audit_event_load="NO"        # Preload audit_event config
audit_event_name="/etc/security/audit_event"
audit_event_type="etc_security_audit_event"


                # Default is unset and disabled (no delay).
                # -1 for no user interrupts, NO to disable
bootenv_autolist="YES"        # Auto populate the list of ZFS Boot Environments
efi_max_resolution="1x1"    # Set the max resolution for EFI loader to use:
                # 480p, 720p, 1080p, 2160p/4k, 5k, or specify
                # WidthxHeight (e.g. 1920x1080)
kernels_autodetect="YES"    # Auto-detect kernel directories in /boot
module_path="/boot/modules;/boot/dtb;/boot/dtb/overlays"    # Set the module search path
module_blacklist="drm drm2 radeonkms i915kms amdgpu"    # Loader module blacklist
                # If the TFTP server does not support RFC 2348,
                # the block size is set to 512. Valid: (8,9007)
                # <16 speeds up the progress indicator.

            # Sets the list of init candidates

                # registration, useful for USB sticks as root


loader_color="NO"
loader_logo="pfSensebw"
loader_brand="pfSense"
hw.usb.no_pf="1"
net.isr.maxthreads="-1"
loader_menu_title="Welcome to pfSense"
net.pf.request_maxcount="400000"
 
Normally not supported here. [pfSense]
I know, but this isn't really about pfsense as such, its about the principle of changing the contents of an ISO image file to be able to boot from it.
I don't think that the problem is based on the pfSense iso images content.

After checking the Ventoy Github issues, my guess is it's a Ventoy problem.

If not done yet, try booting the machine in UEFI mode.

Suggestion based on Ventoy "Supported / Unsupported ISOs"
pfSense , supports UEFI , booting successfully.

pfSense-CE-2.4.5-RELEASE-amd64.iso - 738 MB

If the system still stops at the mountroot prompt I would open a Ventoy issue. You have better chances getting help there than here.
 
It's no problem to add/modify the content of a (FreeBSD) .iso file.

Well ... I understood Balanga to be talking about updating the .iso file directly, rather than:

The file must be extracted first, after modifications made, rebuild with /usr/src/release/amd64/mkisoimages.sh script (FreeBSD source code installed requiered).

There is an example at the end of manual bsdinstall(8), section "BUILDING AUTOMATIC INSTALL MEDIA".

Sure, albeit a slightly larger 'no problem' ;-) but likely the minimum required.
 
Back
Top