Клавиатура не обнаружена, F1 для возобновления
Мой друг настраивал безголовый сервер с настольным оборудованием потребительского уровня, и он столкнулся с этой ошибкой, которую, без сомнения, многие видели или читали раньше, но кто-нибудь на самом деле знает, почему она существует?
Если клавиатура не обнаружена или имеется ошибка контроллера клавиатуры, как вы можете нажать что-нибудь, чтобы продолжить?
Было ли это своего рода пасхальное яйцо, принятое несколькими производителями BIOS, или существует реальная причина того, почему общая настройка BIOS по умолчанию запрещает загрузку компьютера, если клавиатура не обнаружена, а затем ожидает возобновления процесса загрузки каким-то образом нажав клавишу?
http://p.twimg.com/AsWYydvCEAAiAHL.jpg:large
Я имею в виду серьезно.
2 ответа
Во многих случаях сообщение осталось от прежних времен.
В наши дни, с клавиатурами PS2 и интеллектуальными контроллерами невозможно заменить клавиатуры без перезагрузки, даже большинство USB нужно заменить и затем снова включить, если произойдет ошибка загрузки.
Тем не менее, в тот день, когда началась вся революция ПК, клавиатуры, известные как "клавиатуры XT или AT" (в зависимости от стиля), и большинство из них имели физически довольно тупое соединение.
Кроме того, в большинстве этих устройств сам контроллер клавиатуры был не таким уж умным, во-первых, он обычно был на самой материнской плате ПК, а не на клавиатуре (как это обычно бывает сегодня), поэтому сама клавиатура была действительно довольно тупой, и если произошла реальная физическая неисправность клавиатуры, то часто отключайте ее, подключайте работающую и следуйте инструкциям.
Следовательно, во многих случаях это было чем-то, что на самом деле могло быть выполнено, если неисправность действительно была неисправностью клавиатуры.
Это представление, альтернативное уже опубликованному, с точки зрения кого-то, кто работал в индустрии раннего ремонта ПК, ремонтировал и собирал ПК ранних версий 286/386 и 486, а также решал проблемы с их устранением.
С точки зрения реализации, большинство подпрограмм BIOS POST имеют следующую структуру (POST = Power On Self Test):
InitializeChipset();
if(ErrorDetected()) {
printf("Chipset error\n");
HandleError();
}
InitializeMemoryController();
if(ErrorDetected()) {
printf("Memory error\n");
HandleError();
}
InitializeKeyboardController();
if(ErrorDetected()) {
printf("Keyboard not found\n");
HandleError();
}
InitializeHardDisk();
if(ErrorDetected()) {
printf("Hard disk error\n");
HandleError();
}
...
void HandleError() {
if(UserSettings.WaitForKeyPress) {
printf("Press F1 to Resume\n");
getch();
...
}
}
Обратите внимание, что приведенный выше код является ОГРОМНЫМ упрощением того, как работает BIOS. Также обратите внимание, что BIOS на вашем скриншоте был написан в сборке x86 (не похож на AMI Aptio UEFI).
В основном, если обнаружена ошибка, код переходит к универсальному обработчику ошибок, который говорит: "Нажмите F1 для возобновления". Поведение этого обработчика ошибок подходит в большинстве случаев, за исключением случаев, когда клавиатура не подключена. Это может быть лучше закодировано, но инженеры BIOS могут быть ленивыми.
Относительно того, почему недостающая клавиатура считается ошибкой: при загрузке BIOS она проверяет системное оборудование, включая контроллер клавиатуры. Тест контроллера клавиатуры не пройден, так как клавиатура не обнаружена. В вашем случае ожидался сбой, но он также мог указывать на сломанную клавиатуру или материнскую плату, что было бы плохо для настольного компьютера / ноутбука.
По этой причине в более новых версиях BIOS будет включена возможность пропустить это сообщение об ошибке, когда клавиатура не подключена. Обычно это что-то вроде "Остановка на всех ошибках, кроме клавиатуры". Кроме того, BIOS на серверном оборудовании или встраиваемых системах обычно настраиваются для автономной работы, и по умолчанию это сообщение об ошибке часто игнорируется.