超高速ブート(POST中にキーボードドライバーが読み込まれない)を使用しているときにUEFIファームウェアセットアップユーティリティを起動する必要がある場合は、 "Os Indications" efi変数に書き込みます。私のOSはUbuntu 14.04カーネル3.13.0-35-genericです。
OsIndications
変数はUINT64ビットマスクを返します
OsIndicationsSupported
変数はUINT64ビットマスクを返します
EFI_OS_INDICATIONS_BOOT_TO_FW_UI
ファームウェアは、ファームウェアのユーザーインタフェースで停止するOSの要求をサポートしている場合のビットは、ファームウェアによってOsIndicationsSupported変数に設定することができます。EFI_OS_INDICATIONS_BOOT_TO_FW_UI
OSは、次の起動時にファームウェアのユーザー・インターフェースで停止するファームウェアのために望む場合ビットは、OsIndications変数にOSによって設定することができます。
EFI_OS_INDICATIONS_BOOT_TO_FW_UI
=0x0000000000000001
- UEFI仕様2.3.1Cのページ312
私のファームウェアには、次回の起動時にファームウェアセットアップユーティリティに入る機能があります。
$ 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
。
新しいefivarfsの使用
# 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ランタイムサービスは、カーネルコマンドラインで無効にしないでください。つまり、noefiカーネルパラメータを使用しないでください。
cat /proc/cmdline | grep EFI
何も返さない - efivarfsファイルシステムは/ sys / firmware / efi / efivarsにマウントする必要があり
mount | grep efivars
ますnone on /sys/firmware/efi/efivars type efivarfs (rw)
efivar -l
エラーなしでEFI変数をリストするはずです
コマンドは82行をリストし、エラーはありません。- / sys / firmware / efi / efivars / dump- *ファイルの存在を確認します。
dump-ファイルはありません。
https://ask.fedoraproject.org/en/question/8264/after-installing-fedora-i-cant-open-biosefi-setup/?answer=16402#post-id-16402によると、cat enter-uefi-fw > /sys/firmware/efi/vars/new_var
コマンドはFedoraで機能するはずです17。
最初にOsIndicationsを削除しても改善されない
# 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
コマンドラインからUbuntu 14.04(信頼できる)の既存のOsIndications efi変数を更新するにはどうすればよいですか?
-bash: echo: write error: Invalid argument