Imaging HP EliteBook 840G4 : Could not boot: No such device
-
Apologies, I am a newbie to Fog. I’d historically used Clonezilla for imaging my PCs which have worked fine for many years due to the ability to change the UEFI to use legacy booting. This year I have purchased EliteBook 840 G4 laptops with 7th Generation Intel processors and HP have disabled the legacy booting option in the UEFI, apparently something to do with the 7th gen processors. This means that Clonezilla refused to boot in PXE or from a USB stick.
I’m therefore trying to get Fog up and running and start using it instead. I have followed all the instructions to get a Fog server up and running but run into several problems.
Firstly, the full inventory and quick inventory refused to work so I had to manually enter my EliteBook ready for imaging into Host Management manually. I’ve entered the Windows 10 hostname of the device and the MAC address. I created a capture task for the host and this has changed the PXE boot process for the EliteBook 840G4. Unfortunately now the PXE fails with three repeating errors of “Could not boot: No such device (http://ipxe.org/2c048087)”. The bzImage loads ok, and the init.xz loads ok.
Are these issues caused by the UEFI too? If so, please can anyone suggest how I overcome them?
-
What iPXE kernel are you sending to the target computer (i.e. DHCP option 67)? The error says that it can’t identify the network device. What I find strange is that bzImage and init.xz are being sent, but the error being thrown is from the ipxe kernel. It like it can’t start bzImage.
I guess I do need to ask what version of FOG are you trying to get setup?
-
This post is deleted! -
@george1421 said in Imaging HP EliteBook 840G4 : Could not boot: No such device:
(i.e. DHCP option 67)
What do you have setup in dhcp for option 67 {boot-file}?
-
@george1421 Sorry for my lack of knowledge but how do I find out what iPXE kernel I’m using? I used FOG as my DHCP server and accepted the default. Please can you tell me where to look up that setting?
I’m using the latest release of FOG - 1.3.5.
-
@jamessl Ok lets take a step back.
Are you using FOG for dhcp or your network’s existing dhcp server for dhcp (IP address) services on your network?
When you first setup fog it should have asked you if you wanted fog to manage dhcp. You would have fog manage dhcp if the fog server is on an isolated (deployment) network where there was only the fog server and target computers.
If you have fog managing dhcp AND an existing dhcp server on your network you will have a conflict. So tell us a bit about how you have your network setup.
-
@george1421 said in Imaging HP EliteBook 840G4 : Could not boot: No such device:
@jamessl Ok lets take a step back.
Are you using FOG for dhcp or your network’s existing dhcp server for dhcp (IP address) services on your network?
When you first setup fog it should have asked you if you wanted fog to manage dhcp. You would have fog manage dhcp if the fog server is on an isolated (deployment) network where there was only the fog server and target computers.
If you have fog managing dhcp AND an existing dhcp server on your network you will have a conflict. So tell us a bit about how you have your network setup.
I chose to use FOG as my DHCP server because I’m using FOG on an isolated network. It has an old PC with Ubuntu running on it with the GUI installed, the server has an IP of 192.168.200.200 and has FOG installed on it (1.3.5). They connect into an HP unmanaged switch. I’ve made sure that the Ubuntu server I’m running FOG on has DHCP removed by running sudo update-rc.d -f isc-dhcp-server remove and so the FOG server is the only DHCP server on the isolated LAN as its just the EliteBook and the Ubuntu server connected to the switch.
-
@jamessl Thank you for the clarity.
Will you post the file /etc/dhcp/dhcpd.conf here for review.
-
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16;
use-host-decl-names on;
ddns-update-style interim;
ignore client-updates; -
@jamessl That is the entire content of that file?
I would expect the config file to look a bit more like the one in this link: https://wiki.fogproject.org/wiki/index.php?title=BIOS_and_UEFI_Co-Existence#Example_1
With the IP addresses change to match your isolated network setup.
-
Sorry, well spotted. I had missed a lot of the content off the bottom of the file under a bit of quoted text. Here is it in entirety:
option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option arch code 93 = unsigned integer 16; use-host-decl-names on; ddns-update-style interim; ignore client-updates; # Specify subnet of ether device you do NOT want service. # For systems with two or more ethernet devices. # subnet 136.165.0.0 netmask 255.255.0.0 {} subnet 192.168.200.0 netmask 255.255.255.0{ option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.200.10 192.168.200.254; default-lease-time 21600; max-lease-time 43200; option routers 192.168.200.1; option domain-name-servers 8.8.8.8; next-server 192.168.200.200; class "Legacy" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000"; filename "undionly.kkpxe"; } class "UEFI-32-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002"; filename "i386-efi/ipxe.efi"; } class "UEFI-32-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006"; filename "i386-efi/ipxe.efi"; } class "UEFI-64-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007"; filename "ipxe.efi"; } class "UEFI-64-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008"; filename "ipxe.efi"; } class "UEFI-64-3" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009"; filename "ipxe.efi"; } class "SURFACE-PRO-4" { match if substring(option vendor-class-identifier, 0, 32) = "PXEClient:Arch:00007:UNDI:003016"; filename "ipxe7156.efi"; } class "Apple-Intel-Netboot" { match if substring(option vendor-class-identifier, 0, 14) = "AAPLBSDPC/i386"; option dhcp-parameter-request-list 1,3,17,43,60; if (option dhcp-message-type = 8) { option vendor-class-identifier "AAPLBSDPC"; if (substring(option vendor-encapsulated-options, 0, 3) = 01:01:01) { # BSDP List option vendor-encapsulated-options 01:01:01:04:02:80:00:07:04:81:00:05:2a:09:0D:81:00:05:2a:08:69:50:58:45:2d:46:4f:47; filename "ipxe.efi"; } } } }
-
@jamessl Does this dhcpd.conf show anything untoward? I presume that the laptop is supposed to select one of the class sections and use it to identify how to boot a particular type of EFI and the reason the EliteBook 840 G4 isn’t working is because it isn’t recognised by any of the classes?
-
@jamessl Nothing noteworthy in your config file. I can see from your OP that uefi mode is enabled on this HP and ipxe.efi is being sent. That wrapper message is a bit confusing.
(this is just thinking out loud)
Does this laptop have the latest firmware installed?
The issue appears to be the hand off from ipxe to the FOS kernel (bzImage)
Is this a really new laptop where the linux kernel used won’t have the drivers, but then again we are not that far into the kernel. -
@george1421 said in Imaging HP EliteBook 840G4 : Could not boot: No such device:
@jamessl That is the entire content of that file?
I would expect the config file to look a bit more like the one in this link: https://wiki.fogproject.org/wiki/index.php?title=BIOS_and_UEFI_Co-Existence#Example_1
With the IP addresses change to match your isolated network setup.
George - full file posted above. Any ideas why it doesn’t work? I guess that none of the classes are able to interpret the UEFI on the HP laptop and boot it? If so, how would I build a class to make it boot?