Linux 7.3 improves performance when running out of vRAM 🔥 Горячее 💬 Длинная дискуссия
Игра, превышающая доступный объём видеопамяти, не обречена на крах — главное ограничение — производительность, а не стабильность. При нехватке VRAM данные выгружаются в системную оперативку, а доступ к ней через PCIe‑4.0x16 (≈ 32 ГБ/с) ограничивает пропускную способность до ~1 ГБ за кадр, что делает невозможным удержание 30 fps, если требуется больше.
Ключевой нюанс — не все обращения одинаковы: небольшие буферы команд и часто используемые данные могут оставаться в CPU‑памяти без катастрофических потерь, особенно если они умеют кэшироваться. Поэтому оптимизация доступа и более тесное взаимодействие драйвера с приложением позволяют смягчить удар по FPS, делая «переполнение» VRAM менее болезненным.
Комментарии (197)
Обсуждение смещает фокус с производительности на стабильность при нехватке RAM/VRAM. Пользователи отмечают критические различия в работе драйверов NVIDIA и AMD под Wayland: старые NVIDIA (750 Ti) вызывают краши композиторов при исчерпании VRAM, тогда как AMD (RX 480) бесшовно выгружает в системную память. Проблемы с утечками и стабильностью под Wayland/Vulkan сохраняются и на новых NVIDIA (2080). Для предотвращения зависаний рекомендуют systemd-oomd или Magic SysRq 'f'. Спор о том, какая ОС лучше справляется с нехваткой памяти: @krisknez утверждает, что Windows не фризит, но @alightsoul и @qwertox опровергают — Windows также зависает при активном swap или ресурсоёмких браузерах (Chromium); @adrian_b считает, что отказ от swap в Linux решает проблему. Поведение macOS неоднозначно: @inventor7777 отмечает сохранение отзывчивости (Ctrl+C работает) на M4 Max даже с артефактами, @LoganDark — сильную деградацию и необходимость перезагрузки после загрузки LLM. Улучшения Linux 7.3 менее значимы для LLM inference, чем для игр — в играх паттерны использования VRAM менее предсказуемы и требуют сложного управления памятью. Рекомендация: выделять 32 ГБ swap на быстрых SSD для комфортной работы с ВМ и тяжёлыми процессами. В Ubuntu 24 OOM-killer по умолчанию часто убивает Firefox, даже если память потребляют другие процессы — вызывает раздражение.
GhostLock, a stack-UAF that has existed in all Linux distributions for 15 years 🔥 Горячее
Уязвимость GhostLock (CVE‑2026‑43499) позволяет любому локальному пользователю без привилегий получить контроль над ядром Linux, который живёт в каждом из основных дистрибутивов более 15 лет. По данным исследователей, эксплуатация стабильна в 97 % случаев и уже привела к выплате $92 337 в рамках kernelCTF. Уязвимость появилась в версии 2.6.39 при упрощении PI‑алгоритма rtmutex и оставалась непатченной до версии 7.1; её активация требует лишь включения CONFIG_FUTEX_PI, без необходимости привилегий или специальных настроек. Через простую последовательность системных вызовов можно вытащить указатель на стек ядра, записать его в произвольный адрес и захватить таблицу функций, что в итоге даёт полное повышение прав и побег из контейнеров.
Техническая основа – ошибка в функции remove_waiter() в kernel/locking/rtmutex.c, где при ошибке прокси‑переадресации стека задачи очищается не тот указатель. Это приводит к использованию после освобождения (UAF) стека, который можно инициировать через системный вызов FUTEX_WAIT_REQUEUE_PI. В результате получаем dangling‑pointer к стеку, возможность записать произвольный адрес и перехватить управление, что в конечном итоге приводит к повышению до root. Эта уязвимость позволяет получить контроль над ядром без специальных прав, что делает её критически важной для всех дистрибутивов.
Комментарии (147)
- Обсуждается уязвимость, позволяющая получить root через JavaScript в Firefox на Android, используя Chromium‑based браузер без JS.
- Уязвимость связана с устаревшими функциями ядра (GhostLock) и может привести к привилегированному доступу к системным ресурсам.
- Участники делятся мнениями о влиянии уязвимости на безопасность Android, необходимости обновлений и роли OpenBSD, SELinux и виртуализации.
- Есть споры о том, насколько такие эксплойты делают инфосекурность менее надёжной и требуют ли новых подходов к защите.
The Linux Boot Process: From Power Button to Kernel 🔥 Горячее
Процесс загрузки Linux начинается с нажатия кнопки питания, после чего процессор переходит в реальный режим (real mode) и выполняет инструкцию по адресу сброса 0xFFFFFFF0. Это приводит к запуску микропрограммы на материнской плате (BIOS или UEFI), которая выполняет самотестирование (POST) и ищет загрузочное устройство. При обнаружении загрузочного сектора (маркеры 0x55 и 0xAA), BIOS копирует его в память по адресу 0x7C00, после чего управление передается загрузчику GRUB. GRUB считывает свою конфигурацию, загружает ядро Linux в память и передает управление программе настройки, которая создает предсказуемую рабочую среду: выравнивает сегментные регистры, создает стек, очищает область BSS и запрашивает информацию о доступной памяти у микропрограммы. В конце концов, вызывается первая функция C с именем main, что标志着 переход к следующей фазе загрузки.
Комментарии (82)
- Обсуждение показало, что статья о процессе загрузки Linux охватывает только самые базовые концепции, что вызвало критику за упрощение и упущение важных деталей, таких как взаимодействие с UEFI, инициализация видео и роль загрузчика.
- Участники подчеркнули, что статья не соответствует уровню подготовки аудитории Hacker News, и что она не раскрывает важные темы, такие как влияние UEFI на процесс загрузки.
- Также было отмечено, что статья не затрагивает такие важные темы, как влияние UEFI на процесс загрузки и не упоминает о таких важных компонентах, как initrd и драйверы.
- Некоторые комментаторы выразили сожаление по поводу того, что статья не затрагивает такие темы, как влияние systemd на процесс загрузки и не упоминает о таких важных компонентах, как initrd и драйверы.
- Также было отмечено, что статья не упоминает о таких важных компонентах, как initrd и драйверы, и не раскрывает влияние systemd на процесс загрузки.
Upcoming Rust language features for kernel development 🔥 Горячее 💬 Длинная дискуссия
Rust продолжает развиваться, и новые языковые функции, такие как проекции полей, инициализация на месте и произвольные типы self, становятся важными для разработки ядра Linux. Эти функции упрощают работу с указателями, позволяют избежать двойной инициализации и делают код более выразительным. Рядом с этими изменениями, Rust for Linux активно работает над стабилизацией существующих функций и разработкой новых, чтобы код ядра был не только безопасным, но и элегантным. Разработчики подчеркивают, что сообщество, включая участников Rust for Linux, играет ключевую роль в определении приоритетов разработки языка.
Комментарии (202)
- Обсуждение охватывает вопросы от безопасного доступа к полям структур до сложных вопросов владения памятью в Rust, а также влияние этих обсуждений на разработку ядра Linux и взаимодействие с другими языками программирования.
- Участники обсуждали, что сложность Rust может быть препятствием для новых разработчиков, но также отметили, что сложность C++ может быть еще более запутанной.
- Обсуждались вопросы о том, как влияет на разработку ядра Linux внедрение Rust, и были высказаны мнения, что это может быть экспериментом, который следует проводить в другом месте.
- Также обсуждались вопросы о том, какие функции Rust могут быть полезны для разработки ядра Linux и какие функции Rust могут быть полезны для разработки ядра Linux.
- В конце обсуждение перешло к вопросу о том, какие функции Rust могут быть полезны для разработки ядра Linux и какие функции Rust могут быть полезны для разработки ядра Linux.
Using Claude Code to modernize a 25-year-old kernel driver 🔥 Горячее 💬 Длинная дискуссия
- Увлечение — восстановление данных с кассет QIC-80 90-х гг.
- Драйвер
ftape(Linux 2.4) последний раз собирался ~2000 г.; с тех пор приходится держать CentOS 3.5. - Привод подключается к контроллеру гибкого диска: дёшево, но 500 Кбит/с и куча «магии» портов/IRQ.
- Под DOS/Windows есть проприетарные утилиты, но только
ftapeдаёт «сырой» дамп, независимо от формата ПО, которое писало кассету.
Цель: переписать драйвер под современное ядро без боли.
Инструмент — Claude Code (Claude 3.5 Sonnet) в режиме «актов» (акт = автоматический цикл «предложи-отладь-протестируй»).
Ход работы
- Запустил
claudeв каталоге исходниковftape-4.04(1999 г.). - Первый акт: «сделай модуль для ядра 6.10». Claude выдал:
- заменил
cli/stiнаspinlock_t; sleep_on→wait_event;register_blkdev→blk_mq;kmalloc→kmalloc_array;- добавил
MODULE_LICENSE/AUTHOR/DESCRIPTION.
Собралось с десятком предупреждений.
- заменил
- Акт 2: «убери варнинги». Убрал устаревшие
ioctl, обернулprintkвpr_*, добавилfallthrough;. - Акт 3: «проверь на x86_64». Исправил
long↔intв структурах, выровнялu8/u16через__packed. - Акт 4: «протестируй на железе». Создал QEMU-образ с контроллером FDC, подключил образ кассеты.
- первый
insmod— kernel oops; Claude добавилBUG_ON(!request_region)и проверку IRQ. - второй —
ftapeвидит привод, но «unknown format»; Claude вставил распознаваниеQIC-80поID_CRC. - третий — успешный дамп 120 Мб за 40 мин.
- первый
- Акт 5: «очисти и оформи». Удалил весь
#ifdef LINUX_2_0, добавилREADME.md,Kconfig,Makefileдляin-treeсборки.
Результат
- 2 500 строк C → 1 100; 45 файлов → 12; минус 4 архаичных под-драйвера.
- Собирается как
out-of-tree(6.6–6.12) и какin-tree(патч 30 Кб). - Скорость 470 Кбит/с — предел FDC, но стабильно.
- Поддержаны только QIC-80; QIC-40/3010/3020 выкинуты (никто не просил).
Вывод
Claude Code способен переварить древний драйвер за вечер: сам генерит патчи, тестирует в QEMU и оставляет человеку только катать ленту.
Комментарии (275)
- Claude Code и другие LLM-инструменты превращаются в «силовой множитель» для разработчиков: ускоряют работу в знакомых фреймворках и позволяют быстро осваивать новые.
- Главное — самому понимать, что делаешь: чёткие промты, ключевые слова предметной области и умение сверять результат критически снижают количество багов.
- Примеры успеха: порт драйвера ftape с Linux 2.4 на 6.8, апгрейд Pydantic V1→V2, inline-ASM под Apple, модернизация 15-летнего PHP-кода — всё за часы вместо недель.
- Самые ценные фичи: долгие процессы в терминале, автоматическая проверка своего кода, быстрое написание тестов и бенчмарков «на заказ».
- Безопасность: при работе с sudo-операциями или ядром итерации лучше вести вручную, чтобы LLM не сломала систему.
The future of 32-bit support in the kernel 💬 Длинная дискуссия
32-битные системы устарели, но ядро всё ещё их поддерживает из-за старого «железа» и ПО.
Arnd Bergmann: новые продукты уже 20 лет выходят на 64-битных платформах; встраиваемые устройства постепенно переходят с armv7 (32-бит) на armv8 (64-бит).
- Arm: 90 % встраиваемых систем; лишь три старые архитектуры до-armv7 ещё можно купить, но ядро держит десяток выведенных из производства. Поддержку можно выбрасывать «по половинам», когда исчезнут пользователи.
- Другие 32-битные архитектуры (arc, microblaze, nios2, openrisc, rv32, sparc/leon, xtensa) вытесняются RISC-V.
- nommu (armv7-m, m68k, superh, xtensa) никто не выпускает, их держат лишь ради существующих систем.
Для несовместимых 32-битных приложений — запуск 32-битного userspace на 64-битном ядре: экономит память, не требует 32-битного ядра.
Боль разработчиков:
- Высокая память (highmem) усложняет mm-подсистему; нужна, когда физической памяти > ~800 МБ.
- Ядро пока держит 32-битные машины до 16 ГБ, но таких почти нет; 4 ГБ встречаются (Chromebook), 2 ГБ — чаще, но «глупо»: память дороже CPU.
Комментарии (256)
- Участники обеспокоены удалением поддержки nommu/32-бит: это уменьшает свободу, лишает возможности запускать Linux на старом или простом железе и делает ядро похожим на «дорожную карту» Apple/Windows.
- Некоторые предлагают форк «Linux Legacy» или переход на NetBSD/OpenBSD, которые по-прежнему поддерживают старые архитектуры.
- Для встраиваемых устройств без MMU считают более подходящими Zephyr, NuttX или Contiki, а не полноценный Linux.
- Поддержка big-endian почти мертва, но сохранится, пока IBM вкладывается в s390x.
- Старые ядра и LTS-дистрибутивы ещё десятилетие обеспечат безопасность и работу выброшенного железа.
The issue of anti-cheat on Linux (2024) 💬 Длинная дискуссия
Почему античиты не работают в Linux
Доля геймеров на Linux растёт благодаря Steam Deck и надоедливым «фичам» Windows. Однако почти все сетевые хиты с античитом не запускаются или не подключаются к серверам: PUBG, Call of Duty, Rust, R6 Siege, EA FC 24, Destiny 2, Valorant, League of Legends и даже FACEIT/ESEA для CS2.
Как работают читы и античиты
Чит либо внешний процесс, читающий/писующий память игры, либо внедрённая DLL. ОС не даёт процессам трогать чужую память благодаря виртуальному адресному пространству: каждая программа «думает», что владеет всей ОЗУ, а процессор и ядро переводят виртуальные адреса в реальные.
Античиты борются с этим двумя путями:
- Пользовательский режим – сканируют память, читают файлы, ловят подозрительные потоки. Легко обойти, если у чита есть root-доступ.
- Ядро (kernel) – драйвер внутри ядра Windows имеет полный доступ к железу и памяти, может скрывать свои структуры и блокировать вмешательство. Vanguard, EAC, BattlEye и пр. работают именно так.
Почему это невозможно в Linux
- Linux — открытая система. Любой может собрать своё ядро, поставить патч, изменить ABI.
- Античиту нужен стабильный, неизменяемый и закрытый интерфейс ядра. В Linux этого нет: модуль, собранный под 6.9, не загрузится под 6.10, а пользователь может вообще отключить модульные загрузки.
- Даже если разработчик выпустит проприетарный модуль, сообщество его не примет: безопасность, GPL-лицензия, репутационные риски.
- Попытки «запечатать» Linux (secure boot + immutable образ) противоречат свободе системы и всё равно не гарантируют, что пользователь не пересоберёт ядро без проверок.
Что можно сделать
- Играть в поддерживаемые игры: Apex, Fortnite, CS2, Elden Ring и др. уже работают через Proton.
- Двойная загрузка или VFIO-виртуалка – запуск Windows в виртуальной машине с проброской GPU (сложно, но работает).
- Облачный гейминг – GeForce NOW, Xbox Cloud и т.д.
- Ждать – пока разработчики не придумают античит, который не требует закрытого ядра (маловероятно).
Вывод: пока Linux остаётся открытой системой, современные kernel-level античиты там жить не смогут.
Комментарии (226)
- Критики считают, что анти-чит на уровне ядра — это по сути rootkit, который подрывает безопасность и конфиденциальность.
- Многие предлагают альтернативы: доверительные сообщества, выделенные игровые машины, серверные проверки или облачные платформы.
- Подчеркивается, что Linux по дизайну даёт пользователю полный контроль, что делает невозможным эффективный, но инвазивный анти-чит.
- Некоторые игроки готовы пожертвовать безопасностью ради «честной» игры, но большинство участников обсуждения считают такой обмен неприемлемым.
AnduinOS 💬 Длинная дискуссия
AnduinOS — лёгкий, приватный, бесплатный дистрибутив на базе Ubuntu.
ISO 2 ГБ, GNOME-оболочка, Flatpak-приложения, никакого слежения.
Совместим с пакетами Ubuntu, подходит для работы, игр, сервера и обучения.
Версии
- LTS 1.1 (Noble Numbat) — до апреля 2029, GNOME 46, ядро 6.11, стабильность.
- Standard 1.3 (Plucky Puffin) — до января 2026, GNOME 48, ядро 6.14, новейшие функции.
Ссылки
«Переход с Windows прошёл безболезненно, система лёгкая и красивая» — пользователи.
Комментарии (179)
- Многие спутали название «AnduinOS» с «ArduinoOS».
- Это одиночный проект китайского инженера Microsoft: ремикс Ubuntu с GNOME, стилизованным под Windows 11.
- Критика: «distro-дистро-дистро» не заслуживает звания OS, не ясен уникальный посыл по сравнению с Mint/Ubuntu.
- Плюсы: простая установка Flatpak, может помочь консервативным пользователям перейти с Windows.
- Минусы: нет ARM-сборки, в скриншотах замечен сомнительный WPS Office, отсутствует описание отличий от Ubuntu.