Startup keys in windows startup

BootDev

Создание загрузочных дисков и прочие полезные мелочи

Страницы

2018-12-06

UEFI Shell: Скрипт автозапуска startup.nsh

Содержание

Файлы с расширением *.nsh

Файлы с расширением *.nsh, для оболочки UEFI Shell являются командными, и имеют статус исполняемых. То есть, создав файл с этим расширение, вписав в него команды оболочки UEFI Shell, и выполнив запуск полученного файла, произойдет поочередное выполнение содержащихся в нем команд. Такие файлы называют скриптами.

Особенность файла startup.nsh является в том, что при запуске UEFI Shell происходит его выполнение, если конечно пользователь не отменит данное действие нажатием клавиши ESC. Это по сути делает данный файл, файлом автозапуска (по аналогии с файлом autoexec.bat для операционной системы MS-DOS).

Как можно использовать данную особенность? Самое простое, что можно сделать, это выполнить автоматическое изменение размера и цветовой схемы командной оболочки. Более усложненный вариант, выполнение указанных *.efi приложений, в зависимости от выполненных условий.

Возможности скриптов

Как было сказано в предыдущем разделе, скрипты могут содержать в себе команды оболочки UEFI Shell. Абсолютно любые. Используя их вы можете составить свой сценарий выполнения необходимых вам команд. Рассмотрим самые типичные действия для скриптов:

1. Вывод информации.
2. Выполнение команд, или исполняемых файлов.
3. Условные переходы.
4. Чтение информации.
5. Циклические действия.

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

Список доступных команд, а так же особенности командной оболочки UEFI Shell, читаем по этой ссылке. Пример работы с командной оболочкой UEFI Shell.

Простой скрипт

Реализуем самые частые действия в простых скриптах, это вывод текстовой информации и выполнение запуска команд/приложений. Далее приведен текст тестового скрипта:

Сохраним данный текст в файл (обычный текстовый файл) под именем simple_script.nsh, в корень загрузочной флешки с UEFI Shell.

Загрузимся в UEFI Shell.

Перейдем в корень флешки и выведем список файлов.

Файл simple_script.nsh отмечен зеленым цветом, что говорит о возможности его запуска. Выполним запуск файла simple_script.nsh.

Скрипт, выполнил изменение цветовой схемы, размера экрана, и вывел текстовые сообщения о проделанной работе. К сожалению, текст на русском выводить невозможно. Хоть кодировка UCS-2 позволяет это сделать, но в самой оболочке не содержатся соответствующие шрифты.

Интерактивный скрипт

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

Текущая спецификация UEFI Shell содержит лишь одну интерактивную команду pause . Эта команда останавливает выполнение скрипта, и ожидает дальнейшего действия от пользователя. Действий всего два — нажать клавишу q для выхода из сценария, или нажать на любую другую клавишу для продолжения его выполнения.

Пример интерактивного скрипта:

Создаем файл interactive_script.nsh с данным текстом в корне загрузочной флешки с UEFI Shell.

Загружаемся в UEFI Shell, переходим в корень флешки, выводим список файлов.

Выполняем запуск интерактивного скрипта interactive_script.nsh.

Первое сообщение, с выбором. Приглашение.

Шаг первый. Вывод информации о версии UEFI Shell.

Шаг второй. Вывод смонтированных дисков с поддерживаемыми файловыми системами.

Шаг третий. Вывод списка доступных PCI-устройств.

На каждом их этих шагов, можно нажать клавишу q и вернуться обратно к командной строке.

Скрипт с условиями и циклами

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

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

Сохраняем полученный код в файл complex_script.nsh и размещаем его в корне загрузочной флешки с UEFI Shell.

Запускаем UEFI Shell, переходим в корень флешки, выводим список файлов.

Выполним запуск скрипта complex_script.nsh.

Начнется циклическая смена цветов фона экрана, с выводом названия текущего цвета. Оставить выполнение скрипта можно сочетанием клавиш CTRL+C .

Читайте также:  Moroshka file manager ��� mac os

Startup.nsh

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

То есть, вы можете взять любой скрипт, из вышеописанных, переименовать его в startup.nsh, и наблюдать за тем как он запускается при старте UEFI Shell. Единственный вопрос, это в какой директории должен располагаться скрипт startup.nsh? Ответить на этот вопрос поможет команда set .

Выполняем команду set . Она выводит текущие установленные переменные оболочки UEFI.

Обращаем внимание на переменную path. Данной переменной присвоены пути, через знак точки с запятой «;«, по которым происходит поиск исполняемых файлов. Разместив скрипт startup.nsh в один из этих каталогов, он гарантированно запустится.

Пути, вне зависимости от диска, по которым происходит поиск \EFI\boot, \EFI\tools, \ (то есть корень диска). Причем поиск происходит именно в указанной последовательности.

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

Сохраняем полученный файл под именем startup.nsh, и копируем его в одну из указанных выше директорий.

Запускаем UEFI Shell.

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

Определение класса запуска OWIN OWIN Startup Class Detection

В этом руководстве показано, как настроить, какой класс запуска OWIN загружается. This tutorial shows how to configure which OWIN startup class is loaded. Дополнительные сведения о OWIN см. в обзоре проекта Katana. For more information on OWIN, see An Overview of Project Katana. Этот учебник написан на Рик Андерсон (( @RickAndMSFT ), прабураж Сиагаражан и Говард дайеркинг ( @howard_Дайеркинг ). This tutorial was written by Rick Anderson ( @RickAndMSFT ), Praburaj Thiagarajan, and Howard Dierking ( @howard_dierking ).

предварительные требования Prerequisites

Определение класса запуска OWIN OWIN Startup Class Detection

Каждое приложение OWIN имеет класс Startup, в котором указываются компоненты для конвейера приложения. Every OWIN Application has a startup class where you specify components for the application pipeline. Существует несколько способов подключения класса Startup к среде выполнения в зависимости от выбранной модели размещения (Овинхост, IIS и IIS-Express). There are different ways you can connect your startup class with the runtime, depending on the hosting model you choose (OwinHost, IIS, and IIS-Express). Класс Startup, показанный в этом учебнике, можно использовать во всех приложениях размещения. The startup class shown in this tutorial can be used in every hosting application. Вы подключаете класс Startup к среде выполнения размещения, используя один из следующих подходов: You connect the startup class with the hosting runtime using one of the these approaches:

Соглашение об именовании: Katana ищет класс с именем Startup в пространстве имен, соответствующем имени сборки или глобальному пространству имен. Naming Convention: Katana looks for a class named Startup in namespace matching the assembly name or the global namespace.

Атрибут овинстартуп: это подход, который большинство разработчиков будет использовать для указания класса Startup. OwinStartup Attribute: This is the approach most developers will take to specify the startup class. Следующий атрибут задает классу Startup классу TestStartup в пространстве имен StartupDemo . The following attribute will set the startup class to the TestStartup class in the StartupDemo namespace.

Атрибут OwinStartup переопределяет соглашение об именовании. The OwinStartup attribute overrides the naming convention. Можно также указать понятное имя с помощью этого атрибута, однако при использовании понятного имени необходимо также использовать элемент appSetting в файле конфигурации. You can also specify a friendly name with this attribute, however, using a friendly name requires you to also use the appSetting element in the configuration file.

Элемент appSetting в файле конфигурации: элемент appSetting переопределяет атрибут OwinStartup и соглашение об именовании. The appSetting element in the Configuration file: The appSetting element overrides the OwinStartup attribute and naming convention. Можно использовать несколько классов запуска (каждый с помощью атрибута OwinStartup ) и указать, какой класс запуска будет загружаться в файл конфигурации, используя разметку, аналогичную следующей: You can have multiple startup classes (each using an OwinStartup attribute) and configure which startup class will be loaded in a configuration file using markup similar to the following:

Читайте также:  Ошибка 80070020 windows phone что это

Следующий ключ, явно указывающий класс запуска и сборку, также можно использовать: The following key, which explicitly specifies the startup class and assembly can also be used:

Следующий XML-код в файле конфигурации указывает понятное имя класса запуска ProductionConfiguration . The following XML in the configuration file specifies a friendly startup class name of ProductionConfiguration .

Приведенная выше разметка должна использоваться со следующим атрибутом OwinStartup , который указывает понятное имя и приводит к запуску ProductionStartup2 класса. The above markup must be used with the following OwinStartup attribute which specifies a friendly name and causes the ProductionStartup2 class to run.

Чтобы отключить обнаружение запуска OWIN, добавьте appSetting owin:AutomaticAppStartup со значением «false» в файле Web. config. To disable OWIN startup discovery add the appSetting owin:AutomaticAppStartup with a value of «false» in the web.config file.

Создание веб-приложения ASP.NET с помощью OWIN Startup Create an ASP.NET Web App using OWIN Startup

Создайте пустое веб-приложение Asp.Net и назовите его стартупдемо. Create an empty Asp.Net web application and name it StartupDemo. — Установите Microsoft.Owin.Host.SystemWeb с помощью диспетчера пакетов NuGet. — Install Microsoft.Owin.Host.SystemWeb using the NuGet package manager. В меню Сервис выберите Диспетчер пакетов NuGet, а затем — консоль диспетчера пакетов. From the Tools menu, select NuGet Package Manager, and then Package Manager Console. Введите следующую команду: Enter the following command:

Добавьте класс запуска OWIN. Add an OWIN startup class. В Visual Studio 2017 щелкните проект правой кнопкой мыши и выберите Добавить класс. — в диалоговом окне Добавление нового элемента введите OWIN в поле поиска и измените имя на Startup.cs, а затем нажмите кнопку Добавить. In Visual Studio 2017 right-click the project and select Add Class.- In the Add New Item dialog box, enter OWIN in the search field, and change the name to Startup.cs, and then select Add.

В следующий раз, когда нужно добавить класс запуска Owin, он будет доступен в меню Добавить . The next time you want to add an Owin Startup class, it will be in available from the Add menu.

Кроме того, можно щелкнуть проект правой кнопкой мыши и выбрать Добавить, выбрать пункт создать элемент, а затем выбрать класс запуска Owin. Alternatively, you can right-click the project and select Add, then select New Item, and then select the Owin Startup class.

Замените созданный код в файле Startup.CS следующим кодом: Replace the generated code in the Startup.cs file with the following:

app.Use лямбда-выражение используется для регистрации указанного компонента по промежуточного слоя в конвейере OWIN. The app.Use lambda expression is used to register the specified middleware component to the OWIN pipeline. В этом случае мы настраиваете ведение журнала входящих запросов перед ответом на входящий запрос. In this case we are setting up logging of incoming requests before responding to the incoming request. Параметр next — это делегат ( Func ) к следующему компоненту в конвейере. The next parameter is the delegate ( Func ) to the next component in the pipeline. app.Run лямбда-выражение подключает конвейер к входящим запросам и предоставляет механизм ответа. The app.Run lambda expression hooks up the pipeline to incoming requests and provides the response mechanism.

В приведенном выше коде мы добавили в комментарий атрибут OwinStartup , и мы используем соглашение о запуске класса с именем Startup . для запуска приложения нажмите клавишу F5 . In the code above we have commented out the OwinStartup attribute and we’re relying on the convention of running the class named Startup .- Press F5 to run the application. Несколько раз нажмите кнопку «Обновить». Hit refresh a few times.

Примечание. число, показанное в изображениях этого учебника, не будет совпадать с отображаемым числом. Note: The number shown in the images in this tutorial will not match the number you see. Строка миллисекунды используется для отображения нового ответа при обновлении страницы. The millisecond string is used to show a new response when you refresh the page. Данные трассировки можно просмотреть в окне вывод . You can see the trace information in the Output window.

Читайте также:  Virtualbox linux установка через консоль

Добавление классов запуска Add More Startup Classes

В этом разделе мы добавим еще один класс Startup. In this section we’ll add another Startup class. В приложение можно добавить несколько классов запуска OWIN. You can add multiple OWIN startup class to your application. Например, может потребоваться создать классы запуска для разработки, тестирования и производства. For example, you might want to create startup classes for development, testing and production.

Создайте новый класс запуска OWIN и назовите его ProductionStartup . Create a new OWIN Startup class and name it ProductionStartup .

Замените сгенерированный код следующим кодом: Replace the generated code with the following:

Нажмите клавишу Control F5, чтобы запустить приложение. Press Control F5 to run the app. Атрибут OwinStartup указывает, что запущен рабочий класс запуска. The OwinStartup attribute specifies the production startup class is run.

Создайте другой класс запуска OWIN и назовите его TestStartup . Create another OWIN Startup class and name it TestStartup .

Замените сгенерированный код следующим кодом: Replace the generated code with the following:

Перегрузка атрибута OwinStartup выше указывает TestingConfiguration как понятное имя класса запуска. The OwinStartup attribute overload above specifies TestingConfiguration as the friendly name of the Startup class.

Откройте файл Web. config и добавьте ключ запуска приложения OWIN, который указывает понятное имя класса Startup: Open the web.config file and add the OWIN App startup key which specifies the friendly name of the Startup class:

Нажмите клавишу Control F5, чтобы запустить приложение. Press Control F5 to run the app. Элемент параметров приложения имеет приоритет и выполняется конфигурация теста. The app settings element takes precedent, and the test configuration is run.

Удалите понятное имя из атрибута OwinStartup в классе TestStartup . Remove the friendly name from the OwinStartup attribute in the TestStartup class.

Замените ключ запуска приложения OWIN в файле Web. config следующим образом: Replace the OWIN App startup key in the web.config file with the following:

Верните атрибут OwinStartup в каждом классе в код атрибута по умолчанию, созданный Visual Studio: Revert the OwinStartup attribute in each class to the default attribute code generated by Visual Studio:

Каждый из ключей запуска приложения OWIN, приведенных ниже, приведет к запуску рабочего класса. Each of the OWIN App startup keys below will cause the production class to run.

Последний ключ запуска задает метод конфигурации запуска. The last startup key specifies the startup configuration method. Следующий ключ запуска приложения OWIN позволяет изменить имя класса конфигурации на MyConfiguration . The following OWIN App startup key allows you to change the name of the configuration class to MyConfiguration .

Использование Овинхост. exe Using Owinhost.exe

Замените файл Web. config следующей разметкой: Replace the Web.config file with the following markup:

Последний ключ WINS, поэтому в данном случае TestStartup указан. The last key wins, so in this case TestStartup is specified.

Установите Овинхост из PMC: Install Owinhost from the PMC:

Перейдите в папку приложения (папку, содержащую файл Web. config ) и в командной строке введите: Navigate to the application folder (the folder containing the Web.config file) and in a command prompt and type:

В командном окне отобразится следующее: The command window will show:

Запустите браузер с URL-адресом http://localhost:5000/ . Launch a browser with the URL http://localhost:5000/ .

Овинхост учитывает приведенные выше соглашения о запуске. OwinHost honored the startup conventions listed above.

В окне командной строки нажмите клавишу ВВОД, чтобы выйти из Овинхост. In the command window, press Enter to exit OwinHost.

В классе ProductionStartup добавьте следующий атрибут Овинстартуп, указывающий понятное имя продуктионконфигуратион. In the ProductionStartup class, add the following OwinStartup attribute which specifies a friendly name of ProductionConfiguration.

В командной строке введите: In the command prompt and type:

Загружается класс рабочего запуска. The Production startup class is loaded.

Наше приложение имеет несколько классов запуска, и в этом примере мы отложили, какой класс запуска будет загружаться до выполнения. Our application has multiple startup classes, and in this example we have deferred which startup class to load until runtime.

Проверьте следующие параметры запуска среды выполнения: Test the following runtime startup options:

Оцените статью