EFI / UEFI problem. No boot after deployment.

  1. 2 years ago

    Hi, I hope someone can help me. I have been trying to solve a problem by myself but I haven't succeed. I have created a Image (Win 10) for deployment. Original computer is Lenovo P700 Workstation in EFI mode. Image is syspreped and works well as I have deployed it to similar computers.

    The problem arises when I try to deploy to certain model of computer. In this case is a Lenovo Thinkstation E30. This computer is older and does not support UEFI PXE boot, so I have used the ISO boot method. Deployment goes well but after rebooting, the computer does not find any bootable OS.

    I can solve the problem manually executing recboot /fixboot from a Windows Recovery Console but, of course, I want to avoid this if possible.

    Attached is the deployment log. There is a bunch of partitions warnings but I don't think they are relevant. I think the problem is in the EFI table updating, but I don't know how to solve it.

    I have tried with another image created in the same model of computer but the result is the same.

    Thanks in advance!

    I came across an interesting post that claims, some older efi firmware will actually look for a specific description on a boot entry, such as Windows Boot Manager in order to boot. This doesn't make sense to me, but it's worth trying because CloneDeploy does not use the original description when updating the NVRAM.
    In cd_push there should be two lines matching

    efibootmgr -c -d $hard_drive -p "$(parse_json "$current_partition" .Number)" -L "$(parse_json "$current_partition" .EfiBootLoader)" -l "$(parse_json "$current_partition" .EfiBootLoader)" 2>>$CLIENT_LOG

    trying updating them to

    efibootmgr -c -d $hard_drive -p "$(parse_json "$current_partition" .Number)" -L "Windows Boot Manager" -l "$(parse_json "$current_partition" .EfiBootLoader)" 2>>$CLIENT_LOG

    and try the deploy again.

    Here is the post I found.
    http://mjg59.dreamwidth.org/20187.html

  2. clonedeploy

    26 Jul 2016 Administrator

    I would also lean towards the EFI NVRAM but from the log it appears it was updated correctly. After you fix the machine with recboot can you boot to the client console and post the new output of the nvram, lets see if anything was changed?

    mount -t efivarfs none /sys/firmware/efi/efivars
    efibootmgr -v
  3. clonedeploy

    26 Jul 2016 Administrator

    Also, if possible do you still have the upload log for this image, can you attach it?

  4. clonedeploy

    26 Jul 2016 Administrator Answer
    Edited 2 years ago by clonedeploy

    I came across an interesting post that claims, some older efi firmware will actually look for a specific description on a boot entry, such as Windows Boot Manager in order to boot. This doesn't make sense to me, but it's worth trying because CloneDeploy does not use the original description when updating the NVRAM.
    In cd_push there should be two lines matching

    efibootmgr -c -d $hard_drive -p "$(parse_json "$current_partition" .Number)" -L "$(parse_json "$current_partition" .EfiBootLoader)" -l "$(parse_json "$current_partition" .EfiBootLoader)" 2>>$CLIENT_LOG

    trying updating them to

    efibootmgr -c -d $hard_drive -p "$(parse_json "$current_partition" .Number)" -L "Windows Boot Manager" -l "$(parse_json "$current_partition" .EfiBootLoader)" 2>>$CLIENT_LOG

    and try the deploy again.

    Here is the post I found.
    http://mjg59.dreamwidth.org/20187.html

  5. Yep! The label/description did the trick. I had noticed this already and tried to change it but apparently one can not modify the label of an already created entry. Shame that I didn't pursued this further but yesterday after the debugging I was a little exhausted and did't think with clarity :)

    What I did now was to delete the Windows entry (the one that works) and recreated myself manually with the correct label. And it worked like a charm.

    Just for reference and for others, there is a "typo" in the code you gave me. The correct one is:

    efibootmgr -c -d $hard_drive -p "$(parse_json "$current_partition" .Number)" -L "Windows Boot Manager" -l "$(parse_json "$current_partition" .EfiBootLoader)" 2>>$CLIENT_LOG

    Thanks a lot!

  6. clonedeploy

    27 Jul 2016 Administrator

    Sounds good, I guess should implement something to capture the original label in the next version. That is definitely a poorly implemented EFI firmware. I have also updated the typo in my original post.

 

or Sign Up to reply!