SCCM OSD – Clear PXE Advertisement Issue
Durante la distribuzione dei sistemi operativi tramite la funzionalità di OSD disponibile tramite SCCM 2007, la pubblicizzazione di Task Sequence (Sequenza di attività automatizzate) obbligatorie (Mandatory) prevede che venga sottoscritto un record nel database SMS_DB affinché un successivo riavvio del computer, post installazione, non esegue un successivo avvio tramite PXE e quindi una nuova installazione. Se tale non fosse, l’attività andrebbe a finire in un ciclo illimitato di installazione, oppure ancora più pericoloso, installerebbe il nuovo sistema operativo anche sui computer su cui non necessità nessun tipo di attività simile. La funzionalità di prevenzione che SCCM mette a disposizione, prevede che successivamente al primo riavvio tramite PXE e contestualmente alla connessione tramite TFTP per scaricare l’immagine di avvio WinPE ( sia esso corretto oppure soggetto ad errori), l’operazione viene bloccata. Per rieseguire un successivo tentativo è necessario eseguire la pulizia del record, ossia il Clear PXE Advetisement come da figura sottostante:
Selezionando il record in oggetto e premendo il tasto OK, si può riavviare il computer per un successivo tentativo.Le operazioni nel retroscena che permettono quanto descritto sono le seguenti:
- Le Advertisement sono inserite nel DB dal Distribution Manager, subito dopo che sono state create.
- L’SMS PXE Provider utilizza le OLEDB per accedere il DB.
- Determinate Stored Procedures (SP) estraggono i dati dallo State Message e aggiornano la tabella SYSTEM_AUX_Info.
- Durante l’avvio tramite PXE, il computer riceve un indirizzo IP dal DHCP la quale richiesta viene inviata tramite il SMS PXE Provider.
- Subito dopo che il computer riceve un valido indirizzo IP, l’SMS PXE Provide esegue una query per verificare che il computer esiste come record, identificandolo tramite l’SMBIOS GUID oppure il MAC.
- Se il record esiste, allora il PXE server accetta la connessione e le SP NBS_LookupDevice e NBS_GetPXEAction determinano le azioni in merito.
- Questo è anche il momento in cui i dati vengono registrati nella colonna lastPXEAdvertisement attraverso l’SMSPXE Provider.
- Se l’Adverisement risulta essere più recente dell’ultimo record lastPXEAdverisement, eseguita dal computer, allora il computer viene istruito per scaricarsi l’immagine di avvio WinPE, altrimenti l’attività viene abortita e il compute continuerà con la sequenze di avvio registrata nel BIOS.
- L’SMS PXE Provider aggiornerà di conseguenza le informazioni nel DB.
Durante l’attività di distribuzione via PXE è possibile esaminare i vari passi attraverso il SQL Profiler oppure tramite il log di SCCM smsprov.log. Si può osservare la seguente query:
select
SMS_SystemAuxInfo.LastPXEAdvertisementID,SMS_SystemAuxInfo.LastPXEAdvertisementTime,
SMS_SystemAuxInfo.Netbios_Name0,SMS_SystemAuxInfo.ItemKey,SMS_SystemAuxInfo.SMBIOS_G
UID0 from System_AUX_Info AS SMS_SystemAuxInfo where
SMS_SystemAuxInfo.Netbios_Name0 = "XXXXXXX"
ExecQueryAsync: START SELECT SAI.LastPxeAdvertisementTime, SAI.AdvertisementID from
SMS_SystemAuxInfo As SAI Join SMS_Advertisement As ADV On
SAI.AdvertisementID=ADV.AdvertisementID WHERE SAI.NetbiosName = 'XXXXXX'
Qualora le attività sopra descritte fossero impedite in qualche modo, come ad esempio fosse impossibile raggiungere il DB oppure scriverci dentro, il ciclo di avvio del computer e quindi la distribuzione del sistema operativo potrebbe fallire.
Un caso tipico è quello durante il quale il record Clear PXE Adveritisement non risulta presente. La causa più frequente è dovuto alla configurazione del PXE Point in SCCM, per la quale l’accesso al DB è delegato attraverso l’utilizzo dell’account computer (PSP Computer name). Se tale account non possiede nessun tipo di accesso al DB, allora il computer entra in un ciclo di installazione infinito. Bisogna in tal caso configurare il PSP per accedere al DB tramite un account che possa leggere e scrivere nel DB.