Community
cancel
Showing results for 
Search instead for 
Did you mean: 
MVers4
New Contributor I
1,023 Views

ITK5 crash with PY0069 for NUC5CPYH

Jump to solution

We're comfortable at using ITK5 and ITK6 for creating firmware/BIOS images with good results over the last few years. We need to create a legacy boot (non-UEFI) "BIOS" image for an existing product. Our current customized .bio based on PY0056 won't load on NUC5PHY units that we're receiving from our distributor since the bio on the devices (0057 and 0066) is newer than our 0056 based customized bios. It fails with a Blue Screen "Incompatible Bios Version. Update Aborted!"

Our legacy tool chain to push code to this product line on NUC5 is base on Legacy Boot (non-UEFI) processes, so we don't want to convert this process to UEFI for these last few units going through our supply chain. I know that if we use ITK6, then the only option is to use a UEFI boot process.

Quoting N.Scott.Pearson in /thread/116957http: this message "The only way that this becomes a problem is if you are supporting only Legacy boot devices. In this case, then yes, the UEFI Shell is always going to start. To fix this - don't use Legacy Boot!" Unfortunately, our current tool chain for this legacy product does use Legacy Boot.

Is there any work around for this crash?

Thanks

Mike

Details:

Version: ITK v5.0.4.575

Executing on Win7-64

Steps to reproduce

Download PY0069.bio from Intel downloads for NUC5CPYHStart ITK5On the ITK Welcome window, select "Customize a BIOS file"In the File Selection window, select the PY0069.bio downloaded aboveIn the Settings panel, Open the following hierarchy:Intel Desktop BoardBootBoot ConfigUEFI BootBoot USB Devices First - in the "Current Settings" column, click on "Don't Change"in the pop up box, click "Enable" - ITK5 will crash
0 Kudos
1 Solution
n_scott_pearson
Super User Retired Employee
85 Views

Hi Mike, here we go again...

You are attempting to use ITK5 to work around a perceived problem with ITK6. The problem is that, at one point, changes had to be made to the .BIO file architecture to address a security issue and these changes have made these files incompatible with ITK5. This is no surprise; ITK6 was developed specifically because of security concerns raised against ITK5.

The perceived problem with ITK6 is that you cannot boot from a Legacy-formatted device because the UEFI Shell will always have boot precedence over all Legacy-formatted devices and the UEFI Shell has to be enabled in order to run the ITK6 (UEFI) executable. Well, the answer is simple; don't enable the UEFI Shell! Instead, put a copy of the EFI Shell onto a USB flash drive and use F10 to boot from this flash disk.

Anticipating your next question, what you need to do to create this flash drive is as follows:

  1. Format the USB flash drive. Do this on a Windows-based PC (do not use Linux- or MACOS-based PCs), selecting the FAT32 file system and disabling the Quick format option.
  2. On this USB flash disk, create folders \EFI and \EFI\BOOT.
  3. Place a copy of the UEFI Shell executable (file bootx86.efi) into the \EFI\BOOT folder. You can get this executable from the EFI Developer's Kit (EDK). For more information, start here: https://github.com/tianocore/tianocore.github.io/wiki/Efi-shell https://github.com/tianocore/tianocore.github.io/wiki/Efi-shell.
  4. Place copies of the necessary ITK6 files onto this USB flash disk as well.
  5. Ensure you properly eject this drive before removing it from the PC's USB port.

Hope this helps,

...S

View solution in original post

2 Replies
n_scott_pearson
Super User Retired Employee
86 Views

Hi Mike, here we go again...

You are attempting to use ITK5 to work around a perceived problem with ITK6. The problem is that, at one point, changes had to be made to the .BIO file architecture to address a security issue and these changes have made these files incompatible with ITK5. This is no surprise; ITK6 was developed specifically because of security concerns raised against ITK5.

The perceived problem with ITK6 is that you cannot boot from a Legacy-formatted device because the UEFI Shell will always have boot precedence over all Legacy-formatted devices and the UEFI Shell has to be enabled in order to run the ITK6 (UEFI) executable. Well, the answer is simple; don't enable the UEFI Shell! Instead, put a copy of the EFI Shell onto a USB flash drive and use F10 to boot from this flash disk.

Anticipating your next question, what you need to do to create this flash drive is as follows:

  1. Format the USB flash drive. Do this on a Windows-based PC (do not use Linux- or MACOS-based PCs), selecting the FAT32 file system and disabling the Quick format option.
  2. On this USB flash disk, create folders \EFI and \EFI\BOOT.
  3. Place a copy of the UEFI Shell executable (file bootx86.efi) into the \EFI\BOOT folder. You can get this executable from the EFI Developer's Kit (EDK). For more information, start here: https://github.com/tianocore/tianocore.github.io/wiki/Efi-shell https://github.com/tianocore/tianocore.github.io/wiki/Efi-shell.
  4. Place copies of the necessary ITK6 files onto this USB flash disk as well.
  5. Ensure you properly eject this drive before removing it from the PC's USB port.

Hope this helps,

...S

View solution in original post

MVers4
New Contributor I
85 Views

Hi Scott

Thanks for your thorough and thoughtful reply.

My key learning here is "changes had to be made to the .BIO file architecture to address a security issue and these changes have made these files incompatible with ITK5".

We'll write ITK5 out of our workflow and adapt them based on your procedure below.

Thanks!

Mike

Reply