Комментарии 163
Мне непонятно, почему стандарт UEFI допускает такие повреждения, почему нельзя как нибудь привести биос к заводскому состоянию (ну кроме как программатором).
По стандарту настройки и должны сбрасываться до заводских, но всем же плевать на стандарты и их корректную реализацию
Рискну предположить, что нет, проблема софтовая, просто не подлежащая исправлению обычными методами сброса настроек.
У UEFI есть область энергонезависимой памяти, открытая на запись из ОС. Видимо, в данном случае произошёл какой-нибудь выход за границы массива или ещё чего хуже, и поломались функции сохранения настроек.
А перезаписать часто бывает возможно только оффлайн, загрузившись с флешки.
Альтернативный вариант — отключить диски физически и подключить только USB flash.
Пишут, что он просто не видит/не сохраняет новые пункты загрузки. Они в UEFI задаются достаточно нетривиально, вовсе не по принципу "грузимся с чего найдём".
ЕМНИП, там в качестве части идентификатора используется GUID. Успехов в обмане.
Если восстановление возможно, то после этого в него просто нужно записать то, что требуется…
Не обязательно, главное чтобы повезло и включена была загрузка по PXE. Тогда можно при загрузке нажать бут меню и выбрать его. А там уже крути как хочешь. Можно DRBL + Clonezilla и накатить что угодно.
Не уверен. У меня вообще Асус с AMI, он умеет читать прошивку с подключённых ntfs-разделов. Но Леново такая Леново, не удивлюсь, если у них по многочисленным просьбам трудящихся это запрещено.
… а, нет, всё не совсем так. На багтрекере пишут, что BIOS тупо не находит новые разделы, ни на флешке, ни на подмененном харде. Только тот раздел, что был в момент установки.
И что попытка обновить прошивку из-под винды приводит просто к перезагрузке.
Ломается прошивка микросхемы.
Ещё раз. Во-первых, BIOS не видит никаких других разделов, из-за чего если система перестала загружаться (или если нужно переустановить систему, или ещё что), то насовсем, и никакой freedos не поможет. Во-вторых, перепрошить BIOS обычными средствами нельзя (они содержатся в самой прошивке и тоже поломались).
проверено на двух h97Проявили упорство)
в моём случае почему-то не слетает
Интеловская сетевая? Не сэкономили, значит, на EEPROM — если EEPROM распаяна, то MAC оттуда будет иметь преимущество. Попробуйте дамп снять ethool'ом. Там штатный PCI SVID/SPID MAC, AMT MAC, область AMT'ных переменных и ещё что-то.
P.S. Можно даже позаписывать в конец что-то своё: обычно больше 4K не используется, а EEPROM ставят 8K, 16K, 32K — только нужно запись, скорее всего, разлочить соответствующим параметром модуля сетевой при холодной загрузке — там запись блокируется на уровне микросхемы и блокировка сохраняется до следующего цикла питания.
У RTL8111/8186 тоже для этого дела EEPROM используется:
The RTL8111B/RTL8168B requires the attachment of an external EEPROM. The 93C46 is a 1K-bit EEPROM (the 93C56 is a 2K-bit EEPROM).
А вот и MAC:
0Eh-13h Ethernet ID: After auto-load command or hardware reset, the RTL8111B/RTL8168B loads Ethernet ID to IDR0-IDR5 of the RTL8111B/RTL8168B's I/O registers.
(Нам PCI Subsystem VIP/PID перешивать нужно на OEM железе: у нас как раз 8111/8168 и интелы.)
Ну купил потому что работать надо было, компа нет, а уж потом разобрался с вопросом и побежал к тем, у кого есть программаторы и прочее.
на деле: «портится не БИОС» в прямом смысле — лочится на запись микросхема SPI Flash, это по всей видимости происходит при посредстве вышеупомянутого модуля ядра, посколько только он один и способен к таким действиям (для этого в т.ч. и был написан).
именно по этому, то есть от того, что SPI Flash аппаратно залочен на запись, никакое средство отката к стандартным настройкам БИОСа не сработает, потому как настройки-то хранятся в SPI Flash.
программатор тоже не поможет. поможет только физическая замена микросхемы…
Неправда. Нет spi микросхем, которые можно программно залочить на запись, и не разлочить программатором. Аппаратно можно залочить только после программной блокировки, замкнув вывод 3 микросхемы на землю (на вывод 4). Только тогда будет блокировка полная на запись, в том числе и программатор в таком виде не прошивает. Но это всё не сработает для современных микросхем с quad spi, там такая блокировка не работает, так как вывод 3 используется для quad spi.
Вспомнился случай, когда я в галакси с3 в tasker сделал перезагрузку по таймеру, но перепутал время и получил что то типа с 8ч.02м перезагружаться до 8ч.01м(надо было указать наоборот) в итоге тел перезагружался без конца, а поскольку менюшка тупит и таскер загружается не сразу то выключить этот пункт я не успевал до перезагрузки(на все действия примерно 2 секунды). Примерно через час повезло и навыки слепого включения таскера за долю секунды и вайпа на нужном пункте привели к успеху)
Нужно было дозвониться до одного очень важного государственного учреждения. Естественно, консультации по телефону оказываются 1 раз в неделю по четвергам с 11 до 13. Там было наглухо занято, и я скачал программу автодозвона. Поставил интервал 5 секунд между звонками. В 12-25, отчаявшись, я поставил 0 секунд. В 12-50 я-таки дозвонился. А потом не мог вырубить автодозвонщик, потому что он сразу же начинал набирать номер))) Ребут помог, но при включении программы — начиналась та же песня. Пришлось чистить кэш у программы.
Мне подсказали решение — удалить вообще все пункты меню. После этой операции произошёл сброс к стандартным настройкам при перезагрузке и всё починилось. Если бы не было рабочей ОС, то не знаю, что делал бы.
После вроде удачной установки системы при попытке зайти в БИОС был пустой экран. Потом выяснилось, что БИОС всё-таки загружается, если подождать минут 5.
Вылечилось само (с обновлениями) со временем.
С версией 16 не срослось, так и живу на 14.04
А на деле регулярно возникают проблемы (и это далеко не первый случай).
Неужели всё это нельзя было предусмотреть, или хотя бы хранить базовую прошивку в ROM, а все обновления и изменения писать в энергозависимую память, что бы они слетали при извлечении батарейки CMOS? И проблема решалась бы куда проще, но куда уж там?
С чего это?
Биос тут ни при чём и это всего лишь файлик на fat32-разделе, не?
Думаю, без обновления микрокода ОС всё-таки продолжит работать) Параноики, боящиеся кирпичей, могут в вместе с перемычкой запретить обновление пакета с микрокодом, следуя принципу «работает — не трогай»)
Вообще в линуксах принято все нужные прошивки делать в рантайме по мере запуска компа или обнаружения соответствующих устройств, и не сохранять из в долговременной памяти (кроме файловой системы на диске), т.е. они слетают при перезапуске компа и заново прошиваются на старте системы. Микрокод проца в том числе.
Хотя возможно я "отстал" и всё уже испортили.
— блокировка записи (для «параноиков» и от вирусов);
— нормальная работа (можно программно что угодно);
— аппаратный сброс блокировки записи (для таких случаев, как этот) или вообще полный сброс.
Деталька копейки стоит, а пользы была бы куча.
Для обычного же пользователя все эти попытки бесполезны — ну не будет он расковыривать ноут и переключать джампер, а понесёт к сервиснику…
Я в процессе выбора нового дистрибутива, за пару месяцев попробовал Arch, Manjaro, Kubuntu, Xubuntu, openSUSE Leaf/Tumbleweed, Fedora Gnome/Kde/Xfce, и что-то еще от разработчиков kde. Мне еще просто, у меня крышка открывается одной защелкой, но все равно, я туда лажу раз в пару месяцев чтобы продуть куллер.
При это проблем с загрузчиками не было ни разу.
3 позиции — нормальный режим, сброс настроек, режим восстановления.
з.ы. Вообще говоря, интересно, возможно ли самостоятельно модифицировать материнскую плату, чтобы добавить на неё аппаратную защиту от перезаписи БИОСа? По принципу «настроил и заморозил».
Вроде там флэш-память сейчас везде, а все, если не ошибаюсь, её контроллеры ножку для запрета записи на микросхеме имеют.
раньше с «battery cmos» так и было: отдельно fw и отдельно data. а теперь батарейный sram — это лишний пункт к bom…
на современной микросхеме SPI хранится сразу несколько прошивок и управляют ей сразу несколько мастеров, каждый из которых хранит в своем регионе изменяющиеся во время загрузки и нормально работы данные, и если всю микросхему разом защитить от записи джампером, то все эти модифицируемые данные придется выносить в CMOS SRAM (15 лет назад именно там они и хранились), к которой очень просто получить доступ через CPU IO-порты 70h/71h или 74h/75h и у которой никаких защитных механизмов нет, а сама она в заметных объемах (256Кб, которые сейчас используют большая часть реализаций UEFI, а ведь есть еще ME, GbE и EC) стоит как самолет.источник
Можено попробовать разнести модифицируемые часто и модифицируемые только при обновлении данные по разным SPI-микросхемам и защитить «джампером» последнюю, но это удорожает производство и разработку платы и прошивки, поэтому массовый рынок этим не заморачивается и, скорее всего, никогда не будет.
Это особенно неприятно, потому что часто именно ноутбуки Lenovo ThinkPad часто рекомендуют для работы с Linux
В списке пострадавших моделей нет ни одного Thinkpad. (есть только Thinkpad Yoga, но это "ненастоящий")
П.С. не холивара ради, но свои потребности в Linux на основном ноуте покрыл с помощью Windows Subsystem for Linux.
У них свой собственный патчсет на ядро?
Ну вообще-то да, но к теме это не относится. Ванильное ядро вообще без патчей не встречается даже в source-based дистрах. Ну, есть, конечно (допустим sys-kernel/vanilla-sources в генте), но им пользуются три с половиной калеки :)
Майкрософт, угробил таких машин больше на порядок, а то и натри.
Ситуация связана с тем, что во время POST процедуры, на флэше видны «наружу» как минимум две GUID партиции. И пока «тупит» HDD во время работы перечислителя доступных загрузочных устройств, загрузчик ОСи прилетает не по адресу и записывается вместо харда на флэшку. Если прилетает в NVRAM партицию — получаем глюки настроек, в DXE/OPROM — не включающийся труп.
Так же поступает и Win8-10 в UEFI режиме, правда она ни когда не предупреждает пользователя о том что собирается переподписать loader новым сертификатом. И по этому комп умирает тихо.
А тут просто ситуация легко просчитывается.
Я понимаю что таких как я капля в море, но это единственный доступный мне способ повлиять рублем на эту дибильную ситуацию.
Один из критереев выбора смартфона с android у меня сейчас — возможность установить cianogenmod/lineageos/аналог сборку, очищенную и безглючную (wifi/bluetooth/радиомодуль).
Без сарказма.
А такие есть? Недавно решил попробовать поставить себе Lineage, и хоть образ и есть для моего телефона, радиомодуль не завелся, симка не определялась.
Потом решил посмотреть новые телефоны, которые поддерживаются. Но у всех находилось что-то нерабочее.
в теории, не работает только wireless remote desktop, о причина в методе разлочки прошивки, точнее когда я это первый раз делал, использовалась старая прошивка, сейчас новая но неначем протестировать, но работать должна.
А что-то более качественное? Huawei, Samsing, Moto, LG, или 1+ какой-нибудь?
У меня просто есть Kenzo и на нем крайне странный и неприятный баг. Через пару дней эксплуатации начинает отваливаться sim-карта. Перевоткнул и работает. Потом чаще. А потом просто ни в одном слоте не видит. Используется как планшет несколько недель, вновь бывает необходимость воткнуть карту — работает идеально. Даже не пойму аппаратная проблема или софтовая. Хочу попробовать сменить на lineageos. Сейчас последняя прошивка от вендора. Может кривой драйвер симки...
Одна из причин, почему bleeding edge так называется. Пострадавшим сочувствую.
Так BIOS или UEFI?
BIOS по привычке, UEFI более верно.
Offtopic:
Пострадавшим сочувствую.
Хороший все-таки дистрибутив, но от Canonical не ожидал что они тронут модуль Intel SPI.
Сейчас нужно этот модуль ядра править(возможно уже отправили патч на kernel.org), пока не будет поправлен, в конфиг его вносить только с параметром N!
Без дампов это бесполезно расследовать, потому что гадание на кофейной гуще.
Если хотите гаданий, их есть у меня:
1. Линукс каким-то образом в очередной раз испортил прошивке NVRAM своей загрузочной записью, которую создал efibootmgr. Я про него устал уже проедупредждать, но похоже, надо делать это в каждом коментарии — авось кого-нибудь это остановит.
2. Драйвер spi_nor.c даже при простом поиске подключенных к нему чипов зачем-то пытается снять защиту от записи с некоторых из них, которую он не ставил и трогать не должен. Получается очень странная функция spi_nor_scan(), меняющяя состояние чипа. При этом чип, скорее всего, стартует с поставленным битом, а прошивка затем при записи пытается сбросить его через NEG, в результате только ставя его обратно. При этом для сброса на дефолты нужно полное обесточивание чипа (т.е. отсоединение батареи), либо установка этого бита вручную.
Короче, попробуйте для начала вынуть жесткий диск (чтобы не грузиться в этот линукс со странным драйвером) и батарею вынуть на минуту (не CMOS, а основную). Если после этого настройки начнут сохранятся — тут всяко второй вариант, а если не начнут — то может быть и первый, и что угодно еще.
Рекордсмены по «вылету», это бюджетные модели, с дешевейшими хардами.
Да, чаще порется NVRAM. Ему и так не сладко, Win постоянно туда пихает свежие сертификаты, а место отведённое производителем не безразмерное. Это по мимо того что там живет.
Только единичные апдейты UEFI/BIOS реинициализируют/очищают область NVRAM. Обычно это можно сделать только при помощи сервисной прошивки с последующим вбиванием серийников и генерацией UID и т.д. Других методов, зачистки NVRAM силами пользователя обычно не предусмотрено.
Исключение — аппараты Apple. Они мало того что не позволяют Win складировать свой мусор в NVRAM, так и ещё имеют юзер ориентированную процедуру зачистки, правда если стоит flash password аппарат таки превратится в «тыкву»
Что-то мне чаще попадались ноутбуки, у которых на spi нет питания, когда он выключен.Если такой, то достаточно просто выключить, чтобы обесточить spi. Или так питание сделано только где EC со своей памятью и прошивкой в ней, точно не скажу.
Кстати, напомните, когда программисты Intel в чем-либо обвиняли Microsoft?
Стоял XUbunu15 на нетбуке, если делаешь апдейт оси и программ, и в это время нетбук засыпает или закрылась крышка — каюк системе, надо с бубном поднимать. Сейчас стоит 16-я версия, но магазин приложений х… работает, ну или ему подумать надо минут 30.
На рабочем компе рядом с виндой 7-й стоит Минт, как поставил, проверил принтер, все работало, сейчас по прошествии нескольких месяцев — нифига не работает, делаешь сворачивание программы, а программа из систрея пропадает.
В общем Линукс — для садомазо любителей, без Винды все равно не обойтись.
Так что теме про повреждение биос ни разу не удивлен, насмотрелся фокусов уже, крое тех что описал.
А Минт 17 у меня на личном ноуте счастливо живёт и прекрасно работает уже года три, безболезненно пережив дамп-перенос на SSD и случайно «запоротые» права на часть системных файлов.
В общем Линукс — для садомазо любителей, без Винды все равно не обойтись.
Внезапно, если вы не пользуетесь дистрибутивами, которые подразумевают настройку сего самостоятельно (Gentoo, Arch) или rolling release дистрибутивами, то вы раз поставили и забыли.
5 лет сижу на Debian (сначала Stable, а сейчас Testing), полёт нормальный.
Если нужна помощь, обращайтесь.
На некоторых ноутбуках Lenovo, Acer и Toshiba обнаружился баг в BIOS.
Сообщила об этом компания Canonical. В ходе установок Ubuntu 17.10 на ряд устройств данных компаний.
Подозреваю Каноникал прикрывает партнеров, дабы они понесли меньше убытков)
Также экспериментирую с хакинтошем. В uefi уже полно явно каких-то хакинтошных переменных, но ничего слишком плохого пока не происходило.
Но на всякий случай у меня есть и программатор, и дамп биоса, сделанный до всяких экспериментов =)
Я только не пойму, почему здесь говорится что «программатор не поможет» и единственный вариант лечения — только заменять микросхемку?
А вообще, на моём ноутбуке (думаю, на большинстве) не работает метод ICSP (прошивка микрухи на месте, не выпаивая из платы). Поэтому я себе купил десяток сокетов для bios чипов.
Поиск по картинке находит только habr, а по запросу «soic-8 socket» находятся ICSP-прищепки.
И всё же я считаю, если программным кодом можно необратимо вывести из строя аппаратную часть, то это проблема аппаратной части, а не ОС. Это могло произойти с любой другой ОС, не только Ubuntu.
Я налетел на эту беду b50-70. Есть пара таких же ноутов с виндой.обошел беду удалением всего с hdd, при этом стал стартовать дистриб диск с виндой.
Добавьте в список Acer Aspire E5-511G.
P.S. после этого у меня ещё и PCI Express умер, но тут я не уверен — это Ubuntu или мастера СЦ постарались.
Понятно что пофиксить программу проще чем железо, но после недавних проблем с Самсунгами(кто-то тут про это упомянул) я категорически не рекомнендовал своим знакомым их покупать. Ну что же, добавлю в свой личный блэк-лист ещё Леново и Асер.
Впрочем, я и так всегда был фанатом Асуса. Так что мало что поменялось)
Проблема в железе, да. Но конкретно эта проблема есть наверно уже 20 лет (когда там биос на флеш с программной неотключаемой перезаписью стали хранить?). Вирусы, затирающие биос, уже были в 90х, но исходную уязвимость никто и не думал исправлять с тех пор. https://ru.wikipedia.org/wiki/CIH
Вроде бы уже научились обходить и его. (По крайней мере разработчик WPInternals пытается это сделать для Windows на телефонах. (И сделает ведь.))
Но все же мне кажется что MS желает снова монополизировать рынок персоналок и выкачивать данные и деньги с пользователей. (В каком-то смысле это бред, в каком-то нет. Если вспомнить историю с RT-шными планшами то так и будет.)
Помню в далеком детстве, когда знакомился с программированием, в одной книжке было написано: "запомните, никаким программным средством НЕВОЗМОЖНО сломать аппаратную часть". Видимо это время прошло.
Если впоследствии нельзя решить проблему программно, а только перепайкой микросхемы, то это всё-таки аппаратный косяк
Ubuntu 17.10 повреждает BIOS на некоторых ноутбуках Lenovo, Acer и Toshiba