Uefi встроенный efi shell что это
BootDev
Создание загрузочных дисков и прочие полезные мелочи
Страницы
2018-05-23
UEFI Shell: Описание командной оболочки
Содержание
1. Командная оболочка UEFI Shell
Основные возможности похожи на оные у других командных оболочек. Если вам знакомы какие нибудь из них (bash, cmd и т. д.), то многие моменты будут вам знакомы.
1.1 Специальные Cимволы
1.2 Экранирование Символов
1.3 Кавычки
Кавычки ( « ) предназначены для объединение нескольких слов в единую строку. Командная оболочка воспринимает слова разделенные знаком пробел, как отдельные аргументы. Чтобы избежать такого восприятия, необходимую последовательность слов заключат в кавычки. К примеру, это бывает необходимо, когда в качестве аргументов используются полные пути до файла содержащие пробел.
1.4 Перенаправления
1.4.1 Перенаправление Вывода
Вывод любой команды может быть перенаправлен в файл. Например:
command > file.log #перезапись unicode файла
command >> file.log #дозапись unicode файла
В первом случае, результат выполненной команды command будет сохранен в файл file.log, с перезаписью (файл создается заново).
Во втором случае, результат выполненной команды command будет сохранен в конец файла file.log (если файла не существовало, то он создается).
У команды перенаправления существуют два модификатора a (вывод происходит в кодировке ASCII), v (вывод происходит в переменную). Например:
command >a file.log #перезапись ascii файла
command >>a file.log #дозапись ascii файла
command >v variable #перезапись в переменную
command >>v variable #дозапись в переменную
Специальные файлы перенаправлений NUL и NULL предназначены для подавления вывода. То есть, весь вывод направленный в эти файлы будет просто отброшен без сохранения. Пример:
command > NUL
command > NULL
1.4.2 Перенаправление Ввода
Данные из существующего файла или переменной могут быть направлены на входной поток любой команды. Например:
command #получение входящих данных из unicode файла
command #получение входящих данных из ascii файла
command #получение входящих данных из переменной
1.4.3 Конвейер Команд
Данные из выходного потока одной команды можно направить на входящий поток другой, образуя при этом конвейер команд. Например:
command1 | command2
command1 |a command2
В первом случае происходит перенаправление вывода команды command1 во входящий поток команды command2. Во втором случае все тоже самое но в кодировке ASCII.
1.5 Комментарии
1.6 Переменные
1.6.1 Переменные Окружения
Переменные окружения создаются самой командной оболочкой при ее инициализации. Некоторые из них можно изменять а некоторые нет. Каждый новый сеанс командной оболочки содержит свой независимый список переменных окружения. Ниже представлен список переменных окружения UEFI Shell:
1.6.2 Позиционные Переменные
1.6.3 Псевдонимы
Псевдонимы представляют собой дополнительное имя уже имеющейся команды или приложения. Возможны два варианта псевдонимов, на основе переменных, и созданные с помощью команды alias.
Для создания псевдонима с помощью переменной, необходимо создать переменную содержащую текст выполняемой команды. После чего вызвать созданную переменную.
1.6.4 Файловые Маски
Пример использования файловых масок:
1.7 Интерактивные Возможности
1.7.1 Клавиши Истории Команд
Командная оболочка UEFI Shell запоминает последние выполненные команды. Нажатием на клавиши стрелок вверх или вниз, можно выводить в командную строку последние выполненные команды. Нажатием на клавишу F7 можно посмотреть список последних 24 команд, с возможностью повтора необходимой по ее номеру.
1.7.2 Прерывание Выполнения
1.7.3 Контроль Выходного Потока
1.7.4 Поддержка Прокрутки Буфера
1.8 Справка Командной Строки
2. Список команд UEFI Shell
В данном разделе будут кратко описаны стандартные команды оболочки UEFI Shell. Более подробное описание каждой команды на данный момент отсутствует. Если вы считаете, что подробное описание на русском все же необходимо, напишите об этом в комментариях.
Uefi встроенный efi shell что это
Можно ли обновить мой BIOS на UEFI?
Не совсем. UEFI нельзя прошить вместо BIOS, поскольку он занимает гораздо больше памяти. Но существует такая штука, как DUET. Это загружаемая из BIOS посредством отдельного загрузочного раздела среда UEFI, которая может быть полезна, если вы собираетесь использовать диски объемом >2Тб на своем старом железе с BIOS. Подробнее можно ознакомиться здесь: http://www.rodsbooks.com/bios2uefi/
Здесь за гибкую настройку приоритета загрузки отвечает целый модуль CSM
Что такое GPT? Где в GPT хранятся аналоги загрузочных секторов? Возможно ли сконвертировать диск из MBR в GPT и обратно без потери данных? BootDevСоздание загрузочных дисков и прочие полезные мелочи Страницы2018-11-13UEFI 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?
|