Surface Pro - PXE boot - Need to image for mass deployment
-
The MS Surface Pros use UEFI pxe boot to boot to the network. We have done some preliminary work with netbooting UEFI machines and have had mixed results. We are able to get the Surface Pro and Dell 3330 to boot to the network and display a grub2 menu successfully. The Dell we can use clonezilla across the network to upload and deploy an image. With the Surface we can connect to a server but a 1/10th the speed of the Dell and clonezilla is not able to connect to the server as the MS usb nic is not supported.
-
Here are some of our preliminary findings on UEFI pxe booting
Note that not all grub sources contain the necessary
modules to netboot as the net.mod and others are missing or don’t work.
[LIST]
[*][SIZE=3]PXE Boot Windows UEFI hardware to Linux PXE Server [/SIZE]
[/LIST][LIST]
[*][SIZE=3][SIZE=4]--------------------------------------------------------[/SIZE][/SIZE]
[/LIST][LIST]
[*][SIZE=3]Overview[/SIZE]
[/LIST][LIST]
[*][SIZE=3]booting UEFI hardware via PXE is possible by using our existing Linux server environment. [/SIZE]
[/LIST][LIST]
[*][SIZE=3]Setting UEFI booting integrated with legacy PXE booting involves configuration changes to the dhcp server and adding functionality to the tftpboot server.[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Configuring the DHCP server is shown in step 1 and has no hazardous effects on the live network environment as the configuration selects the proper boot method for each instance and as long as no machines are configured to UEFI boot with network as the first option as we currently don’t have a working boot to local disk option [/SIZE]
[/LIST][LIST]
[*][SIZE=3]Configuring a bootable grub2 menu with options and default is very possible[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Booting useful applications via UEFI is possible with hardware compatiblity of some hardware an issue. ie Dell 5420,5530 and MS Surface[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Other Applications will need to be evaluated on a individual basis for grub and hardware compatibily[/SIZE]
[/LIST][LIST]
[*][SIZE=3]UEFI is not mainstream as based on our research very few people or organizations are doing this at this time [/SIZE]
[/LIST][LIST]
[*]1. PXE server and DHCP setup
[/LIST][LIST]
[*][SIZE=3] – Linux server version: Debian Wheezy[/SIZE]
[/LIST][LIST]
[*][SIZE=3] – DHCP configuration file:[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Start with standard fog confiuration to setup working tftp server[/SIZE]
[/LIST][LIST]
[*][SIZE=3]On DHCP server[/SIZE]
[/LIST][LIST]
[*]In /etc/dhcp/dhcpd.conf change Original PXE boot stanza to the following
[/LIST][LIST]
[*]next-server 192.168.0.2
[/LIST][LIST]
[*]option arch code 93 = unsigned integer 16;
[/LIST][LIST]
[*]if option arch = 00:07 {
[/LIST][LIST]
[*]filename “bootx64.efi”;
[/LIST][LIST]
[*]}else if option arch = 00:06 {
[/LIST][LIST]
[*]filename “bootia32.efi”;
[/LIST][LIST]
[*]}else {
[/LIST][LIST]
[*]filename “pxelinux.0”;
[/LIST][LIST]
[*]}
[/LIST][LIST]
[*][SIZE=3]each of the files listed above are located in the root of the tftpboot directory in the example above [/SIZE]
[/LIST][LIST]
[*][SIZE=3] a. pxelinux.0 is setup in the normal fog install[/SIZE]
[/LIST][LIST]
[*][SIZE=3] b. bootx64.efi and bootia32.efi are compliled as grub bootloaders for UEFI explained in Step 2 below.[/SIZE]
[/LIST][LIST]
[*][SIZE=3]There are now 3 boot options that dhcp knows to select based on system achitecture when it boots to dhcp.[/SIZE]
[/LIST][LIST]
[*][SIZE=3] a. 00:07 specifies 64bit hardware UEFI hardware[/SIZE]
[/LIST][LIST]
[*][SIZE=3] b. 00:06 specifies 32bit hardware UEFI hardware [/SIZE]
[/LIST][LIST]
[*][SIZE=3] c. pxelinux.0 specifies normal non-UEFI pxeboot setup[/SIZE]
[/LIST][LIST]
[*]2. Modules for Grub2:
[/LIST][LIST]
[*][SIZE=3]We have found 2 sources that work for creating the .efi files needed to boot hardware to the server many do not[/SIZE]
[/LIST][LIST]
[*]On tftpboot server run
[/LIST][LIST]
[*]apt-get install grub-efi-ia32-bin grub-efi-amd64-bin grub-pc
[/LIST][LIST]
[*]to install grub files needed
[/LIST][LIST]
[*]3. Make efi boot image (Script):
[/LIST][LIST]
[*]vim /root/build64.sh
[/LIST][LIST]
[*]grub-mkimage --format=x86_64-efi
[/LIST][LIST]
[*]–config=/tftpboot/EFI/boot/grub.cfg
[/LIST][LIST]
[*]–output=/tftpboot/bootx64.efi
[/LIST][LIST]
[*]ls /usr/lib/grub/x86_64-efi | sed -n 's/\.mod//gp'
[/LIST][LIST]
[*][SIZE=3]At this point a 64bit UEFI piece of hardware should be able to boot to the network and get a grub prompt[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Note a. various versions of grub have different capabilities regarding network booting as some do not include the necessary network modules[/SIZE]
[/LIST][LIST]
[*][SIZE=3][SIZE=4] b. [/SIZE][SIZE=4][COLOR=#dd0000][SIZE=4][COLOR=#dd0000]–config=[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4] points to the location of the grub.cfg file in step 4 below[/SIZE][/SIZE]
[/LIST][LIST]
[*][SIZE=3][SIZE=4] c. [/SIZE][SIZE=4][COLOR=#dd0000][SIZE=4][COLOR=#dd0000]–output=[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4] is the location of the folder where the compiled file ends up[/SIZE][/SIZE]
[/LIST][LIST]
[*][SIZE=3][SIZE=4] d. line starting [/SIZE][SIZE=4][COLOR=#dd0000][SIZE=4][COLOR=#dd0000]`ls[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4] specifies location of grub modules and what to include, in this example everything[/SIZE][/SIZE]
[/LIST][LIST]
[*][SIZE=3] two Distros that worked at this point are[/SIZE]
[/LIST][LIST]
[*][SIZE=3] – From Debian Sid[/SIZE]
[/LIST][LIST]
[*][SIZE=3] – From Ubuntu mini ISO (Saucy, less modules than Sid)[/SIZE]
[/LIST] -
Continued …
[LIST]
[*]4. Booting applications tested with Grub:
[/LIST][LIST]
[*][SIZE=3]to make the grub bootloader more freindly you can setup a menu config file on the server that allows you to perform various functions like chainloading a linux kernel or even an iso[/SIZE]
[/LIST][LIST]
[*][SIZE=3](this is like the menu in PXE that allows you to choose an option at boot time) we started by copying the /EFI/boot/ folder from the clonezilla-live saucey CD to the tftpboot folder on the server then editing the grub.cfg file. This file resides on the server and can be changed like any text file in linux, this makes it very easy to change options[/SIZE]
[/LIST][LIST]
[*]vim /tftpboot/EFI/boot/grub.cfg
[/LIST][LIST]
[*]set prefix=/EFI/boot/
[/LIST][LIST]
[*]set default=“1”
[/LIST][LIST]
[*]if loadfont $prefix/unicode.pf2; then
[/LIST][LIST]
[*]set gfxmode=auto
[/LIST][LIST]
[*]insmod efi_gop
[/LIST][LIST]
[*]insmod efi_uga
[/LIST][LIST]
[*]insmod gfxterm
[/LIST][LIST]
[*]terminal_output gfxterm
[/LIST][LIST]
[*]fi
[/LIST][LIST]
[*]set timeout=“5”
[/LIST][LIST]
[*]set hidden_timeout_quiet=false
[/LIST][LIST]
[*]#if background_image $prefix/ocswp-grub2.png; then
[/LIST][LIST]
[*]# set color_normal=black/black
[/LIST][LIST]
[*]# set color_highlight=magenta/black
[/LIST][LIST]
[*]#else
[/LIST][LIST]
[*]# set color_normal=cyan/blue
[/LIST][LIST]
[*]# set color_highlight=white/blue
[/LIST][LIST]
[*]#fi
[/LIST][LIST]
[*][SIZE=3][SIZE=4][COLOR=#0000dd][SIZE=4][COLOR=#0000dd]menuentry “Boot Local Drive([/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4][COLOR=#dd0000][SIZE=4][COLOR=#dd0000]not working[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4][COLOR=#0000dd][SIZE=4][COLOR=#0000dd])”{[/COLOR][/SIZE][/COLOR][/SIZE][/SIZE]
[/LIST][LIST]
[*]set root=(hd0,1)
[/LIST][LIST]
[*]chainloader +1
[/LIST][LIST]
[*]}
[/LIST][LIST]
[*][SIZE=3][SIZE=4][COLOR=#0000dd][SIZE=4][COLOR=#0000dd]menuentry “Ubuntu Mini Net installer ([/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4][COLOR=#dd0000][SIZE=4][COLOR=#dd0000]works with MS SURFACE and Dell 3330 60mb[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4][COLOR=#0000dd][SIZE=4][COLOR=#0000dd])”{[/COLOR][/SIZE][/COLOR][/SIZE][/SIZE]
[/LIST][LIST]
[*]# search --set -f /vmlinuz
[/LIST][LIST]
[*]linux /linux boot=live username=user config noswap edd=on nomodeset noeject locales= keyboard-layouts= irqpoll ip=10.10.10.1 vga=normal fetch=[url]http://10.10.10.1/efi.img[/url]
[/LIST][LIST]
[*]initrd /initrd.gz
[/LIST][LIST]
[*]}
[/LIST][LIST]
[*][SIZE=3][SIZE=4][COLOR=#0000dd][SIZE=4][COLOR=#0000dd]menuentry “Clonezilla live (Failsafe mode [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4][COLOR=#dd0000][SIZE=4][COLOR=#dd0000]Works with DELL 3330 73mb[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=4][COLOR=#0000dd][SIZE=4][COLOR=#0000dd])”{[/COLOR][/SIZE][/COLOR][/SIZE][/SIZE]
[/LIST][LIST]
[*]# search --set -f /vmlinuz
[/LIST][LIST]
[*]linux /vmlinuz boot=live username=user config noswap edd=on nomodeset noeject locales= keyboard-layouts= ocs_live_run=“ocs-live-general”
[/LIST][LIST]
[*]ocs_live_extra_param=“” ocs_live_batch=no irqpoll ip=10.10.10.1 vga=normal nosplash
[/LIST][LIST]
[*]fetch=tftp://10.10.10.1/filesystem.squashfs
[/LIST][LIST]
[*]initrd /initrd.img
[/LIST][LIST]
[*]}
[/LIST][LIST]
[*][SIZE=3] – Clonezilla version: [/SIZE]
[/LIST][LIST]
[*][SIZE=3] – Ubuntu Mini Network Installer ISO version:[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Distro ISOs can be downloaded and files directly extracted from the /boot/[/SIZE]
[/LIST][LIST]
[*][SIZE=3]Note for a menu item to sucessfully boot the hardware it must be compatible with the hardware ie. contain the necessary network driver and other hardware drivers.[/SIZE]
[/LIST][LIST]
[*]5. UEFI PXE Boot Test Results:
[/LIST][LIST]
[*][SIZE=3] a.) Dell3330: [/SIZE]
[/LIST][LIST]
[*][SIZE=3]-- Works flawlessly with clonezilla and Unbuntu mini iso[/SIZE]
[/LIST][LIST]
[*][SIZE=3]-- The initial network download speed is what we expect 65MB to 100MB[/SIZE]
[/LIST][LIST]
[*][SIZE=3] b.) MS surface pro (version 1 with firmware updates and an MS USB-NIC adapter)[/SIZE]
[/LIST][LIST]
[*][SIZE=3]-- Grub network slow: Initial download for the next booting image is very slow, 75 to 550kb, avg 200kb[/SIZE]
[/LIST][LIST]
[*][SIZE=3]-- With clonezilla:[/SIZE]
[/LIST][LIST]
[*][SIZE=3]-- With Unbuntu mini ISO: Boot sucessfullly and the NIC works in the speed as we expect[/SIZE]
[/LIST][LIST]
[*][SIZE=3] c.) Various other hardware like Dell 5530 and Dell 5420 are not necessarily fully UEFI compliant in our experience[/SIZE]
[/LIST][LIST]
[*]6. What we need to do next:
[/LIST][LIST]
[*][SIZE=3] a. get a working “Boot Local Disk” default item working this would be like the default in the FOG pxe menu[/SIZE]
[/LIST][LIST]
[*][SIZE=3] b. Identify kernels and ISOs compatibilty with various hardware.[/SIZE]
[/LIST][LIST]
[*][SIZE=3] c. see if we can speed up MS Surface tablet boot speed either through improved grub driver or smaller kernel images[/SIZE]
[/LIST][SIZE=4][/SIZE]
[SIZE=4] [/SIZE]
[SIZE=4][/SIZE] -
hello
i enter in this topic, as we plan to buy 30 tablets. 2 models are being tested, MS Surface Pro 2 and Dell Venu 11.
Dell has not sent their model yet, whereas MS lent us one.I have the Microsoft ethernet adapter (MS #1552) but no boot from FOG, whereas all my 80 desktop and 30 actual laptops recognize the FOG PXE boot.
I read SCCM 2012 can reinstall MS Surface so it means there’s a way to mass deploy OS…
MattT : how do you get a boot on Surface ?
I disabled in the Surface’s BIOS the secured keys, so now i can see a tiny text “Start PXE boot on IPv4 …” then quasi immediately “Start PXE boot on IPv6”… and screen hangs on there.I applyied all may 2013 patch/firmware, but no choixe at all on which target to boot from… Thanks for your reply.
-
Hello,
I ran some tests.
I have my FOG server, and to check, i installed a Windows Deployment Server (2008 R2).
The error message given on the surface is displayed too quickly (1/10th second) to be read, but i took a movie with my smartphone in order to get the message.With FOG, the error message is :
[CODE]>> Checking Media presence …
Media present …
Start PXE over IPv4.
[… 1/10th second after…]
Start PXE over IPv6.[/CODE]And i can wait …
With my movie, i can replay what happened at the 1/10th second :
[CODE]
Station IP address is A.B.C.D (a correct IP address from my DHCP scope)
Downloading NBP file …
Succeed to download NBP file.
[/CODE]
and then Surface Pro 2 switches to IPv6. (i have no IPv6 in my network).
On WDS, i get this error :
[CODE]
Station IP address is A.B.C.D (a correct IP address from my DHCP scope)
Server IP address is 1.2.3.4 (ok it’s my WDS)
NBP filename is boot\x64\wdsmgfw.efi
NBP filesize is 0 bytes
PXE-E23: client received TFTP error from server.
[/CODE]
this file doesn’t exist, that explains the error. Maybe my WDS version is too old (2008 R2 for Surface Pro 2 with Windows 8.1 pro) but the PXE seems to start…
There’s something in pxelinux.0 the Surface Pro 2 doesn’t recognize… -
found this thread : [url]http://fogproject.org/forum/threads/eufi-bios-and-fog.162/[/url]
i’m trying it. -
Do these systems support legacy PXE boot mode?
I ask because if it’s using the network stack with UEFI enabled, it’s only going to boot to something that’s efi compatible. The earliest windows that supports UEFI PXE Boot is Windows Server 2012, not any variant of 2008 or below if doing WDS setup.
I’ve been trying to get UEFI enabled, but it’s waiting on iPXE to support it properly that’s been the wait for me. All other methods that “work” are usually booted thru USB or CD Drive.
-
I think you’re right …
it waits for a correct boot, but doesn’t find it, so FOG cannot deploy Surface Pro 2 at the moment.MDT 2013 special update for Windows 8.1 may do the job…
-
Sorry for the long delay in responding
image/deploy UEFI based hardware.
This is not yet setup with fog other than having used an existing fog server as the platform for our testing. What we were able to accomplish is have dhcp provision the appropriate boot files for
- legacy bios based PXE booted hardware (what FOG currently does)
- 64 bit UEFI based hardware (Windows SurfacePro2) ,
- 32 bit UEFI based hardware (Dell Venu Pro )
The DHCP setup in step one sets up the framework for net booting the correct scenario for each.
You then need to setup the grub 2 kernels for 64bit and 32bit respectively. We used the – latest Clonezilla live distro and [SIZE=3]Ubuntu Mini Network Installer ISO as sources for the grub2 that we then created the bootx64.efi file from. [/SIZE]
The grub2 network boot setup happens separately from fog and we have not yet tried to integrate fog into this other than for the existing Legacy PXE setup.
We have been unable to get beyond a grub prompt on 32 bit hardware as we have been unable to find grub2 net.mod files that are needed to establish a network connection once the grub boot loader is loaded. It seems Ubuntu has stopped support for 32bit UEFI
We have been on a bit of a hiatus from this after having gotten to this point and are discussing options for supporting the UEFI based hardware. We know we can at least netboot and get clonezilla to work to image these 64 bit machines and have been waiting and hoping to find others working on this but it seems that for most a one off approach is fine ie boot to USB and image each separately or the big shops with money buy the heavy metal solutions to rollout said machines
We have identified our next goal to try and integrate a fog imaging solution with .33b but have not had much time to devote to this.
-
Hello
thanks for your feedback ! basically, what is the difference between these different boots :
- PXE
- legacy
- UEFI 32 & 64 bits ?
What i tried :
-
[B]Amir’s solution[/B] in the other post i mentionned earlier. But for UEFI 64 bits, it doesn’t work for me. I think i misunderstood something, because i followed at the letter his instructions and still no result.
-
[B]adapt pxelinux.0[/B] using gpxe, but i failed
-
[B]test MDT 2013[/B] : i ran in another issue : the USBkey …
i followed a tutorial that made me create a bootable USB key, but one of the files was larger than 4Gb …
UEFI boot via USB can only be done through FAT32, no NTFS, no exFAT, so i lost a lot of time.
I found this article relative to the famous USB key : [url]http://blogs.technet.com/b/askcore/archive/2013/03/20/creating-bootable-usb-drive-for-uefi-computers.aspx[/url]
but i am a bit discouraged to restart from the beginning, next week maybe !- [B]i tried DRBL with Clonezilla[/B], but from apt sources the install doesn’t seem to finish, dunno why for now. DRBL liveCD seems to work, on my ubuntu 12.04 LTS but the Surface pro 2 hangs on “Starting on ipV4”. no download, nothing happens.
is there a way to create a small USB bootable to start boot from USB, then this boot reads PXE from FOG ?
this way, i would use a tiny USB hub for both the “magical USB key” and the ethernet adapter :rolleyes:
-
BTW, my DHCP scope is under Windows 2008R2 (with active directory), if i could use another option for UEFI PXE such as an architecture test or another boot from another IP, i would do so, but i have no such option. I found a “93 option” in DHCP relative to this for windows 2003, but this option has desappeared, i do not want to test on my production network… And create a special server just for that …
-
Sorry for spam, but the “edit” popup remains blank …
I was reading this article : [url]http://www.eightforums.com/tutorials/15458-uefi-bootable-usb-flash-drive-create-windows.html[/url]
that drove me to [url]http://www.eightforums.com/tutorials/2328-uefi-unified-extensible-firmware-interface-install-windows-8-a.html[/url]
well it doesn’t work