[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Remastering KNOPPIX adding KNOPPIX[n] overlay's to iso file



Hi,

your genisoimage run produces no boot entries for BIOS or EFI to boot
from USB stick. I guess that the virtual machines went along the El Torito
boot record to isolinux.bin, despite this is only valid on optical media.

You can make the result of genisoimage bootable for BIOS from USB stick
by a run of program "isohybrid". See
  https://www.syslinux.org/wiki/index.php?title=Isohybrid

(Just before sending this mail i note Christian Perle was faster than me
 with that proposal.)


For being bootable by EFI firmware, you will have to extract the EFI
System Partition image from the original Knoppix ISO, append it to the new
ISO, and mark it in the MBR partition table as partition 2 of type 0xef.
Program "fdisk" will tell the start and size of the EFI partition in the
original ISO.

  $ /sbin/fdisk -l KNOPPIX_V8.2-2018-05-10-EN.iso
  ...
  Device                          Boot   Start     End Sectors  Size Id Type
  KNOPPIX_V8.2-2018-05-10-EN.iso1 *         64 9135503 9135440  4.4G  0 Empty
  KNOPPIX_V8.2-2018-05-10-EN.iso2      9135504 9166223   30720   15M ef EFI (FAT-1
  KNOPPIX_V8.2-2018-05-10-EN.iso3      9166224 9174415    8192    4M 83 Linux

Your new ISO's partition 1 will not be of type 0x00 after "isohybrid".
This peculiar type is a leftover of Knoppix 8.0 ISO, where partition 2
was located inside partition 1. No need to imitate this aspect.

Probably you will want to add the ReiserFS image of original partition 3
as partition 3 to the new ISO.

------------------------------------------------------------------------

Knoppix 8.2 was produced by my program "xorriso", version 1.4.7. Freshly
released version 1.5.0 or one year old version 1.4.8 should be suitable, too.

It proposes by

  $ xorriso -indev KNOPPIX_V8.2-2018-05-10-EN.iso -report_system_area as_mkisofs

to use the following boot related options:

  -V 'KNOPPIX_8'
  --modification-date='2018051501260800'
  -isohybrid-mbr --interval:local_fs:0s-15s:zero_mbrpt:'KNOPPIX_V8.2-2018-05-10-EN.iso'
  -partition_cyl_align off
  -partition_offset 16
  --mbr-force-bootable
  -append_partition 2 0xef --interval:local_fs:9135504d-9166223d::'KNOPPIX_V8.2-2018-05-10-EN.iso'
  -append_partition 3 0x83 --interval:local_fs:9166224d-9174415d::'KNOPPIX_V8.2-2018-05-10-EN.iso'
  -iso_mbr_part_type 0x00
  -c '/boot/isolinux/boot.cat'
  -b '/boot/isolinux/isolinux.bin'
  -no-emul-boot
  -boot-load-size 4
  -boot-info-table
  -eltorito-alt-boot
  -e '--interval:appended_partition_2_start_2283876s_size_30720d:all::'
  -no-emul-boot
  -boot-load-size 30720

The arguments "--interval:...EN.iso" would pick block ranges from the original
ISO, if it is in the current working directory.

But let's do it a bit more like it was done with the original.
First extract images of MBR code, partitions 2 and 3 from the original ISO:

  dd if=KNOPPIX_V8.2-2018-05-10-EN.iso bs=1 count=432 of=/tmp/mbr_code.img
  dd if=KNOPPIX_V8.2-2018-05-10-EN.iso bs=512 skip=9135504 count=30720 \
                                                      of=/tmp/part2.img
  dd if=KNOPPIX_V8.2-2018-05-10-EN.iso bs=512 skip=9166224 count=8192 \
                                                      of=/tmp/part3.img
   
Then use them in a xorriso run, which is inspired by your genisoimage run
and xorriso's proposals:

  xorriso -as mkisofs \
    -l -r -J -V "KNOPPIX" \
    \
    -isohybrid-mbr /tmp/mbr_code.img \
    -partition_offset 16 --mbr-force-bootable \
    -iso_mbr_part_type 0x83 \
    -append_partition 2 0xef /tmp/part2.img \
    -append_partition 3 0x83 /tmp/part3.img \
    \
    -c boot/isolinux/boot.cat \
    -b boot/isolinux/isolinux.bin \
      -no-emul-boot -boot-load-size 4 -boot-info-table \
    \
    -eltorito-alt-boot \
    -e '--interval:appended_partition_2:all::' \
    -no-emul-boot \
    \
    -o /media/sda4/knx/custom.iso /media/sda4/knx/master
  
The resulting ISO should then bear MBR code and partition table for booting
from USB stick with BIOS and EFI.

  xorriso -indev /media/sda4/knx/custom.iso \
          -report_system_area plain -report_el_torito plain

is supposed to report after some other message lines:

  System area summary: MBR isohybrid cyl-align-off
  ISO image size/512 : 9165944
  Partition offset   : 16
  MBR heads per cyl  : 0
  MBR secs per head  : 0
  MBR partition table:   N Status  Type        Start       Blocks
  MBR partition      :   1   0x80  0x83           64      9126368
  MBR partition      :   2   0x00  0xef      9126432        30720
  MBR partition      :   3   0x00  0x83      9157152         8192
  El Torito catalog  : 78  1
  El Torito cat path : /boot/isolinux/boot.cat
  El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
  El Torito boot img :   1  BIOS  y   none  0x0000  0x00      4          79
  El Torito boot img :   2  UEFI  y   none  0x0000  0x00  30720     2281608
  El Torito img path :   1  /boot/isolinux/isolinux.bin
  El Torito img opts :   1  boot-info-table isohybrid-suitable
  El Torito img blks :   2  7680

The original ISO causes a similar xorriso report, with different type
of MBR partition 1. 
Of course ISO image size and partition start positions will vary by
the changes you made to /media/sda4/knx/master.

The man pages of xorriso and its "-as mkisofs" emulation are available online
  https://www.gnu.org/software/xorriso/man_1_xorriso.html
  https://www.gnu.org/software/xorriso/man_1_xorrisofs.html


Have a nice day :)

Thomas     


Reply to: