Керування пристроями у Windows. Windows Порядок завантаження драйверів та сервісів у Windows Обслуговування конфігурації драйверів під час створення образу Windows


Категорія ~ Технічні поради - Ігор (Адміністратор)

Примітка: Незважаючи на те, що на сайті немає чіткої заяви про сумісність з 64-розрядними версіями Windows, програма цілком чудово почувалася в 64-бітній Windows 7.

Інтерфейс ServiWin зроблений досить просто та зручно. Ви можете перемикатися між списками драйверів і сервісів системи (меню іконок - перші дві), а також налаштовувати відображення та порядок 16 можливих колонок. Крім того, утиліта дозволяє експортувати дані в HTML і відкривати відповідні ключі реєстру для драйверів або служб. Клацнувши правою кнопкою миші на драйвері або сервісі, з'явиться контекстне меню, яке дозволяє не тільки керувати станом, але здійснювати пошук у Google, що безперечно стане в нагоді тим, кому необхідно розібратися з тим, що відбувається на комп'ютері. Також у вас є можливість визначати тип запуску драйвера (відключено, автоматично і т.д.). Насправді це досить рідкісна функція. В основному, утиліти даного класу дозволяють тільки переглядати список драйверів.

ServiWin - це дійсно відмінний інструмент для досвідчених користувачів. Однак, ви повинні розуміти, що як і з будь-яким інструментом, що змінює налаштування системних компонентів, некоректне налаштування або відключення важливих частин системи може призвести до серйозних проблем. Тому якщо ви не знаєте, навіщо призначений драйвер або служба, то не йдіть на поводу у цікавості та не змінюйте налаштування, попередньо не ознайомившись із їх призначенням.

Примітка: Звичайно, ви можете створити резервну копію диска або Windows, а потім вносити зміни. Однак, однаково виявляйте обережність, оскільки відключення таких драйверів, як, наприклад, клавіатури, може зіграти з вами злий жарт.

Тепер ви знаєте, як можна керувати драйверами та службами Windows, а також знати, як отримати детальну інформацію щодо кожного з них.

У попередній частині цього циклу ми розглянули два підходи ("let Windows decide" та "let me decide"), які можна використовувати для керування позаштатними драйверами під час встановлення Lite Touch за допомогою MDT 2010. У цій частині ми завершимо розмову про проблему керування драйверами , тут будуть дані деякі поради, хитрощі та одна історія. Перша історія надана мені одним із читачів, Тімом Лорсом (Tim Lors) і вона є чудовим наочним прикладом тих проблем, з якими ви можете зіткнутися при спробах керування драйверами під час встановлення:

"Понад рік тому я написав програмний сценарій, який встановлює всі драйвери на ПК WinXP. Проблема, з якою я зіткнувся при виборі драйверів, не була пов'язана з ОС. Це була нездатність виробника належним чином реалізувати PnP між inf файлами їх драйверів і самим апаратним обладнанням. Якщо говорити точніше, inf файл вказував на те, що він є найкращим драйвером для певного апаратного пристрою, коли, насправді, він не працює з таким пристроєм. зі списком відомих проблемних драйверів, і якщо я знаходив збіги, я вручну вибирав відповідний драйвер на основі додаткових критеріїв зазвичай номер моделі ПК. Найпоширенішим додатковим критерієм, необхідним для "let me decide" вибору, був номер моделі ПК, але іноді включав версію BIOS і PnP subset ID, а в окремих випадках це був спосіб спроб і помилок. Звичайно, спосіб проб і помилок досить складний, оскільки, коли Windows встановлювала той драйвер, який вважала найпридатнішим, доводилося ізолювати неробочий драйвер від Windows або система просто встановлювала його. Зверніть увагу, що така ситуація виникала в середовищі, що містить майже 10 000 ПК більш ніж 25 різних моделей.

Більшість ІТ фахівців, з якими я розмовляв, говорили мені, що драйвери є одним із основних головних болів, і вищеописана історія тільки служить тому підтвердженням. Тому, присвятивши останні чотири частини цій темі, я хочу закінчити обговорення драйверів деякими порадами та хитрощами, які допоможуть вам полегшити життя.

Пошук драйверів

Першою складністю є пошук позаштатних драйверів, які можуть знадобитися вашим системам. Деякі виробники полегшують це завдання, інші – ні, і Dell є представником першої групи, оскільки надає драйвери для кожної настільної системи у вигляді.cab файлу під кожну операційну систему. Для завантаження цих.cab файлів перейдіть на сайт http://www.delltechcenter.com/ і в меню, що прокручується, зліва виберіть Home, Microsoft, Microsoft System Center, SCCM System Center Configuration Manager, Dell Business Client Operating System Deployment, Dell Business Client Operating System Deployment The .CAB Files і ви побачите сторінку, показану на малюнку 1:

Рисунок 1: Завантаження драйверів для клієнтських систем Dell у вигляді.

Після завантаження.cab файлу ви можете витягнути його в папку, потім послатися на цю папку при імпорті драйверів у свій інсталяційний ресурс.

Інші виробники також надають інструменти для завантаження драйверів, але, на мій погляд, ці інструменти не такі прості та зручні, як підхід компанії Dell. Ось кілька прикладів таких інструментів та посилань на них:

Вилучення INF файлів з EXE

Іноді виробники систем поставляють драйвери пристроїв у формі .exe файлів, а не .cab файлів. У цьому випадку, відмінним набором інструментів є WinRAR , який дозволяє витягувати файли драйверів з .exe файлу в папку. Пам'ятайте, щоб імпортувати драйвер, MDT потрібно.inf файл і відповідні файли драйвера " неможливо імпортувати.exe файл, як драйвер.

Запобігання включенню драйверів

Щоб не дозволити увімкнення імпортованого вами драйвера (наприклад, якщо ваші перевірки показали, що драйвер після встановлення викликає проблеми), просто відкрийте властивості драйвера та очистіть поле Enable This Driver (малюнок 2):

Рисунок 2: Можна забороняти або дозволяти увімкнення драйвера

Зверніть увагу, що вищезазначений драйвер був призначений для 32- та 64-бітної версії Windows. Якщо ви виявили, що він не працює під 64-bit Windows, ви можете залишити драйвер увімкненим, але прибрати прапорець з x64, що не дозволить увімкнути його під час встановлення 64-bit Windows.

За бажанням ви навіть можете відключати всі драйвери в папці шляхом відключення папки (рисунок 3):

Рисунок 3: Можна вимкнути папку користувача в інсталяційному ресурсі

Керування завантажувальними драйверами за допомогою профілів вибору

Також можна використовувати профілі вибору для керування драйверами під час стадії завантаження Windows PE в установці LTI. Для цього відкрийте властивості вашого інсталяційного ресурсу та виберіть закладку Windows PE x64 Components або Windows PE x86 Components для керування драйверами архітектури тієї ОС, яку ви встановлюєте (рисунок 4):

За промовчанням вибрано All Drivers And Packages профіль вибору, але лише драйвери та драйвери пристроїв зберігання з цього профілю вибору включені в образ завантаження Windows PE. При необхідності можна створювати власний профіль вибору, який включатиме специфічні для апаратних засобів WinPE драйвери для ваших цільових систем.

Використання кількох груп драйверів для встановлення за маркою та моделлю

У попередній частині ми переглянули, як визначати одну групу драйверів під назвою DriverGroup001 і використовувати її для керування драйверами під час встановлення на основі марки та моделі цільових комп'ютерів. Кіт Гарнер (Keith Garner), фахівець з розгортання систем у Xtreme Consulting Group, виклав відмінний пост, який дає додаткову інформацію з цієї теми, і показує вам, як можна організувати драйвери більш ефективно, а потім використовувати кілька груп драйверів для управління тим, як вони вмикаються під час встановлення.

Ще одним корисним постом є цей пост про використання псевдонімів моделей, написаний Майклом Мерголо, старшим консультантом Microsoft Consulting Services.

Додавання драйверів до образу

Можна використовувати DISM.exe команду для додавання драйверів в автономні образи, просто змонтуйте образ і використовуйте команду DISM з /add-driver опцією (дивіться додаткову інформацію про використання DISM.exe).

Для додавання драйверів у сховище драйверів (тобто, попереднє подання драйверів, щоб вони були доступні, коли Windows визначає пристрої, які потребують драйверів), можна використовувати команду PnPutil.exe. Ця команда може бути корисною, якщо ви, наприклад, використовували Microsoft Update Catalog для завантаження.cab файлу драйверів для принтера і хочете заздалегідь представити ці драйвери на своєму еталонному комп'ютері, щоб під час встановлення ці драйвери були доступні. Для отримання додаткових відомостей про цю команду можна знайти і .

Обслуговування конфігурації драйверів під час створення Windows

Нарешті, якщо ви створюєте еталонний образ і встановлюєте його на ідентичні апаратні засоби, ви можете забезпечити швидший спосіб першого завантаження для користувачів шляхом налаштування PersistAllDeviceInstalls параметрів у файлі відповіді для sysprepping підготовки свого еталонного комп'ютера. Подробиці дивіться

Порядок завантаження драйверів та сервісів у Windows



Тим, кому цікаво внутрішнє стійкість операційної системи Windows, пропоную невелике дослідження. Ми спробуємо з'ясувати, що відповідає за порядок завантаження драйверів і сервісів у Windows і чи можна змінити цей порядок.

Насамперед подивимося поточний порядок запуску системи за допомогою програми LoadOrder від Sysinternals. Програма покаже нам, що і в якому порядку завантажується під час запуску операційної системи.

Як очевидно з малюнка, спочатку завантажуються драйвери пристроїв, необхідних запуску системи, та був різні Windows-сервисы. Оскільки між завантаженням сервісів та завантаженням драйверів є деякі відмінності, розглядатимемо їх окремо.

Драйвери

Як піддослідний візьмемо драйвер Microsoft ACPI (Advanced Configuration and Power Interface), який відповідає за виявлення апаратного забезпечення та управління живленням. Завдання ACPI – забезпечити взаємодію між операційною системою та апаратним забезпеченням, тому драйвер ACPI завантажується на самому початку.

Програма Loadorder надає досить обмежену інформацію про порядок завантаження, тому за точнішими даними йдемо до Реєстру. У кожного драйвера та Windows-сервісу є свій розділ у гілки реєстру HKLM\SYSTEM\CurrentControlSet\Services. Названі розділи на ім'я драйвера\сервісу, відповідно нам потрібен розділ ACPI.

За порядок завантаження драйвера відповідають три параметри реєстру. Основний параметр Start- Визначає тип запуску драйвера. Ось правила, якими драйвери встановлюють значення свого параметра Start:

Драйвери, які мають завантажуватись системним завантажувачем при запуску операційної системи, вказують значення Startрівне 0 (запуск при завантаженні системи ). Приклад - драйвери системних шин та драйвер файлової системи, що використовується під час завантаження системи;
Драйвер, який не потрібно безпосередньо для завантаження системи, вказує на Startзначення, рівне 1 (запуск системою ). Приклад – стандартний драйвер відеокарти (VgaSave);
Драйвер, не обов'язковий для завантаження системи, встановлює значення Startрівним 2 (автозапуск). Приклад - драйвер багатомережевого UNC-npoвайдера (Multiple UNC Provider, MUP), що підтримує UNC-імена віддалених ресурсів (типу);
Драйвери, не обов'язкові для роботи операційної системи(наприклад, драйвери мережевих адаптерів), вказують значення Startрівним 3 (запуск на вимогу ).

Також драйвери пристроїв можуть використовувати параметри Groupі Tagконтролю порядку завантаження при запуску системи. Параметр Group драйвери\сервіси використовують, щоб вказати групу, до якої вони належать, а порядок завантаження груп визначається параметром List, що знаходиться в розділі HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\.

До речі, параметр Group вказувати необов'язково. Якщо драйвер\сервіс не входить у якусь групу, він завантажується наприкінці черги.

Драйвер може ще більше деталізувати порядок завантаження за допомогою параметра Tag, який вказує конкретну позицію драйвера в групі. Диспетчер вводу-виводу сортує драйвери в групі за значеннями цього параметра, а драйвери, які не мають Tag, переміщуються в кінець списку драйверів групи.

Подивившись на порядок завантаження, можна подумати, що спочатку завантажуються драйвери з меншими значеннями Tag, потім - з більшими, але це не зовсім так. Пріоритет значень параметрів Tag у межах групи визначається розділі HKLM\SYSTEM\CurrentControlSet\Control\GroupOrderList.

Наприклад відкриємо двійковий параметр Boot Bus Extender, який відповідає однойменній групі, до якої належить драйвер ACPI. Параметр являє собою набір подвійних слів (по 4 байти кожне). Перше слово (виділено червоним) задає загальну довжину змінної (кількість подвійних слів), у прикладі 06. Інші подвійні слова таки є тегами. Драйверу ACPI відповідає тег, що дорівнює 01 (виділений зеленим).

Пріоритетність тега визначається не значенням тега, яке становищем: що вище розташований тег, то вище його пріоритет групи, і тим вище пріоритет драйвера, якому цей тег відповідає. А оскільки 01 вище за інші теги, то і драйвер ACPI завантажується першим у групі.

Сервіси

Порядок завантаження сервісів Windows дещо відрізняється від порядку завантаження драйверів. Як приклад візьмемо сервіс автоматичного оновлення (wuauserv). Він не особливо критичний для роботи системи і тому вантажиться в останню чергу.

Знову йдемо до реєстру. Параметри запуску сервісу знаходяться в розділі HKLM\SYSTEM\CurrentControlSet\Services\wuauserv. Я виділив два основні параметри, які відповідають за порядок завантаження цього сервісу.

Windows-сервіси запускаються диспетчером керування сервісами (Service Control Manager, SCM) відповідно до значення параметра Start. Цей параметр для сервісів може приймати такі значення:

Авто запуск (2) - сервіс запускається автоматично відразу після запуску основного SCM-процесу Services.exe;
Запуск на вимогу (3) - сервіс запускається за необхідності, на вимогу якогось сервісу чи програми;
Вимкнено (4) - сервіс вимкнено і не запускається за жодних умов.

Значення 0 (запуск завантаження системи) та 1 (запуск системою) для сервісів не можуть бути вказані тільки для драйверів пристроїв.

Крім того, починаючи з Windows Vista Server 2008 для сервісів з'явився ще один режим запуску - відкладений автозапуск. Відповідає на нього параметр DelayedAutoStart = 1, який вказує SCM зробити автоматичний старт даного сервісу із затримкою. SCM запускає служби, для яких вибрано відкладений запуск, після завантаження сервісів, зазначених для автозапуску.

Режимом запуску сервісів можна керувати не тільки з реєстру, а й у графічному режимі з консолі Служби (Services).

Як і драйвери, Windows-сервіси можуть використовувати параметр Group у своєму розділі реєстру, щоб вказати групу, до якої вони належать. Зараз, для наочності, візьмемо наш сервіс wuauserv, що знаходиться наприкінці списку завантаження. За допомогою ключа Group помістимо його в групу Event Log, перезавантажимося і подивимося порядок завантаження Loaderder. Як бачите, порядок змінився і wuauserv піднявся з останнього місця, завантажившись відразу після свого одногрупника - служби eventlog. Щоправда порядок розміщення всередині групи змінити не вийде, т.к. Tag для сервісів не використовується.

І ще один параметр, який опосередковано впливає на порядок завантаження сервісів - DependOnService. Він показує, яких сервісів залежить даний сервіс. Відповідно, сервіс не завантажується, доки не будуть завантажені сервіси, перелічені в DependOnService.

Залежно працюють таким чином - якщо послуги знаходяться в одній групі, то залежний сервіс переміщається в кінець списку і запускається після сервісів, від яких залежить. Якщо групи різні, то сервіс просто не запуститься, а SCM видасть помилку.

Найбільш наочно це показано в оснащенні Служби, де на вкладці Залежності (Dependency) вказані як послуги, від яких цей сервіс, так і послуги, що залежать від нього.

Ось ми і з'ясували, в якому порядку завантажуються драйвери та сервіси у Windows і як можна змінити цей порядок. Але перш ніж кидатися правити реєстр пам'ятайте, що порядок завантаження драйверів і сервісів визначається автоматично, і не варто вносити зміни без вагомої причини. Всього один неправильно виставлений параметр може призвести до повної непрацездатності системи, і не факт, що її вдасться відновити. Тому, перш ніж розпочати редагування реєстру, обов'язково зробіть його резервну копію, а також бажано мати під рукою завантажувальний носій.

Оскільки Windows є багатозадачною системою, вона виключає для прикладних програм такі вільності, як пряме звернення до портів вводу/виводу або обробка апаратних переривань. Взаємодія з апаратурою на низькому рівні може виконуватися лише системними програмами, які працюють у привілейованому режимі. Основну роль тут грають драйвери пристроїв.

У Windows використовується багаторівнева структура драйверів, в якій високорівневі драйвери можуть відігравати роль фільтрів, що виконують спеціальну обробку даних, отриманих від драйвера низького рівня або передаються драйверу. Як приклад можна навести відділення драйвера, що управляє шиною, від драйверів конкретних пристроїв, підключених до шини. Ще один приклад - драйвер, що виконує шифрацію/дешифрацію даних під час роботи з файловою системою NTFS. Структура драйверів всіх рівнів підпорядкована єдиним стандартам, відомим як WDM (Windows Diver Model), проте високорівневі драйвери, на відміну від низькорівневих, не займаються обробкою апаратних переривань.

Як не дивно, у WindowsNT низькорівневі драйвери - це ще не найнижчий рівень управління пристроями. Ще ближче до апаратури лежить так званий рівень HAL (Hardware Abstractions Level, рівень апаратних абстракцій). Його роль – приховати з інших модулів ОС, зокрема і драйверів, деякі деталі роботи з апаратурою, залежні від конкретних шин, типу материнської плати, методу підключення. Наприклад, HAL надає драйверам можливість звертатися до регістрів пристроїв за їх логічними номерами, не знаючи при цьому, чи регістр підключено до порту процесора або відображено на згадку.

Незважаючи на стандартизацію структури, можна виділити кілька спеціальних типів драйверів, що відрізняються функціональним призначенням.

    Драйвери GDI(GraphicDeviceInterface) є високорівневими драйверами графічних пристроїв (моніторів, принтерів, плотерів). Ці драйвери виконують трансляцію графічних викликів Windows (таких, як "провести лінію", "залити область", "видати текст", "вибрати поточний шрифт, поточне перо, поточну заливку") команди, що виконують відповідні дії на конкретному пристрої. Видача цих команд на пристрій виконується іншим, низькорівневим драйвером. Завдяки наявності драйверів GDI одна і та ж програма може видавати графічне зображення на різні пристрої. Яскравим прикладом цього є режим попереднього перегляду в різних редакторах, який відображає сторінки на екрані точно в тому вигляді, як вони будуть надруковані.

    Драйвери клавіатури та миші, крім стандартних для драйвера операцій, виконують додаткове навантаження. Вони генерують повідомлення про події на відповідному пристрої (натискання та відпускання клавіші, переміщення миші, натискання та відпускання кнопок миші) та поміщають їх у системну чергу повідомлень. Потім система переправляє кожне повідомлення процесу, якому було призначено, для подальшої обробки.

    Драйвери віртуалізації пристроїв (VxD-драйвери) служать для того, щоб розділяти пристрої між процесами, створюючи ілюзію, що процес монопольно володіє пристроєм. Насправді драйвер організує чергу заявок від процесів, перемикає пристрій у необхідний чергового процесу режим тощо. Прикладом може бути драйвер віртуалізації монітора. Консольна програма (наприклад, MS-DOS) працює з усім екраном у текстовому режимі. Але якщо така програма запущена у вікні Windows, то VxD-драйвер імітує текстовий режим у графіку. Для цього драйвер повинен перехоплювати спроби програми звернутися безпосередньо до адрес відеопам'яті і перетворювати координати знайомств текстового режиму в координати відповідних позицій у вікні.

    Для керування службами у Windows використовуються такі засоби:
  • Оснащення services.msc - найзручніший засіб управління службами;
  • Програма msconfig.exe - крім управління службами дозволяє ще керувати запуском Windows (див. розділ Корисні службові програми Windows 7);
  • Команди net і sc - використовуються управління службами з командного рядка. Натисніть кнопку Пуск, введіть services.msc і натисніть клавішу Enter. Ви побачите оснащення керування службами.

Розберемося, як керувати службами. Двічі клацніть на якійсь службі – виберіть будь-яку, нас зараз не цікавить якась конкретна служба. Ви побачите вікно властивостей служби.


Вкладка Загальні містить ім'я служби, опис служби, ім'я файлу служби, що виконується, кнопки управління службою. Тут можна змінити тип запуску. Виберіть один із типів запуску служби зі списку Тип запуску.

    У полі Стан відображається поточний стан служби:
  • Працює - служба запущена та працює в даний момент;
  • Зупинено – службу не запущено;
  • Припинено - службу запущено, але призупинено на даний момент.
    Кнопки управління службами:
  • Запустити – запускає зупинену (або ще не запущену) службу;
  • Зупинити – зупинити службу;
  • Зупинити - призупинити виконання служби (не всі служби підтримують зупинку); для продовження виконання служби використовується кнопка Продовжити;
  • Продовжити – продовжити виконання служби.

Поки що нічого змінювати не потрібно, щоб це негативно не позначилося на вашій системі. Перейдіть краще на вкладку Залежності: на ній ви дізнаєтеся, від яких інших служб залежить ця служба та які інші служби залежать від неї.
Врахуйте, що якщо від служби залежать інші служби і ви зупиняєте службу, всі залежні служби теж не працюватимуть.