В 2023 году потребовался новый ноутбук, способный прослужить достаточно долго. Framework привлекла обещанием ремонтопригодного и модернизируемого устройства с полноценной поддержкой Linux «из коробки» без танцев с драйверами, а также возможностью самостоятельной сборки1 и отдельной покупки RAM и SSD2 — тогда они ещё стоили разумных денег.
Три года ноутбук работал исправно, пока Framework не прислала по рассылке предложение установить последнее обновление BIOS3 версии 3.20 с рядом исправлений безопасности. После установки система зависла, а на экране появилось искажённое изображение — верный признак неудачной прошивки.
Обращение в поддержку Framework дало стандартный совет: отключить ноутбук от питания, дать батарее разрядиться и попробовать включить снова, в надежде на самовосстановление. Восстановления не произошло, а после предоставления всей запрошенной информации в поддержке сообщили: годовая гарантия истекла, единственный вариант — покупка новой материнской платы Framework, которая обойдётся минимум в CA$500.
Быстрый поиск показал, что проблемы с этим конкретным обновлением BIOS встречаются у многих пользователей на форумах Framework, причём даже у тех, кто ещё находится на гарантии, а в другой ветке люди жалуются на схожие проблемы с прошивкой BIOS на этой модели как минимум с марта 2025 года. Насколько известно, Framework никогда официально не признавала проблему и не сообщала об исправлении, так что покупка новой платы стала бы русской рулеткой на случай следующего обновления BIOS — вдобавок к незаслуженным CA$500+ расходов.
Поэтому вместо покупки платы было решено прошить BIOS самостоятельно. Весь процесс задокументирован в мельчайших подробностях, чтобы читатели могли повторить решение аналогичной проблемы.
Почему Framework?
В 2023 году основные требования к ноутбуку были такими:
- Совместимость с Linux;
- Достаточно малый размер и вес для путешествий;
- Стандартная американская раскладка клавиатуры, а не ужасная канадская мультиязычная стандартная раскладка, почему-то очень распространённая в Канаде4;
- Современный процессор, но не обязательно с высоким числом ядер, поскольку интенсивная компиляция или игры в поездках не планировались; и
- Съёмные RAM и SSD, чтобы иметь возможность апгрейда в будущем или покупки комплектующих у сторонних производителей, если это выгоднее. Изначально хотелось 32 ГиБ RAM5 и 1 ТБ SSD6 — в 2023 году это было вполне доступно.
Таким образом, выбор фактически ограничивался тонкими и лёгкими 13-дюймовыми ноутбуками без дискретной видеокарты. На тот момент AMD Ryzen опережал Intel по производительности, поэтому выбор пал на процессор AMD.
Подходящих 13-дюймовых тонких ноутбуков на AMD Ryzen было множество, но поскольку срочности в покупке не было, захотелось попробовать что-то новое.
В то время Framework была относительным новичком на рынке ноутбуков, обещая ремонтопригодность, модернизируемость и заменяемые порты. Идея не зависеть от набора портов, выбранного производителем, понравилась, как и дополнительная возможность апгрейда. Плюсом стало то, что Linux поддерживался официально и без необходимости патченных ядер или прочих сложностей.
Кроме того, Framework активно продвигала движение за право на ремонт, а убеждение в том, что ноутбуки должны быть ремонтопригодны, как десктопы, а не выбрасываться при мелкой поломке, также сыграло роль в выборе — хотелось поддержать компанию именно за это.
Ценовая премия Framework оказалась не такой уж большой при выборе DIY-редакции, самостоятельном подборе RAM и SSD и отказе от бессмысленной лицензии Windows. С другими брендами пришлось бы либо покупать младшую конфигурацию и апгрейдить её до нужных 32 ГиБ RAM и 1 ТБ SSD, либо платить производителю за эти же комплектующие по завышенной цене.
В итоге ноутбук Framework был предзаказан и спустя несколько месяцев ожидания наконец прибыл. Осталось лишь вставить RAM и SSD, подключить крышку клавиатуры, закрутить винты и установить рамки — вот и всё. Для «DIY» ноутбука процесс сборки оказался на удивление незамысловатым. Дальше — флешка с Debian netinst, и можно было приступать к работе.
Следующие три года прошли вполне комфортно, а AMD Ryzen 5 7640U с графикой Radeon 760M было достаточно быстрым для всех задач. Необходимости в апгрейде не возникало, хотя теоретически такая возможность оставалась.
Фатальная прошивка BIOS
Долгое время Framework выглядела очень дружелюбной к пользователям компанией, регулярно выпуская обновления BIOS с удобной установкой на Linux через Linux Vendor Firmware Service (LVFS) и fwupd. Подписка на рассылку Framework информировала обо всех выходящих обновлениях.
Обновления BIOS через fwupdmgr update устанавливались много раз, и кроме необходимости перезагружать ноутбук и ждать около десяти минут завершения прошивки, ничего плохого никогда не происходило.
7 июля 2026 года Framework прислала следующее письмо:
От: Framework <support@frame.work>
Тема: Обновление ПО для вашего Framework Laptop 13 (AMD Ryzen™ 7040 Series) — BIOS 3.20У нас есть обновление BIOS для вашего Framework Laptop 13 (AMD Ryzen™ 7040 Series). Мы рекомендуем всегда устанавливать последнюю версию BIOS и драйверов для безопасности, стабильности и высокой производительности системы.
- BIOS 3.20, с обновлениями для Windows и Linux
- Добавлена поддержка функций Framework Laptop 13 Pro — совместимость с haptic-тачпадом, сенсорной панелью и батареей на 74 Вт.
- Обновлена таблица аудио-верб для поддержки новых динамиков в корпусе Framework Laptop 13 Pro.
- Обновлён AMD PhoenixPI-FP8-FP7_1.2.0.0f.
- Исправлена проблема, при которой система не могла загрузиться с частично заблокированных самошифрующихся дисков (SED).
- Исправлена проблема с некорректным отображением статуса Battery Extender после перезагрузки, гибернации или выключения после истечения таймера.
- Исправлена проблема с чёрным экраном при загрузке при подключённых мониторе Dell U2725QE и мыши.
- Добавлена поддержка 16-битных postcode.
- Исправлена проблема с более тихой громкостью звука в 3.19 beta.
- Исправления безопасности
- CVE-2025-54502 — оценка CVSS недоступна.
- CVE-2025-29949 — оценка CVSS недоступна.
- CVE-2025-0040 — оценка CVSS недоступна.
- CVE-2024-36355 — оценка CVSS недоступна.
- CVE-2024-36310 — оценка CVSS недоступна.
Однако сразу же прошивать BIOS показалось не лучшей идеей — из-за потенциальных багов было решено немного подождать: если проблемы всплывут, либо выйдет новое обновление, либо это уберут. Не увидев ни того, ни другого, 5 августа утром, во время приготовления завтрака, было решено быстро выполнить прошивку.
Вернувшись, на экране обнаружилась следующая картина, сразу давшая понять, что что-то пошло катастрофически не так:
Программа обновления BIOS Framework показывает треугольник и диагональные узоры, которых не должно быть7
Учитывая, что программа обновления зависла и, судя по всему, выводила на экран случайные данные из памяти, оставалось только заключить: прошивка BIOS завершилась неудачно.
Ноутбук был оставлен на несколько часов на случай самовосстановления. Этого не произошло.
Обращение в поддержку
Обращение в поддержку Framework с надеждой на быстрый ответ и решение проблемы выглядело так:
Тема: Зависание на обновлении BIOS
Категория обращения: Проблема с продуктом Framework
Продукт доставлен за последние 30 дней?: Нет
Продукт: Framework Laptop 13
Поколение Framework Laptop 13: AMD Ryzen 7040 Series
Операционная система: Linux
Дистрибутив Linux: Debian 12 [опечатка, должно быть 13]
BIOS: 3.20
Номер заказа: [скрыто]
Тип проблемы: Материнская плата
Описание: Пытался обновить BIOS через fwupdmgr update, и после перезагрузки система зависла в этом странном состоянии и не двигается уже больше часа. Изображение отображается некорректно, см. фото. Что делать?
К письму прилагалось фото экрана. Поддержка ответила лишь через день и 8 часов.
Самостоятельная диагностика
Тем временем оставлять компьютер зависшим бесконечно — тем более с громко гудящим кулером процессора — показалось не лучшей идеей, поэтому пришлось заняться собственным расследованием. Довольно быстро обнаружилась эта ветка на форуме, где множество людей столкнулись с той же проблемой при том же обновлении с BIOS 3.18 до 3.20, хотя картинка на экране немного отличалась.
Пользователи на гарантии сообщали о замене материнской платы, а те, у кого гарантия истекла, жаловались на полное отсутствие помощи от Framework. Это вызывало серьёзное беспокойство.
Увидев в теме, что поддержка рекомендует в подобной ситуации отключить зарядку и дождаться полной разрядки батареи, ровно это и было сделано, пока продолжалось изучение форумов на предмет дальнейших перспектив.
Затем нашлась другая ветка, где пользователь форума @cesfahani, столкнувшийся с точно такой же картинкой на экране, подробно описал, как с помощью Raspberry Pi и навыков пайки прошил чип BIOS извне. Базовые навыки пайки имелись — они пригодились при сборке stratum 1 NTP-сервера8 — но паять крошечные провода к крошечному чипу BIOS желания не было.
Быстро стало ясно: если прошивка BIOS на Framework даёт сбой и автоматически не восстанавливается, никакого механизма восстановления, кроме внешнего программирования чипа BIOS, не предусмотрено. Это было шокирующим открытием для продукта, рекламируемого как «ремонтопригодный».
Невольно вспомнился первый компьютер, пусть и подержанный, с материнской платой P4P800 SE 2004 года выпуска. До сих пор помнится, как от корки до корки читалась инструкция, будучи взволнованным ребёнком, панически боящимся сломать свой первый ПК. Даже эта 22-летняя материнская плата обладала функцией ASUS «CrashFree BIOS 2», рекламируемой как исправление неудачной прошивки без подобных безумных ручных методов. Достаточно было вставить дискету9 или CD с образом BIOS с именем P4P800SE.ROM после неудачной прошивки — и восстановление происходило автоматически. И вот, десятилетия спустя, приходится иметь дело с «ремонтопригодным» ноутбуком без такой функции.
Возник закономерный вопрос: специфична ли эта проблема для конкретно этого бренда, или у Dell и HP, не выбранных тогда, дела обстоят иначе? Быстрый поиск показал, что ноутбуки Dell способны восстановить BIOS с USB или из восстановительного раздела, удерживая Ctrl+Esc при подключении питания, а у HP есть похожая функция «HP Sure Start», тоже восстанавливающая BIOS. Получается, Framework в этом отношении уступает своим «неремонтопригодным» конкурентам.
К счастью, дальнейшее чтение темы дало проблеск надежды: вместо пайки крошечных проводов к чипу через Raspberry Pi, пользователь форума @moparisthebest рассказал о возможности использования так называемых «pogo pins» (пружинных контактов), подключённых к USB-программатору флеш-памяти — без какой-либо пайки. Ещё дальше в теме пользователи @David_Henry и @Richard6 сообщили об успешном применении похожего метода.
Чип BIOS
Прежде чем двигаться дальше, важно разобраться, с каким именно чипом BIOS предстоит иметь дело. Иначе разговор о прошивке превратится в путаницу из жаргона — именно так и выглядело первое чтение той форумной темы.
Флеш-чип расположен справа от слота M.2, скрыт под пластиковой крышкой и выглядит следующим образом (повёрнут на 90° по часовой стрелке для удобства чтения маркировки):
Чип BIOS, о котором идёт речь, слот M.2 показан для масштаба
Это чип Winbond 25R256JWEQ. Datasheet на серию W25Q256JW показал, что вся серия работает на 1.8 В и представляет собой 256-мегабитные (то есть 32 МиБ) SPI флеш-чипы. Крайне важно найти образ BIOS для этой материнской платы размером ровно 32 МиБ, а затем прошивать его строго при 1.8 В, чтобы не повредить чип.
Что такое SPI? Это фактический стандарт Serial Peripheral Interface, широко используемый во встраиваемых системах для связи между интегральными схемами. Именно благодаря этому стандарту Raspberry Pi может общаться с чипом и прошивать его, как и многие микроконтроллеры.
Существует несколько вариантов чипа W25Q256JW, различающихся форм-фактором:
- вариант
P— 8-контактный чип WSON 6×5 мм; - вариант
E— 8-контактный чип WSON 8×6 мм; - вариант
F— 16-контактный чип SOIC 300-mil; и - варианты
BиC— чипы с шариковым выводом (BGA).
В данном случае используется вариант E, то есть чип WSON 8×6 мм. Из datasheet видна следующая схема выводов:
Схема распиновки чипа Winbond 25R256JWEQ
Важно обратить внимание на белую точку в верхнем левом углу чипа, как показано на фото и на схеме распиновки. Эта точка расположена рядом с выводом 1, что позволяет определить ориентацию чипа. При развороте чипа в другую сторону и подключении VCC вместо GND последствия будут очень плачевными.
Что такое WSON? Это сокращение от Very, Very-thin Small Outline No-lead — форм-фактор чипов. Видимо, аббревиатура VVSON звучала нелепо, поэтому остановились на WSON. Это, пожалуй, худший форм-фактор для внешней прошивки.
Если бы Framework использовала форм-фактор SOIC (small outline integrated circuit), можно было бы просто зажать клипсу на чипе и прошить его так, но у WSON практически не за что зацепиться. Вместо этого остаются два варианта:
- попытаться выпаять чип, что требует термофена, поскольку под WSON-чипом есть большая заземляющая площадка, с которой паяльник не справится; или
- программировать чип прямо на плате (без выпайки), используя зонд с «pogo pins» — пружинными контактами.
Pogo-pin зонд представляет собой кусок пластика с выемкой строго под размер WSON-чипа. Вокруг выемки расположены пружинные контакты, проходящие через пластик. Для использования зонда пластиковая сторона направляется вниз, а чип должен точно попасть в выемку. Затем нужно приложить усилие вниз, чтобы контакты прошли сквозь пластик и коснулись контактных площадок. Это усилие необходимо удерживать в течение всей операции прошивки — иначе данные повредятся.
В форумной теме пользователи применяли различные тяжёлые предметы для удержания контакта во время прошивки. Дома случайных тяжёлых керамических предметов не нашлось, поэтому реалистичным вариантом оставалось удерживание pogo-pin зонда вручную. Это делает крайне важной быстроту прошивки — последствия задержки станут очевидны позже.
Обратите внимание также на белые линии вокруг чипа BIOS — это называется «шелкографией» в терминологии печатных плат и обозначает места возможного размещения компонентов. Судя по форме, материнская плата могла быть спроектирована под съёмный сокет для заменяемого чипа BIOS, и тогда ремонт можно было бы выполнить одним из способов:
- купить новый чип с корректной прошивкой у Framework; или
- извлечь чип и вставить его в программатор без сомнительных механизмов вроде pogo pins.
Однако, опять же, «ремонтопригодная» компания-производитель выбрала путь закрытия возможности ремонта.
Кроме того, на плате явно предусмотрено место под флеш-разъём, подключённый к чипу BIOS, и подключиться к нему можно было бы обычными джамперными («DuPont») проводами вместо pogo pins. Вертикального зазора из-за высоты слота M.2 тоже хватало. И вновь Framework выбрала недружелюбный к пользователю вариант.
Программатор
Теперь, когда понятно, с каким чипом BIOS предстоит работать и что подключаться к нему нужно через pogo-pin зонд, самое время обсудить, что потребуется для общения с чипом и его программирования.
Поскольку хотелось чего-то удобного и интегрированного, логично было выбрать программатор, работающий через USB. Существует несколько популярных вариантов, у каждого свои плюсы и минусы.
Мини-программатор CH341A
Это, вероятно, самый популярный вариант, которым пользовалось большинство участников той форумной темы Framework. Он очень дёшев на AliExpress и на момент написания стоит US$3, что делает его крайне доступным. Сам чип CH341A работает на 3.3 В и 5 В, поэтому для устройств на 1.8 В, вроде Winbond 25R256JWEQ, требуется левел-шифтер на 1.8 В.
К сожалению, как отметил пользователь форума @jim_m, дешёвые мини-программаторы CH341A, особенно с чёрными платами, имеют проблему с напряжением на выводах данных. Питая чип (или левел-шифтер) на 3.3 В, они оставляют выводы данных на уровне 5 В, что не идёт на пользу здоровью подключённых устройств. Впрочем, многие пользователи не сообщали о проблемах. Чтобы раз и навсегда закрыть этот вопрос, было решено заказать один экземпляр и протестировать его лично, благо стоит он копейки.
По прибытии программатор был подключён к мультиметру согласно инструкциям из этого блога, содержащим способы исправления проблемы без пайки, а также методику проверки её наличия и устранения:
Мультиметр измеряет напряжение на выводах MOSI и MISO мини-программатора CH341A, которое должно составлять 3.3 В
Что ж, оказалось, что варианты с чёрной платой действительно проблемны.
Считается, что версии CH341A с переключателем напряжения между 5 В, 3.3 В, 2.5 В и 1.8 В этим багом не страдают. В том же видео утверждается, что левел-шифтер на 1.8 В в любом случае преобразует 5 В на выводах данных в 1.8 В, но доверия к этому утверждению немного, как и уверенности в безопасности такого решения для самого шифтера.
От дальнейших экспериментов было решено отказаться из-за другого серьёзного недостатка CH341A — скорости. Из datasheet серии Winbond 25R256JW видно, что максимальная частота SPI-шины составляет 133 МГц. Однако CH341A, судя по найденным в сети данным, способен лишь на 1.7 МГц, а то и меньше. Участники форума сообщали, что чтение 32-мегабайтного чипа BIOS занимало около 5 минут, и ещё 5 минут — запись. Удерживать pogo-pin зонд столько времени точно не входило в планы.
«Высокоскоростной» программатор CH347
CH347 — более новый программатор, духовный преемник CH341A. С частотой SPI-шины в 15 МГц он программирует чипы значительно быстрее CH341A. Разъём на программаторе должен быть совместим с CH341A и служить прямой заменой. К сожалению, документации по нему крайне мало. Тем не менее удалось выяснить, что это устройство на 3.3 В10.
После получения удалось подтвердить, что на выводах данных действительно 3.3 В, в отличие от CH341A:
Мультиметр измеряет MOSI и MISO на программаторе CH347, показывая ожидаемые 3.3 В на выводах данных
Это внушает куда больше уверенности. Благодаря более высокой скорости прошивки удерживать pogo pins тоже пришлось бы меньше времени, что явный плюс. Именно этот программатор и был выбран для проекта.
XGecu T48
Один из пользователей форума сообщал об успешном использовании программатора XGecu T48. Однако, увидев цену свыше $100, от этого варианта сразу отказались как от слишком дорогого для такого ремонта.
Покупка инструментов
Вооружившись знаниями о необходимом оборудовании и не рассчитывая на исправление ситуации со стороны Framework, было решено заказать детали на AliExpress, понимая, что доставка займёт время. В итоге были куплены следующие товары:
- Полный набор программатора CH341A с инструментами, включая левел-шифтер на 1.8 В, клипсы и прочие принадлежности для будущих задач прошивки за US$7.59 (в листинге есть опция покупки только левел-шифтера);
- Программатор CH347 за US$4.99;
- Pogo-pin зонд WSON8 6×8мм за US$7.83.
Итоговая сумма составила US$20.41. Стоит отметить, что для достижения такой цены пришлось докупить несколько несвязанных товаров, которые всё равно планировалось приобрести.
CH341A был куплен, чтобы проверить, сохранился ли баг с напряжением у новых чёрных плат — для самого проекта он не требовался. Возможно, сэкономить получилось бы, купив только левел-шифтер, который на момент написания доступен в том же листинге за US$2.23. Впрочем, остальные компоненты набора могут пригодиться в будущем.
Стоит также отметить, что срочности в ремонте не было, поэтому и выбор пал на AliExpress с доставкой 1-2 недели ради экономии. При срочной необходимости ремонта разумнее рассмотреть доставку Amazon Prime день в день, хотя и по более высокой цене.
Ответ Framework
После всех этих изысканий Framework наконец ответила, порекомендовав отключить зарядное устройство, дать батарее разрядиться и затем попробовать включить снова — именно это уже было сделано ранее, и ноутбук не включался. Официально ноутбук превратился в «кирпич» — то есть, по сути, стал очень дорогим куском металла и пластика.
После сообщения об этом Framework запросила дополнительную информацию и предложила ещё несколько шагов диагностики:
Какая версия BIOS была установлена и до какой версии выполнялось обновление? (Например: была 3.09, обновление до 3.18)
Точно не помню, но, кажется, была 3.18. Точно известно, что обновление шло до 3.20.
Версия BIOS, до которой выполнялось обновление, находилась в Alpha, Beta или Stable релизе? (При скачивании с базы знаний — это Stable релиз. С форума сообщества — тип релиза указан в заголовке)
Это стабильная версия BIOS, хотя скачивалась она через LVFS.
Какие коды мигания показывает устройство при попытке включения? (Если возможно записать видео и прислать нам, будем очень благодарны)
Видео прилагается (blink.mp4), уменьшено до 144p для экономии места. На вид это 12 зелёных вспышек, 1 красная, 1 зелёная, 1 синяя, 1 зелёная, 2 синих, 8 зелёных, 2 синих.
Пришлите, пожалуйста, фото лицевой стороны материнской платы
См. mainboard.jpg
Пришлите фото ноутбука со всех сторон при закрытой крышке (слева, справа, сверху, снизу, спереди и сзади). См. изображение ниже для примера.
См. остальные jpg-вложения.
Для диагностики:
- Отключить систему от питания.
- ОСТОРОЖНО отсоединить батарею и оставить отключённой на 30 минут для лучшего шанса восстановления.
- ОСТОРОЖНО подключить батарею обратно.
- Подключить питание.
- Попробовать включить систему.
Выполнено. Без изменений, та же картина со светодиодами.
Вложения приводить не будем, но физически ноутбук выглядел исправным.
Framework ответила 2026-08-07 в 05:49 EDT:
Благодарим за ответ и присланные фото. Мы это ценим.
После тщательного изучения проблемы и предоставленных фото/видео мы пришли к выводу о необходимости замены материнской платы.
К сожалению, мы не можем предоставить замену, поскольку срок гарантии уже истёк.
Рекомендуем приобрести замену на Marketplace.
Ознакомиться с условиями гарантии и продажи можно ниже.
Гарантия Framework — https://frame.work/warranty
Условия продажи Framework — https://frame.work/terms-of-saleПонимаем, что это несколько разочаровывает, и искренне приносим извинения за неудобства.
Если понадобится ещё какая-то помощь, не стесняйтесь обращаться.
Спасибо за понимание. Хорошего дня!
С уважением,
Поддержка Framework
Итак, после того как сама Framework порекомендовала обновить BIOS, компания заявила: поскольку гарантия истекла, единственный вариант — выбросить всю материнскую плату, включая полностью рабочий, но впаянный процессор, и купить замену за $500+ в собственном магазине.
Как объяснить логику, при которой некорректные данные на чипе BIOS стоимостью в рознице US$5 вынуждают покупать целую новую плату и процессор за $500+? Особенно учитывая, что проблема возникла из-за собственных инструкций Framework? Особенно когда множество пользователей уже жаловались на официальных форумах Framework без каких-либо мер по предотвращению повторных случаев «окирпичивания»?
Хуже всего то, что Framework не предложила никакой помощи в попытке самостоятельного ремонта — ни документации, ни схемы, ни хотя бы сырого образа BIOS для внешней прошивки. Вот тебе и право на ремонт…
Утечка данных
В довершение всего, во время переписки с поддержкой пришло следующее письмо от Framework:
От: Framework <support@frame.work>
Тема: Уведомление об ограниченной утечке данных
Дата: 2026-08-06 23:04 EDTУважаемый клиент Framework,
Мы пишем, чтобы сообщить об утечке данных у нашего провайдера бизнес-аналитики Metabase, в результате которой злоумышленник получил доступ к именам, адресам электронной почты, телефонным номерам и адресам клиентов. Ваши данные находились в базе, к которой был получен доступ в ходе этого инцидента. Информация о заказах или платежах затронута не была.
Полные детали инцидента приведены ниже. Мы глубоко сожалеем об этой утечке информации и пересматриваем и улучшаем нашу методологию хранения данных у сторонних поставщиков баз данных.
Мы также уведомляем регулирующие органы в каждом регионе, где действуют соответствующие нормы. Обратите внимание, что хотя в большинстве регионов регламенты не требуют уведомления об утечке имён, email-адресов, телефонных номеров и адресов, мы всё равно отправляем это письмо, чтобы вы были в курсе и могли предпринять необходимые действия.
Что произошло?
6 августа 2026 года в 9 утра по тихоокеанскому времени Metabase уведомила нас о взломе своих систем следующим письмом:
В понедельник, 3 августа, мы обнаружили, что Metabase Cloud подверглась атаке с использованием неизвестной («0-day») уязвимости в версиях 1.58 и выше. Мы немедленно заблокировали используемые для атаки эндпоинты, затем быстро выявили и устранили уязвимость. Мы уведомили правоохранительные органы и привлекли стороннюю фирму для проведения независимого расследования.
Ваш экземпляр Metabase был уязвим к этой 0-day. Поэтому для защиты вашей компании мы рекомендуем:
- Сменить учётные данные для всех баз данных, подключённых к вашему экземпляру; и
- Проверить учётные записи администраторов на вашем экземпляре и удалить незнакомые.
Мы также обнаружили, что злоумышленник получил доступ к вашему экземпляру. Мы составили отчёт о предполагаемых действиях злоумышленника, включающий файлы логов, который можно получить в Metabase Store по адресу [ссылка удалена].
(Если у вас нет доступа к Metabase Store, возникают проблемы с получением отчёта, или вы не хотите переходить по ссылке в неожиданном письме, вы можете войти в свой экземпляр напрямую и обратиться к нам через Help > Get help в меню в правом верхнем углу. Мы подтвердим, что сообщение от нас, и отправим отчёт по email.)
Этот отчёт основан на наших собственных логах приложения. Мы не запрашивали и не читали данные в подключённых базах данных.
В зависимости от юрисдикций, в которых вы работаете, и видов данных, к которым подключён ваш экземпляр, у вас могут быть обязательства по уведомлению согласно применимым законам. Если у вас есть опасения на этот счёт, рекомендуем оценить потенциальные обязательства по уведомлению с юридическими или комплаенс-экспертами вашей компании.
Сожалеем о любых неудобствах, которые может вызвать этот инцидент, и готовы оказать поддержку. При наличии вопросов ответьте на это письмо или напишите нам по адресу [email удалён], мы ответим как можно быстрее.
Самир Аль-Сакран
Основатель и CEO
MetabaseМы незамедлительно изучили логи, предоставленные Metabase, и подтвердили, что к нашему экземпляру базы данных был получен доступ злоумышленником. Подтверждён доступ к следующей информации:
- Полное имя
- Email-адрес
- IP-адреса входа
- Данные платёжного и почтового адреса
- Страна
- Адрес
- Город
- Штат/область
- Почтовый индекс
- Телефонный номер
- Компания
Для клиентов Framework for Business мы проверяем, был ли также получен доступ к следующей информации:
- Компания
- Телефон
- НДС-номер
- EIN
- Email для выставления счетов
Никакая другая личная идентифицирующая информация, информация о заказах или платежах доступной не была.
Обратите внимание, что Metabase дополнительно отметила:
Важно: это предварительное обновление, основанное на наших текущих знаниях.
Мы работаем со сторонней фирмой судебной экспертизы, чтобы понять полный характер и масштаб инцидента.
Мы предоставляем это промежуточное обновление до завершения расследования, чтобы вы могли лучше понять потенциальное воздействие и обезопасить свои данные.
Наше расследование продолжается, и предоставленная сейчас информация носит предварительный характер.
Пожалуйста, изучите логи приложения, а также выполненные запросы, предоставленные в виде отдельных файлов в zip-архиве, для получения подробной информации о действиях и возможной хронологии.
Мы уведомляем вас об утечке заблаговременно, чтобы обеспечить максимально раннюю видимость ситуации. В случае, если Metabase уведомит нас о дополнительной информации, касающейся вас, мы отправим дополнительное письмо.
Что было сделано для решения проблемы?
После уведомления об утечке от Metabase мы сменили учётные данные всех баз данных, связанных с нашим экземпляром Metabase, и подтвердили отсутствие изменений в правах администраторов или доступе к системам за пределами Metabase.
Какие меры приняты, чтобы это не повторилось?
Мы пересматриваем объём и глубину данных, передаваемых платформам бизнес-аналитики, ограничивая доступ только теми столбцами, которые необходимы для анализа.
Нирав Патель и команда Framework
Что ж, по крайней мере Framework раскрыла инцидент безопасности, а не скрыла его — это плюс. Хотя, с другой стороны, регуляторы были бы очень недовольны, узнав о сокрытии подобного случая…
Тем не менее разочарование от того, что Framework доверила чувствительную информацию стороннему провайдеру, явно не сумевшему обеспечить её сохранность, было велико. То, что это произошло одновременно с превращением дорогого ноутбука в «кирпич», лишь усугубило ситуацию — иначе как насыпать соль на рану это не назвать.
Стоит отметить, что Framework заявила о нетронутости платёжной информации. Многие вздохнут с облегчением, но повода для этого нет. При оплате картой, даже если бы Framework слила полный номер кредитной карты11, ответственность за любые мошеннические транзакции в результате этой утечки составила бы ноль. Достаточно позвонить в банк — и там выпустят новую карту. А вот телефонные номера и адреса, которые куда сложнее просто взять и поменять — если только не переезжать… К чести Framework, компания изложила это как факт, а не пыталась представить отсутствие утечки платёжных данных как некое утешение, как это делают некоторые недобросовестные компании.
Извлечение образа BIOS
Итак, инструменты для прошивки BIOS есть, а Framework не готова предоставить сырой образ BIOS — предстоит самостоятельно определить, что именно прошивать для восстановления системы.
Из форумной темы о прошивке BIOS пользователь @David_Henry, изучив BIOS и поэкспериментировав с прошивкой, определил: сырой образ BIOS занимает ровно 32 МиБ начиная со смещения 1993293 в файле .cap из пакета обновления UEFI-оболочки Framework, и этот результат идентичен выводу стороннего инструмента InsydeH2O-extractor-2 на GitHub.
Поскольку жёстко заданное смещение вряд ли будет работать для будущих версий, рекомендуется использовать именно инструмент-экстрактор. К сожалению, он написан под библиотеку C от Microsoft и использует нестандартные функции вроде fopen_s, из-за чего не запускается на Linux. Для решения этой проблемы был сделан форк инструмента, скомпилированный под Linux.
Собрать его и извлечь файл .cap можно так:
git clone https://github.com/quantum5/InsydeH2O-extractor-2.git
cd InsydeH2O-extractor-2
cmake .
make
./extractor /path/to/bios.cap
В директории появится файл BIOSFILE.FD — именно его нужно прошивать.
Для Framework 13” AMD Ryzen 7040 series BIOS версии 3.20 готовый образ уже доступен: https://dl.quantum2.xyz/firmware/framework-3.20-bios.bin
Хеши файла:
- MD5:
8bc4cde1b7e8413b9b405b8e7b243e1f - SHA1:
b562976496f3bafba5e07f2d96b03804a708f90d - SHA256:
a64541 3ee19c7cf28791 7a71709988 3ea37ed6b556c74cf31adbc5b1afcc9c05
Использование этого образа после проверки целостности допустимо. На момент написания статьи как минимум четыре пользователя скачали полный образ BIOS с сервера — вероятно, у них тоже «окирпичились» ноутбуки, но об этом на форумах Framework они не рассказали.
Доставка инструментов
Через восемь дней после заказа на AliExpress детали наконец прибыли. Осмотр приобретённых программаторов подтвердил уже известные факты: CH341A обладал багом с напряжением и работал медленно, поэтому его решено было попробовать только в крайнем случае — после устранения проблемы с напряжением. Куда более перспективным выглядел CH347.
Левел-шифтер на 1.8 В был подключён к CH347, после чего проверено, что на выводах данных действительно 1.8 В — на всякий случай. Также мультиметром проверена целостность цепей pogo-pin зонда — подтверждено, что каждый контакт подключён к правильно пронумерованному выводу разъёма. Такая осторожность может показаться избыточной, но с товарами с AliExpress никогда не знаешь наверняка.
В любом случае, инструменты вызвали удовлетворение, можно было продолжать.
Подключение чипа
Осталось собрать всё вместе, чтобы ПК мог общаться с чипом BIOS через программатор CH347.
Поскольку программирование выполнялось с настольного ПК, был использован USB Type-A удлинительный кабель (папа-мама), чтобы программатор CH347 не занимал жёстко один из USB-портов.
Далее нужно разобраться с распиновкой CH347. После небольшого исследования выяснилось: порядок выводов для SPI NOR флеш-памяти типа 25, включая наш W25Q256JW, всегда одинаков, и именно под него рассчитана левая сторона CH347:
Диаграмма расположения выводов SPI NOR флеш-памяти на программаторе CH347
Если присмотреться к нижнему правому углу, там изображена схема двух чипов — один подписан 25, другой 24 — описывающая эту распиновку. Это означает, что чипы типа 25 подключаются слева, а вывод 1 находится справа, как показывает полукруг справа. Чипы типа 24, то есть последовательные EEPROM I²C, подключаются справа, но для этого проекта они не нужны.
А что это за разъём? Это сокет zero insertion force (ZIF), предназначенный для приёма штыревого разъёма. После установки выводов рычаг переводится в горизонтальное положение, фиксируя контакты. Механизм очень похож на сокеты PGA-процессоров, например AM4.
Хотя некоторые чипы с выводами подходят прямо в программатор, здесь это не работает. В любом случае, программатор рассчитан на 3.3 В, а чип — на 1.8 В, поэтому в CH347 требуется установить левел-шифтер:
Диаграмма расположения выводов SPI NOR флеш-памяти на левел-шифтере 1.8 В
Левел-шифтер оснащён разъёмом с подписанными выводами сверху, а сами контакты расположены снизу. Их нужно вставить в соответствующие отверстия ZIF-сокета на CH347, как описано выше.
Шифтер предоставляет ещё один ZIF-сокет уже на 1.8 В. На этот раз используется только правая часть сокета, а вывод 1 направлен вправо. При внимательном рассмотрении шифтера можно заметить, что выводы подписаны прямо рядом с ZIF-сокетом на плате, хотя на фотографии это плохо видно, поэтому обозначения добавлены отдельно.
Следующий шаг — подключение pogo-pin зонда. Выглядит он так:
Фото pogo-pin зонда WSON8 6×8мм
Шлейф-кабель необходимо подключить к плате с разъёмом-гребёнкой на другой стороне. Выводы пронумерованы на стороне шлейфа. Разъём необходимо вставить в ZIF-сокет на левел-шифтере и зафиксировать.
Теперь можно подключать зонд к чипу BIOS. Перед этим обязательно нужно открыть ноутбук Framework и извлечь дорогостоящие RAM и SSD из материнской платы — на случай ошибки и случайного повреждения этих компонентов. Также стоит перепроверить все соединения на предмет правильного порядка выводов везде. Одна ошибка — и чип сгорит, а то и вся материнская плата.
Полная сборка с CH347, левел-шифтером и pogo-pin зондом должна выглядеть так
Теперь нужно найти сторону пластика pogo-pin зонда с непрозрачным полукругом. Это сторона вывода 1, и её необходимо разместить с той же стороны, где находится белая точка на чипе. Это гарантирует правильный порядок выводов. Во время прошивки зонд прижимается к чипу с приложением усилия для удержания:
Pogo-pin зонд, используемый на чипе BIOS
Выполнение прошивки
Прошивка выполняется утилитой flashrom из проекта coreboot. Стоит отметить, что в отличие от Windows, где для этих программаторов нужны драйверы, flashrom способен общаться со всеми поддерживаемыми USB флеш-программаторами через libusb.
Стоит перепроверить, поддерживается ли ваш программатор установленной версией flashrom:
$ sudo flashrom -L
...
Supported USB devices for the ch341a_spi programmer:
Vendor Device USB IDs Status
Winchiphead (WCH) CH341A 1a86:5512 OK
Supported USB devices for the ch347_spi programmer:
Vendor Device USB IDs Status
QinHeng Electronics USB To UART+SPI+I2C 1a86:55db OK
QinHeng Electronics USB To UART+SPI+I2C 1a86:55de OK
...
И CH341A, и CH347 поддерживаются. Если в вашей системе их нет — вероятно, нужна более новая версия flashrom.
Также учтите: одной рукой придётся удерживать pogo pins, и с относительно быстрой прошивкой CH347 это, вероятно, лучшая стратегия, чем попытки применить тяжёлый предмет для приложения нужного усилия. Поэтому настоятельно рекомендуется использовать в Linux первичное выделение для копирования приведённых здесь команд, выделяя текст (попробуйте тройной клик), а затем вставляя его средней кнопкой мыши — это значительно удобнее делать одной рукой.
Заодно подготовьте файл BIOS как wanted.bin и посчитайте его хеш:
$ sha256sum wanted.bin
a645413ee19c7cf287917a717099883ea37ed6b556c74cf31adbc5b1afcc9c05 wanted.bin
Теперь прижмите pogo-pin зонд (не забывая про ориентацию!) к чипу и проверьте, определяется ли он:
$ sudo flashrom --programmer ch347_spi
flashrom 1.4.0 on Linux 6.12.101+deb13-amd64 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Found Winbond flash chip "W25Q256JW" (32768 kB, SPI) on ch347_spi.
...
Отлично, чип определился. Если нет — проверьте правильность позиционирования зонда и приложите больше усилия при необходимости. Для хорошего контакта требуется довольно много усилия — рекомендуется наращивать давление постепенно, если контакт не устанавливается.
Теперь считайте текущее содержимое чипа BIOS. Поскольку соединение довольно ненадёжное, вполне вероятны ошибки чтения, поэтому рекомендуется читать несколько раз, пока хеш не совпадёт как минимум на двух попытках, желательно подряд:
sudo flashrom --programmer ch347_spi -r read-v1.bin --progress && sha256sum read-v1.bin
sudo flashrom --programmer ch347_spi -r read-v2.bin --progress && sha256sum read-v2.bin
sudo flashrom --programmer ch347_spi -r read-v3.bin --progress && sha256sum read-v3.bin
sudo flashrom --programmer ch347_spi -r read-v4.bin --progress && sha256sum read-v4.bin
sudo flashrom --programmer ch347_spi -r read-v5.bin --progress && sha256sum read-v5.bin
sudo flashrom --programmer ch347_spi -r read-v6.bin --progress && sha256sum read-v6.bin
В данном случае хеш совпал на попытках 1, 4 и 5, после чего чтение было остановлено. Зонд удерживался в той же самой позиции — контакт был хорошим и обеспечивал наибольшие шансы на успех дальнейших шагов.
Если ни одна попытка не дала совпадающего хеша, нужно приложить больше усилия к зонду и повторить. Хотя время попыток не замерялось, каждое чтение с CH347 занимало, по ощущениям, менее 20 секунд.
Крайне важно получить хорошую копию текущего содержимого чипа BIOS, поскольку там может храниться информация, полезная позже. Какая именно — станет ясно чуть дальше. Сохраните успешно считанный файл BIOS в надёжном месте.
Теперь время записи в чип. Верификация была отключена флагом -nN из-за ненадёжности соединения — так появляется возможность проверить результат позже, не удерживая зонд на всё время записи и верификации:
$ sudo flashrom --programmer ch347_spi -nNw wanted.bin --progress
flashrom 1.4.0 on Linux 6.12.101+deb13-amd64 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Found Winbond flash chip "W25Q256JW" (32768 kB, SPI) on ch347_spi.
===
Reading old flash chip contents... [READ] 1% complete... [snip]
[READ] 100% complete... [READ] 50% complete... [READ] 0% complete... [READ] 100% complete... done.
[READ] 0% complete... Erase/write done from 0 to 1ffffff
На этом прошивка завершена. Вся операция заняла меньше минуты. CH347 определённо оправдал вложения по сравнению с CH341A. Учитывая, насколько быстро прошивка выполнилась извне через ненадёжное соединение программатором, работающим лишь на 11% от максимальной частоты SPI-шины чипа, остаётся только гадать, чем же занимается штатный обновлятор BIOS Framework, что обычная прошивка занимает у него много минут…
Теперь выполните ручную верификацию, повторив чтение, но в другие файлы:
sudo flashrom --programmer ch347_spi -r verify-v1.bin --progress && sha256sum verify-v1.bin
sudo flashrom --programmer ch347_spi -r verify-v2.bin --progress && sha256sum verify-v2.bin
sudo flashrom --programmer ch347_spi -r verify-v3.bin --progress && sha256sum verify-v3.bin
Остановитесь, когда хеш совпадёт с wanted.bin из предыдущего шага. Верификация прошла с первой попытки. Если после трёх попыток совпадения нет, стоит повторить запись до успешной верификации.
Последствия прошивки
После завершения прошивки RAM и SSD были установлены обратно, и ноутбук Framework включён. После минуты первичной тренировки памяти (или чего-то подобного) система наконец загрузилась. Однако история на этом не закончилась.
В настройках BIOS обнаружилось, что все прежние настройки сброшены — при наличии кастомизаций их придётся выполнить заново. Также в настройках BIOS обнаружилось следующее:
System UUID 1234567890
System SN 1234567890
Изначально этих значений явно не было. Похоже, эта информация хранится прямо в чипе BIOS. Каких-либо негативных последствий оставления таких значений, по крайней мере в Linux, замечено не было, но вполне возможно, что придётся заново активировать Windows12.
Теоретически, корректные значения должны сохраняться в оригинальном образе BIOS. Знай точные смещения, можно было бы скопировать эту информацию в новый образ и повторить прошивку, но, к сожалению, у Framework нет документации по структуре BIOS. Ещё один пример проблем с ремонтопригодностью. Именно поэтому важно сохранить повреждённый образ BIOS.
После настройки BIOS система была перезагружена, но не смогла найти загрузчик Debian. Эта информация хранится в UEFI NVRAM, которая, судя по всему, была стёрта в ходе всего этого испытания.
К счастью, была доступна опция «загрузка из файла» — на SSD был найден EFI/debian/shimx64.efi, после выбора которого появилось меню GRUB. Путь может отличаться в зависимости от дистрибутива, а при отключённом secure boot стоит выбрать grubx64.efi.
После этого система загрузилась в обычном режиме, но потребовалась переустановка загрузчика, чтобы не выбирать файл вручную при каждой загрузке. В большинстве дистрибутивов это делается командой sudo grub-install /dev/nvme0n1p1, заменив /dev/nvme0n1p1 на свой EFI System Partition13.
Заключение
При схожей ситуации с «убитым» ноутбуком Framework из-за проблем с BIOS и отсутствии инструментов для прошивки, лучшим выбором станет программатор CH347. Он однозначно превосходит старый CH341A по всем параметрам и справился с задачей быстро. Сама прошивка оказалась не такой уж сложной, стоило разобраться в процессе и обзавестись инструментами — весь процесс занял менее пяти минут.
Что касается Framework Computer Inc, к компании накопилось много претензий…
Во-первых, очевидно, что программа обновления BIOS Framework неисправна, как минимум на серии AMD 7040. В программе явно есть баг, приводящий к отображению на экране чего-то похожего на случайные данные из памяти — тем более что подобное уже случалось у других пользователей на других версиях BIOS и даже на 16-дюймовых ноутбуках. При этом штатное обновление почему-то выполняется медленнее, чем прошивка дешёвым 15-мегагерцовым программатором через pogo pins, что заставляет задуматься, что же на самом деле происходит под капотом.
Во-вторых, Framework поощряет обновление BIOS в своих рассылках, но если обновление приводит к «окирпичиванию», компании нечего предложить, кроме совета выбросить полностью исправное оборудование из-за проблемы с прошивкой — просто потому что закончилась гарантия. Такое поведение может быть законным согласно условиям гарантии, но морально это неправильное отношение к пользователям. Оно также противоречит всей философии сокращения электронных отходов, которую Framework якобы разделяет всем сердцем.
В-третьих, Framework заявляет о создании ремонтопригодного ноутбука, но описанный опыт и препятствия на пути к прошивке BIOS однозначно показывают обратное. Framework, безусловно, создала легко обслуживаемый ноутбук, в котором тривиально заменить RAM и SSD, но это не ремонтопригодный ноутбук, если производитель просто предлагает купить новую плату и процессор, не оказывая никакой помощи в самостоятельном ремонте.
Согласно Repair Association, организации, отстаивающей право на ремонт, ключевым столпом этого права является документация:
Предоставлять те же руководства по ремонту, схемы и прочую документацию для обеспечения полноценного ремонта.
В этом отношении Framework полностью провалилась. Весь процесс прошивки пришлось выяснять самостоятельно из сторонних источников. Даже сырой прошиваемый образ BIOS пришлось извлекать самостоятельно.
Более того, в ходе попытки ремонта стало очевидно, что Framework приняла ряд проектных решений, значительно усложнивших ремонт:
- у Framework отсутствует опция восстановления BIOS;
- на материнской плате Framework присутствует шелкография под съёмный чип BIOS, но вместо этого чип впаян намертво;
- Framework выбрала форм-фактор WSON для чипа BIOS; и
- Framework решила не предусматривать разъём для прошивки BIOS, что в сочетании с пунктом №3 вынудило прибегнуть к pogo pins.
Особенно возмутительно осознавать, что бренды, изначально не позиционирующие себя как ремонтопригодные, способны восстановиться после неудачной прошивки BIOS, и даже материнская плата 2004 года выпуска на это способна…
Так что при всех заявлениях о поддержке права на ремонт, действия Framework показывают прямо противоположное. По этой причине рекомендовать ноутбуки Framework кому-либо в их нынешнем состоянии совесть не позволяет.
Наконец, совершенно непонятно, зачем Framework вообще понадобился провайдер «бизнес-аналитики», тем более такой, что хранит клиентские данные небезопасным образом. Также неясно, зачем этому провайдеру потребовался номер телефона или домашний адрес. В полученных сообщениях Framework не объяснила, зачем эта информация передавалась и что именно с ней делалось, равно как и не предоставила никакого обновления по расследованию спустя более недели с момента написания статьи.
Как владелец ноутбука Framework, желающий в будущем воспользоваться преимуществами модернизируемости, хотелось бы увидеть, как Framework наводит порядок и выполняет обещания, данные при продаже продукта. В связи с этим к Framework предъявляются следующие требования:
- Немедленно прекратить поощрение обновления BIOS пользователями без гарантии до исправления программы обновления;
- Как можно скорее исправить программу обновления BIOS;
- Предоставить немедленную помощь клиентам без гарантии, чьи ноутбуки «окирпичились» из-за обновления BIOS — либо через замену материнской платы, как гарантийным клиентам, либо через бесплатную доставку набора инструментов и подробное руководство по ремонту;
- Предоставить официальную документацию по прошивке BIOS, сырые образы BIOS и инструкции по восстановлению серийных номеров и UUID;
- Проектировать все будущие материнские платы с возможностью лёгкого восстановления после неудачных прошивок BIOS; и
- Немедленно прекратить любой излишний обмен данными с третьими сторонами.
Если Framework изменится к лучшему, к продукции компании ещё можно будет вернуться. А пока стоит повторить слова, которые некий Нанни написал Эа-насиру почти четыре тысячелетия назад:
Kīma annikīam maḫšabam la dummuqām la amaḫḫaruka talammad. U ana ša tumeišanni nasiḫtam epūška.14
Перевод зависит от того, кого спросить, но, вероятно, звучит примерно так:
Знай, что я не приму от тебя ни одного компьютера, если он не будет отменного качества. И поскольку ты обошёлся со мной с презрением, я воспользуюсь своим правом отказа против тебя.
Примечания
- Хотя DIY-редакция Framework обошлась дешевле, назвать процесс сборки по-настоящему «самодельным» сложно. Ноутбук приезжал практически в собранном виде, и единственные операции — установка RAM и SSD, подключение крышки клавиатуры, закрытие ноутбука и установка рамок. Ожидалась хотя бы установка материнской платы, а не финальная сборка почти готового устройства.
- Ещё в 2023 году покупка RAM и SSD отдельно на Amazon давала скидку почти в 50% по сравнению с комплектом от Framework. Сейчас такое сложно представить…
- Формально, речь идёт о прошивке Unified Extensible Firmware Interface (UEFI), поскольку легаси-BIOS сегодня уже никто не использует. Тем не менее многие производители по привычке называют прошивку UEFI «BIOS» — просто это более знакомый термин. Термин «BIOS» здесь используется свободно, поскольку так его называет сама Framework.
- Как-то раз довелось владеть ноутбуком с канадской мультиязычной клавиатурой — использовать её было просто ужасно: дополнительные клавиши для французского языка вторгаются в пространство, обычно занимаемое клавишей Enter и левым Shift. Сама раскладка, если использовать её программно, также задействует AltGr15 и захватывает правый Ctrl как дополнительный модификатор, хотя слой AltGr полностью не используется. Самое обидное, что эта раскладка крайне неинтуитивна для набора французского текста — то есть для того, ради чего она вообще создавалась, — по сравнению с самостоятельно сконструированной раскладкой на основе AltGr и мёртвых клавиш. Собственная раскладка позволяет легко печатать на большинстве европейских языков, включая использующие греческий и кириллический алфавиты. Возможно, когда-нибудь появится отдельный материал о создании собственной раскладки клавиатуры, но не сегодня.
- В итоге был приобретён комплект Crucial 2×16 ГиБ DDR5 5600 МТ/с за CA$154.80 с налогом — цена, немыслимая сегодня. Сейчас тот же комплект стоит $854.18 без налога, хотя, возможно, дело в том, что бренд Crucial больше не существует. Аналогичные комплекты SODIMM других брендов той же скорости начинаются от CA$570 без налога.
- В итоге был куплен 1 ТБ Samsung 980 Pro за CA$90.37 с налогом — тоже немыслимая сегодня цена. Модель уже снята с производства, а 990 Pro на момент написания стоит $400.
- Извинения за низкое качество этого изображения — в тот момент были дела поважнее, чем делать хорошие фотографии.
- В последнее время приходится больше заниматься пайкой для нескольких датчиков умного дома — об этом проекте, возможно, расскажем позже.
- Кто-нибудь ещё помнит, что такое дискета? В любом случае, упоминание этого устройства красноречиво говорит о том, насколько древними должны быть материнские платы с подобными функциями восстановления.
- На AliExpress есть и версия CH347 на 1.8 В, но там, судя по всему, программное переключение между 1.8 В и 3.3 В, что показалось излишне сложным по сравнению с обычной версией на 3.3 В с левел-шифтером.
- Было бы удивительно, если бы Framework действительно умудрилась слить полный номер кредитной карты. Большинство платёжных процессоров никогда не раскрывают полный номер продавцам, использующим их сервисы — только последние четыре цифры.
- Сложно сказать наверняка. Windows никогда не устанавливалась напрямую ни на десктоп, ни на ноутбук.
- Формально, судя по исходному коду
grub-installна UEFI-системах, можно передать любой аргумент, лишь бы он вообще был, но лучше на всякий случай передать именно ESP. - Знания аккадского весьма скромные, но эта фраза основана на последних строках клинописной таблички с древнейшей известной жалобой клиента, где слово «медь» заменено на «компьютер». Компьютеров тогда, разумеется, не существовало, поэтому слово было сконструировано на основе семитского корня ḥ-s₁-b, использующегося в арабском слове حاسوب и еврейском מחשב. Латиница использована вместо клинописи, поскольку Unicode не поддерживает большинство знаков, применявшихся на оригинальной табличке.
- Клавиша AltGr — это просто правый Alt, но раскладка клавиатуры назначает её отдельным модификатором для набора дополнительных символов, вместо того чтобы быть ещё одной клавишей Alt.