Uefi shell что это
Перейти к содержимому

Uefi shell что это

  • автор:

BootDev

Представим ситуацию, что по какой то причине, вместо обычной загрузки операционной системы, перед вами появилась командная строка UEFI Shell, с сообщением «Press ESC in 1 in seconds to skip staurtup.nsh or any other key to continue». Что делать?

Возможные Причины

Загрузка в UEFI происходит согласно загрузочным записям. Если в BIOS данные записи представляли просто список имеющихся жестких дисков, то UEFI в данном плане действует по другой схеме. По умолчанию UEFI определяет все диски с таблицей разделов MBR и GPT, с последующим поиском на них разделов отформатированных в поддерживаемую файловую систему. Таковой является FAT(12, 16, 32). Данные диски попадают в загрузочный список. Приоритет загрузки данного списка можно конфигурировать через интерфейс UEFI, или с помощью командной оболочки UEFI Shell.

Каждая загрузочная запись может указывать либо просто на диск, в котором содержится соответствующий FAT-раздел, либо на конкретный *.efi файл. В первом случае UEFI будет искать загрузочный файл по умолчанию. Таковыми, к примеру, являются /EFI/boot/bootx64.efi, /EFI/boot/bootia32.efi, /EFI/boot/bootarm.efi или /EFI/boot/bootaa64.efi. В данном случае указаны файлы boot*.efi предназначены для разных архитектур ПК.

Исполняемые файлы boot*.efi выполняют запуск основного загрузчика операционной системы, таких как Windows Boot Manager, GRUB2, rEFInd, Clover, Xorboot и других. Загрузчик в свою очередь, уже выполняет запуск ядра операционной системы.

Учитывая все сказанное, можно сделать вывод. Раз перед нами красуется UEFI Shell, то значит подсистеме UEFI по какой то причине не удалось найти необходимый загрузочный *.efi файл. Он может быть поврежденным, или просто отсутствовать. Или как говорилось немного выше, может быть просто изменен приоритет загрузочных записей. И последний вариант, просто отсутствует необходимая загрузочная запись.

UEFI Shell — это инструмент управления загрузкой вручную. Если вы не инициировали запуск данной командной оболочки, то это означает, что нужно проверить загрузочную конфигурацию. И не обязательно делать это именно через командную строку. Сперва разбираемся с конфигурацией в меню UEFI. И если результатов нет, то переходим к следующему разделу.

Что Делать в UEFI Shell

Оказавшись в UEFI Shell, первым делом необходимо будет, на удивление, настроить цвета консоли и ее размер. Делается это для того, чтобы избавиться от нечитаемого синего текста на черном фоне. Изменение размера консоли, позволит отображать больше информации. Подправить внешний вид помогут команды cls и mode .

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

Последний шаг, это проверка вручную возможность загрузки с указанного EFI-приложения или диска.

Важным нюансом данного шага, является то, что необходимое EFI-приложение может присутствовать. Но может отсутствовать приложение которое запускается этим приложением. Или оно может быть повреждено.

К примеру, приложение /EFI/Boot/bootx64.efi, указанное в загрузочной записи, запускает /EFI/Microsoft/Boot/bootmgfw.efi, которое запускает приложение выполняющее запуск операционной системы с другого раздела /Windows/System32/Boot/winload.efi.

Если же загрузочная запись указывает просто на диск, то при загрузке с такой записи, на указанном накопителе будет производиться поиск загрузочного EFI-раздела, и в случае его нахождения, поиск на нем загрузочного EFI-приложения по умолчанию (/efi/boot/boot*.efi).

Для такой записи необходимо проверить наличие на диске EFI-раздела, и EFI-приложения расположенного в папке /EFI/boot/. В этом помогут команды map , cd и dir .

Вводим Команды

Все последующие операции будут производиться на виртуальной машине VirtualBox. На виртуальный диск которой, установлено две операционные системы, Windows 10 и Ubuntu 18.10. В качестве основного загрузчика используется GRUB2. Загрузчик Windows Boot Manager, так же присутствует, но не используется.

Не лишним будет, перед началом работы с UEFI Shell, ознакомиться с описанием данной командной оболочки, доступным по этой ссылке https://www.bootdev.ru/2018/05/EFI-Shell.html.

Настройка Консоли

Зададим параметры цвета фона и текста оболочки UEFI Shell. Оптимальными для читабельности, на мой взгляд, являются цвета — серый для фона, и черный для текста.

cls 7 0

Доступные варианты цветов можно посмотреть в справке по команде.

cls -? -b

Размер консоли задается командой mode . Сперва вводим данную команду без каких либо аргументов, чтобы определить доступные разрешения консоли.

А уже после, с указанием нужного разрешения.

mode 128 40

Вывод Загрузочных Записей

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

bcfg boot dump

Текущая загрузочная конфигурация состоит из трех записей.

Запись 0 — загрузка с дисковода.
Запись 1 — загрузка с жесткого диска.
Запись 2 — загрузка встроенной командной оболочки UEFI Shell.

Из присутствующих записей, только одна может осуществлять загрузку операционной системы, это запись под номером 1 (по факту вторая). Запоминаем номер диска и его тип из параметра DevPath.

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

Проверка Наличия EFI-раздела

Все распознанные дисковые (или блочные) устройства можно просмотреть командой map .

Вывод команды, представляет список точек монтирования FS x : и BLK x :, где x это номер.

Точки монтирования начинающиеся с префикса FS (File System), указывают на разделы или диски (в данном случае имеются в виду CD-диски) файловую систему которых подсистема UEFI смогла определить. То есть, с таким разделом/диском можно полноценно работать. Чтение, редактирование, создание, копирование, удаление, перемещение файлов и каталогов.

Точки монтирования начинающиеся с префикса BLK, это разделы или диски (в этом случае, подразумеваются любые диски), файловая система которых неизвестна UEFI. Или это точка монтирования многотомного диска, то есть она указывает на сам диск, а не на его разделы. Каждый раздел этого диска так же будет иметь свою точку монтирования.

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

Все что не отмечено, это разделы отмеченных дисков.

Исключением из правила, что точки монтирования BLK не определяются, так же возможны. А возможны они если к примеру есть точка монтирования FS и BLK указывающие на один и тот же раздел/диск. Ниже, на снимке, отмечены таковые.

Теперь собственно ответ на вопрос, какой из указанных разделов или дисков может являться для подсистемы UEFI загрузочным, то есть может быть EFI-разделом. Таким может быть любая FSx: точка монтирования. Здесь логика проста, если UEFI может прочитать содержимое указанной точки монтирования, то значит возможен поиск загрузчика по умолчанию (тот что располагается в папке /efi/boot/).

В предыдущем разделе, при просмотре загрузочных записей, мы выяснили что загрузочным диском является диск Sata(0x0, 0x0, 0x0). К данному диску относятся следующие записи, отмеченные на снимке ниже.

Понятной в плане файлового доступа, на уровне UEFI, является лишь запись — FS0:. Эта точка монтирования в данном случае, является загрузочным EFI-разделом (по крайней мере для подсистемы UEFI).

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

Проверка Наличия EFI-приложения

Определившись с разделом, который может выступать в качестве загрузочного, необходимо проверить наличие на нем соответствующих загрузочных файлов. Из прошлого раздела, мы выяснили, что в качестве такого может выступать раздел смонтированный под меткой FS0.

Для удобства восприятия, далее по тексту, метки точек монтирования, я буду называть дисками. По аналогии с дисками операционной системы Windows, буква после которой идет знак двоеточия. UEFI Shell в этом плане, как раз копирует, по своим повадкам в большей степени, именно командную оболочку Windows CMD.

Выполним переход на диск FS0.

Приглашение ввода команд изменится, и будет отображать текущее ваше местоположение в файловой системе. На данный момент это корень диска FS0. Просмотрим его содержимое.

В корне диска, присутствует только каталог EFI. Перейдем в данный каталог и посмотрим что в нем находится.

cd EFI ls

Внутри каталога EFI находится три подкаталога Boot, Microsoft и ubuntu. Каталог Boot является в данном случае загрузочным по умолчанию. В нем располагаются загрузочные приложения boot*.efi, которые запускаются подсистемой UEFI автоматически. Просмотрим содержимое данного каталога.

ls Boot

Вывод команды показывает, что в каталоге Boot содержится три файла, один из которых bootx64.efi. Данный файл запускается подсистемой UEFI автоматически. Хочу обратить ваше внимание на цвета данных файлов, в выводе команды ls, они зеленые. Это говорит о том, что данные файлы являются исполняемыми, и их можно запустить вручную.

Если сейчас выполнить запуск файла bootx64.efi, то загрузится загрузчик GRUB2.

Boot\bootx64.efi

Каталоги Microsoft и ubuntu, содержат файлы загрузчиков Windows Boot Manager и GRUB2 соответственно.

ls ubuntu ls Microsoft

Для каталога Microsoft, основные файлы загрузчика располагаются в подкаталоге Boot.

ls Microsoft\Boot -b

Основной загрузчик на данный момент GRUB2. Это означает, что файл /EFI/Boot/bootx64.efi как то использует содержимое каталога /EFI/ubuntu/. Будь то запуск исполняемого файла, либо чтение файла конфигурации. Взглянем внимательно содержимое папок /EFI/Boot/ и /EFI/ubuntu/.

Обратите внимание на файлы shimx64.efi и bootx64.efi, а точнее на их размер. Думаю вы догадались, что данные файлы идентичны. А это означает что, файлу bootx64.efi нет смысла запускать свою копию. Остается два варианта, либо это файл grubx64.efi, что более очевидно исходя из имени файла, либо mmx64.efi. Запустим файл mmx64.efi, чтобы убедиться что это не то приложение.

ubuntu\mmx64.efi

Ожидания подтвердились, открылся явно не загрузчик GRUB2.

Подведем промежуточный итог. Файл /EFI/Boot/bootx64.efi на само деле является файлом /EFI/ubuntu/shimx64.efi. Приложение /EFI/Boot/bootx64.efi при запуске, вызывает другое приложение, а именно /EFI/ubuntu/grubx64.efi. В последнем можно убедиться, просто переименовав файл /EFI/ubuntu/grubx64.efi, с последующей попыткой загрузки с данного диска.

Что полезного можно извлечь из этой информации? Самое важное, это то, что папка /EFI/ubuntu/ содержит полный набор файлов. Если вдруг по какой либо причине, оригинальный файл /EFI/Boot/bootx64.efi будет удален или поврежден, то его можно будет лего восстановить, простым копированием файла /EFI/ubuntu/shimx64.efi с последующим переименованием в bootx64.efi.

Такое поведение, характерно и для директории /EFI/Microsoft/Boot/. В ней так же содержится все необходимое. Роль файла /EFI/Boot/bootx64.efi будет исполнять /EFI/Microsoft/Boot/bootmgfw.efi. Который в свою очередь будет запускать файл /EFI/Microsoft/Boot/bootmgr.efi. То есть, выполнив такую подмену, вместо загрузчика GRUB2 будет запускаться Windows Boot Manager. Попробуем провести такую подмену.

# переименование текущего bootx64.efi mv Boot\bootx64.efi Boot\bootx64.efi_ # копирование файла bootmgfw.efi в bootx64.efi cp Microsoft\Boot\bootmgfw.efi Boot\bootx64.efi # просмотр полученного результата ls Boot

Windows Boot Manager успешно запустился, и загрузил операционную систему Windows 10.

Чтобы вернуть на место загрузчик GRUB2, достаточно просто удалить (или переименовать) текущий файл /EFI/Boot/bootx64.efi, и переименовать /EFI/Boot/bootx64.efi_ к своему прежнему имени bootx64.efi.

# переходим в каталог Boot cd Boot # смотрим список файлов ls # удаляем текущий файл bootx64.efi (стартер загрузчика Windows) rm bootx64.efi # переименовываем обратно, то есть возвращаем на место файл загруpчика GRUB2 mv bootx64.efi_ bootx64.efi # смотрим что получилось ls

Добавление Загрузочных Записей

При обычных условиях, в моем примере с виртуальной машиной, происходит загрузка исполняемого файла по умолчанию /EFI/Boot/bootx64.efi. Этому способствует загрузочная запись указывающая на диск в целом.

bcfg boot dump

В прошлой главе, для того чтобы вернуть вместо загрузчика GRUB2 загрузчик Windows Boot Manager, приходилось производить файловые манипуляции. Переименование и подмена файла bootx64.efi. Точно такого же результата можно добиться просто добавив загрузочную запись, указывающей на нужный исполняемый файл необходимого загрузчика. Добавим ее.

# добавляем загрузочную запись в позицию 0, то есть на первое место bcfg boot add 0 \EFI\Microsoft\Boot\bootmgfw.efi "Start Windows 10" # смотрим текущую загрузочную конфигурацию bcfg boot dump

Посмотрим на загрузочное меню, после добавление новой записи.

Аналогичным образом можно добавить запуск любой исполняемой программы *.efi. Теперь попробуем переместить добавленную запись. Или иначе говоря, изменить приоритет загрузки. Передвинем нашу запись на третье место.

# установка для записи 0 нового порядкового номера 2 bcfg boot mv 0 2 # вывод загрузочной конфигурации bcfg boot dump

Взглянем на загрузочное меню.

И последнее что осталось сделать, это удалить добавленную запись.

# удаление записи под номером 2 bcfg boot rm 2 # вывод загрузочной конфигурации bcfg boot dump

Смотрим загрузочное меню.

Загрузочная запись полностью удалена.

Важным нюансом является нумерация. Учтите что она начинается с нуля. То есть если речь идет о третей записи по списку, ее номер будет 2.

Итог

В данном материале были затронуты следующие вопросы: Что делать если вместо операционной системы загрузилась UEFI Shell? Как работать с UEFI Shell? Как работать с файлами в UEFI Shell? Как восстановить, вернуть прежний загрузчик через UEFI Shell? Как определить загрузочный EFI-раздел? Как работать с загрузочными записями через UEFI Shell? Как добавить загрузочную запись UEFI Shell? Как изменить приоритет загрузочной записи через UEFI Shell? Как удалить загрузочную запись в UEFI Shell? Как выполнить запуск приложений EFI? Как загрузить операционную систему через UEFI Shell?

Думаю это не последняя статья на тему UEFI Shell. В следующих, мы поговорим о загрузке драйверов в UEFI Shell. И установке дополнительного загрузчика через UEFI Shell.

P.S. Некоторые цветовые схемы которые могу вам приглянуться cls 3 11, cls 7 0, cls 5 15 .

Что делать с этой функцией BIOS/UEFI?

Extensible Firmware Interface (EFI) — интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования, его основное предназначение: корректно инициализировать оборудование при включении системы и передать управление загрузчику операционной системы. EFI предназначен для замены BIOS — интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Первая спецификация EFI была разработана Intel, позднее от первого названия отказались и последняя версия стандарта носит название Unified Extensible Firmware Interface (UEFI). В настоящее время разработкой UEFI занимается Unified EFI Forum.

Источник: http://ru.wikipedia.org/wiki/Extensible_Firmware_Interface
Александр БагровИскусственный Интеллект (101879) 10 лет назад

Юрий и ты, и твой Википедия ошибаются, когда говорят о микропрограммах. Это грубая ошибка!
Об этом я написал тут:
http://usepcok .ru/D_BIOSnUEFI/BIOS_General.html#Firmware

Yuriy Мудрец (14329) Александр, к твоему сведению у меня нет моего Википедия. Поэтому, если ты считаешь что там дано неправильное определение, зайди туда и напиши тот вариант, который считаешь правильным.

Uefi — это операционная система? Efi — это операционная сиcтема? Efi Shell — это операционная система?

после загрузки в Efi Shell операционной системе Efi можно подавать через программу Efi Shell разные команды — например установки операционной системы.

Смущает то что Efi Shell прописывается в загрузке как F:\efi\boot\BOOTX64.efi — Выглядит как отдельная ОС

Все ли верно понято?

xn2021u
06.10.21 14:02:47 MSK
Последнее исправление: xn2021u 06.10.21 14:07:16 MSK (всего исправлений: 5)

1 2 3 →

BIOS — это операционная система?

rwx
( 06.10.21 14:15:41 MSK )

ОС выполняет программы внутри себя. UEFI же не выполняет Windows или Linux внутри себя, оно грузит их вместо себя.

Это BIOS с кучей дополнительных опций, не более того.

Vsevolod-linuxoid ★★★★★
( 06.10.21 14:19:55 MSK )

Та не отдельная ос ефи шел а просто приложение(программа) командная оболочка, такое же как например bash или powershell или python. Uefi с натяжкой можно назвать OS так ка железо она инициализирует драйвера может загружать и приложения специально для нее написанные выполнять. Вот только используют ее обычно только для загрузки драйверов фат и загрузки с фат раздела диска или флешки приложения ,,загрузчика другой ос,, линукса, винды и прочего. Однако есть и другие приложение для uefi. Тестеры памяти, оборудования и пр.

anonymous
( 06.10.21 14:23:42 MSK )

В википедии забанили?

ddidwyll ★★★★
( 06.10.21 14:23:53 MSK )

Программа. Просто программа. Если посмотришь любой *.efi в шестнадцатиричном редакторе, то увидишь большое сходство с виндовыми PE-файлами. Например, ЕФИ-шный memtest тоже ЕФИ-файл, и ЕФИ-шелл. Есть и игрушки. И говорят, вирусы.

UEfi — Это операционная система

Раньше это называлось БИОС, сейчас — УЕФИ. Загружает ЕФИ-файлы. Любой ЕФИ-файл прописывается в nvram (то, что ты назвал «прописывается в загрузке»), для этого они и придуманы.

andytux ★★★★★
( 06.10.21 14:24:12 MSK )

Это же аббревиатуры. В них прямо все и написано, что чем является.

BIOS — Basic Input/Output System
DOS — Disk Operating System
EFI — Extensible Firmware Interface

javascript ★
( 06.10.21 14:24:42 MSK )

Короче, тебе нужно сделать на каком-то ином компе или купить установочный носитель с ОС, вроде Windows или Linux, после чего выбрать в UEFI загрузку с этого носителя и поставить ОС на комп, если это и правда новый комп. Всё.

Vsevolod-linuxoid ★★★★★
( 06.10.21 14:25:22 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:19:55 MSK

Это BIOS с кучей дополнительных опций, не более того.

Под UEFI можно писать программы. И запускать их в командной строке uefi как в операционной системе.

Leupold_cat ★★★★★
( 06.10.21 14:27:31 MSK )
Последнее исправление: Leupold_cat 06.10.21 14:30:59 MSK (всего исправлений: 2)

Ответ на: комментарий от Leupold_cat 06.10.21 14:27:31 MSK

Да, да… можно сказать, что UEFI подобна MS-DOS, который через loadlin.exe грузит Linux.

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

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

Ему нужно просто поставить ОС и всё.

Vsevolod-linuxoid ★★★★★
( 06.10.21 14:38:17 MSK )
Последнее исправление: Vsevolod-linuxoid 06.10.21 14:38:42 MSK (всего исправлений: 1)

Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:38:17 MSK

Та ос он поставил, гляньте другую его тему. Судя по всему он ищет повод сдать ноут назад из за отсутствия предустановленной ос

anonymous
( 06.10.21 14:43:07 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:19:55 MSK

UEFI же не выполняет Windows или Linux внутри себя, оно грузит их вместо себя.

Нет, UEFI грузит программу (будь то загрузчик или ядро операционной системы напрямую). Или даже несколько программ, и даже драйверов. Потому хоть оно формально и не является операционной системой, базовые функции ОС оно таки выполняет.

mord0d ★★★★★
( 06.10.21 14:43:31 MSK )

Мое понимание на актуальный момент:

1.Efi = UEfi — Это операционная система 2.Efi shell … не является операционной системой

А что Вы на актуальный момент понимаете под операционной системой?

vM ★★
( 06.10.21 14:50:24 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:25:22 MSK

самый прикол, на офсайте асера для А315-42 заявлено всего шесть моделей, четыре с десяткой хоум, две с линпус линуксом, что хочет этот пассажир, непонятно.

novitchok ★★★★★
( 06.10.21 14:51:07 MSK )
Ответ на: комментарий от mord0d 06.10.21 14:43:31 MSK

Оно даже адресацией памяти не управляет после загрузки ОС, о чём ты.

Vsevolod-linuxoid ★★★★★
( 06.10.21 14:51:25 MSK )
Ответ на: комментарий от mord0d 06.10.21 14:43:31 MSK

хоть оно формально и не является операционной системой, базовые функции ОС оно таки выполняет.

Функции загрузчика объектных модулей форматов, описанных в спецификации UEFI?

vM ★★
( 06.10.21 14:54:45 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:51:25 MSK

Линукс тоже ец не управляет после загрузки другой ос,

anonymous
( 06.10.21 14:55:07 MSK )

Смотря что ты понимаешь под понятием ОС. В каком-то виде Uefi это специализированная ОС предназначенная для загрузки других осей. Под неё можно писать программы и запускать их через её шел — https://habr.com/ru/post/338264/ https://hsto.org/r/w1560/web/e83/ca1/b1b/e83ca1b1bb4143119c9bf12b5dffc7fa.png.

vtVitus ★★★★★
( 06.10.21 15:05:49 MSK )
Последнее исправление: vtVitus 06.10.21 15:08:30 MSK (всего исправлений: 2)

Ты вторую тему решил создать, потому что в первой не читал что тебе писали?

EFI — не операционная система. Ни полностью, ни частично, ни по определению.

Еще раз, капсом и жирным шрифтом. EFI — НЕ ОПЕРАЦИОННАЯ СИСТЕМА.

EFI — это прошивка материнской платы, интерфейс, прослойка, прокладка, кусок кода, который проверяет что подключено к материнке и запускает настоящую полноценную операционную систему.

Этот интерфейс, прослойку, прокладку, кусок кода можно дополнить другими кусками кода, например шеллом или звуковыми драйверами, или возможностью выйти в интернет, но операционной системой EFI от этого не станет, потому что смотри выше, то что написано капсом и жирным шрифтом.

P.S. А F:\efi\boot\BOOTX64.efi это вообще не EFI, не смотря на то что содержит в себе аж два слова EFI. Это загрузчик нормальной полноценной операционной системы, который эта нормальная полноценная операционная система создаст сама, когда ты ее установишь. И находится он на жестком диске или флешке. Тогда как EFI сама по себе находится на материнке и ей похрен есть ли вообще жесткий диск в компе или нет.

qtm ★★★
( 06.10.21 15:10:41 MSK )
Последнее исправление: qtm 06.10.21 15:30:11 MSK (всего исправлений: 1)

Ответ на: комментарий от vtVitus 06.10.21 15:05:49 MSK

Под любой уважающий себя интерпретатор можно писать программки и запускать их.

vM ★★
( 06.10.21 15:11:17 MSK )

Технически да, ефи это ос, но поскольку софта под неё всё равно почти нет, то можешь не воспринимать её в таком ключе.

ya-betmen ★★★★★
( 06.10.21 15:15:09 MSK )
Последнее исправление: ya-betmen 06.10.21 15:15:18 MSK (всего исправлений: 1)

Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:38:17 MSK

Ему нужно просто поставить ОС и всё.

Ему нужно ноут поменять по гарантии. А для этого он должен доказать, что EFI — это ОС, или, наоборот, что НЕ ОС, он внятно не объяснил.

qtm ★★★
( 06.10.21 15:17:33 MSK )
Ответ на: комментарий от qtm 06.10.21 15:17:33 MSK

Нет, для этого он должен либо вернуть диск и efivars в первозданное послепокупочное состояние из бэкапа, либо наорать на бедного не виноватого продавца.

t184256 ★★★★★
( 06.10.21 15:29:38 MSK )
Ответ на: комментарий от t184256 06.10.21 15:29:38 MSK

Он в суд собирается, видимо наорать не получилось.

qtm ★★★
( 06.10.21 15:30:51 MSK )
Ответ на: комментарий от qtm 06.10.21 15:30:51 MSK

Странное у человека хобби, ну да ладно.

t184256 ★★★★★
( 06.10.21 15:37:07 MSK )

Это филосовский вопрос уровня «html — это язык программирования?». Зависит от определения.

fulmar_lor ★
( 06.10.21 15:59:18 MSK )
Ответ на: комментарий от qtm 06.10.21 15:30:51 MSK

Чего, зачем в суд? Если не прошло 14 дней, можно и так вернуть, главное чтобы было как при покупке в плане ОС.

Vsevolod-linuxoid ★★★★★
( 06.10.21 16:00:18 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 16:00:18 MSK

Я не знаю в чем там проблема. То ли ТС снес операционку, которая там была, а теперь пытается доказать что UEFI — это и есть операционка, а он ничего не делал. То ли наоборот, с него срубили бабок за операционку, которой в ноуте не оказалось и он теперь пытается доказать что UEFI — не операционка.

qtm ★★★
( 06.10.21 16:14:16 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 16:00:18 MSK

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

anonymous
( 06.10.21 16:17:56 MSK )
Ответ на: комментарий от qtm 06.10.21 16:14:16 MSK

Да ему будет быстрее поставить уже ОС на этот ноут.

Vsevolod-linuxoid ★★★★★
( 06.10.21 17:10:48 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 17:10:48 MSK

Ну может у него очень много свободного времени.

qtm ★★★
( 06.10.21 17:16:39 MSK )
Ответ на: комментарий от vM 06.10.21 15:11:17 MSK

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

vtVitus ★★★★★
( 06.10.21 18:25:13 MSK )
Последнее исправление: vtVitus 06.10.21 18:26:40 MSK (всего исправлений: 2)

darkenshvein ★★★★★
( 06.10.21 18:34:31 MSK )

фемка — это человек?

anonymous
( 06.10.21 18:46:24 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:38:17 MSK

qtm

Херасе вы тут с ним нянчитесь.

intelfx ★★★★★
( 06.10.21 18:50:33 MSK )
Ответ на: комментарий от intelfx 06.10.21 18:50:33 MSK

Мне скучно просто)

qtm ★★★
( 06.10.21 19:18:59 MSK )
anonymous
( 06.10.21 19:37:57 MSK )
Ответ на: комментарий от mord0d 06.10.21 14:43:31 MSK

Linux может загружать другую ос через kexec, значит он не ос?

anonymous
( 06.10.21 19:41:10 MSK )
Ответ на: комментарий от Vsevolod-linuxoid 06.10.21 14:19:55 MSK

ОС выполняет программы внутри себя.

Первая ссылка в гугле

drvdiag — Диагностика драйверов UEFI.

chenbr0
( 06.10.21 19:46:39 MSK )
Ответ на: комментарий от t184256 06.10.21 15:29:38 MSK

бедного не виноватого продавца.

люблю короткие анекдоты.

TPPPbIHDELj ★
( 06.10.21 19:59:44 MSK )

наконец-то годный троллинг/наброс. свежо и не заезжено до дыр. аффтор пиши исчо )

anonymous
( 06.10.21 20:01:43 MSK )

Давайте по порядку?

Есть две сущности. BIOS и UEFI.

Задача BIOS – произвести полную инициализацию и начальное конфигурирование Вашего компьютера после включения питания. У BIOS есть несколько стадий, но они нам не особо нужны сейчас. Если BIOS компьютера выставлен в Legacy mode, то BIOS произведёт загрузку с устройств, размеченных MBR.

После того, как всё проинициализировано (или Вы вошли в конфигурацию и чего-то там сконфигурировали под свои нужды), начинается стадия UEFI.

UEFI это специализированная операционная система, имеющая свой API и протокол обмена между программами/подсистемами. Исполняемые файлы имеют расширение *.efi . Но нет, она не предназначена для обеспечения работы конечного пользователя устройства, т.е. Вас. Она может либо загрузить некий программный код для специализированных нужд (например, тестирование оборудования при его производстве без установки каких-либо ОС), она может загрузить образ системы того же Linux (или не загрузить его, если Secure Boot против загрузки, например, ключи и подписи не совпали). Загрузка производится с диска, размеченного GPT.

EFI Shell это интерфейс командной строки к самой по себе UEFI. Ну, то есть, в терминах Linux это некий такой урезанный аналог bash. Здесь задача – либо запустить какой-то файл на исполнение, либо провести загрузку какой-то ОС в ручном режиме.

Что UEFI, что BIOS, что модули для UEFI поставляются в виде исполняемого кода (фирмвари). Модули могут так же поставляться отдельно.

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

Ну вот, как-то так. Вывод – не стоит это называть именно ОС и упирать на этот факт в суде. По идее, у Вас даже доступа к ней быть не должно в обычных условиях. Точнее, он Вам и не нужен.

Moisha_Liberman ★★
( 06.10.21 20:14:14 MSK )
Последнее исправление: Moisha_Liberman 06.10.21 20:16:15 MSK (всего исправлений: 1)

Ответ на: Давайте по порядку? от Moisha_Liberman 06.10.21 20:14:14 MSK

Что тут за дичь написана.

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

Добро пожаловать, просвещайтесь https://uefi.org/

javascript ★
( 06.10.21 20:19:51 MSK )
Ответ на: комментарий от anonymous 06.10.21 19:41:10 MSK

Это ты Vsevolod-linuxoid и vM объясни. (%

Я лишь писал что UEFI выполняет базовые функции ОС, формально ей не являясь.

mord0d ★★★★★
( 06.10.21 20:23:35 MSK )
Ответ на: комментарий от mord0d 06.10.21 20:23:35 MSK

По определению самого Intel, которые и разработали первоначальный стандарт EFI для IA32,ставший в последствии UEFI, UEFI — это *программный интерфейс между операционной системой и встроенным в оборудование ПО.

По факту, UEFI — это BIOS на стероидах. Он поддерживает 64-битную адресацию, поддерживает накопители большого объема, благодаря чему может поддерживать работу в графическом режиме и даже множественные устройства ввода,такие как мышь или тач. Может выполнять дополнительные программы, зашитые в пзу, или загружать их с накопителей, которые и реализуют, например shell или secure boot.

BIOS выполнял те же функции, он тоже инициализировал оборудование, обрабатывал прерывания, выполнял загружаемые программы (такие как DOS, например). Но он имел меньший объем возможностей.

javascript ★
( 06.10.21 20:32:34 MSK )
Ответ на: комментарий от javascript 06.10.21 20:32:34 MSK

по пределению самой интел (автора x86) амд выпускает склейки а не настоящие процессоры))) может уже пора характеризовать вещи по фактам, а не опираться на «авторитеты»?

anonymous
( 06.10.21 20:41:04 MSK )
Ответ на: комментарий от TPPPbIHDELj 06.10.21 19:59:44 MSK

А у вас за прилавками все еще торгуют зажиточные купцы собственной персоной?

t184256 ★★★★★
( 06.10.21 20:41:54 MSK )
Ответ на: комментарий от anonymous 06.10.21 20:41:04 MSK

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

Определения на то и определения, что их кто-то вводит.

javascript ★
( 06.10.21 20:42:25 MSK )
Ответ на: комментарий от javascript 06.10.21 20:42:25 MSK

Почитай выше утверждение Vsevolod-linuxoid , он по большей части прав, но это никак не отменяет моё утверждение.

mord0d ★★★★★
( 06.10.21 20:43:35 MSK )
Ответ на: комментарий от javascript 06.10.21 20:42:25 MSK

у каждой вещи есть определённые характеристики, наличие/отсутствие их легко проверяется

anonymous
( 06.10.21 20:47:46 MSK )
Ответ на: комментарий от anonymous 06.10.21 20:47:46 MSK

И кто определяет конкретный набор характеристик, которыми должна обладать вещь, чтобы удовлетворять определению?

Как ты собираешься доказывать, что твой набор характеристик определения более правильный, чем набор характеристик этого определения другого анона?

BootDev

UEFI Shell, или командная оболочка UEFI — это часть системы UEFI, предназначенная для выполнения запуска исполняемых *.efi файлов и UEFI-загрузчиков. Кроме этого, UEFI Shell позволяет: осуществлять загрузку UEFI-драйверов, выполнять файловые операции на поддерживаемых файловых системах (поддержка которых может быть добавлена загрузкой соответствующих драйверов), управлять загрузочным списком, работать с сетью (есть поддержка TCP/IP), выполнять сценарии *.nsh состоящие из команд данной оболочки.

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 Перенаправление Ввода

Данные из существующего файла или переменной могут быть направлены на входной поток любой команды. Например:

1.4.3 Конвейер Команд

Данные из выходного потока одной команды можно направить на входящий поток другой, образуя при этом конвейер команд. Например:

command1 | command2
command1 |a command2

В первом случае происходит перенаправление вывода команды command1 во входящий поток команды command2. Во втором случае все тоже самое но в кодировке ASCII.

1.5 Комментарии

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

1.6 Переменные

Переменные создаются с помощью команды set либо с помощью перенаправления вывода в переменную. Так же существую переменные окружения, речь о которых пойдет ниже.
Доступ к переменным в командной строке, или скриптах, осуществляется путем заключения ее имени между символами процента % .

1.6.1 Переменные Окружения

Переменные окружения создаются самой командной оболочкой при ее инициализации. Некоторые из них можно изменять а некоторые нет. Каждый новый сеанс командной оболочки содержит свой независимый список переменных окружения. Ниже представлен список переменных окружения UEFI Shell:

cwd — Текущая рабочая директория. Доступна только для чтения.

lasterror — Код ошибки последней выполненной команды. Доступна только для чтения.

path — Содержит пути до директорий, перечисленных через точку с запятой, по которым UEFI Shell производит поиск запрошенных исполняемых файлов. Можно перезаписывать.

profiles — Список профилей UEFI Shell которые поддерживаются командной оболочкой. Доступна только для чтения.

uefishellsupport — Текущий уровень поддержки UEFI Shell. Всего их 4 (0, 1, 2, 3). Доступна только для чтения.

uefishellversion — Версия оболочки UEFI Shell. Доступна только для чтения.

uefiversion — Версия системы UEFI. Доступна только для чтения.

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

1.6.2 Позиционные Переменные

Позиционные параметры используются в скирптах. Всего их десять, имеют вид %0%9 . Переменная %0 содержит в себе полный путь и имя исполняемого скрипта. Остальные переменные %1%9 содержат переданные аргументы.

1.6.3 Псевдонимы

Псевдонимы представляют собой дополнительное имя уже имеющейся команды или приложения. Возможны два варианта псевдонимов, на основе переменных, и созданные с помощью команды alias.

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

1.6.4 Файловые Маски

Файловые маски в данной оболочке используют следующие символы * , ? , [] .

* — Любые символы в количестве от нуля и более.
? — Любой один символ.
[] — Один из указанных символов в квадратных скобках.

Пример использования файловых масок:

ls *.efi #вывод только файлов заканчивающихся суффиксом .efi
ls . #вывод файлов чьи имена состоят из 5 символов
ls [abc]* #вывод файлов начинающихся с символа a, b или с

1.7 Интерактивные Возможности

1.7.1 Клавиши Истории Команд

Командная оболочка UEFI Shell запоминает последние выполненные команды. Нажатием на клавиши стрелок вверх или вниз, можно выводить в командную строку последние выполненные команды. Нажатием на клавишу F7 можно посмотреть список последних 24 команд, с возможностью повтора необходимой по ее номеру.

1.7.2 Прерывание Выполнения

В UEFI Shell присутствует возможность прерывать выполнение команды, исполняемого файла или скрипта. Осуществляется прерывание выполнения с помощью сочетания клавиш CTRL+C .

1.7.3 Контроль Выходного Потока

UEFI Shell поддерживает возможность останавливать вывод (ставить на паузу), и продолжать его с остановленного места. Остановить вывод можно сочетанием клавиш CTRL+S . Нажатием на любую клавишу исполняемая команда продолжит свое выполнение.

1.7.4 Поддержка Прокрутки Буфера

UEFI Shell позволяет прокручивать буфер вывода на 3 экрана назад. Осуществляется такая прокрутка клавишами PgUp и PgDown .

1.8 Справка Командной Строки

Вызвать общую информацию о командах в UEFI Shell можно выполнив команду help . Так как список не умещается на один экран, вы увидите лишь конец списка. Чтобы избежать такого поведения и выводить информацию постранично, необходимо запустить команду с параметром -b . Выглядеть это будет так help -b . Параметр -b можно использовать в любой ситуации, когда выходная информация не умещается на один экран.

Каждая команда из help списка обладает своей справочной информацией. Вызвать данную информацию можно выполнив необходимую команду с параметром -? , либо передав команде help название команды по которой необходимо получить справку. Пример:

ls -? #вывод справки команды ls
help ls #тоже самое
for -? -b #вывод справки по команде for в постраничном режиме

2. Список команд UEFI Shell

В данном разделе будут кратко описаны стандартные команды оболочки UEFI Shell. Более подробное описание каждой команды на данный момент отсутствует. Если вы считаете, что подробное описание на русском все же необходимо, напишите об этом в комментариях.

Напомню, что справку по каждой команде можно получить запустив ее с ключом -? .

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


alias — Отображает, создает, или удаляет псевдонимы UEFI Shell.

attrib — Отображает или изменяет атрибуты файлов или директорий.

bcfg — Управляет загрузочными записями и настройками драйверов сохраненных в NVRAM (энергонезависимой памяти).

cd — Отображает или меняет текущий рабочий каталог.

cls — Очищает окно консоли, а так же позволяет задать цвета фона и текста.

comp — Сравнивает содержимое двух файлов побайтово.

connect — Привязывает драйвер к определенному устройству и запускает драйвер.

cp — Копирует один или несколько файлов или каталогов в указанное место.

date — Отображает и устанавливает текущую дату для системы.

dblk — Отображает один или несколько блоков с блочного устройства.

devices — Отображает список устройств, управляемых драйверами UEFI.

devtree — Отображает дерево устройств, совместимых с драйверами модели UEFI.

dh — Отображает дескрипторы устройств в UEFI окружении.

disconnect — Отключает один или несколько драйверов от указанных устройств.

dmem — Отображает содержимое системной памяти или памяти устройства.

dmpstore — Управляет всеми переменными UEFI.

drivers — Отображает список драйверов UEFI.

drvcfg — Настройка драйверов UEFI.

drvdiag — Диагностика драйверов UEFI.

echo — Контролирует режим отображение вывода команд в скриптах, или выводит сообщение.

edit — Вызывает полноэкранный текстовый редактор для файлов ASCII или UCS-2.

eficompress — Архивирует файл с использованием алгоритма сжатия UEFI.

efidecompress — Разархивирует файл сжатый алгоритмом сжатия UEFI.

else — Определяет код, выполняемый, когда if имеет значение FALSE.

endfor — Заканчивает цикл for.

endif — Заканчивает блок кода, управляемый оператором if.

exit — Выход из оболочки UEFI или текущего скрипта.

for — Начинает цикл, основанный на синтаксисе for.

getmtc — Выводит счетчик MTC.

goto — Переходит к указанной точке в выполняемом скрипте.

help — Отображает список команд UEFI Shell или справку по конкретной команде.

hexedit — Вызывает полноэкранный шестнадцатеричный редактор для файлов, блочных устройств или памяти.

if — Выполняет команды в заданных условиях.

ifconfig — Отображает или изменяет настройки протокола IPv4 для указанного сетевого интерфейса.

ifconfig6 — Отображает или изменяет настройки протокола IPv6 для указанного сетевого интерфейса.

load — Загружает драйвер UEFI в память.

loadpcirom — Загружает в память файл образ PCI Option ROM.

ls — Выводит содержимое директории или информацию о файле.

map — Отображает или определяет сопоставления файловой системы.

memmap — Отображает карту памяти, поддерживаемую средой UEFI.

mkdir — Создает одну или несколько новых директорий.

mm — Отображает или изменяет адресное пространство MEM/MMIO/IO/PCI/PCIE.

mode — Отображает или изменяет режим выходного устройства консоли.

mv — Перемещает один или несколько файлов в указанное местоположение или между файловыми системами.

openinfo — Отображает протоколы и агенты, связанные с дескриптором.

parse — Извлекает значение соответствующее заданному условию из указанного текстового файла.

pause — Останавливает выполнение скрипта и ожидает нажатия любой клавиши.

pci — Отображает список устройств PCI или информацию о них.

ping — Пингует указанный хост или IP-адрес по протоколу IPv4.

ping6 — Пингует указанный хост или IP-адрес по протоколу IPv6.

reconnect — Повторное подключение драйверов к определенному устройству.

reset — Перезагружает систему.

rm — Удаляет один или несколько файлов или каталогов.

sermode — Устанавливает атрибуты последовательного порта.

set — Отображает или изменяет переменные среды UEFI Shell.

setsize — Приводит файл к указанному размеру.

setvar — Отображает или изменяет переменную UEFI.

shift — Сдвигает позиции позиционных параметров в скрипте.

smbiosview — Отображает информацию о SMBIOS.

stall — Останавливает выполнение (ожидает) на указанное количество микросекунд (1 сек = 1000000 мксек).

time — Отображает или устанавливает текущее время для системы.

timezone — Отображает или задает информацию о часовом поясе.

touch — Обновляет временную метку указанного файла или файлов до текущей системной даты и времени.

type — Выводит содержимое указанного файла на стандартное устройство вывода (экран).

unload — Выгружает загруженные ранее драйвера.

ver — Отображает информацию о версии встроенного ПО UEFI.

vol — Отображает или изменяет информацию о разделе диска.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *