У разі необхідності ввести утиліту налаштування прошивки UEFI під час використання надшвидкого завантаження (драйвери клавіатури не завантажуються під час POST), я хочу написати в змінну efi "Показання Os". Моя ОС - ядро Ubuntu 14.04 3.13.0-35-generic.
OsIndications
змінна повертає бітну маску UINT64
OsIndicationsSupported
змінна повертає бітну маску UINT64
EFI_OS_INDICATIONS_BOOT_TO_FW_UI
Біт може бути встановлений в змінної OsIndicationsSupported прошивкою, якщо запити мікропрограм підтримує ОС зупинятися на призначеному для користувача інтерфейсі прошивки.EFI_OS_INDICATIONS_BOOT_TO_FW_UI
Біт може бути встановлений в ОС в змінної OsIndications, якщо бажання OS для прошивки зупинятися на призначеному для користувача інтерфейсі прошивки на наступному завантаженні.
EFI_OS_INDICATIONS_BOOT_TO_FW_UI
=0x0000000000000001
- Сторінка 312 специфікації UEFI 2.3.1C
Моя прошивка має можливість ввести утиліту настройки прошивки при наступному завантаженні:
$ hexdump /sys/firmware/efi/vars/OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c/data
0000000 0001 0000 0000 0000
0000008
Я можу створити нову змінну при /sys/firmware/efi/efivars
використанні
$ printf\x07\x00\x00\x00\x00" > myvar-12345678-1234-1234-1234-123456789abc
Однак записування до змінної efi OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
призводить до всіх видів write error: Invalid argument
:
Використання нових ефіварфів
# printf "x00\x00\x00\x01" > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
-bash: printf: write error: Invalid argument
# printf "x00\x00\x00\x01" > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
-bash: printf: write error: Invalid argument
# printf "\x01" > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
-bash: printf: write error: Invalid argument
# cat enter-uefi-fw > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
cat: write error: Invalid argument
Використання старих 1024 байт максимальних sysfs-efivars
# cat enter-uefi-fw > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
cat: write error: Input/output error
# cat enter-uefi-fw > /sys/firmware/efi/vars/new_var
cat: write error: Invalid argument
# echo 'enter-uefi-fw' > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
-bash: echo: write error: Invalid argument
# printf "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
-bash: printf: write error: Invalid argument
Перевірено вимоги до підтримки змінних UEFI для належної роботи
- Підтримка служб виконання програм EFI повинна бути присутнім у
$ cat /boot/config-$(uname -r) | grep CONFIG_EFI=y
поверненнях ядраCONFIG_EFI=y
- Біт / арка процесора ядра та біт / арка процесора EFI повинні збігатися
? - Ядро має бути завантажено в режимі EFI.
CSM відключений у утиліті налаштування прошивки / BIOS - Служби виконання EFI в ядрі не слід відключати через cmdline ядра, тобто параметр ядра noefi не повинен використовуватися.
cat /proc/cmdline | grep EFI
нічого не повертає - Файлову систему efivarfs слід встановлювати на
mount | grep efivars
поверненнях / sys / firmware / efi / efivarsnone on /sys/firmware/efi/efivars type efivarfs (rw)
efivar -l
повинен перераховувати змінні EFI без будь-яких помилок
Команда перераховує 82 рядки та без помилок.- Перевірте наявність файлів / sys / firmware / efi / efivars / dump- *.
Там немає файлів дампа.
Згідно https://ask.fedoraproject.org/en/question/8264/after-installing-fedora-i-cant-open-biosefi-setup/?answer=16402#post-id-16402cat enter-uefi-fw > /sys/firmware/efi/vars/new_var
команда повинна працювати в Fedora 17.
Перше видалення OsIndication не покращується
# rm -rv /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c
removed '/sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c'
# ls -l enter-uefi-fw
-rw-r--r-- 1 root root 2084 Aug 25 20:23 enter-uefi-fw
# cat enter-uefi-fw > /sys/firmware/efi/vars/new_var
cat: write error: Invalid argument
Як я можу оновити вже існуючу змінну efi OsIndication в Ubuntu 14.04 (надійний) з командного рядка?
-bash: echo: write error: Invalid argument