LINUX.ORG.RU

Удаление /sys/firmware/efi/efivars может повредить материнскую плату

 , , ,


2

7

Обнаружилось, что на некоторых компьютерах с UEFI удаление файлов в каталоге /sys/firmware/efi/efivars, а также, как следствие, команды вроде rm -rf /sys и rm -rf --no-preserve-root / могут привести к повреждению прошивки материнской платы, после которого компьютер вообще перестаёт загружаться. Восстановить прошивку «в домашних условиях» после этого часто невозможно.

Согласно спецификации UEFI, такого не должно происходить: настройки прошивки должны просто сброситься на заводские. Однако прошивка многих материнских плат содержит ошибки.

Ошибка стала широко известной благодаря сообщению о баге в systemd (хотя это не первое сообщение об этой проблеме): так как виртуальная файловая система в /sys/firmware/efi/efivars монтируется systemd, разработчикам посоветовали монтировать её только для чтения. Леннарт Поттеринг, главный разработчик systemd, отказался это делать, отметив, что существуют программы, которые намеренно меняют настройки прошивки через этот каталог. systemd можно заставить монтировать его только для чтения, если вписать соответствующую строчку в /etc/fstab с параметром ro.

Мэттью Гэррет, специалист по безопасности CoreOS, в прошлом активный разработчик ядра Linux, поддержал решение Поттеринга и принял вину на себя как автор соответствующего кода в ядре. Он считает, что ядро должно само решать эту проблему: оно обычно содержит воркэраунды для проблем с оборудованием, в том числе для проблем с UEFI.

Пользователям GNU/Linux можно посоветовать узнать, не подвержены ли их системы этой ошибке, и быть очень осторожными при массовом удалении системных файлов. А также, при необходимости, настроить монтирование efivars только для чтения, но это может привести к неполадкам при установке GRUB, при работе efibootmgr, и systemctl --firmware-setup reboot, и, возможно, других программ.

>>> Подробности

★★★★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 11)

Да что за решето это UEFI. То от загрузки Linux ломается, то от патча Бармина. Ну каким бы плохим не был Linux и каким криворуким не был пользователь, материнская плата ломаться из-за загрузки ОС.

te111011010
()

команды вроде rm -rf /sys и rm -rf --no-preserve-root / могут привести к повреждению прошивки материнской платы

Ауч, а я когда с работы увольнялся так делал..

Леннарт Поттеринг, главный разработчик systemd, отказался это делать, отметив, что существуют программы, которые намеренно меняют настройки прошивки через этот каталог

Не понял, при чем тут systemd? А как в других инит системах он монтируется?

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от loz

Не понял, при чем тут systemd? А как в других инит системах он монтируется?

при том, что сейчас это система инициализации де факто в лялихе

JB ★★★★★
()

Обсудили же в толксах, джва раза уже. Мораль проста: если класть болт на спецификации, то будет плохо.

WARNING ★★★★
()

После использования efibootmgr я уже получал компьютер, который не способен загрузиться ниоткуда (к счастью, раза с десятого удалось залить прошивку штатным способом восстановления, т.е. без программатора), и подозреваю, что от такого rm кривая реализация UEFI на той машине тоже сломается.

xenith
()
Ответ на: комментарий от xenith

Я раз тоже закирпичил один ноут. Через efibootmgr. Пришлось нести его на сервис - через программатор заливать прошиву.

BeerSeller ★★★★
()

Леннарт Поттеринг, главный разработчик systemd, отказался это делать, отметив, что существуют программы, которые намеренно меняют настройки прошивки через этот каталог. systemd можно заставить монтировать его только для чтения, если вписать соответствующую строчку в /etc/fstab с параметром ro.

Ну и что он не так сказал? Кто мешает пользователю или мейнтейнерам дистрибутива добавить строчку в fstab и радостно огрести при работе efibootmgr? systemd тут вообще не причем.

curufinwe ★★★★★
()

А почему у меня вообще нет этого каталога: /sys/firmware/efi/

anonymous
()
Ответ на: комментарий от BeerSeller

Потому что UEFI придумали идиоты. Могли бы загрузочное меню с диска каждый раз читать, если оно на нем есть. А если нет - работают настройки по умолчанию. Но зачем-то понадобилось перезаливать прошивку во флеш для этого, с последующим окирпичиванием при возникновении проблем.

curufinwe ★★★★★
()
Ответ на: комментарий от Speleolog

Возможно и монтируется, но в рид-онли

Нет, везде в rw. Иначе не будет даже efibootmgr работать.

anonymous
()

Виноваты вендоры, которые пишут кривые прошивки. А вину то почему-то пытаются возложить на Поттеринга, то на Гаррета. Ядро вообще не обязано исправлять чужие косяки.

anonymous
()
Ответ на: комментарий от curufinwe

Хм, ну если вспомнить историю создания UEFI и SecureBoot, то их делали в первую очередь для Windows, чтобы пользователи перестали воровать винду черрез вливания в эту прошивку ключа активации. Линук в этом случае нагородил костыль, позволяющий со своим некоторым «подписанным» сертификатом бутиться. Вот только предполагалось, что устройство с UEFI пользователь просто купит и просто будет юзать, без установки Linux.

bookman900 ★★★★★
()
Ответ на: комментарий от bookman900

Ага. Работает у него оно. А ты в курсе, что обычная переустановка Windows способна сделать из некоторых ноутбуков кирпич? Ровно по той же причине - кривое UEFI. Именно поэтому при переустановке Windows на современных ноутах настоятельно рекомендуется сначала сбросить настройки UEFI на дефолт. Иначе, может возникнуть ситуация, когда в NVRAM остаются одновременно настройки от старой и новой ОСи, отчего оное UEFI откидывает копыта.

anonymous
()

Там Гаррет, временный фикс предложил (говорит, что не тестировался) https://gist.github.com/mjg59/8d9d494da56fbe6d8992 - запрещает к удалению большинства переменных. Ну хоть что-то.

vehn
()
Ответ на: комментарий от bookman900

Хм, ну если вспомнить историю создания UEFI и SecureBoot, то их делали в первую очередь для Windows, чтобы пользователи перестали воровать винду черрез вливания в эту прошивку ключа активации.

Это как понимать вообще? Хорошо себя чувствуешь? Зачем тогда Microsoft требует делать secureboot отключаемым?

Вот только предполагалось, что устройство с UEFI пользователь просто купит и просто будет юзать, без установки Linux.

Ну ты даешь! Если бы так планировалось, зачем вся эта система с перезаливом прошивки при установке ОС? Сделали бы неизменяемую прошивку, которая грузит только предустановленную винду, и все.

curufinwe ★★★★★
()
Ответ на: комментарий от bookman900

если вспомнить историю создания UEFI и SecureBoot, то их делали в первую очередь для Windows, чтобы пользователи перестали воровать винду черрез вливания в эту прошивку ключа активации

Вместо распространения мифов о том, что SecureBoot — это злодейское изобретение MS для ограничения свободы пользователя, нужно распространять знания о том, как им пользоваться правильно, как сгенерировать свои собственные PK и KEK, как удалить предустановленные, как подписать собственный загручик и так далее.

anonymous
()

Людям, обладающим хоть каплей мозгов, очевидно, что Поттеринг прав. Однако, на лоре даже таких меньшинство, судя по предыдущим двум тредам.

Unnamed ★★
()
Ответ на: комментарий от curufinwe

Вот хорошее объяснение того, зачем SecureBoot нужен MS. Непосредственно от человека, пишущего прошивки для матплат.

anonymous
()
Ответ на: комментарий от bookman900

Вендоры не виноваты; вся проблема только в Линуксе.

Вендоры виноваты в том, что поддержали придуманное в MS ненужное говно.

AS ★★★★★
()
Ответ на: комментарий от curufinwe

Зачем тогда Microsoft требует делать secureboot отключаемым?

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

najlus ★★★★★
()
Ответ на: комментарий от bookman900

Оторви попу от дивана википедии и узнай, что SecureBoot позволяет тебе добавить свои ключи и подписывать загрузчики самому. Так что никоим образом SecureBoot не заточен под винду. Просто все производители включают туда ключ мелкософта.

dmitrmax
()
Ответ на: комментарий от anonymous

обычная переустановка Windows способна сделать из некоторых ноутбуков кирпич?

У меня обычная установка FreeBSD на Lenovo Y550P делала из него кирпич. Надо было вытаскивать хард и вайпать таблицу разделов.

devl547 ★★★★★
()
Ответ на: комментарий от bookman900

Да не должна ОС, каким бы говном она не была, ломать железку. Иначе злоумышленник может специально загрузить плохую ОС, чтобы сломать чужой комп.

te111011010
()

Какая же все-таки гадость этот хUEFI..

djoe ★★★
()

Как хорошо что у меня ни uefi, ни systemd нету.

Но вообще я с ужасом вспоминаю как семерку ставили на эту балалайку, да ещё и с самым распоследним на тот момент чипсетом который вышел за месяц до покупки. 5 часов в сумме ставили.

upcFrost ★★★★★
()

интересно, дурачки, предлагающие...

I'm voting «make it to by default» — running grub-install or such should be an edge case of «remount, do the thing, clean up, remount.»

...понимают ли что такое «Состояние гонки» [race condition] ? :-)

anonymous
()
Ответ на: комментарий от bookman900

Вендоры не виноваты; вся проблема только в Линуксе.

Как раз наоборот. Прошивка позволяет кому ни поподя перезаписать жизненно важные переменные, если это не кривые руки, то что же тогда? Они могли сделать одно из двух: защитить их от записи или дать им какие-то осмысленные значения по умолчанию; вместо этого прошивка умирает. При чём тут линукс или любая другая ОС вообще? Можно так же спокойно написать виндовую программу, которая тебе перепишет все эти переменные и убъёт мамку.

Gvidon ★★★★
()
Последнее исправление: Gvidon (всего исправлений: 1)
Ответ на: комментарий от te111011010

Да что за решето это UEFI

99% всех проблем в черезжопной реализации спецификаций UEFI. Я например отключил его у себя после того как чуть не угробил свой лаптоп и пару дней траха в попытке понять причину.

Deleted
()
Ответ на: комментарий от Gvidon

Прошивка позволяет кому ни поподя перезаписать жизненно важные переменные

Это как раз должно быть: например, инсталлятор должен после завершения установки с помощью ebibootmgr прописать путь к bootloader.efi. Но опять же, после удаления всех efivars, по спецификациям, прошивка UEFI должна сама восстановить их.

Можно так же спокойно написать виндовую программу, которая тебе перепишет все эти переменные и убъёт мамку.

Для говножелеза - да, для нормального - нет.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Мне всегда не нравился этот ГУАШ и я его везде перевожу в режим Легаси. Благо такая возможность, пока еще есть.

anonymous
()
Ответ на: комментарий от najlus

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

Если бы не эти требования, производители-идиоты бы точно делали прошивки UEFI так, что работала бы только предустановленная винда. Так же проще и дешевле. А такая ситуация самой MS не нужна на PC. Другое дело мобильные устройства.

curufinwe ★★★★★
()

Ядро не должно

Он считает, что ядро должно само решать эту проблему: оно обычно содержит воркэраунды для проблем с оборудованием, в том числе для проблем с UEFI.

Мне кажется ядро не должно решать подобных проблем. Скорее дистрибутиводелы должны по умолчанию вписывать в fstab строчку с опцией ro.

Если ещё точнее, то и дистрибутиводелы не должны, в смысле что не обязаны. Однако если они пытаются сделать нормальный дистрибутив для нормальных людей, для реального глючного железа, а не из страны эльфов, то им следует так делать.

Camel ★★★★★
()
Ответ на: комментарий от curufinwe

Почему же, нужна, но если сделать так сразу, то антимонопольные комитеты могут возбудиться.

anonymous
()
Ответ на: комментарий от Deleted

Это как раз должно быть

Переменные бывают разные. Спецификация вполне позволяет разграничивать доступ к различным переменным вплоть до полного запрещения перезаписи. Естественно, пути к загрузчикам должны быть доступны, но прошивка и не должна без них умирать.

Для говножелеза - да

Мы сейчас именно про него и говорим

Gvidon ★★★★
()
Ответ на: комментарий от Gonzo

При чем тут эти возгласы?

ASUS оставила поддержку BIOS в своих ноутбуках.

Комп давно покупал свой?

2 года назад

Или ты думаешь, что у ASUS этого нет?

Знаю, что есть. Но ASUS оставляет выбор пользователю, с чего грузиться. По крайней мере, так было в 2013.

IceWindDale
()

Если железка ломается от софта, сдавай ее по гарантии и больше не покупай никогда такие железки. А лучше поставь крест на таком производителе.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.