waqur: (Default)
Хотя количество транзисторов и ядер в процессорах продолжает расти, сколь-нибудь заметного прироста производительности в последнее время уже не наблюдается, особенно с учётом поправки на инфляцию: http://databasearchitects.blogspot.com/2023/04/the-great-cpu-stagnation.html
waqur: (Default)
Успех проекта PiKVM не остался незамеченным: китайцы довольно быстро сделали собственный клон под названием BliKVM, причём в формате платы расширения PCI Express, и сразу под Raspberry Pi Compute Module 4, которая по сути является малиной для промышенных применений и более надёжна, чем обычная потребительская версия Raspberry Pi. И цена ниже, чем у оригинала. Ушлые черти:

https://www.aliexpress.com/item/1005004572837650.html

Интересно, что плата занимает PCIe-разъём, но электрически с ним никак не взаимодействует, хотя пины PCI Express можно было бы задействовать под USB-контроллер XHCI или EHCI и к этому USB-контроллеру можно было бы неразъёмно подключить контроллеры, через которые идёт эмуляция мышки, клавы, флешки и последовательного порта для управляемого сервера (они уже существуют в составе PiKVM/BliKVM). Тогда на задней панели этой платы было бы меньше разъёмов, а в управляемом сервере — меньше петлевых соединений.

Основное преимущество PiKVM/BliKVM перед другими BMC/IPMI-решениями — современный технологический стэк — например, VNC с поддержкой H.264 вместо древней, как говно мамонта, Java под Internet Explorer'ом. Из числа проприетарных решений, user experience, сопоставимый с PiKVM/BliKVM, обеспечивают только более дорогие девайсы, например Raritan Dominion KX IV-101.

UPD. Ещё один похожий вариант: https://www.aliexpress.com/item/3256804788978325.html
waqur: (Default)
Интересные статьи о дизайн-дефекте российских/советских танков T-72, из-за которого у них так часто детонирует боекомплект и характерно отрывается башня:

https://www.washingtonpost.com/world/2022/04/30/russian-tank-turret-blast-jack-in-the-box/

https://edition.cnn.com/2022/04/27/europe/russia-tanks-blown-turrets-intl-hnk-ml/index.html

Вкратце, суть в том, что размещать боекомплект в одной камере вместе с экипажем, под бронёй — это плохая идея, особенно с учётом тонкой брони танка по бокам возле траков.

Ещё весной было видео городского боя в Мариуполе (к сожалению, я уже не могу найти его сейчас) где БТР "Азова", стреляя из пушки 30 мм калибра, точно по уязвимому месту в области траков Т-72, вызывает детонацию боеукладки с характерным отрывом башни этого российского танка.

Больше видео — в YouTube по запросу "jack in the box T-72".
waqur: (Default)
Ken Shirriff публикует краткий обзор технических решений, которые позволяют хаймарсам (а вернее, их управляемым боеприпасам с GPS-наведением) быть настолько точными.

Автор, в частности, рассматривает, какие модули электронной начинки есть в пусковой установке, какие типы процессоров в них используются, через какие разъёмы подключаются ракеты к пусковой установке, сколько весит сборка из шести ракет, откуда берётся питание для бортовой электроники ракеты и почему в отличие от батарейки в телефоне эта батарея не портится при длительном хранении, какие типы радио и коммуникационных систем есть в этой пусковой установке, что такое тактический интернет и ситуационная осведомлённость, как работает GPS-навигация и инерциальная навигация, что такое M-коды GPS, по какому принципу работает кольцевой лазерный гироскоп и vibrating beam force transducer accelerometer, как обеспечивается устойчивость к GPS-глушилкам и GPS-спуфингу, как сводятся воедино сигналы от GPS-навигации и инерциальной навигации, как работает направленный допплеровский радар высоты при подлёте к цели, а также какая защита предусмотрена от спонтанной детонации боеприпаса в пусковой установке на случай намеренных усилий противника по искажению сигналов GPS.

Вся информация — из открытых источников.

https://threadreaderapp.com/thread/1552723519087198208.html
waqur: (Default)
Кажуть, що США передали Україні дрони-камікадзе і гаубиці калібру 155мм.
ЗСУ: які дрони-камікадзе та гаубиці, де ви їх бачили на фронті?

Кажуть, що за сприяння США Україна отримала літаки та запчастини до них.
ЗСУ: та брешуть, де ті літаки, ви взагалі про що?

Кажуть, що США передали Україні ЗРК Patriot та ракети середньої дальності.
ЗСУ: ось чого нема, того вже нема.
waqur: (Default)
Pi-KVM — это решение для удалённого администрирования сервера на базе Raspberry Pi и некоторого другого железа (HDMI-to-CSI bridge, Y-splitter cable, опционально Arduino и ещё там по мелочи: релюшки, резисторы, провода и т.п.)

Оно позволяет превратить в сервер любой старый комп или ноутбук с HDMI-выходом, обеспечивая возможность удалённого администрирования из любой точки мира, включая переустановку ОС и доступ к настройкам BIOS. Можно даже рулить компами от Apple, для этого поддерживаются какие-то ябблоспецифичные заморочки в реализации USB HID протокола.

https://github.com/pikvm/pikvm

https://www.reddit.com/r/pikvm/

Pi-KVM выделяется на фоне других BMC своей качественной софтовой частью (100% open source, современный HTML или VNC, вместо традиционной для таких случаев Жабы в Internet Explorer'е, древней как говно мамонта). Загрузочная файловая система в Pi-KVM по умолчанию монтируется в режиме "только для чтения", поэтому устойчива к внезапным потерям электропитания. Тамошний софт даже умеет задействовать аппаратный энкодер в H.264 на малинах, а с целью декодинга этого чуда автор смог добавить поддержку H.264 в одну из реализаций (TigerVNC), а также в открытые спецификации протокола VNC.


Недавно автор проекта затеял сбор средств на Kickstarter'е для выпуска платы расширения к малине под названием "Pi-KVM HAT" совместно с партнёрами из PiShop.us (таким образом, пользователю не надо будет заморачиваться кулибинством, а только купить Raspberry Pi + Pi-KVM HAT и прошить соответствующий софт на microSD-карту). Дополнительные плюшки готового HAT по сравнению с подходом "сделай сам из говна и палок" — возможность аудиозахвата, удалённый проброс последовательного порта, а также возможность удалённо поморгать лампочками Power LED и HDD LED на сервере. :)

https://www.kickstarter.com/projects/mdevaev/pikvm-v3-hat
waqur: (Default)
Как известно, сейчас видеокарты резко подорожали и практически исчезли из продажи, в связи с очередной волной хайпа вокруг майнинга криптовалют.

Вот график средней долларовой цены в рознице для самой типичной игровой видяхи ASUS DUAL-RX5600XT-T6G-EVO, за последние полгода:


А вот за последнюю неделю стоимость этой и других подобных видеокарт лучше всего иллюстрирует анекдот:
— Рабинович, а почему вы продаете водку "Абсолют" по десять рублей, когда у Меерсона она стоит пять?
— Ой, мне нравятся эти разговоры! Пойдите и купите водку "Абсолют" у Меерсона!
— Но у Меерсона как раз сейчас нет водки "Абсолют"!
— Ну так когда и у меня не будет водки "Абсолют", я тоже сразу начну продавать её по пять рублей.


С продукцией nVidia — всё то же самое.

Майнинговая ферма


Так когда же подешевеют видеокарты? Когда уже пройдёт волна этого всеобщего помешательства и народ, наконец-то, наиграется в майнинг и быстрое обогащение?

Давайте сами вычислим )

по оптимистическому сценарию видяхи подешевеют примерно через 8 месяцев, а по пессимистическому сценарию — примерно через полтора года. Пессимистический сценарий более вероятен.

Ну а пока производители видеокарт в один голос ругают майнеров, сочувствуют геймерам и утирают слёзы "франклинами".
waqur: (Default)
Тролль 80-го уровня глумится над линуксоидами в полон рост, при этом на 100% соблюдая правила сообщества, так что не к чему придраться. Учитесь, ребята:

А нафига на великолепном ноуте, на который пофапал даже Торвальдс, на котором великолепно вписана великолепная операционка, с великолепным софтом для работы, нужен костыльный набор написанного на коленке хлама, обёрнутый вокруг кучи блобов, рулимый системдшкой с гномом поверх, да ещё и за бабло?

Это примерно как «чуваки, тут Мерседес выкатил новый эс223, давайте скинемся и поставим в него движок от Таврии на рапсовом масле, чтобы когда через 20 лет Мерседес перестанет выпускать для него запчасти, мы все ещё могли бы пересобирать на нем ядра дважды в неделю, чтобы у нас не отваливался звук, сеть и колеса. И пофигу, что у нас уйдёт никак не меньше тех же 20 лет на то, чтобы гном3 перестал падать/тормозить/стал удобным, мы просто хотим коптить рапсовое масло на самодельных дровах».


waqur: (Default)
При реверсировании микрокода процессоров Intel 8086/8088 обнаружилась интересная недокументированная особенность: префикс REP/REPNE перед инструкциями целочисленного умножения и деления со знаком (MUL, IMUL, IDIV) обращает знак результата (произведения или частного):

https://www.reenigne.org/blog/8086-microcode-disassembled/

Перед тем, как процессор начнёт исполнять микрокод для инструкции умножения или деления, отрицательные операнды этих инструкций преобразуются в положительные, а их изначальный знак попутно XOR-ится на некий 1-битный внутренний регистр, состояние которого используется микропрограммой умножения или деления как флаг отрицательного результата. Поскольку у инструкций умножения и деления сложные и длинные микропрограммы с десятками микроопераций, которые портят состояние всех внутренних временных регистров процессора, проектировщиками из Intel для хранения знака результата операции умножения/деления было решено переиспользовать тот же самый 1-битный флаг, который взводится инструкционным префиксом REP/REPNE и сбрасывается на каждой новой инструкции (и который официально предназначен совсем для других целей: для повторения строковых инструкций типа MOVS/CMPS/SCAS, и соответственно не определён для инструкций умножения и деления). Таким образом, если у инструкций умножения или деления есть этот префикс, тогда начальное состояние флага знака результата равно 1 (–), а не 0 (+), как обычно.

Логично, не правда ли?

Жаль только, что трюк не работает, начиная с Intel 80286.
waqur: (Default)
Первая русская 5G-фемтосота производства Уралвагонзавода:







via https://habr.com/ru/post/501044/

Я, конечно, не сторонник теорий заговора про связь коронавируса и 5G, но если бы такая красавица фонила у меня под окнами, сжёг бы её к хуям в тот же вечер. Кацапы, впрочем, все поголовно терпилы; так что поделом им.
waqur: (Default)
В 2011 году компания Intel опубликовала планы развития технологий на обозримую перспективу:

22 нм – 2011
14 нм – 2013
10 нм – 2015
7 нм – 2017

В реальности, как известно, они смогли выпустить процессор с 14-нанометровыми транзисторами только в 2016 году (Skylake) и с тех пор застряли на этой отметке (Kaby Lake, Coffee Lake, Whiskey Lake и Comet Lake). Есть кое-какие подвижки в 10-нанометровой технологии: тестовые образцы, небольшие партии мобильных процессоров, но пока процент выхода годных для десктопных и серверных CPU не позволяет говорить о коммерчески выгодном массовом производстве по этой технологии.

Маркетинговый отдел Intel, пытаясь спасти репутацию компании, публикует новые планы на период с 2019 до 2029 года: 7 нм, 5 нм, 3 нм, 2 нм и 1.4 нм.

В ответ критики язвят, что реальность скорее будет такова: 14 нм, 14 нм, 14 нм, 14 нм, 14 нм.
waqur: (Default)
Процедура сброса умных лампочек "C by GE" к заводским настройкам, официальное видео от производителя:



Кратко суть: General Electric глумится над хомячками в полон рост.

Atomic Pi

2019-06-28 03:11 pm
waqur: (Default)
Что делать, если ваш проект уже перерос возможности Raspberry Pi 3 B+, четвёртую малину ждать некогда, или вам обязательно нужен x86 (например для ZFS), и при этом жаба давит покупать ODROID-H2 ($111), UP Squared ($149+), Minnowboard Turbot ($149-$199) или Intel NUC (ещё дороже)?

Есть решение: Atomic Pi. История этой платы довольно забавна: была такая калифорнийская компания Mayfield Robotics, делавшая робота Kuri на деньги венчурных инвесторов. Разумеется, стартап обанкротился, но таки успел заказать крупную, на несколько десятков тысяч, партию плат у азиатского OEM-производителя AAEON. После банкротства Mayfield эти платы попали на аукцион, где были выкуплены за бесценок ушлыми коммерсами из Digital Loggers, получили новое название, и сейчас распродаются под видом чего-то шибко инновационного.

Их преимущества:
– Низкая цена ($37.88)
– Быстродействующие Gigabit Ethernet + USB 3.0
– 16GB eMMC встроенной памяти, а кому мало — можно расширить через MicroSD-слот
– Годный радиатор для центрального процессора и памяти (а не как у всех остальных, "сделай сам из говна и палок")
– Полноценный 64-битный UEFI BIOS от Aptio, который умеет загружаться с любых устройств (eMMC, microSD, USB, загрузка по локальной сети)
– На эту плату без проблем ставится самый обычный Debian или FreeBSD, и даже, не побоюсь этого слова, винда
– Вполне годные 2Gb DDR3L-1600, полноразмерный выход на HDMI-монитор
– Не нужен полноценный блок питания ATX, достаточно просто +5V DC @ 4A

Странности (наследие робототехнического прошлого):
– Питание +5V, GPIO и HSUART выведены по-дебильному, с нижней стороны платы, через единый 26-пиновый разъём; порт USB 2.0 выведен справа в нестандартном виде. Для тех, кто не хочет мудохаться с паяльником, вендор сразу предлагает пару шилдов: маленький за +$5.12 и большой за +$21.21 (большой шилд, кстати, неплох — например, он добавляет ещё один USB-порт и содержит преобразователь уровней UART 3.3v/5v для подключения Arduino)
– Батарейка для часов RTC болтается на каком-то левом шнурке
– Не особо нужная микросхема BNO055 на борту: инерциальный навигационный датчик и компас
– Не особо нужная микросхема XMOS XUF208-128-TQ64 на борту: АЦП для обработки звука от четырёх микрофонов
– Не особо нужная микросхема TAS5717 на борту: усилитель для аудио-выхода, жрущий 750mA и требующий отдельного питания 12V (но их можно не подключать, звук работает и через HDMI)

Недостатки:
– Не предусмотрены интерфейсы SATA, mSATA, PCIe/miniPCIe и M.2 (для подключения больших устройств хранения данных есть только USB 3.0)
– Нет антенн для Bluetooth и WiFi, даже не припаяны клетки Фарадея (если вам нужна беспроводная связь — готовьте изоленту и самоклеющуюся фольгу, а также антенны и пигтейлы с AliExpress)
– Нет корпуса (хотя кулибины с ebay что-то печатают на 3D-принтерах и пытаются продавать, до разнообразия и качества изготовления малиновых корпусов им далеко)
– Скорее всего, не будет следующих версий этого железа

Эту плату довольно жёстко критикуют, но как по мне, с учётом цены, критика не совсем оправдана.

UPD. Ещё один обзорчик этой платы.

UPD2. На практике возникли некоторые затруднения с портом USB 3.0, которые пришлось исправлять паяльником. )

UPD3. AAEON выпустила продолжение на ту же тему (тот же процессор, то же количество памяти, но в форм-факторе малины, с нормальным разъёмом питания и без странной робототехнической периферии): AAEON Up Board ($99). Впрочем, батарейка RTC по-прежнему болтается на каком-то левом шнурке.

UPD4. Ещё один конкурент: http://linuxgizmos.com/intel-based-rock-pi-x-sbc-arrives/
waqur: (Default)
Turris Omnia — это WiFi-роутер производства чешской компании cz.nic (оператора доменной зоны .cz), примечательный, прежде всего, большим объёмом оперативной памяти и мощным процессором.

https://omnia.turris.cz/en/

Известный факт: оперативная память в практически любом домашнем роутере находится под двойной нагрузкой: NAS и WiFi. Большинство производителей устанавливают на борт своих устройств 128 или 256 мегабайт оперативной памяти, поэтому у них всё работает по принципу "кто первым встал, того и тапки". Или NAS (USB-диск), или WiFi. Cовременный WiFi стандарта 802.11ac в одиночку способен выжрать эти жалкие мегабайты, а в условиях зашумлённого эфира с большим количеством ретрансмиссий даже их будет недостаточно.

В результате конкуренции и стремления снизить цену, производители домашних роутеров, фактически, до мышей уже дотрахались: оперативной памяти так мало, что подобные устройства стали функционально непригодными (особенно в классе low-end). Их график пропускной способности имеет форму пилы — блондинки котиков в фейсбуке со смартфона ещё как-то могут пролайкать, а вот кинцо в приличном качестве через WiFi уже не посмотришь.

Благодаря 2 Гб ОЗУ и выбранному "с запасом" центральному процессору Омния без напряга маршрутизирует трафик между LAN и WAN на полной гигабитной скорости, и при этом может стримить кино с USB 3.0 диска через WiFi стандарта 802.11ac с пропуской способностью 400 Мбит/с (измерено на практике, без провалов и проседаний!)

В роутере два отдельных радиомодуля (2.4 ГГц и 5 ГГц), можно сделать апгрейд (добавить LTE-модем или внутренний NVMe-диск), кроме того есть пара USB 3.0 портов (причём, в отличие от Raspberry Pi и прочих подобных поделий, в Омнии USB-порты подключёны напрямую к CPU). Для тех буржуев, у кого интернет заходит в дом по оптоволокну, есть возможность подключить его напрямую в SFP-порт роутера, без использования медиаконвертера.

Заводская прошивка роутера (TurrisOS) основана на OpenWRT, поэтому на роутер в пару кликов можно установить любой пакет из репозитариев OpenWRT. Так, можно установить tmux, dnscrypt-proxy, openvpn, transmission, aria2, компилятор и binutils для сборки vlmcsd и вообще всё, что душа пожелает. Помимо всех фишечек OpenWRT, TurrisOS примечательна основанными на btrfs снэпшотами, которые позволяют откатить неудачное обновление или вернуться к предыдущей конфигурации нажатием одной кнопки на корпусе роутера.

Но самая бомбическая фишка этого роутера — это возможность запускать LXC-контейнеры (отдельные виртуальные машины с Линуксом). Например, так можно поднять серверы Plex Media Server, Pi-hole, Tiny Tiny RSS, Nextcloud, Mattermost, Diaspora* и т.д. — и каждый со своим отдельным IP-адресом в локальной сети! А ещё в отдельном LXC-контейнере можно поднять web-сервер, как традиционный apache или nginx, так и более экзотический, например hugo — в общем, любой пакет из репозитариев Debian или Ubuntu для процессорной архитектуры armhf. LXC-контейнеры можно снэпшотить и восстанавливать по одному, независимо от основной прошивки роутера и её конфигурации, для этого есть отдельная утилита.

Производитель роутера делает акцент на безопасности и на прошивке, которая будет получать обновления ещё десятилетиями, а не как обычно, "поматросил и бросил". Поживём-увидим. В любом случае, неплохая вещь для того, чтобы возвести NAT-барьер между внутренней локальной сетью и копеечными провайдерскими модемами с необновляемой прошивкой, которые если не сегодня, так завтра станут питательной средой для размножения очередного ботнета по типу Mirai.

В целом, это типичный open source роутер, результат краудфандинговой кампании на IndieGogo, для самоделкиных, которые любят ковыряться в Линуксе и во всяческих прошивках. Отличная замена морально устаревшему старичку-бестселлеру Linksys WRT54GL, хотя и слегка дороговата.

Но есть один нюанс )
waqur: (Default)
ArsTechnica пишет о том, как новые хромбуки за $600 скоро выйдут за пределы сферы образования и ARM-овских процессоров, далее захватят рынок, устроят вендекапец и т.д.:

(Кстати, компания Google в этом году искала на GSoC студента, который выкинет из TianoCore поддержку почти всего UEFI и сделает так, чтобы платформа сразу после подачи питания загружала Linux-ядро напрямую из EEPROM. Никаких вам dual boot, загрузки с USB, BIOS setup и прочих "прав и свобод". Ядро ОС стартует сразу из прошивки платформы, как в телефонах и планшетах на Android.)

https://arstechnica.com/gadgets/2018/09/600-chromebooks-are-a-dangerous-development-for-microsoft/

Всё это, разумеется, типичные журналистские благоглупости, проистекающие от некомпетентности и от непонимания технической подоплёки вопроса. Она заключается в том, что у Linux'а почти монолитное ядро: модули, находящиеся вне основного дерева, быстро отстают от изменений во внутриядерном API и теряют совместимость со следующими версиями ядра. На Linux-ядро 2018 года сборки невозможно установить драйвер (модуль) 1998 года сборки, в отличие от Windows 10 / драйверов для NT 4.0. В Linux нет ничего подобного WDM и WDF.

Чтобы ещё более наглядно увидеть эту разницу между Windows и Linux (Android, ChromeOS), достаточно зайти на сайт какой-нибудь Розетки или другого ритейлера бытовой электроники и почитать отзывы к разным мелким USB-гаджетам: в каментах стоит непрерывный "плач Ярославны" о том, что такой-то и такой-то Андроид-телефон или планшет не поддерживает данное USB-устройство через OTG-кабель. Или вот ещё один пример на ту же тему. Всё это потому, что какая-нибудь Xiaomi или Samsung в своё время не озаботилась вашими проблемами, ребята, и не включила соответствующий драйвер при сборке Linux-ядра под ваш телефон. Видите ли, ей за это не платят. (И отдельное "спасибо" Гуглу за отсутствие ACPI или чего-то подобного для архитектуры ARM, что позволяло бы запускать на всех телефонах унифицированное, централизованно обновляемое ядро — как Linux на X86. Здесь нет места для иллюзий: как видим, Google выпиливает ACPI из X86 для хромбуков, а вовсе не добавляет ACPI на ARM для андроидов.) Купили в своё время телефон без опубликованных исходников ядра, нет поддержки этого телефона в LineageOS/CopperheadOS? Что ж, ССЗБ, марш за новым. И новый будет в этом отношении ничуть не лучше старого. Cry me a river.

(Аналогичная проблема, кстати, есть у Apple, и тоже из-за квазимонолитного UNIX-ядра, но там всё проще: ябблосекта просто объявляет очередной девайс неправославным и подвергает еретиков-юзеров изгнанию и анафеме. Зато бэкапы ябблооси можно свободно двигать между всеми ябблоустройстами: полный комплект драйверов для всего, что только бывает на Apple'овском железе, намертво замурован в операционку. А USB-устройства? См.выше.)

Так вот, никуда это проблема не денется ни сейчас, ни даже через 10 лет. Вам нужно подключить к ноутбуку USB/Ethernet адаптер, чтобы добавить второй сетевой порт или второй WiFi? Хотите что-то напечатать или отсканировать? Может, Yubikey или что-то подобное? Ого, да вы у нас, батенька, буржуй power user, вам Компьютер нужон. А "хромой бук" — это вовсе не компьютер, это просто говна кусок нуу, вы же сами понимаете.

Билл Гейтс в своё время не просто так нанял на работу Дейва Катлера с командой и предоставил ему полную автономию по части набора кадров и принятия технических решений на проекте NT. И не просто так потратил весь имеющийся на тот момент у компании кэш, чтобы отвязаться от юристов DEC'а с их претензиями по поводу нарушения патентов на операционную систему VMS:

https://www.itprotoday.com/management-mobility/windows-nt-and-vms-rest-story

Это была инвестиция в будущее, несомненно, лучшая из возможных на тот момент. В 1987 году на PC нет процессоров, где бы сносно работала NT? "Похуй, пляшем" (c). Десятилетие разработки и эксплуатации VAX/VMS не может пропасть втуне. Таких архитекторов, как Дейв Катлер, на весь мир найдётся не более пяти человек. (И Линус Торвальдс в их число не входит, увы.) Код Windows NT, написанный на языке Си в 1987 году (или портированный с VAX'овского ассемблера в то же время), до сих пор является частью Windows 10, и совершенно точно можно сказать, что жизненный срок этого кода составит не менее 50 лет. Ведь его писали серьёзные, уважающие себя люди, это же не сайт на JS-фреймворке, который устареет за два года.

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

Компания Google в своей следующей операционной системе под названием Fuchsia пытается организовать новую драйверную модель на основе IDL-специфицированных интерфейсов с GUID'ами (что очень похоже на COM здорового человека, обеспеченный современным, как сейчас говорят, tooling'ом), а также на основе изоляции драйверов в отдельных процессах (настоящее микроядро), в общем, на основе всяких хороших инженерных практик, которые призваны решить вышеописанные проблемы квазимонолитных ядер. Но тупые журналисты путём гадания на кофейной гуще вывели, что Fuchsia — это ОС для наручных часов и очков дополненной реальности. Только почему-то со встроенным гипервизором и с Vulkan API для 3D-графики, LOL. (Выражаясь дипломатическим языком, дебилы б**ть.) Посмотрим, что вырастет из этой новой гугловской операционной системы через 10 лет, ведь Windows NT тоже понадобилось примерно 10 лет от начала разработки до релиза первой версии. Затем понадобится ещё как минимум 10 лет, чтобы "нагулять" необходимый пул полезных драйверов (и здесь тоже могут возникнуть проблемы, т.к. в начале этого пути Фуксия будет совершенно беззубая, как Windows 8 на ARM'ах). Ну а далее потенциально эта ОС сможет работать на всём диапазоне устройств от телефонов до серверов Google, обеспечивая модульность и совместимость драйверов на 20-летнем промежутке, как Windows NT, но всё в конечном итоге зависит от Google.

Как бы там ни было, в нынешнем виде Хромбуки неопасны для Windows-экосистемы.
waqur: (Default)
ASUS E402MA — вроде бы и не очень старый ноутбук с поддержкой UEFI, но если EFI System Partition на встроенном HDD содержит загрузчик, чем-то отличающийся от стандартного Microsoft'овского — загрузка наглухо блокируется сразу после включения питания и демонстрации логотипа. Устройство вообще никак не реагирует на клавиатуру, невозможно даже зайти в BIOS/UEFI Setup. Загрузочные флешки в USB-портах у него никакого интереса тоже не вызывают. Единственный способ привести его в чувство — забрать встроенный HDD на другой компьютер и удалить там EFI System Partition.

Материнская плата ASUS P10S-I не может перезагрузиться, когда uptime превышает 24 часа. Наглухо зависает на фазе тестирования оборудования (POST), сколько не нажимай кнопку reset. Помогает только полное обесточивание с выдёргиванием блока питания из розетки. Перезагрузки в пределах первых 24 часов работают нормально.

Вот был всегда 16-разрядный BIOS, который отлаживали 30 лет — зачем было его трогать?
waqur: (Default)
Об этом мало кто знает, но в мире есть люди, которые до сих пор поддерживают универсальные драйверы видеокарты (VESA) и дискового контроллера (AHCI) для старых версий Windows: от NT4 до XP/2003:

http://bearwindows.boot-land.net/vbemp.htm
http://alter.org.ua/en/soft/win/uni_ata/

Эти драйверы позволяют, хотя и с некоторыми извратами (типа ручной правки файлов LAYOUT.INF и TXTSETUP.SIF) установить на современный ноутбук Windows XP и даже древнюю, как говно мамонта, Windows NT 4.0.

Осталось дождаться героя, который портирует драйверы Интеловского хост-контроллера USB 3.0 (Panther Point) на эти древние системы, и тогда будет полный комплект. :)
waqur: (Default)
Обзор нововведений в микрокоде, которые были предложены фирмой Intel для борьбы с атакой Spectre типа 2 (самой сильной — той, которая позволяет одному userspace-процессу читать память другого userspace-процесса). После соответствующих обновлений микрокода в процессоре, эти микропрограммы можно вызывать операциями записи в специально выделенные для этой цели машинно-специфичные регистры (MSR).

Первая микропрограмма под названием IBPB — это полный барьер для предсказания ветвлений. После её задействования, никакие целевые адреса ветвлений, выученные процессором ранее, не будут применяться. Она довольно дорогая (примерно ~4000 циклов).

Вторая микропрограмма (STIBP) защищает процессорное hyperthreading-полуядро (каждое процессорное ядро типично состоит из двух hyperthreading-полуядер) от выполнения ветвлений на основе статистики, выученной другим hyperthreading-полуядром. К примеру, эта возможность может быть задействована при выполнении несвязанных userspace-процессов, или когда разные виртуальные машины-гости выполняются под гипервизором на hyperthreading-полуядрах единого ядра.

Третья микропрограмма (IBRS) более сложная. Фича под названием IBRS может находиться в двух состояниях: включена или выключена, и по замыслу Intel она должна быть включена всё время, пока процессор находится в более привилегированном режиме исполнения (например, в ядре или в гипервизоре). Когда фича IBRS включена, предотвращается ветвление процессора на целевые адреса, выученные в то время, когда фича IBRS была выключена. В общем, IBRS не относится к классу "включил один раз и забыл", а имеет барьеро-подобную семантику и нуждается в переключении состояния при каждом пересечении границы ядро/userspace (или гипервизор/гость). И тоже обходится дорого.

Даже с IBRS, процессор не способен различать разные userspace-процессы друг от друга, также как и разные гостевые виртуальные машины. Так что вдобавок к IBRS для для защиты ядра, необходим полный IBPB барьер при переключении c одного userspace-процесса на другой (в планировщике задач ядра) или при переключении на другую гостевую ОС в гипервизоре. И возможно, следует периодически задействовать STIBP, пока продолжается непрерывное выполнение userspace-процесса или VM-гостя.

https://lkml.org/lkml/2018/1/22/598




Самое цензурное, что смог ответить Линус Торвальдс на эти патчи, было “Somebody is pushing complete garbage for unclear reasons”. Хотя текст, набранный капсом, лучше передаёт его реакцию: http://lkml.iu.edu/hypermail/linux/kernel/1801.2/04628.html

Тем временем народ развлекается созданием компиляторов, которые собирают популярную когда-то видеоигру Doom без ветвлений (для полной неуязвимости к атакам класса Spectre)
https://github.com/xoreaxeaxeax/movfuscator/tree/master/validation/doom
"The mov-only DOOM renders approximately one frame every 7 hours, so playing this version requires somewhat increased patience."
waqur: (Default)
В течении долгого времени идея микроядерной архитектуры ОС (где в пространстве ядра находится только заглушка для обмена сообщениями, а вся традиционная ядерная функциональность вынесена в отдельные процессы) критиковалась из-за сниженной производительности. Дескать, слишком долго это — тратить время на memcpy() параметров и результатов каждого системного вызова, лучше когда вся ядерная память всегда "под рукой". "Все эти ваши L4, Hurd и Minix страшно далеки от народа, Unix и Windows NT во все поля, дёшево и быстро" — говорили они.

Хотя если много-много запросов загнать в преаллоцированный кольцевой буфер, а потом обслужить их все "одним махом", как это делается в паравиртуальных драйверах virtio, или в netmap, или в RIO API, или в DPDK/SPDK, то можно даже получить выигрыш по производительности (теряем время на копировании, экономим на переключении контекста).

Та же идея относительно "асинхронных системных вызовов" рассматривалась в статье FlexSC: Flexible System Call Scheduling with Exception-Less System Calls авторам которой удалось получить прирост производительности на 116% для MySQL и 40% для Apache. Кстати, очень хорошая статья, на которую следует посмотреть свежим взглядом, учитывая опыт нынешнего "Интелпокалипсиса".

Из-за уязвимостей Meltdown и Spectre, мы одним большим прыжком приблизились к миру операционных систем, где привилегированный системный код выполняется на выделенных ядрах процессора, а пользовательский код — на всех остальных ядрах процессора. А в микроядре остаётся только обмен сообщениями и переключение задач.

Потому что KPTI патчи, сбрасывающие CR3+TLB на каждом системном вызове (всё-таки Линус Торвальдс прав, FUCKWIT или UASS звучит лучше) с их налогом на производительность в 50% — это временная затычка. Потому что retpoline-патчи для clang, способные "отучить" процессор от предсказания ветвлений ценой снижения производительности генерируемого кода в тех же 2 раза — это временная затычка. Потому что готовящиеся сейчас обновления микрокода для всех поддерживаемых процессоров с целью сброса статистики для предсказания ветвлений, который (сброс) должен выполняться при каждом пересечении границы ядро/юзерспейс — это временная затычка.

Intel, AMD, ARM и все остальные не переделают выпущенные за последние 20 лет процессоры и никогда не откажутся от кэшей, опережающего исполнения и предсказания ветвлений. Не может быть так, чтобы следующее поколение Xeon'ов и Epyc'ов работало со скоростью Pentium II. Meltdown и Spectre — это только цветочки, потому что идея творческого совмещения branch prediction poisoning, speculative execution и cache timing attacks прочно завладеет умами security-исследователей на ближайшее десятилетие. А это значит, что единственный выход — это разнести "хороший" и "плохой" код по разным ядрам (cores), чтобы микроархитектурные утечки (состояние кэша, статистика для предсказания ветвлений) между "хорошим" и "плохим" кодом были невозможны.

Микроядерная архитектура операционных систем победила монолитную и монолитную-с-модулями. Уже сейчас ясно, что цена "KPTI + retpoline + бестолково частых сбросов branch prediction статистики через микрокод" превышает цену микроядерного IPC.
waqur: (Default)
В Linux (4.15+) и в Windows (10 build 17035+) недавно закоммитили патчи, которые изменяют таблицы страниц таким способом, чтобы все страницы выше середины адресного пространства не были отображены в userspace-контексте.

Таким образом, регистр CR3 и все TLB стали сбрасываться при каждом пересечении границы ядро/юзерспейс. Это происходит дважды на каждом системном вызове и дважды при обработке каждого аппаратного прерывания, а также для page fault (рост стека, своппинг и обращения к отображённым в память файлам). В результате, утилиты типа du стали работать на 50% медленнее. Про десятую винду я уже молчу, после недавнего большого апдейта FCU она и так едва шевелилась.

На подходе публикация информации о какой-то серьёзной аппаратной уязвимости, предположительно — о возможности читать ядерную память из юзерспейса на интеловских процессорах. Причём это будет уязвимость, не исправимая на уровне микрокода, и затрагивающая широкий ассортимент процессоров, выпущенных в разные годы (у Intel нет финансовой возможности отозвать/заменить их все).

С точки зрения нормально работающего процессора всё это не нужно: чтению ядерных страниц из юзерспейса препятствуют лимиты сегментных дескрипторов и флаги защиты страниц. Но, по всей видимости, там всё не так уж и герметично: уже раньше были свидетельства о том, что исполнение инструкций в процессоре опережает проверку привилегий, а результаты выполнения таких инструкций хоть и отменяются на аппаратном уровне, но меняют состояние процессорного кэша: https://cyber.wtf/2017/07/28/negative-result-reading-kernel-memory-from-user-mode/

Любой студент-айтишник, изучавший в институте проектирование процессоров, знает, что в процессорах с поддержкой MMU (виртуальной памяти) преобразование виртуальных адресов в физические адреса посредством TLB происходит физически одновременно с работой кэшей первого/второго/третьего уровней. Именно благодаря этой хитрости, накладные расходы на MMU условно равны нулю, и именно поэтому кэширование данных осуществляется с привязкой к виртуальным адресам, а не к физическим, невзирая на все недостатки такого подхода (например некогерентность обновлений при множественных отображениях). Двойная инвалидация всех TLB на каждом системном вызове, на каждом аппаратном прерывании, и на каждом page fault на корню убивает все преимущества по производительности, даваемые этой хитрой схемой. Раньше TLB инвалидировались только при переключении процессов планировщиком задач, и за один таймслот (10 мс на Windows) потенциально можно было выполнить сотни тысяч вызовов ядра (каждый вызов занимает порядка нескольких сотен машинных циклов). Именно поэтому оценочная цифра потери производительности в два раза выглядит черезчур оптимистичной для меня.

UPD (2018-01-04 00:00 UTC). Google Project Zero нарушил эмбарго и досрочно опубликовал все технические подробности этой атаки: https://meltdownattack.com/meltdown.pdf

March 2024

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Синдикация

RSS Atom

Автор стиля

Развернуть

No cut tags
Page generated 2026-03-06 01:26 pm
Powered by Dreamwidth Studios