Скрипт перед запуском ОС

337
Luciano

Мне нужно запустить скрипт до запуска операционной системы. Сценарий считывает текстовый файл (в файловой системе FAT32), если результат - «A», затем запускает OS1, в противном случае - «B», затем запускает OS2 (другую операционную систему). Я думал о Grub, но я не знаю, как это можно сделать. В качестве альтернативы я мог бы использовать EFI Shell, но в прошивке моего компьютера нет EFI Shell. Как я могу сделать? Спасибо вам всем.

1
Добро пожаловать в Супер пользователя! Интересный вопрос, но какую проблему вы пытаетесь решить, если не возражаете против моего вопроса? Если это что-то вроде «перезагрузка в X / Y при вмешательстве пользователя / программно», возможно, есть способы сделать это в зависимости от вашей настройки :) bertieb 5 лет назад 2
Когда операционная система работает, она записывает текстовый файл в раздел FAT32 (через сценарий), в зависимости от того, произошло событие или нет, скажем, он записывает «A» или «B» (флаг). Это может быть сделано всеми операционными системами, установленными на машине. Если написано «A», то при следующей перезагрузке (или при повторном зажигании) OS1 должна запуститься, если вместо «B» написано, то должна запуститься другая операционная система, скажем OS2 (не OS2 Warp :-)). Это все. Управление обязательно должно быть предзагрузочным Luciano 5 лет назад 0
@Luciano UEFI предоставляет эту функцию из коробки. В Linux вы должны запустить `efibootmgr -n`(вывести числа, запустив` efibootmgr`). С Windows вы должны разобраться сами, я еще не использовал это. gronostaj 5 лет назад 1

1 ответ на вопрос

1
gronostaj

Вы можете скачать EFI Shell из проекта TianoCore . Это релиз с открытым исходным кодом, основанный на реализации Intel.

Загрузите этот двоичный файл, поместите его в системный раздел EFI и добавьте загрузочную запись UEFI. Самый простой способ сделать это - использовать Linux: (как root)

cd /efi/boot wget https://github.com/tianocore/edk2/raw/master/ShellBinPkg/UefiShell/X64/Shell.efi efibootmgr -c -p 1 -l shell.efi -L "EFI Shell" 

Затем установите его в качестве параметра загрузки по умолчанию через интерфейс конфигурации UEFI или с помощью efibootmgr:

efibootmgr -o $(efibootmgr | grep 'EFI Shell' | sed -r -e 's/^Boot0+//' -e 's/\*.*//') 
Большое спасибо, сейчас стараюсь. Какое название скрипта для автозапуска? Luciano 5 лет назад 0
@Luciano http://h17007.www1.hpe.com/docs/iss/proliant_uefi/UEFI_Edgeline_103117/s_enable_shell_auto.html gronostaj 5 лет назад 0
@Luciano .. Для оболочек UEFI имя `startup.nsh` fpmurphy1 5 лет назад 0