Windows install ISO FOG server 1.3



  • After a lot of searching via Google and youtube I can’t find a normal answer. I need to create an unattend install for Windows 8.1 and Windows 10. Then add them to the boot menu in FOG. At first we used FOG 1.2 but I couldn’t get it to work. After a few hours of searching and trying, I came across this link: https://wiki.fogproject.org/wiki/index.php/Advanced_Boot_Menu_Configuration_options

    After I failed to get it to work I found this sentence: Note: The things in this article apply to FOG 1.2.0 and below. FOG 1.3.0 uses a web-based interface that easily alters the boot menu

    So I upgraded the FOG server to 6531 and tried to go to Create New iPXE Menu Entry in the Fog configuration menu.
    There I have to fill the parameters in order to get it to work.
    I added the ISO file to a location I can open with my browser and tried a lot of things in the parameter field. Things like:

    initrd http://${fog-ip}/isos/windows8.iso
    chain memdisk iso raw ||

    and

    kernel http://${fog-ip}/isos/memdisk
    initrd http://${fog-ip}/isos/windows8.iso

    but none of the options I tried seem to work. I hope someone can help me out here.


  • Moderator

    @raice Your instructions would be greatly appreciated, the more the better! We can compare notes and come up with the best solution!

    And for your environment, yes, being able to install windows from the network on many different models of PCs is the best option for you! I imagine you are a fan of Fog’s “Quick Image” feature that doesn’t require a registered computer, eh?


  • Moderator

    @echo off
    
    rem The fileserver IP
    set FILESERVER=192.168.1.155
    
    rem Share on the fileserver.
    set SHARE=INSTALLERS\ISOFILES\0-WINPE
    
    rem Username for the share
    set SHAREUSER=root
    
    rem Password for the share
    set SHAREPASS=root
    
    rem amd64 or x86
    set ARCH=amd64
    
    rem Path to hold working files. Needs about 500MB of free space.
    set PEPATH="c:\winpe_%ARCH%"
    
    rem ##########################################################
    rem     Don't edit anything below here
    rem ##########################################################
     
    echo Creating the PE image
    call copype.cmd %ARCH% %PEPATH% > NUL
     
    echo Mounting the image
    dism /Mount-Wim /WimFile:%PEPATH%\media\sources\boot.wim /index:1 /MountDir:%PEPATH%\mount /quiet
     
    echo Adding commands to the startup script in PE
    echo. >> %PEPATH%\mount\windows\system32\startnet.cmd
    echo ping %FILESERVER% >> %PEPATH%\mount\windows\system32\startnet.cmd
    echo net use z: \\%FILESERVER%\%SHARE% %SHAREPASS% /u:%FILESERVER%\%SHAREUSER% >> %PEPATH%\mount\windows\system32\startnet.cmd
    echo z: >> %PEPATH%\mount\windows\system32\startnet.cmd
    echo z:\64.bat >> %PEPATH%\mount\windows\system32\startnet.cmd
     
    echo Creating the pxeboot directory
    mkdir %PEPATH%\pxeboot > NUL
    mkdir %PEPATH%\pxeboot\Fonts > NUL
    copy /y %PEPATH%\mount\windows\boot\Fonts\*.* %PEPATH%\pxeboot\Fonts\ > NUL
    copy /y "%WinPERoot%\%ARCH%\Media\Boot\boot.sdi" %PEPATH%\pxeboot\ > NUL
    copy /y "%WinPERoot%\%ARCH%\Media\Boot\BCD" %PEPATH%\pxeboot\ > NUL
     
    echo Unmounting the image
    dism /unmount-Wim /MountDir:%PEPATH%\mount /Commit /quiet
     
    echo Optimizing the image
    imagex /EXPORT %PEPATH%\media\sources\boot.wim 1 %PEPATH%\pxeboot\boot.wim > NUL
     
     
    echo.
    echo All the files you need for your PXE server are in: %PEPATH%\pxeboot\
    

    This script needs to be called from the Deployment and Images Tool Environment command prompt.

    I based myself on http://www.wcooke.org/wiki/Installing_Windows_using_PXELINUX but modified it since certain things didn’t work (it would create a corrupt BCD when there’s a perfectly fine working one included with WinPE) and other things were unnecessary.

    If you make changes to the script and call it again make sure to delete the target directory first or your startnet.cmd will get messed up!

    edit: Added ping command to give network drivers time to load before attempting to mount the network location.



  • @Wayne-Workman in out environment that’s nearly impossible. We sell new and second hand laptops. So we got different models every day. Now we can just start the installation and sysprep it afterwards.

    Do you want the documentation or did you write your own now? I almost finished and only need to translate it.


  • Moderator

    @george1421 I make an image per model. ;-) and our 1Gbps network is far faster than USB 2.0 or optical disk. Plus, it’s handy. I will be able to load an alternative OS anywhere at any moment instead of carrying around flash drives.


  • Moderator

    @Wayne-Workman said:

    I’d rather my installations not be automated lol. I WANT to do it manually, then I’ll take an image with FOG and blast it out to 500 computers in an automated fashion…

    Really? And out of those 500 systems, how many are the same make and model? Lets make it a bit harder for our selves like, lets install the french version of MS Windows and then load a US English mui so the Americans can use the computer. :expressionless:

    While I understand what the OP is trying to accomplish there are better/easier ways than using FOG to hand out the iso images (thinking a multiboot flash drive would be less complex).


  • Moderator

    @raice said:

    The next step is to automate the installations.

    I’d rather my installations not be automated lol. I WANT to do it manually, then I’ll take an image with FOG and blast it out to 500 computers in an automated fashion… ;-)



  • I’m using that with FOG 1.2.0:

    :WS2012R2
    sanboot --no-describe --drive 0x81 ${boot_url}discimg/WS2012R2.iso
    goto MENU
    

  • Moderator

    @raice Don’t use x: to mount a network drive as WinPE will mount itself on X: on boot already!



  • @Wayne-Workman @Quazz already on it. Mounted the disk with DISM

    dism /Mount-Image /ImageFile:“c:\temp\winpe\x86_64\media\sources\boot.wim” /index:1 /MountDir:“c:\temp\winpe\x86_64\mount”

    navigated to Windows\System32\startnet.cmd

    It already contains wpeinit. Do not change that line, but add your code after that.
    Mine so far is
    net use z: \x.x.x.x\isos\win7
    net use x: \x.x.x.x\isos\win8
    net use y: \x.x.x.x\isos\win10
    menu.bat
    now creating a menu in a separate batch file
    So after that I created a menu.bat in the system32 folder with
    http://www.sevenforums.com/tutorials/78083-batch-files-create-menu-execute-commands.html
    to start the setup of different windows versions. Now I only have one PE box and 3 Windows installs. The next step is to automate the installations.


  • Moderator

    I’ll post a script to make your own WinPE on Monday. It does require you to have Windows AIK, but you can just download that from Microsoft.

    It allows you to automatically map your network drive and even launch setup with arguments. It all depends on what kind of setup you want of course, but hopefully you’ll at least get some insight in how to approach the situation with it.



  • @Wayne-Workman I am able to get it to work too. Used this: https://technet.microsoft.com/en-us/library/dn613857.aspx to add all network drivers (got around 40 laptops here) and created 2 samba shares on the FOG server. One to the installation folder (where I got win7, win8 and win10) and one to the same folder with write rights. This way I am able to alter the installations from my pc and create an unattended.

    scrolling down shows me you beat me to it :-)


  • Moderator

    I was able to install Windows 10 via WinPE and FOG - after several small hiccups.

    I think I’ve got this ironed out. this deserves a wiki article and a follow-along video.


  • Moderator

    Looking through these instructions:
    https://technet.microsoft.com/en-us/library/dn613857.aspx

    Microsoft’s commands for mounting the wim image has many, many errors. After digging deep throug the help menus with Dism /? and Dism /Mount-Wim /? this is the command I came up with:

    I went ahead and changed amd64 here instead of later, to x86_64

    Dism /Mount-Wim /WimFile:"C:\temp\winpe\x86_64\winpe.wim" /index:1 /MountDir:"C:\temp\winpe\x86_64\mount"

    Microsoft’s steps on adding drivers are also wrong… Here is the correct command in our context, and pulling the drivers from the machine the command is running on. Since my target is an Optiplex 7010, i’m doing this on a working Optiplex 7010 (just for now, and to get something working).

    Dism /image:C:\temp\winpe\x86_64\mount /Add-Driver /Driver:C:\Windows\System32\drivers /recurse
    Dism /image:C:\temp\winpe\x86_64\mount /Add-Driver /Driver:C:\Windows\System32\DriverStore /recurse

    This lists the added drivers:
    Dism /Image:C:\temp\winpe\x86_64\mount /Get-Drivers /all

    Save all changes:
    Dism /Unmount-Wim /MountDir:C:\temp\winpe\x86_64\mount /commit

    Using a remote directory in WinPE and launching setup.exe.
    I created a share called win10$ that has read-only access to all users on one of my windows servers.

    Here’s how I used it in WinPE:

    net use \\mb1\win10$ PasswordGoesHere /USER:DomainNameHere:UserNameHere
    \\mb1$\win10$\setup.exe

    NOTES: Once the WIM image is mounted, you can manually manipulate the files in there, copy, and paste if you wish. But after changes are made, you must use the Unmount / commit command.

    #wiki


  • Moderator

    I may have spoke too soon.

    While WinPE loads just fine through FOG, it doesn’t have any drivers for the NIC. gah!


  • Moderator

    @raice said:

    @Wayne-Workman But it works :-)
    Now I can starting the UEFI project. My working day is over, so get back to you tomorrow. Thanx for your help so far.

    Awesome!



  • @Wayne-Workman But it works :-)
    Now I can starting the UEFI project. My working day is over, so get back to you tomorrow. Thanx for your help so far.


  • Moderator

    @raice Don’t do what they say there.

    Use FOG’s web UI. All you need to put in is in the screen shot below.



  • @Wayne-Workman The link you gave me says the same I think:

    Download the latest version of wimboot and extract the file wimboot to the same directory on your web server.
    Create a text file boot.ipxe in the same directory on your web server, containing:
    #!ipxe

    cpuid --ext 29 && set arch amd64 || set arch x86
    kernel wimboot
    initrd ${arch}/media/Boot/BCD BCD
    initrd ${arch}/media/Boot/boot.sdi boot.sdi
    initrd ${arch}/media/sources/boot.wim boot.wim
    boot

    The files are present at the given location.


  • Moderator

    @raice the ipxe tutorial says to put the resultant files from both of the pre-processes into the same web folder… did you do that?

    This process might be worth creating a video for.


Log in to reply
 

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