• HP ProLiant DL360 G5 и пустой UUID

    imageРаботая с серверами HP ProLiant столкнулся с ситуацией когда в BIOS отсутствует информация о серийном номере сервера а значение UUID забито нулями. Как выяснилось, данная проблема может всплыть например после выхода из строя и замене батареи "таблетки" на материнской плате сервера. В некоторых случаях это может стать источником мелких неприятностей, например невозможностью получить соответствующую информацию из систем инвентаризации и/или мониторинга.

    image

    По началу я бросился искать на сайте вендора какой-нибудь инструмент для регенерации UUID, но потом вспомнил что если зайти в BIOS сервера, то в разделе управления расширенными настройками Advanced Options можно забить фактическую информацию в поля Serial Number и Product ID с шильдика который расположен на лицевой стороне сервера.

    image

    После этого при следующей перезагрузке сервера UUID будет автоматически сгенерирован на основе введённых данных

    image

  • SCCM 2012 - Возвращаясь к проблеме Double UUID

    imageС приходом новой версии Configuration Manager вернулась старая проблема невозможности развёртывания ОС при наличии совпадающих аппаратных идентификаторов Universal Unique Identifier (UUID или BIOS GIUD) материнских плат. Эксперименты с новой версией SCCM показали, что, как и в прошлой версии, проблема проявляет себя на начальном этапе развёртывания ОС в двух местах :

    1) При загрузке по PXE не загружается первичная среда установки WinPE
    2) При загрузке с носителя CD/USB после успешной инициализации WinPE возникает ошибка получения последовательности задач Task Sequence

    Разумеется самым правильным методом решения этих проблем можно считать регенерацию аппаратного идентификатора на тех компьютерах, где это возможно технически. Если такой подход не рассматривается в силу каких-то сложностей, воспользуемся обходными решениями, которые удалось успешно проверить.

    Читать далее...

  • SCCM 2007 R2 OSD - Развертывание ОС при наличии Double UUID

    imageВ процессе перехода на Windows 7 всё чаще стали сталкиваться с проблемой невозможности развертывания OC с SCCM 2007 R2 из-за существующих совпадений Universal Unique Identifier (UUID) материнских плат. Ранее уже рассматривался один из возможных вариантов решения этой проблемы в заметке SCCM & Double UUID.  Но рассмотренный метод может подходить далеко не для всех компьютеров, так как не во всех случаях имеется возможность штатной замены UUID, тем более учитывая тот факт, что во многих ИТ инфраструктурах не так уж и редко можно встретить небрендовые сборки ПК. В статье ITBand.ru - Dublicate SMBIOS GUID приводится пример SQL запроса для построения отчёта SCCM, который поможет нам оценить "масштабы бедствия" среди существующих у нас клиентов Configuration Manager. То есть чтобы получить развёрнутую информацию о том какие UUID встречаются в базе данных SCCM более 1 раза и в каком количестве создадим отчет с запросом:

    select rs.Name0, rs.SMBIOS_GUID0, cnt

    from dbo.v_R_System as RS

    inner join ( select SMBIOS_GUID0, count (*) as cnt

    from dbo.v_R_System where SMBIOS_GUID0 is not NULL

    group by SMBIOS_GUID0 having count(Name0) > 1 ) as q

    on rs.SMBIOS_GUID0 = q.SMBIOS_GUID0

    order by cnt

    Результат вывода будет выглядеть примерно так:

    image


    Для получения сводного количества вариантов совпадающих UUID немного модифицируем запрос:

    select distinct rs.SMBIOS_GUID0, cnt

    from dbo.v_R_System as RS

    inner join ( select SMBIOS_GUID0, count (*) as cnt

    from dbo.v_R_System where SMBIOS_GUID0 is not NULL

    group by SMBIOS_GUID0 having count(Name0) > 1 ) as q

    on rs.SMBIOS_GUID0 = q.SMBIOS_GUID0

    order by cnt


    Теперь видно, что например в нашем "зверинце" 37 разных вариантов UUID которые попадаются на более чем одном компьютере.
     

    image

    Учитывая тот факт, что нереально исправить ситуацию по совпадению в полной мере, было решено  прибегнуть к методу "обмана" SCCM.

    Решение предлагаемое в заметке Idan at myITforum.com - How to enable OSD with duplicate UUID in Configuration Manager было применено, но в ситуации когда установка ОС производится с использованием загрузочного носителя  (не используется PXE) – безрезультатно. Возможно, что в случае с PXE этот метод и прокатил бы, но я если честно его в связке с PXE не проверял, так как такой режим установки у меня исключен изначально из-за того, что достаточно больше количество компьютеров имеют сетевые адаптеры не поддерживающие эту технологию.

    В случае установки с загрузочного носителя решено было воспользоваться методом, описанным в комментарии от Александр Sh, который и помог избежать проблемы в нашей ситуации. Далее опишу этот метод по порядку действий.

    Начнём с того что нам нужно будет сгенерировать некое уникальное значение UUID. Сделаем это с помощью PowerShell командой:

    [guid]::NewGuid().ToString().ToUpper()

    Запишем полученное значение, например в нашем случае 3A2F1978-584C-4B29-9BD1-EF737880C3AB, так как оно нам понадобится дальше.

    Откроем SQL Server Management Studio, подключимся к базе данных SCCM и найдём хранимую процедуру NBS_LookupDevice (Programmability > Stored Procedures > dbo.NBS_LookupDevice):

    image

    В код процедуры добавим конструкцию подмены переменной @SMBIOS_GUID на сгенерированное нами ранее уникальное значение:

      IF @SMBIOS_GUID IN ('00000000-0000-0000-0000-000000000000',

      'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF',

      '03000200-0400-0500-0006-000700080009',
    <Здесь перечисляем все дублирующиеся варианты
    UUID> ,

      'FEFEFEFE-FEFE-FEFE-FEFE-FEFEFEFEFEFE')

      BEGIN

          SET @SMBIOS_GUID ='3A2F1978-584C-4B29-9BD1-EF737880C3AB';

      END

    Полученный ранее из отчёта список неуникальных UUID перечисляем через запятую и заключаем каждое значение в кавычки.

    Готовый блок подмены вставляем в начало процедуры как показано в примере:

    image

    После внесённых изменений выполним Execute и попробуем снова запустить процедуру развертывания клиента с дублирующимся UUID. После успешной установки ОС мы сможем убедиться в том, что клиент SCCM зарегистрировался в БД со своим реальным "кривым" UUID:

    image

    Стоит помнить, что после применений обновлений к Configuration Manager, возможно код хранимой процедуры будет возвращён в исходное состояние, и нам снова потребуется его корректировка.

  • SCCM & Double UUID

    imageРабота с SCCM продолжает приносить нам сюрпризы. В ходе того как мы начали использовать функционал OS Deployment вскрылись новые подробности.

    При очередном развертывании целевой компьютер (HP DX7400) упорно отказывался начинать процесс установки ОС.

    Для изучения проблемы пришлось в загружаемом образе WinPE включить возможность отладки, после чего мы получили доступ к логам WinPE клиента и обнаружили что на этапе когда загруженный WinPE клиент обращается на SCCM сервер для получения задания развертывания ОС – происходит коллизия. А именно, SCCM сервер почему то определяет этого клиента как уже существующий в БД SCCM компьютер (совершенно другой но такой же модели - HP DX7400)…Далее  путём долгих мытарств выяснилось что эти два компьютера имеют одинаковый аппаратный UUID, который прошит в DMI области BIOS материнской платы на заводе производителе.
    Выяснилось что если SCCM находит в своей базе данных совпадающий UUID то он как принимает два разных компьютера за один и тот же…что и является причиной отказа в развертывании… По доступной в интернете информации - дублирующимися UUID отличаются некоторые производители оборудования, дочерние предприятия DELL и HP. Сначала мы попробовали решить эту проблему «софтверно», то есть я открывал кейс в тех.поддержке MS…но как и следовало ожидать их ответ был неутешительным- «Обращайтесь к разработчику оборудования». Пока изучал проблему узнал интересную вещь -  в свое время компания Microsoft для получения производителями статуса «Сертифицировано для Microsoft Windows» одним из условий выдвигала наличие у производителя поддержки RFC определяющего наличие и уникальность аппаратного UUID…но как оказалось наши «славянские братья» (если не путаю страна-производитель этих рабочих станций HP была Румыния) забили на все эти глупости )))
    Потом была долгая переписка с тех.поддержкой HP…и пока она длилась было найдено обходное решение по сносу с таких компьютеров всех данных BIOS из области DMI. Но при этом из BIOS, как следствие, вытирался не только UUID но и S/N и P/N девайса, что уже само по себе не очень красиво получалось…хотя при желании эти данные можно было вернуть назад с помощью ещё одной немецкой хакерской тулзы … но все эти операции выглядели очень муторно и неудобно...
    Совсем недавно наша переписка с инженером HP из !!!Индии!!! закончилась. Мы получили и успешно провели испытания утилиты SMBCFG от Phoenix Technologies. Данная тулза позволяет в режиме MS-DOS выполнить команду по регенерации аппаратного UUID не теряя при этом прочих данных их DMI области BIOS.

    Делается это одной командой:

    SMBCFG.EXE /UUID

    Столкнувшиеся с подобной проблемой могу стянуть утилиту отсюда

    PS: Обращаю ваше внимание на то что корректность работы утилиты проверена только на рабочих станциях HP DX7400 (Bios AWARD-Phoenix)