Dual Images windows 10 and Ubuntu 16 with UEFI
-
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 . -
@fernando-gietz Ok if that commands works (sounds like you agree). Then you have a few options.
- Sebastian can do his magic and see if fog can detect this condition.
- (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.
- 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.
-
@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.
-
@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…
-
@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.
-
@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$.
-
@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)```
-
I have deployed twice the computer with the dual image and now the grub appears at the first time O_o
-
@fernando-gietz OK what did you change? Magic only happens on Television.
-
No, any change. The only change was the bcdedit command (following the tutorial that you attached)
-
@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?
-
@george1421 I have recaptured the image.
- Install W10
- Install Ubuntu 16
- Boot under W10 and run the bcdedit command
- Capture the image
-
@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.
-
@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.
-
@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.
-
@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…
-
@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.
-
@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. -
@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)```
-
I have made a test.
I have download a dual image, in the first boot W10 like we expect, in the second boot appears the grub menu. The UEFI variables are updated by W10.
If you download an image with only Linux, then the computer doesn’t detect any OS and dones’t boor. You need repair the boot or update the UEFI variables to rebirth the computer.