Драйвер в автозагрузке что это такое

Обновлено: 21.11.2024

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

[шаг1] Сначала мы выгружаем модуль из работающей системы, если он загружен.

[ шаг 2 ] Чтобы предотвратить загрузку модуля напрямую, вы добавляете строку черного списка в файл конфигурации, относящийся к конфигурации системы, например /etc/modprobe.d/local-dontload.conf .

Это само по себе не предотвратит загрузку модуля, если он является обязательной или необязательной зависимостью другого модуля. Некоторые модули ядра будут пытаться загружать дополнительные модули по запросу, что мы исправим на шаге 3.

[шаг 3] Строка установки просто вызывает запуск /bin/false вместо установки модуля. (Того же можно добиться, используя /bin/true .)

В следующий раз, когда будет предпринята попытка загрузки модуля, вместо него будет выполнен /bin/false. Это предотвратит загрузку модуля по требованию. Если исключенный модуль требуется для другого конкретного оборудования, могут возникнуть непредвиденные побочные эффекты.

Теперь выполните соответствующие шаги для вашей системной версии RHEL:

  • Завершающие шаги для RHEL 8
  • Завершающие шаги для RHEL 7
  • Завершающие шаги для RHEL 6
  • Завершающие шаги для RHEL 5

Завершающие шаги только для Red Hat Enterprise Linux 8.

[шаг 4] Сделайте резервную копию ваших файлов initramfs.

[ шаг 5 ] Если модуль ядра является частью initramfs (используйте "lsinitrd /boot/initramfs-$(uname -r).img|grep module-name.ko" для проверки), то вам следует пересобрать исходный образ виртуального диска, опуская модуль, которого следует избегать (дополнительную информацию см. в разделе Как восстановить исходный образ виртуального диска в Red Hat Enterprise Linux).

[ шаг 6 ] Получите текущие параметры командной строки ядра.

[шаг 8] Сделайте резервную копию kdump initramfs.

[шаг 9] Добавьте rd.driver.blacklist=module_name в параметр KDUMP_COMMANDLINE_APPEND в /etc/sysconfig/kdump. Это приведет к тому, что он будет исключен из kdump initramfs.

[шаг 10] Перезапустите службу kdump, чтобы применить изменения в initrd kdump.

[ шаг 11 ] Восстановите исходный образ виртуального диска kdump.

[шаг 12] Перезагрузите систему в удобное время, чтобы изменения вступили в силу.

Завершающие шаги только для Red Hat Enterprise Linux 7

[шаг 4] Сделайте резервную копию ваших файлов initramfs.

[ шаг 5 ] Если модуль ядра является частью initramfs (загрузочная конфигурация), пересоберите исходный образ виртуального диска, исключив модуль, которого следует избегать (дополнительную информацию см. в разделе Как перестроить исходный образ виртуального диска в Red Hat Enterprise Linux). .

[шаг 6] Добавьте имя_модуля.blacklist в командную строку ядра. Мы даем ему недопустимый параметр черного списка и устанавливаем его равным 1, чтобы предотвратить его загрузку ядром. Здесь мы также устанавливаем rd.driver.blacklist как еще один метод предотвращения его загрузки.

[шаг 7] Переустановите grub2, чтобы изменения командной строки ядра вступили в силу. Если ваша система использует UEFI, путь необходимо изменить на /boot/efi/EFI/redhat/grub.cfg

[шаг 8] Сделайте резервную копию kdump initramfs.

[шаг 9] Добавьте rd.driver.blacklist=module_name в параметр KDUMP_COMMANDLINE_APPEND в /etc/sysconfig/kdump. Это приведет к тому, что он будет исключен из kdump initramfs.

[шаг 10] Перезапустите службу kdump, чтобы применить изменения в initrd kdump.

[ шаг 11 ] Восстановите исходный образ виртуального диска kdump.

[шаг 12] Перезагрузите систему в удобное время, чтобы изменения вступили в силу.

Завершающие шаги только для Red Hat Enterprise Linux 6

[шаг 4] Сделайте резервную копию ваших файлов initramfs.

[ шаг 5 ] Если модуль ядра является частью initramfs (загрузочная конфигурация), пересоберите исходный образ виртуального диска, исключив модуль, которого следует избегать (дополнительную информацию см. в разделе Как перестроить исходный образ виртуального диска в Red Hat Enterprise Linux). .

[шаг 6] Добавьте имя_модуля.blacklist в командную строку ядра. Мы даем ему недопустимый параметр черного списка и устанавливаем его равным 1, чтобы предотвратить его загрузку ядром.

[ шаг 7 ] Отредактируйте файл конфигурации kdump: пометьте его как исключенный из загрузки kdump.

[шаг 8] Перезапустите службу kdump, чтобы применить изменения в initrd kdump.

[шаг 9] Перезагрузите систему в удобное время, чтобы изменения вступили в силу.

Продолжение действий только для Red Hat Enterprise Linux 5

[шаг 4] Сделайте резервную копию файла initrd.

[ шаг 5 ] Если модуль ядра является частью initrd (загрузочная конфигурация), пересоберите исходный образ виртуального диска. Используйте флаг --builtin=module_name для mkinitrd, чтобы он пропустил рассматриваемый модуль.

[шаг 6] Добавьте имя_модуля.blacklist в командную строку ядра.Мы даем ему недопустимый параметр черного списка и устанавливаем его равным 1, чтобы предотвратить его загрузку ядром.

[шаг 7] Перезагрузите систему в удобное время, чтобы изменения вступили в силу.

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

Red Hat Enterprise Linux 4

Добавьте следующую строку в /etc/modprobe.conf:

Если модуль ядра является частью initrd (загрузочной конфигурации), то initrd следует сгенерировать повторно. Загрузите затронутое ядро ​​и выполните следующую команду, чтобы повторно сгенерировать затронутое ядро ​​initrd.

Временно удалить модуль

Можно удалить любой загруженный в данный момент модуль, запустив:

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

  • Если запущенный процесс использует модуль, завершите процесс перед выгрузкой модуля.
  • Если второй модуль использует модуль, который мы пытаемся выгрузить, то сначала необходимо выгрузить второй модуль.

Загрузка модулей

Процедура загрузки модулей доступна в документации по продукту по адресу:

Это решение является частью программы ускоренной публикации Red Hat, предоставляющей огромную библиотеку решений, созданных инженерами Red Hat для поддержки наших клиентов. Чтобы дать вам необходимые знания, как только они станут доступны, эти статьи могут быть представлены в необработанном и неотредактированном виде.

После первоначальной настройки драйвера мы продолжим объяснять, как начать работу с драйвером MongoDB и соответствующей пользовательской библиотекой для написания нашего первого проекта.

Установка библиотеки PHP с помощью Composer

Последнее, что нам нужно установить, чтобы начать работу с самим приложением, — это библиотека PHP.

Установите библиотеку, запустив:

Он выведет что-то вроде:

Composer создаст несколько файлов: composer.json , composer.lock и каталог поставщика, который будет содержать библиотеку и любые другие зависимости, которые могут потребоваться вашему проекту.

Использование библиотеки PHP

В дополнение к управлению вашими зависимостями Composer также предоставит вам автозагрузчик (для классов этих зависимостей). Убедитесь, что он включен в начало вашего скрипта или в загрузочный код вашего приложения:

Например, вот как вы вставляете документ в коллекцию beers базы данных demo:

require 'vendor/autoload.php' ; // включить автозагрузчик Composer

$client = новый MongoDB \ Client ("mongodb://localhost:27017");
$ collection = $ client -> demo -> пиво ;

$result = $collection -> insertOne ( [ 'name' => 'Hinterland' , 'brewery' => 'BrewDog' ] );

echo "Вставлено с идентификатором объекта ' < $result ->getInsertedId ()> '" ;
?>

Вместо того, чтобы вводить сгенерированное поле _id во входной документ (как это делалось в старом драйвере), теперь оно доступно через объект результата, возвращаемый методом insertOne.

После вставки вы, конечно, также можете запросить данные, которые вы только что вставили. Для этого вы используете метод find, который возвращает итерируемый курсор:

require 'vendor/autoload.php' ; // включить автозагрузчик Composer

$client = новый MongoDB \ Client ("mongodb://localhost:27017");
$ collection = $ client -> demo -> пиво ;

$result = $collection -> find ( [ 'name' => 'Hinterland' , 'brewery' => 'BrewDog' ] );

foreach ($result as $entry) echo $entry ['_id'], ':', $entry ['name'], "\n";
>
?>

Хотя в примерах это может быть неочевидно, документы и массивы BSON по умолчанию не сериализованы как классы типов в библиотеке. Эти классы гарантируют, что значения сохранят свой тип при сериализации обратно в BSON, что позволяет избежать предостережения в старом драйвере, когда массивы могут превращаться в документы, и наоборот. Кроме того, классы расширяют ArrayObject для повышения удобства использования. Дополнительную информацию о том, как сериализация и десериализация между переменными PHP и BSON обрабатывается драйвером и библиотекой, можно найти в спецификации Persisting Data.

Для большинства систем физическая иерархия устройств на компьютере определяет порядок, в котором Windows и диспетчер PnP загружают драйверы. Windows и диспетчер PnP настраивают устройства, начиная с системного корневого устройства, а затем настраивают дочерние устройства корневого устройства (например, адаптер PCI), дочерние устройства этих устройств и т. д. Диспетчер PnP загружает драйверы для каждого устройства по мере его настройки, если ранее не были загружены драйверы для другого устройства.

Настройки в файле INF могут влиять на порядок загрузки драйверов. В этом разделе описываются соответствующие значения, которые поставщики должны указывать в разделе service-install-section, на который ссылается директива INF AddService драйвера.В частности, в этом разделе обсуждаются записи StartType, BootFlags, LoadOrderGroup и Dependencies.

Драйверы должны следовать этим правилам при указании StartType:

Драйвер PnP не требуется на ранней стадии загрузки

Драйвер PnP должен иметь тип запуска SERVICE_DEMAND_START (0x3), указывающий, что диспетчер PnP может загрузить драйвер, когда диспетчер PnP находит устройство, которое обслуживает драйвер.

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

Если для запуска компьютера требуется устройство, драйверы для устройства должны иметь тип запуска SERVICE_BOOT_START (0x0).

Драйвер, не запускаемый при загрузке, обнаруживающий устройства, которые не поддерживают перечисление PnP

Для устройства, которое не является PnP-перечислимым, драйвер сообщает об устройстве диспетчеру PnP, вызывая IoReportRootDevice или IoReportDetectedDevice. Такой драйвер должен иметь тип запуска SERVICE_SYSTEM_START (0x01), чтобы Windows загружала драйвер во время инициализации системы.

Только драйверы, сообщающие об оборудовании, отличном от PnP, должны устанавливать этот тип запуска. Если драйвер обслуживает как PnP-, так и не-PnP-устройства, он должен установить этот тип запуска.

Драйвер, отличный от PnP, который должен запускаться диспетчером управления службами

Такой драйвер должен иметь тип запуска SERVICE_AUTO_START (0x02). Драйверы PnP не должны устанавливать этот тип запуска.

Драйвер PnP должен быть написан таким образом, чтобы его можно было загрузить, когда Windows настраивает устройство, которое обслуживает драйвер. И наоборот, драйвер должен иметь возможность выгружаться в любое время, когда диспетчер PnP определяет, что устройств, которые обслуживает драйвер, больше нет. Единственным порядком загрузки драйверов, от которого должны зависеть драйверы PnP, являются следующие:

Драйверы для дочернего устройства могут зависеть от того, загружены ли драйверы для родительского устройства.

Драйвер в стеке устройств может зависеть от того, загружены ли все драйверы ниже него.

Например, функциональный драйвер может быть уверен, что загружены все драйверы нижнего фильтра.

Однако имейте в виду, что драйвер в стеке устройства не может зависеть от загрузки последовательно после более низких драйверов устройства, поскольку драйвер мог быть загружен ранее, когда настраивалось другое устройство.

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

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

Чтобы подчеркнуть важность установки правильного значения StartType, в следующем списке описано, как Windows и диспетчер PnP используют записи StartType в файлах INF:

При запуске системы загрузчик операционной системы загружает драйверы типа SERVICE_BOOT_START, прежде чем передать управление ядру. Эти драйверы находятся в памяти, когда ядро ​​получает управление.

Драйверы начальной загрузки загружаются до настройки большинства устройств, поэтому порядок их загрузки не может быть определен иерархией устройств. Драйверы начальной загрузки могут использовать записи INF LoadOrderGroup для упорядочения загрузки. Операционная система игнорирует записи зависимостей INF для драйверов начальной загрузки.

Диспетчер PnP вызывает подпрограммы DriverEntry драйверов SERVICE_BOOT_START, чтобы драйверы могли обслуживать загрузочные устройства.

Если у загрузочного устройства есть дочерние устройства, эти устройства перечисляются. Дочерние устройства настраиваются и запускаются, если их драйверы также являются драйверами начальной загрузки. Если не все драйверы устройства являются драйверами начальной загрузки, диспетчер PnP создает узел устройства (devnode) для устройства, но еще не запускает устройство.

После загрузки всех загрузочных драйверов и запуска загрузочных устройств диспетчер PnP настраивает остальные устройства PnP и загружает их драйверы.

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

При настройке этих устройств диспетчер PnP загружает драйверы для устройств, независимо от значений StartType драйверов (кроме случаев, когда StartType имеет значение SERVICE_DISABLED), прежде чем приступить к запуску устройств. Многие из этих драйверов являются драйверами SERVICE_DEMAND_START.

Диспетчер PnP игнорирует записи реестра, созданные в результате записей зависимостей INF и записей LoadOrderGroup для драйверов, которые он загружает на этом шаге. Порядок загрузки основан на иерархии физических устройств.

В конце этого шага настраиваются все устройства, кроме устройств, которые не поддерживают перечисление PnP, и потомков этих устройств. (Потомки могут быть PnP-перечислимыми, а могут и не быть.)

Диспетчер PnP загружает драйверы StartType SERVICE_SYSTEM_START, которые еще не загружены.

Эти драйверы обнаруживают устройства, не поддерживающие PnP, и сообщают о них. Диспетчер PnP обрабатывает записи реестра, которые являются результатом записей INF LoadOrderGroup для этих драйверов. Он игнорирует записи реестра, созданные из-за записей зависимостей INF для этих драйверов.

Диспетчер управления службами загружает драйверы StartType SERVICE_AUTO_START, которые еще не загружены.

Диспетчер управления службами обрабатывает информацию базы данных службы в отношении DependOnGroup и DependOnServices службы. Эта информация берется из записей зависимостей в записях INF AddService. Имейте в виду, что информация о зависимостях обрабатывается только для драйверов, отличных от PnP, поскольку все необходимые драйверы PnP были загружены на более раннем этапе запуска системы. Диспетчер управления службами игнорирует информацию INF LoadOrderGroup.

Для получения дополнительной информации о диспетчере управления службами см. документацию Microsoft Windows SDK.

Использование BootFlags для продвижения StartType драйвера при загрузке в зависимости от сценария загрузки

Операционная система может продвигать StartType драйвера как драйвер запуска загрузки в зависимости от значения BootFlags, указанного в INF-файле драйвера. В INF-файле можно указать одно или несколько (по ИЛИ) следующих числовых значений, выраженных в виде шестнадцатеричного значения:

  • Если драйвер должен быть повышен до драйвера запуска при загрузке по сети, укажите 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD).
  • Если драйвер должен повышаться при загрузке с виртуального жесткого диска, укажите 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD)
  • Если драйвер должен повышаться при загрузке с USB-диска, укажите 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD).
  • Если драйвер должен повышаться при загрузке с SD-карты, укажите 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD)
  • Если драйвер должен повышаться при загрузке с диска на контроллере USB 3.0, укажите 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD).
  • Если драйвер должен повышаться при загрузке с включенной измеряемой загрузкой, укажите 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD).
  • Если драйвер должен повышаться при загрузке с включенной загрузкой с проверкой, укажите 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD).
  • Если драйвер должен повышаться при загрузке WinPE, укажите 0x80 (CM_SERVICE_WINPE_BOOT_LOAD).

Дополнительную информацию о повышении StartType драйвера при загрузке в зависимости от сценария загрузки см. в директиве INF AddService.

Усовершенствованная автоматизация по доступной цене: теперь с программным обеспечением для дедупликации DATASTOR Shield™. Комплексное решение с StorageCare Guardian. Совместимость со всеми основными программными пакетами резервного копирования, средами и инфраструктурами. Резервное копирование с дедупликацией — уменьшает объем данных в 20 раз. Единственный автозагрузчик, поддерживающий 16 картриджей в стойке высотой 2U.

Примечание. Драйверы ленточных накопителей HP и IBM
Драйверы ленточных накопителей HP и IBM необходимо загружать с веб-сайтов HP или IBM. Для вашего удобства следующий документ поможет вам в этом процессе.

Примечание. Symantec BackupExec
Если вы используете Symantec BackupExec, вам следует использовать драйвер устройства, поставляемый с пакетом резервного копирования программного обеспечения.

Драйвер библиотеки Windows

    Драйвер устройства Windows Server 2012 R2 для SuperLoader 3 Драйвер устройства Windows Server 2016 для SuperLoader 3 Драйвер устройства Windows Server 2019 для SuperLoader 3 Драйвер устройства Windows 2012 Server для SuperLoader 3 Драйвер устройства Windows 2003/2008 Server для SuperLoader 3

Драйвер ленточных накопителей Windows DLT

    Драйвер Windows NT для ленточных накопителей DLT1, SDLT220 или SDLT320

Драйвер стримера для Win2K/2K3/XP (x86, x64)

    Драйвер ленточного накопителя для Windows 2000, Windows XP и Windows Server 2003, работающий на платформах x86 и x64 с ленточными накопителями DLT

Драйвер ленточного накопителя LTO для Windows

  • Драйвер устройства версии 3.6.0.5 позволяет использовать ленточные накопители LTO половинной высоты с Windows Vista до Windows Server 2008 R2.
  • Драйвер устройства 3.6.0.6 позволяет использовать ленточные накопители LTO половинной высоты с Windows 8 или 8.1 (только 64-разрядная версия) и Windows Server 2012 или 2012 R2. версии драйверов 3.6.0.5 и 3.6.0.6

Драйвер LTO-9

    Драйвер ОС Red Hat 7 для LTO9 Драйвер ОС Red Hat 7 для LTO9

Прошивка библиотеки Superloader 3 V100 Примечания к выпуску
Микропрограмма ленточного накопителя
IBM LTO-6 HH SAS KAJ9 Примечания к выпуску
IBM LTO-7 HH SAS MA71 Примечания к выпуску
IBM LTO-8 HH SAS MA71 Примечания к выпуску
Quantum LTO-6 HH SAS V4142
Quantum LTO-9 HH LTO-9 HH Примечания к выпуску

Консоль управления StorageCare Sage xTalk. Менее чем за тридцать минут xTalk оценит состояние вашего стримера и определит, нужно ли отправить его для обслуживания. Приложение также предоставляет подробную информацию об инженерном анализе привода и возможность быстрой загрузки обновлений микропрограммы, приложения, интерактивной справки, тестового сценария и примечаний к выпуску.

Читайте также: