Dual Images windows 10 and Ubuntu 16 with UEFI


  • Developer

    Hi,

    Soon we will receive new PCs with UEFI support, without BIOS legacy support.
    Until now we have use only BIOS legacy mode in our computers and, until now, we only install W7, but the new architectures of the computers doesn’t support this OS and we must install the new computers with W10.

    Really, W10 is not the problem, I have created a new image with this OS, UEFI and GPT partitions. My problem is when I need create a dual image, Ubuntu 16 with W10 under UEFI and GPT partitions.

    I have install W10 with UEFI (secure boot disable), after this I have installed Ubuntu 16. I need repair the boot under Ubuntu with boot repair tool. Then, I have dual boot: Ubuntu and W10. It works fine.

    I define in FOG a new image:

    • Operating system: Windows 10 - (9)
    • Image type: Multiple Partition Image - singel Disk (Not resizable ) - (2)
    • Partition: everything - (1)

    with this config I can deploy this dual image to another PC but the boot doesn’t work fine. I can only boot from windows 10, the GRUB have desappeared :( I need to repair again the GRUB wiht th boot repair tool.

    Any ideas? Anyone use dual images with UEFI and GPT partitions?


  • Developer

    @sebastian-roth I have deployed the dual image to a different machine and … surprise! You are right, the machine boot directly under W10, in the next appears the grub and the posibility to boot under Ubuntu.

    I have found a link about NVRAM, I suppose that will be a lot of them but was the first entry in google :) :

    Understanding UEFI variables: http://en.community.dell.com/techcenter/os-applications/f/4457/t/19589262

    1- What all information is stored in UEFI VARIABLES?
    
    All configuration setup, vendor information, language information, input/output console, error console, and boot order setting all these information are stored in these variables
    
     
    
    2- How to get NVRAM variables
    
    You can use UEFI bootable USB to boot the server. You need to have supported files which can give you UEFI shell once server boot from USB. Once you got the UEFI shell you can run UEFI command "dmpstore" to see the variable available in NVRAM. For more options or help just type “? dmpstore”.  If you have Linux installed before in same server in UEFI mode. You can access the EFI partition. Give this command in UEFI shell "FS0:" Now your “/boot/efi “partition is mounted. You can see the content of this volume using ls/dir command. "dmpstore -all > myvariables"  will collect all NVRAM variable to EFI partition. When you reboot your Linux box you will see this file in your /boot/efi location.
    
     
    
    3- Analysis of variables
    
    You will see lot of entries in the dump file. Variable name, access, data and many more. We will use this example:
    
    Variable NV+RT+BS 'Efi:ConOut' DataSize = 36
    
    This tells that Variable name is Console output which data size is 0X36 in HEX
    
    . This variable is available at runtime (RT) and boot time (BS).
    
    Runtime variable which are available after OS booted and boot time which are available before
    
    OS boot.
    
    4- Mapping of UEFI variables from BIOS to Linux OS.
    
    You can see all these variables are mapped from Linux OS.UEFI variables are mapped through sys entry. Just see to this location /sys/firmware/efi/efivars . It will have all variables which was available in dump file.
    
    All these variables depend on efivarfs kernel modules. If this module is not available you cannot access the variables. It is mounted as  efivarfs file system on /sys/firmware/efi/efivars.
    
     
    
     
    
    Parmeshwr_Prasad
    
    Linux Engineer
    
    Dell Inc (Bangalore)```

  • Developer

    @george1421 said in Dual Images windows 10 and Ubuntu 16 with UEFI:

    So the only solid solution is running that command in the windows environment.

    No I think you should be able to use the efibootmgr command to do essentially the same thing from a running Linux system like FOS for example.


  • Moderator

    @sebastian-roth said in Dual Images windows 10 and Ubuntu 16 with UEFI:

    because bcdedit adds the entry to the NVRAM

    Ah, now I see the picture, and its clear.

    So the only solid solution is running that command in the windows environment. I was under the impression that the command altered something in the media that would be captured by FOG. So possibly a better solution would be to execute that bcdedit command via a FOG snapin.


  • Developer

    @george1421 said in Dual Images windows 10 and Ubuntu 16 with UEFI:

    I think only time will tell of this “hack” is forever or until the next reboot.

    From my point of view the “hack” should be persistent (at least till the next major Windows update but maybe even beyond that) on that very same machine because bcdedit adds the entry to the NVRAM. But this is not what we transfer to other machines when we capture and deploy and image from/to disk…


  • Moderator

    @sebastian-roth said in Dual Images windows 10 and Ubuntu 16 with UEFI:

    Although I haven’t tested yet I am fairly sure that the “fix” won’t work.

    Hmmm… I’m thinking that it will work since the change was made “inside windows” and not by external evil “linux” forces. But who really knows…

    I might also see the change possibly being reverted if he was deploying Windows 10 CBB, on the next refresh.

    I think only time will tell of this “hack” is forever or until the next reboot.


  • Developer

    @george1421 Although I haven’t tested yet I am fairly sure that the “fix” won’t work.

    @Fernando-Gietz Please deploy that image to a completely different machine, one you have never deployed this image to before. I am fairly sure it won’t have the Ubuntu boot menu entry.


  • Moderator

    @fernando-gietz Very, very, nice.

    You can fix it on the front end and then not worry post imaging. That info will help everyone who need to create a dual boot system. Thank you.


  • Developer

    @george1421 I have recaptured the image.

    • Install W10
    • Install Ubuntu 16
    • Boot under W10 and run the bcdedit command
    • Capture the image

  • Moderator

    @fernando-gietz Just for clarity and those who will be doing the same as you: Did you run that command before you recaptured the reference image, or did you add that bcdedit command to the setupcomplete.cmd file?


  • Developer

    No, any change. The only change was the bcdedit command (following the tutorial that you attached)


  • Moderator

    @fernando-gietz OK what did you change? Magic only happens on Television.


  • Developer

    I have deployed twice the computer with the dual image and now the grub appears at the first time O_o


  • Developer

    @Sebastian-Roth I am reading the info about UEFI. Very interesting!!! Now I know more about what is UEFI and how does it work.

    I post the info of the different commands in my test computer:

    gdisk -l /dev/sda
    GPT fdisk (gdisk) version 1.0.1
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with protective MBR; using GPT.
    Disk /dev/sda: 500118192 sectors, 238.5 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 611A1A7F-D5E7-4EB5-87EF-D447B71A8595
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 500118158
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 33851501 sectors (16.1 GiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1          923648         1128447   100.0 MiB   EF00  EFI system partition
       2         1128448         1161215   16.0 MiB    0C01  Microsoft reserved ...
       3         1161216       295318015   140.3 GiB   0700  Basic data partition
       4       295319552       451567615   74.5 GiB    8300  
       5       451567616       467191807   7.5 GiB     8200  
    root@U032668:~# lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0 238,5G  0 disk 
    ├─sda1   8:1    0   100M  0 part /boot/efi
    ├─sda2   8:2    0    16M  0 part 
    ├─sda3   8:3    0 140,3G  0 part 
    ├─sda4   8:4    0  74,5G  0 part /
    └─sda5   8:5    0   7,5G  0 part [SWAP]
    sr0     11:0    1  1024M  0 rom  
    root@U032668:~# blkid
    /dev/sda1: UUID="A47A-9C4F" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="90659379-55aa-43cc-a916-7909278e69d2"
    /dev/sda2: PARTLABEL="Microsoft reserved partition" PARTUUID="ff774eb9-c85f-4dae-aac5-9a8efd46e7b4"
    /dev/sda3: UUID="385A3AFA5A3AB48A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="54366076-6bce-46ae-9046-8528edf1876f"
    /dev/sda4: UUID="5fdf13da-9c89-476b-b994-3e05c3c36e2a" TYPE="ext4" PARTUUID="a30c61be-de90-45e9-a52b-c78c64ea4b19"
    /dev/sda5: UUID="b29da30a-4262-49c2-a7f3-7b3ee9e8a4ea" TYPE="swap" PARTUUID="0953ce8f-1d8d-464a-95af-ad4d724fbbae"
    

    The commands that appears in the blog:

    root@U032668:~# efibootmgr -v
    BootCurrent: 0014
    Timeout: 0 seconds
    BootOrder: 0014,0017,000C,000A,000F,0013,0010,000D,000E,0012,000B,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,0011,0015
    Boot0000  Startup Menu	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)....ISPH
    Boot0001  System Information	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0002  Bios Setup	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0003  3rd Party Option ROM Management	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0004  System Diagnostics	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0005  System Diagnostics	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0006  System Diagnostics	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0007  System Diagnostics	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0008  Boot Menu	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0009  HP Recovery	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot000A  USB:  	PciRoot(0x0)/Pci(0x14,0x0)N.....YM....R,Y.....ISPH
    Boot000B  MTFDDAK256TBN-1AR1ZABHA 	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot000C* IPV4 Network - Intel(R) Ethernet Connection (H) I219-LM	PciRoot(0x0)/Pci(0x1f,0x6)/MAC(c8d3ffbd6a14,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)N.....YM....R,Y.....ISPH
    Boot000D* MTFDDAK256TBN-1AR1ZABHA : 	BBS(HD,MTFDDAK256TBN-1AR1ZABHA : ,0x400)/PciRoot(0x0)/Pci(0x17,0x0)/Sata(0,0,0)......ISPH
    Boot000E  USB:  	BBS(65535,,0x0)/PciRoot(0x0)/Pci(0x14,0x0)......ISPH
    Boot000F* hp HLDS DVDRW GUD1N 	PciRoot(0x0)/Pci(0x17,0x0)/Sata(1,0,0)N.....YM....R,Y..0..ISPH
    Boot0010* Intel Corporation: IBA CL Slot 00FE v0106	BBS(Network,Intel Corporation: IBA CL Slot 00FE v0106,0x0)/PciRoot(0x0)/Pci(0x1f,0x6)......ISPH
    Boot0011  Network Boot	FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9d8243e8-8381-453d-aceb-c350ee7757ca)......ISPH
    Boot0012* hp HLDS DVDRW GUD1N : 	BBS(CDROM,hp HLDS DVDRW GUD1N : ,0x400)/PciRoot(0x0)/Pci(0x17,0x0)/Sata(1,0,0)...0..ISPH
    
    root@U032668:~# parted /dev/sda
    GNU Parted 3.2
    Usando /dev/sda
    ¡Bienvenido/a a GNU Parted! Teclee «help» para ver la lista de órdenes.                                                                  
    (parted) p                                                                
    Modelo: ATA MTFDDAK256TBN-1A (scsi)
    Disco /dev/sda: 256GB
    Tamaño de sector (lógico/físico): 512B/4096B
    Tabla de particiones: gpt
    Disk Flags: 
    
    Numero  Inicio  Fin    Tamaño  Sistema de archivos  Nombre                        Banderas
     1      473MB   578MB  105MB   fat32                EFI system partition          arranque, esp
     2      578MB   595MB  16,8MB                       Microsoft reserved partition  msftres
     3      595MB   151GB  151GB   ntfs                 Basic data partition          msftdata
     4      151GB   231GB  80,0GB  ext4
     5      231GB   239GB  8000MB  linux-swap(v1)```

  • Moderator

    @quazz Great point!. I have another thread where I’m collecting drive geometry to help the devs understand what typical drive configurations look like. I ran into an issue where I wasn’t able to mount partitions of 2 of my home computers that are win10 EFI systems. I thought something changed in the Fall 2017 creators update to where FOS couldn’t mount the disk. Long story short is was the fast boot that was leaving the partitions marked as mounted and now allowing FOS to remount the partitions.

    After I was clued in by Sebastian I turned off fast boot and was able to mount and map the partitions. Very annoying that feature is. Thank you, M$.


  • Moderator

    @fernando-gietz Does it consistently work after using George’s command? (even if you shutdown and do a ‘cold boot’?)

    My theory is that if you have Windows 10 Fast Boot enabled it will skip that bootloader and boot straight to Windows, however that only happens if you shutdown -> boot as opposed to reboot. Windows 10 Fast Boot does a lot of annoying stuff like make it very hard (or impossible on certain devices) to get into BIOS during boot.


  • Developer

    @sebastian-roth I don’t know very much about UEFI, until now the hardware had legacy support and we worked in this mode. But, the new hardware which is coming only support UEFI, then we need to learn to work under this new mode :( Thanks for the link, I will read it … what a pain!!!

    I am not using the new hardware, I don’t know which will be, and to test the UEFI I am using HP 800 G2 eliteDesk. This hardware have compatibility with BIOS legacy.

    @sebastian-roth said in Dual Images windows 10 and Ubuntu 16 with UEFI:

    So here we go. The boot order/list in real native UEFI systems is not on disk. So far we don’t capture the NVRAM state of a machine as far as I know. This is definitely something we need to add to the todo list. On Windows only systems it’s probably working out fine most times so we don’t see an issue. But for UEFI dual booting systems we need to find a solution.

    We will follow with this … waiting…


  • Developer

    @Fernando-Gietz The “issue” from my point of view is that your UEFI firmware is going real EFI which is actually a nice thing. But it is causing a problem.

    There is a really good resource on EFI here: https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/

    On your bog-standard old-skool BIOS PC, […], the very start of the disk describes the partitions on the disk in a particular format, and contains a ‘boot loader’ […]

    Ok we do capture the MBR stuff in FOG! But now read on to the new stuff:

    UEFI booting: […] it is completely different. […] many UEFI firmwares implement some kind of BIOS compatibility mode, sometimes referred to as a CSM.

    Now you see why I think your system goes real EFI. Probably it doesn’t to the CSM stuff. So let’s talk about this:

    […] native UEFI booting […] UEFI boot manager […] can be configured by modifying architecturally defined global NVRAM variables.

    So here we go. The boot order/list in real native UEFI systems is not on disk. So far we don’t capture the NVRAM state of a machine as far as I know. This is definitely something we need to add to the todo list. On Windows only systems it’s probably working out fine most times so we don’t see an issue. But for UEFI dual booting systems we need to find a solution.


  • Moderator

    @fernando-gietz Ok if that commands works (sounds like you agree). Then you have a few options.

    1. Sebastian can do his magic and see if fog can detect this condition.
    2. (assuming your windows image is sysprep’d before image capture) Have fog copy in a setupcomplete.cmd file (or patch your current one) during post install script execution to have Windows run that command via the setupcomplete.cmd execution.
    3. If your windows system is not sysprep’d then have the post install script copy a batch file with the command in it, and a shortcut that points to where the batch file will be copied (i.e. c:\windows\setup). Place the short cut in the admin user’s startup directory. Have the batch file that is called delete the short cut in the startup directory once the batch file has run. This method is a bit more messy but does work.

    Strictly speaking I don’t see this as a fog issue since it existed before fog imaging. FOG imaging is only putting back what “should be” in place when it detects a windows setup. With that said, you do have a few ways to go about making this work, and without much pain.


  • Developer

    I test the changes that @george1421 says and works fine.
    The first boot goes direct to W10 but in the next one appears grub menu .


Log in to reply
 

428
Online

39.3k
Users

11.0k
Topics

104.4k
Posts

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.