Уефи шелл что это
BootDev
Создание загрузочных дисков и прочие полезные мелочи
Страницы
2018-11-13
UEFI Shell: Загрузка драйверов
Содержание
Зачем Это Нужно
Тестовая Машина
Что Будем Делать
Скачиваем Драйвера
Драйвера для сетевых карт Realtek можно загрузить по ссылке https://yadi.sk/d/OELUb2AGd-SJWQ.
Загрузка Драйверов Файловых Систем
Ранее говорилось, что тестовая система содержит две файловые системы, которые будут недоступны в подсистеме UEFI, это NTFS и EXT4. Попробуем загрузить драйвера для данных файловых систем.
Итак, UEFI Shell загружен, подключаем флешку с скачанными драйверами и выполняем команду переопределения подключенных дисков.
В выводе команды ищем точку подключения флешки, в дальнейшем будем называть ее диском. В моем случае это диск FS3. Определить флешку можно по типу устройства, он будет USB. Переходим на данный диск и выводим его содержимое.
В корне диска располагается папка Drivers, созданная нами на этапе скачивания драйверов. Переходим в по пути Drivers\FS и смотрим что в нем находится.
В полученном списке файлов, присутствуют следующие, ntfs_x64.efi и ext2_x64.efi. Их мы будем загружать.
Перед загрузкой драйверов файловых систем, просмотрим на разделы которые на данный момент недоступны.
В полученном списке, не составит труда определить необходимые разделы. Это BLK1, BLK3, BLK4, BLK5. На данный момент они не доступны. Доступные для просмотра, то есть понятные системе UEFI, диски имеют префикс FSx.
Первым, загрузим драйвер ntfs_x64.efi. После чего выполним переинициализацию смонтированных дисков.
Разберем, что произошло после выполнения команд указанных выше. Первое, что бросается в глаза, это то, что диски BLK1 и BLK4 получили новые метки FS0 и FS2 соответственно. Это значит, что данные разделы имеют файловую систему NTFS. Проверим содержимое данных дисков.
По содержимому дисков можно соделать вывод, что FS0 это раздел восстановления Windows, а FS2 это раздел с установленной операционной системой Windows.
Загрузим теперь драйвер ext2_x64.efi, с последующим переопределением смонтированных дисков.
На этот раз, диск BLK5 получил префикс FS3. А флешка теперь находится под меткой FS6. Посмотрим содержимое диска FS3.
Его содержимое говорит о том, что это раздел операционной системы Ubuntu Linux. Что же тогда с разделом BLK3. Он, в данном случае, принадлежит Linux, это SWAP-раздел (раздел подкачки).
Автозагрузка UEFI-драйверов
Все выполненные действия по загрузке драйверов, в предыдущем разделе, актуальны до первой перезагрузки компьютера. После перезагрузки, драйвера придется загружать снова. А что делать если загружаемый драйвер необходим при каждой загрузке? На этот случай, подсистема UEFI располагает возможностью добавлять загрузочные записи для драйверов. Добавим ранее загружаемые драйвера файловых систем в автозагрузку.
Драйвера скопированы. Теперь создадим загрузочные записи для скопированных драйверов.
Проверим наличие загрузочных записей после их добавления.
Данные загрузочные записи, будут храниться в подсистеме UEFI, в NVRAM. Сбросить их можно будет, лишь вытащив батарейку из материнской платы компьютера, или удалив.
Удаление загрузочных записей для драйверов, происходит следующим образом:
Номера загрузочных записей, можно посмотреть в выводе предыдущей команды. Замечу, что нумерация их начинается с нуля.
Загрузка Сетевых Драйверов
В качестве сетевого адаптера в виртуальной машине VirtualBox, выбрана сетевая карта Intel PRO/1000 MT. Подсистема UEFI, встроенная в VirtualBox, не содержит драйверов под эту сетевую карту. Это весьма странно, конкурент от VMWare этим не грешит, и возможно данные драйвера будут интегрированы в последующих версиях. Выбрана данная сетевая карта, так же из-за того, что в интернете для нее присутствуют UEFI-драйвера. Их легко найти и скачать.
Забегая вперед, скажу, что с виртуальной машиной VirtualBox возникнет проблема. Диагностировать которую, не так уж и просто. Но обо всем по порядку.
Загружаем сетевые драйвера. Так как скачанный пакет EFI-драйверов насчитывает 5 файлов,
и по именам этих файлов не понять, какой из них предназначен для сетевой карты используемой нами, самым простым действием будет загрузка всех пяти, но без подключения. То есть, драйвера загружаются в память, но не запускаются.
После загрузки драйверов в память, посмотрим список всех драйверов подсистемы UEFI.
Вывод команды строиться в виде таблицы, состоящий из девяти столбцов.
1. Дескриптор драйвера. То есть, уникальное число в формате HEX, за которым закреплен драйвер. Это число используется другими командами для выполнения операций над конкретным драйвером.
2. Версия драйвера. Тут все просто, числовое обозначение версии драйвера.
4. Поддержка конфигурационного протокола. Наличие знака » X «, вместо » — «, говорит о том что данный драйвер поддерживает возможность конфигурирования.
5. Поддержка диагностического протокола. Наличие знака » X «, вместо » — «, говорит о том что данный драйвер поддерживает возможность диагностики. То есть способен выдать сведения о своем состоянии.
6. Число устройств обслуживаемых драйвером.
7. Число дочерних устройств работающих под этим драйвером.
9. Путь до файла драйвера. Файл драйвера может располагаться как в оперативной памяти, так и жестком диске, или любом другом поддерживаемом накопителе.
Снова выведем информацию о драйверах.
По выводу видно, что из двух драйверов, заработал только AE. У него сменился тип с «?» на «B«, счетчик устройств обсуживаемых драйвером стал равным 1. Кроме этого, стали активными и встроенные драйвера сетевых протоколов, появилась информация о их типе и счетчике устройств. Драйвер заработал. Проверяем доступные сетевые интерфейсы.
Пустой вывод, или отсутствие вывода, в данном случае, говорит о том, что сетевых интерфейсов нет. Следовательно драйвер не заработал как нужно, вопрос только какой именно драйвер. Как было сказано ранее, при загрузке драйвера сетевой карты, так же были активированы и драйверы протоколов. На данный момент, на отсутствие сети, могут влиять как драйвер сетевой карты так и встроенные драйвера протоколов.
Взглянем на дерево устройств, в нем так же можно найти полезную информацию.
По ветке сетевого адаптера, видны дескрипторы протоколов, некоторые из них, включая TCPv4, не запущены, то есть имеют маркировку Not Started. Что собственно может служить причиной отсутствия доступных сетевых интерфейсов. Но это не точно.
Попробуем проверить вывод команд drivers и devtree на другой виртуальной машине, а именно VMWare. Подсистема UEFI данной виртуальной машины содержит интегрированные драйвера для используемых ею сетевых адаптеров. То есть сеть в UEFI работает изначально без дополнительных действий.
Запускаем UEFI Shell.
Смотрим список драйверов.
Как было сказано выше, подсистема UEFI, виртуальной машины VMWare, уже содержит необходимые сетевые драйвера. Указанные на снимке сетевые драйвера, судя по их статусу, работают. Проверим наличие сетевых интерфейсов.
Просмотрим теперь дерево устройств. А именно как будет выглядеть ветка сетевого адаптера.
Сетевая карта, в моем случае, имеет дескриптор CD. Выведем отдельно ветку сетевой карты.
Сравните вывод на машине VMWare, с аналогичным в VirtualBox. Основное различие, не запущенный протокол TCP, при использовании VirtualBox.
Раз была затронута тема сравнения, то предлагаю попробовать выгрузить встроенный драйвер сетевого адаптера виртуальной машины VMWare, и загрузить те, что были скачаны нами для использования в VirtualBox.
Просмотрим еще раз список загруженных драйверов, чтобы узнать дескрипторы драйверов сетевых адаптеров.
В системе присутствует два загруженных драйвера для сетевых адаптеров, первый c дескрипторам 81, и второй с дескриптором 82. Из них, в рабочем состоянии драйвер 82. Из описания которого понятно, что это драйвер сетевого адаптера Intel PRO/1000 PCI-E. Выгрузим оба.
Проверим список драйверов системы.
Драйвера сетевых адаптеров были выгружены. Так же перестали работать драйвера сетевых протоколов. Выполним вывод сетевых интерфейсов.
Вывод ожидаемо отсутствует, доступных сетевых интерфейсов нет. Значит сетевая подсистема на данный момент не работает. Теперь выполним загрузку драйверов сетевых адаптеров, скачанных нами ранее.
Проверим список драйверов системы.
Из загруженных, заработал драйвер E8310X3.EFI. Так же заработали встроенные драйвера сетевых протоколов. Попробуем вывести список сетевых интерфейсов системы.
В системе появился сетевой интерфейс. Это значит что загруженный драйвер успешно заработал.
Проверим работу сети. Выполним пинг IP-адреса 8.8.8.8.
Какой вывод можно сделать после проверки скачанных драйверов в виртуальной машине VMWare. Самый главное, это то, что скачанные драйвера все же исправно работают. Тот факт, что виртуальная машина VirtualBox, не отображала сетевых интерфейсов, после загрузки драйверов, указывает на то, что проблема все же, в встроенных драйвера сетевых протоколов данной виртуальной машины. Но это лишь мои предположения. Если у вас есть информация по этому поводу, то напишите о ней в комментариях.
В этом материале, я постарался вкратце рассмотреть работу с драйверами в оболочке UEFI Shell. Конкретно были затронуты следующие темы (возможно и косвенно): Как загрузить драйвера в UEFI Shell? Как выгрузить драйвера в UEFI Shell? Как добавить UEFI-драйвер в автозагрузку? Как убрать UEFI-драйвер из автозагрузки? Как выполнить установку драйверов в UEFI Shell?
Уефи шелл что это
UEFI (Unified Extensible Firmware Interface) is a standard interface for PCs between the computer’s firmware, hardware, and the operating system, designed to replace BIOS (basic input/output system).
32-bit UEFI: The tablets usually use the 32-bit version of UEFI.
32-битный UEFI: На планшетах обычно используется 32-битная версия UEFI.
Bootstrapping on EFI involves a boot manager that is built in to the firmware. The most common way to display the UEFI menu is to press ESC at boot
Начальная загрузка на EFI включает в себя менеджер загрузки, который встроен в прошивку. Самый распространенный способ для отображения меню UEFI это нажать ESC при загрузке.
DUET can boot from USB Flash Drive & HDD or CD drive on BIOS-based computer
DUET может загрузиться с USB Flash Drive & HDD или с CD диска на компьютере на основе BIOS
DUET can boot UEFI Shell, OS bootloader etc.
By default DUET boot EFI application named bootx64.efi stored in EFI\BOOT folder.(Boot Manager menu item). If this file not present
From Boot Maintenance Manager menu item ==>> Boot Efi file you can browse media for run any apllication e.g. diskpart.efi.
DUET может загрузить оболочку UEFI, загрузчик ОС и т.д.
По умолчанию DUET загру жает EFI приложение с именем bootx64.efi, наход ящ е еся в папке EFI\BOOT.(Пункт меню Boot Manager). Если этот файл отсутствует
и з пункта меню Boot Maintenance Manager (поддержка диспетчера загрузки) ==>> Boot Efi файл, вы можете просматривать носитель для запуска любого приложения например diskpart.efi.
Copy EFI folder with renamed Shell to bootx64.efi and startup.nsh file to USB Flash Drive & boot from it.
Скопируйте папку EFI с переименованным Shell в bootx64.efi и файлом startup.nsh на флэшку и загрузитесь с нее.
• dir (or ls): lists directory contents
• Other commands for managing files & directories: cd, mkdir, move, rm (remove)
• exit: leaves the EFI shell and returns to DUET.
• map: Displays or defines mappings
• Screen commands: cls, echo
Startup script startup.nsh (analogue «Autoexec.bat»)
For the UEFI shell, if a file named startup.nsh is found in the efi\boot path, it is automatically executed after the shell is loaded.
• dir (или ls): перечисляет содержимое каталога
• Другие команды для управления файлами и папками : cd, mkdir, move, rm (remove)
• help или?: Список команд Shell
• exit: покидает оболочку EFI и возвращается в DUET.
• map: отображает или определяет сопоставления
• Экран ные команды: echo cls
Стартовый сценарий startup.nsh (аналог “Autoexec.bat”)
Для UEFI shell, если файл с именем startup.nsh находится в папке efi\boot, он автоматически выполняется после загрузки оболочки.
К омандн ая строк а Intel OS command prompt
To start Windows from the command line of efi shell, enter the external win command that runs the win.efi file. which is located in the efi \ boot \ tools folder
Для запуска Windows из командной строки efi shell введите внешнюю команду win, запускающую файл win.efi. который находится в папке efi\boot\tool
UEFI Shell Features
• A UEFI 64-bit native Application Родное 64 бит Приложение UEFI
• Interactive Console Interface Интерактивный консольный интерфейс
• Programs Launch Запуск про грамм
• Load UEFI Drivers Загрузка UEFI драйверов
• Scripting Capability Возможность создания сценариев
• Automatic execution of startup script file Автоматическое выполнение файла сценария запуска (startup.nsh)
• Console redirection to files Перенаправление консоли в файлы
Доступ к разделам NTFS из UEFI можно получить несколькими способами :
автозагрузка драйвера в rEFInd autoload EFI drivers
UEFI B oot M anager s
Startup Menu:
rEFInd by Roderick W. Smithis a boot manager, meaning that it presents a menu of options to the user when the computer first starts up.
rEFInd load EFI drivers from drivers_x64 folder for filesystems or hardware devices not supported natively by your firmware.
Меню Загрузки :
rEFInd (автор: Родерик Смит) это менеджер загрузки, представля ющий меню для пользователя при запуске компьютера
rEFInd загружает драйверы из папки drivers_x64 для файловых систем или аппаратных устройств, изначально не поддерживаемых вашей прошивкой.
Что такое Launch efi shell from filesystem device?
Обычно данный пункт настроек BIOS можно встретить на материнских платах, поддерживающих загрузку в UEFI (EFI) режиме. Почти всегда он находится на вкладке Exit (Safe & Exit).
Пункт “launch efi shell from filesystem device” на платах Asus
Отличия BIOS и UEFI
BIOS является базовой системой ввода/вывода, которая запускается еще до загрузки операционной системы. Те, кто имеет хоть какой – то опыт в настройке компьютеров прекрасно знает как он выглядит:
Внешний вид настроек BIOS
UEFI, что расшифровывается как Unified Extensible Firmware Interface, является следующим этапом развития базовых управляющих интерфейсов материнских плат. У него, по сравнению с BIOS, есть ряд преимуществ:
Что делает пункт Launch efi shell from filesystem device?
Перевод данной фразы на русский язык звучит так: запуск EFI оболочки с файловой системы внешнего устройства. Под внешним устройством следует понимать флешку, CD/DVD диск, жесткий диск и т.д.
Штатные BIOS/UEFI материнской платы всегда располагаются на отдельной микросхеме памяти, находящейся недалеко от батарейки.
Иногда появляется необходимость в запуске сторонней оболочки EFI, например для установки операционной системы Linux. Для этого создается загрузочная флешка, на которую помещаются не только установочные файлы, но и сам EFI загрузчик.
Вставив эту флешку в USB порт и выбрав пункт Launch efi shell from filesystem device в биосе, осуществляется ее запуск.
Вот так выглядит запущенная оболочка EFI Shell
Как запускается сервер: UEFI
Спецификация UEFI (Unified Extensible Firmware Interface, Унифицированный расширяемый микропрограммный интерфейс, унифицированный расширяемый интерфейс прошивки или расширяемый аппаратный интерфейс), ранее известная как Extensible Firmware Interface (EFI), определяет интерфейс между операционной системой и микрокодом (микропрограммами), управляющим оборудованием. Другими словами, UEFI это интерфейс, который располагается “поверх” аппаратных компонентов компьютера, которые, в свою очередь, функционируют на собственных прошивках (микрокодах).
В самом названии UEFI определение «расширяемый интерфейс» говорит о том, что это модульная система, которая может функционально легко расширяться и модернизироваться.
Для большего понимания, UEFI по сравнению с BIOS — это, грубо говоря, новый тип или следующее поколение прошивки, и оно уже не ограничено только лишь персональными компьютерами архитектуры x86 (IBM PC), но и претендует на всеплатформенный стандарт. Однако, в отличии от BIOS, UEFI базируется на принципиально новой топологии кода, которая называется «драйверность».
UEFI можно смело назвать самостоятельной миниатюрной операционной системой, которая представляет собой интерфейс между основной пользовательской операционной системой, функционирующей на компьютере и микрокодом оборудования.
Давайте теперь совершим небольшой экскурс в историю персональных компьютеров, с целью понять причины, которые приводили к попыткам замены стандартного BIOS на что-то принципиально новое.
Старый-добрый BIOS
Основные принципы функционирования BIOS (базовой системы ввода-вывода) для персональных компьютеров были определены еще в конце 70х годов прошлого века. На протяжении довольно большого промежутка времени, прошедшего с той поры, компьютерная отрасль интенсивно развивалась, это приводило к тому, что на определенных этапах возможностей BIOS было недостаточно, поскольку выпускаемые производителями устройства имели на борту новые технологии, часто не совместимые с текущими версиями BIOS. Что бы уйти от подобных проблем, разработчикам приходилось порой довольно существенно модифицировать код BIOS, однако целый ряд ограничений так и остался неизменным до настоящего времени. И, если первоначально архитектура BIOS была достаточно простой, то по прошествии времени она неминуемо усложнялась, адаптируясь под все новые и новые технологии, поэтому, к определенному моменту она стала напоминать нагромождение различного рода устаревшего и плохо взаимодействующего между собой кода. Ограничения, которые и по сей день можно встретить в коде BIOS, объясняются необходимостью сохранять совместимость с базовыми функциями, необходимыми для функционирования старого ПО. Всё это привело к тому, что BIOS, по сути, стал самым устаревшим компонентом современных ПК. На данный момент BIOS мало удовлетворяет требованиям новейшего оборудования и имеет следующие недостатки:
Все эти, а так же некоторые другие, недостатки традиционной модели BIOS и привели к тому, что коалиция производителей аппаратуры и ПО начала работать над созданием спецификации UEFI. Начиная, по собственным наблюдениям, где-то с 2010 года, спецификация UEFI начала массово внедряться во все вновь выпускаемые материнские платы ведущих производителей, поэтому на данный момент найти новый компьютер с традиционным BIOS практически невозможно. Однако, сильно огорчаться из-за этого не стоит, поскольку многие производители в своих системных платах сохраняют совместимость с функционалом традиционных BIOS. К примеру, очень важным моментом является поддержка традиционного режима загрузки при помощи MBR. С этой целью был разработан UEFI-модуль режима эмуляции BIOS, который носит название Compatibility Support Module (CSM). Правда, я так полагаю, со временем все меньше и меньше производителей будут поддерживать в своих прошивках данный режим.
Преимущества UEFI
Тут я хотел бы определить достоинства интерфейса UEFI:
Как создать загрузочную UEFI флешку
Если хотите, создайте UEFI флешку в командной строке.
Для создания загрузочной UEFI флешки Windows 7 я бы использовал программу WinSetupFromUSB.
Отличную загрузочную UEFI флешку LiveCD на базе Windows 8.1 можно создать самостоятельно и даже интегрировать в неё программы, читайте информацию здесь.
Также вы можете создать UEFI флешку с программами:
С учетом того, что на смену БИОС постепенно приходит UEFI, вопрос о том, как сделать загрузочную флешку (или другой USB накопитель) для последнего варианта, становится довольно-таки актуальным. В этой инструкции подробно показано, как создать загрузочную флешку UEFI для установки Windows 7, Windows 10, 8 или 8.1 с использованием дистрибутива операционной системы в файле образа ISO или на диске DVD. Если вам требуется установочный накопитель для 10-ки, рекомендую более новую инструкцию Загрузочная флешка Windows 10.
Все нижеописанное подходит для 64-битных версий Windows 7, Windows 10, 8 и 8.1 (32-битные версии не поддерживаются). Кроме этого, для того, чтобы успешно загрузиться с созданного накопителя, временно отключите Secure Boot в вашем UEFI BIOS, а также включите CSM (Compatibility Support Module), все это находится в разделе настроек Boot. На эту же тему: Программы для создания загрузочной флешки.
Недостатки UEFI
А теперь хотелось бы осветить недостатки технологии UEFI:
Intel Tianocore OS:
DUET.imz
образ дискеты 1.44
• efildr переименован в DUET — renamed efildr •поддержка SATA support
extracted from
Clover EFI bootloader project by Sergey Isakov a.k.a Slice with SATA & mouse supportDUET.ISO извлеченный из проекта загрузчик EFI клевер цвета хаки разработчик Сергей Исаков (Sergey Slice) с поддержкой SATA и мыши
More Info:
Windows and GPT FAQ
Extensible Firmware Interface (EFI) and Unified EFI (UEFI