Creating a bootable BIOS.wim? RRS feed

  • Question

  • Hey all,

    I successfully deploying images from the server but I'm wondering if there's a way of doing this. My problem is the muppets in production find it too time consuming to flash the BIOS before installing (we build new machines). I've already removed the need to press F12 a dnshortened the server name an logon to save time but tis' still not enough. What I'd like to do is create a default BIOS utility image that new machines boot to first before they can install an OS image - thereby forcing them to at least check the BIOS date before continuing. Haven't found anyone who's done this or any other posts about it, so I'm either no expressing myself clearly or it's just not possible...

    Monday, February 11, 2008 8:48 AM

All replies


    I'm not sure if I understand you correctly, but do you want to have a customized .wim image that runs a program to check the BIOS date?

    If you have a utility, just updating the startnet.cmd batch file in the .wim image's \windows\system32 directory wouldn't do the job?



    Wednesday, February 13, 2008 6:47 AM
  • We use a custom wim image to deploy Ghost/ImageX images to new hardware. With the startnet.cmd I call a vbscript file that checks the bios version and compares it with the bios version in a text file (no fancy detection yet wether the installed version is newer then the one in the text file though). The vbscript will reboot VistaPE if the update was successfull (e.g. returnvalue = 0)

    Note that we only have Dell hardware and the Windows Bios Update files also work in VistaPE, no guarantees on other brands.


    Code Snippet



    Option Explicit

    Const ForReading=1,ForWriting=2,ForAppending=8

    Dim strComputer
    Dim objWMIService, colBios, objBios, colItems, objItem
    Dim strBiosVersion, strSystemModel
    Dim objShell, rc, cmd, strRecordModel, strRecordVersion, strRecordFile
    Dim objFSO, objTextFile, objOutputFile, strLine, arrRecord, i
    Dim strReturnVal

    Set objShell = CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile("W:\BiosChecker\BiosInfo.txt", ForReading)
    Set objOutputFile = objFSO.OpenTextFile("X:\BiosCheckerLog.txt", ForWriting, True)

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colBIOS = objWMIService.ExecQuery("Select * from Win32_BIOS")
    For each objBIOS in colBIOS
        strBiosVersion = Trim(objBios.SMBIOSBIOSVersion)

    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
    For Each objItem In colItems
          strSystemModel = Trim(objItem.Model)
    objOutputFile.WriteLine "Computer Model: " & strSystemModel
    objOutputFile.WriteLine "FLASHBIOS Version: " & strBiosVersion

    Do While objTextFile.AtEndOfStream <> True
      strLine = objTextFile.ReadLine
      If inStr(strLine, ",") Then
        arrRecord = split(strLine, ",")
        strRecordModel = arrRecord(0)
        strRecordVersion = arrRecord(1)
        strRecordFile = arrRecord(2)
        UpdBios strRecordModel,strRecordVersion,strRecordFile
      End If


    Sub UpdBios(strRecordModel, strRecordVersion, strRecordFile)
        If strRecordModel = strSystemModel Then
         objOutputFile.WriteLine "System found in textfile"
         If strRecordVersion <> strBiosVersion Then
          objOutputFile.WriteLine "FLASHBIOS update available"
          If objFSO.FileExists("W:\BiosChecker\" & strRecordFile) Then
           cmd = "%comspec% /c W:\BiosChecker\" & strRecordFile
           strReturnVal = objShell.Run(cmd,7,True)
       wscript.echo strReturnVal
       wscript.sleep 5000
           if strReturnVal = 0 then
        cmd = "wpeutil reboot"
            objShell.Run cmd, 7, False
       end if
          End If
         End If
        End If  
    End Sub



    Code Snippet



    OptiPlex GX620,A11,GX620A11.EXE
    OptiPlex 745,2.4.1,O745-020401.exe
    OptiPlex 755,A04,O755-A04.exe





    Wednesday, February 13, 2008 9:47 AM
  • What I'm trying to do is create a bootable image of a BIOS Flash utility (like Award etc). You know when you come to the select operatin system? Well I want the default image to be a BIOS flash utility so they HAVE to flash the BIOS. I must add that we are deploying OSes to new machines here by the way...



    Thursday, February 14, 2008 2:15 PM
  • OK - no answer then...


    What about setting the default PXE Boot to another server answering DHCP requests - say a Linux or Ubuntu server which then boots a BIOS Flash ISO and then blacklists the MAC address of that client so it can only boot from the WDS Server...?


    Wednesday, February 20, 2008 2:55 PM