Сообщество - GNU/Linux

GNU/Linux

1 172 поста 15 637 подписчиков

Популярные теги в сообществе:

1207

В ядре Linux найдена забытая заплата, влияющая на производительность CPU AMD

В ядре Linux найдена забытая заплата, влияющая на производительность CPU AMD

В ядро Linux 6.0, релиз которого ожидается в следующий понедельник, принято изменение, решающее проблемы с производительностью систем на процессорах AMD Zen. Источником падения производительности оказался код, добавленный 20 лет назад для обхода аппаратной проблемы в некоторых чипсетах. Аппаратная проблема давно устранена и не проявляется в актуальных чипсетах, но старый обход проблемы был забыт и стал источником снижения производительности на системах на базе современных CPU AMD. Новые системы с CPU Intel старый обходной манёвр не затрагивает, так как доступ к ACPI в них осуществляется при помощи отдельного драйвера intel_idle, а не общего драйвера processor_idle.


Обходной манёвр был добавлен в ядро в марте 2002 года для блокирования проявления ошибки в чипсетах, связанной с отсутствием должной установки состояние простоя (idle) из-за задержки обработки сигнала STPCLK#. Для обхода проблемы в реализации ACPI добавлялась дополнительная инструкция WAIT, замедляющая процессор чтобы чипсет успевал перейти в состояние простоя. При проведении профилирования с использованием инструкций IBS (Instruction-Based Sampling) на процессорах AMD Zen3 было выявлено, что процессор проводит значительное время, выполняя заглушку, которая приводит к неверной трактовке состояния нагрузки на процессор и выставлению более глубоких режимов сна (C-State) обработчиком cpuidle.


Подобное поведение отражается в снижении производительности при нагрузках, в которых часто чередуются состояния простоя (idle) и активности (busy). Например, при использовании патча, отключающего обходной манёвр, средние показатели теста tbench увеличиваются с 32191 MB/s до 33805 MB/s.

Показать полностью
74

Выпуск Wine 7.18 и Wine staging 7.18

Выпуск Wine 7.18 и Wine staging 7.18

Состоялся экспериментальный выпуск открытой реализации WinAPI - Wine 7.18. С момента выпуска версии 7.17 было закрыто 20 отчётов об ошибках и внесено 252 изменений.


Наиболее важные изменения:

# Таблицы символов обновлены до спецификации Unicode 15.0.0.

# В драйвере macOS реализована поддержка WoW64, прослойки для запуска 32-разрядных программ в 64-разрядной Windows.

# Устранены проблемы с асинхронным чтением в реализации поддержки GStreamer.

# Закрыты отчёты об ошибках, связанные с работой игр: Hotel Giant 2, Gas Guzzlers Combat Carnage, Cube World, Resident Evil 7.

# Закрыты отчёты об ошибках, связанные с работой приложений: Visual C++ 2015-2019, FileMaker Pro 12-19, MyDiff, Clip Studio Paint, Intel ACAT, Adobe FrameMaker 8, Bloomberg Terminal, Dosbox, KeePassXC, Framemaker.

Дополнительно можно упомянуть формирование выпуска проекта Wine Staging 7.18, в рамках которого формируются расширенные сборки Wine, включающие не полностью готовые или рискованные патчи, пока непригодные для принятия в основную ветку Wine. По сравнению с Wine в Wine Staging предоставляется 514 дополнительных патча.


В новом выпуске осуществлена синхронизация с кодовой базой Wine 7.18. В основной состав Wine переведены четыре патча: один для ws2_32 (возврат корректного значения для WSAIoctl) и три для dwrite (тест обработки несуществующего шрифта в IDWriteTextFormat, использование MapCharacters для невидимых символов ). Обновлены патчи server-unix_name и ntdll-Junction_Points.

Показать полностью 1
67

Началось платное распространение LibreOffice через Mac App Store

Началось платное распространение LibreOffice через Mac App Store

Организация The Document Foundation объявила о начале распространения через каталог Mac App Store платных сборок свободного офисного пакета LibreOffice для платформы macOS. Стоимость загрузки LibreOffice из Mac App Store составляет 8.99 евро, в то время как сборки для macOS также можно загрузить с официального сайта проекта бесплатно.


Утверждается, что собранные от платной поставки средства будут направлены на поддержку разработки LibreOffice. Размещённые в Mac App Store сборки сформированы компанией Collabora и отличаются от сборок с сайта LibreOffice отсутствием Java в поставке, так как Apple запрещает размещение внешних зависимостей. Из-за отсутствия Java функциональность LibreOffice Base в платных сборках ограничена

524

В Chrome выявлена утечка паролей из полей с предпросмотром скрытого ввода

В Chrome выявлена утечка паролей из полей с предпросмотром скрытого ввода

В браузере Chrome выявлена проблема с отправкой конфиденциальных данных на серверы Google при включении расширенного режима проверки правописания, подразумевающего выполнение проверки с использованием внешнего сервиса. Проблема также проявляется в браузере Edge при использовании дополнения Microsoft Editor.


Оказалось, что текст для проверки передаётся также и из форм ввода, содержащих конфиденциальные данные, в том числе из полей, содержащих имена пользователей, адреса, email, паспортные данные и даже пароли, в случае если поля ввода паролей не ограничены штатным тегом "<input type=password>". Например, проблема приводит к отправке на сервер www.googleapis.com паролей в случае включение опции для показа введённого пароля, реализованной в сервисах Google Cloud (Secret Manager), AWS (Secrets Manager), Facebook, Office 365, Alibaba Cloud и LastPass. Из 30 протестированных известных сайтов, включая социальные сети, банки, облачные платформы и интернет-магазины, 29 оказались подвержены утечке.


В AWS и LastPass проблема уже оперативно решена через добавление параметра "spellcheck=false" в тег "input". Для блокирования отправки данных на стороне пользователя следует отключить в настройках расширенную проверку (секция "Languages/Spell check/Enhanced spell check" или "Языки/Проверка правописания/Расширенная проверка", по умолчанию расширенная проверка отключена).

Показать полностью 1
20

Нативный запуск игр на движке Ren'Py в Linux

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

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


Ren'Py - это открытый игровой движок, ориентированный на создания ролевых игр и визуальных новелл с помощью языка программирования Python. Пользуется широкой популярностью среди инди-разработчиков и насчитывает десятки тысяч игр, среди которых такие известные проекты, как: Бесконечное лето, Врата Штейна, Doki Doki Literature Club и многие другие.

Более подробно разбирать настолько простой игровой движок не имеет большого смысла. Так что не будем тянуть кота за хвост и перейдём уже к запуску игр.


Система автора

Сразу уточню, что вне зависимости от того, какой дистрибутив Linux вы предпочитаете использовать на своём компьютере, все выполняемые действия, кроме команд терминала, будут полностью идентичны.

Запуск игр из консолиДля демонстрации работоспособности была выбрана случайная бесплатная визуальная новелла Stillwater.

1. Удостоверимся, что наша выбранная визуальная новелла построена именно на игровом движке Ren'Py. Для этого заходим в папку с установленной игрой и проверяем наличие там подпапки renpy. Если она есть, то переходим к следующему шагу.

В папке с игрой, помимо файлов расширения .exe для запуска игры под Windows, также присутствует и стандартный скрипт .sh для запуска в Linux. Однако не спешите его запускать, потому как c ним могут часто возникать различные проблемы, связанные с правами доступа или же его попросту может и не быть.

2. Для запуска игры переходим в папку с установленной игрой и в подпапке /lib/linux-x86_64 находим основной исполняемый файл игры. Обычно он подписан как и сама игра.

Вводим в терминале команды:

cd папка_с_вашей_игрой/lib/linux-x86_64 # Перейти в папку с игрой

./название_вашей_игры  # Запустить игру


Такой немного муторный, но изощренный способ, позволяет выполнить нативный запуск любой игры созданный на игровом движка Ren'Py.

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


Способ для ленивых1. Выполним установку файлового менеджера: sudo pacman -S nautilus.

2. Переходим с помощью нового файлового менеджера в подпапку /lib/linux-x86_64 и через правый клик>свойства назначаем файл исполняемым.

3. Пробуем выполнить запуск.

Всё работает!


Заключение

Вот, собственно, и всё! Без установки каких-либо прослоек совместимости, а лишь зная особенности работы игрового движка Ren'Py, мы всего за пару минут сумели превратить наш Linux в настоящую игровую станцию с доступом к множеству прекрасных игровых проектов. Уважайте свободу, используйте Linux и ни в коем случае не предавайте себя.


Если вам понравился материал, то, пожалуйста, посетите блог автора ---> ТЫК.

Видеоверсия

ОРИГИНАЛ

Показать полностью 10 2
53

Собираем свой дистрибутив Linux на флешке

Всем привет! Думаю, многие из тех, кто хоть как-то связан с IT, знают про популярные live-дистрибутивы, которые можно носить с собой в кармане для решения различных задач (восстановление системы, разметка диска, резервное копирование и многое другое), такие как Slax, Puppy Linux, Porteus или отечественные проекты PuppyRus, MagOS. Сегодня мы с вами соберём свой дистрибутив на флешке на базе Debian.
Что нам понадобится? Дистрибутив на базе Debian (оптимальным выбором будут последние версии Debian, Ubuntu или Mint), либо любой дистрибутив с установленным Docker и немного времени (все операции, описанные в данной статье, включая сборку, занимают не более получаса при наличии достаточно быстрого канала в Internet).
Первые шаги
Собирать мы будем скриптами MiniOS Live, так как они имеют относительно низкий порог вхождения и позволяют собрать вариант с любым набором пакетов на базе Debian 9-Sid.
git clone --depth=1 https://github.com/minios-linux/minios-live.git
Изначально, скрипты настроены на сборку варианта MiniOS Standard на базе Debian 11 с архитектурой amd64. Собрать этот вариант можно достаточно просто
cd minios-live
./install -

либо для Docker
cd minios-live/docker
./01-runme.sh
docker run -it --name mlc --privileged --device-cgroup-rule='b 7:* rmw' -v /dev:/dev -v /home/username/build:/build local/mlc /build/minios-live/install -

где /home/username/build - папка, содержащая minios-live.
Вот что у нас получится в итоге:

Собираем свой дистрибутив Linux на флешке

Основной файл конфигурации сборки MiniOS - minios-live/linux-live/buildconfig, для большинства переменных указано их назначение и значения, которые они могут принимать. В нём можно выбрать готовые наборы пакетов и настроек, архитектуру, изменить стандартный initrd и многое другое.
Модификация базовой системы
Сборка базовой системы 00-core производится из скриптов, расположеных в minios-live/linux-live/basesystem/00-core, там вы можете найти списки пакетов для каждого варианта сборки и изменить их (часть пакетов устанавливается скриптом install, так как в разных дистрибутивах один и тот же пакет может иметь разные названия).Там же расположена папка rootcopy-install, данные из неё автоматически копируются в систему перед началом установки. Для копирования данных в систему после установки создайте папку rootcopy-postinstall и разместите данные в ней. В самом конце выполняется скрипт postinstall.
Модификация/создание модулей
Скрипты, из которых собираются модули, располагаются в minios-live/linux-live/scripts, менять наименования модулей 00-09 нельзя. Наименования скриптов сборки, списков пакетов и папок те же, что и для базовой системы, но теперь к ним добавляется скрипт build. В нём указываются операции сборки ПО из исходных кодов, данный скрипт выполняется после install. При этом, данные, полученные после выполнения install, сохраняются в папке squashfs-root. После сборки ПО скомпилированные файлы необходимо скопировать в эту папку, в конце скрипта необходимо добавить эти строки
if [ $COMP_TYPE = "zstd" ]; then
    time mksquashfs /squashfs-root /$MODULE.$BEXT -comp $COMP_TYPE -Xcompression-level 19 -b 1024K -always-use-fragments -noappend >>$OUTPUT 2>&1
else
    time mksquashfs /squashfs-root /$MODULE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend >>$OUTPUT 2>&1
fi

Пакеты, установленые скриптом build не сохраняются в системе. Пример такого скрипта можно посмотреть здесь minios-live/linux-live/scripts/04-slax-desktop. Если вам необходимо установить модуль DKMS так, чтобы в системе не осталось пакетов, необходимых для сборки (заголовки ядра и прочие), создайте в папке скриптов модуля файл is_dkms_build, тогда в модуль после работы скрипта build будут скопированы только модули ядра. Пример: minios-live/linux-live/scripts/01-kernel. Для создания простого модуля, где необходима только установка пакетов, используйте в качестве примера скрипты модуля 10-galculator:
cd minios-live/linux-live/scripts
cp -r 10-galculator 10-openshot
замените в packages.list galculator на openshot. В packages.list можно в столбик указать любые пакеты из репозитория Debian, которые вы хотите иметь в модуле. В качестве имени модуля будет использоваться имя первого пакета в списке.
Сборка системы с включением своих модулей
Сборка системы с модулями осуществляется из папок в minios-live/linux-live/modules, где расположены ссылки на папки скриптов, из которых собираются модули. В minios-live/linux-live/modules есть скрипт create_symlinks.sh, с помощью которого можно создать структуру модулей. Например, мы хотим собрать MiniOS с Chromium вместо Firefox, для этого необходимо отредактировать create_symlinks.sh.
#!/bin/bash
if [ ! -d $1 ]; then
mkdir -p $1
fi

for file in $1/00-minios \
$1/01-kernel \
$1/02-firmware \
$1/03-xorg \
$1/04-xfce-desktop \
$1/05-xfce-apps \
$1/10-chromium; do
if [ -L $file ]; then
rm $file
fi
ln -s ../../scripts/$(basename $file) $file
done

Затем запустите скрипт:
create_symlinks.sh xfce-chromium
измените DESKTOP_ENVIRONMENT в buildconfig на xfce-chromium. Обратите внимание, сохранять "xfce", если вы используете XFCE, в наименовании варианта системы и в начале переменой DESKTOP_ENVIRONMENT обязательно.
Сборка модулей для собранной системы
Допустим, вы только что собрали собрали систему и вам необходимо внести изменения модуль. В папке minios-live/build/bullseye-standard-amd64/image/minios (для других вариантов папка может называться иначе) удалите модуль и все модули, которые по алфавиту располагаются после него, затем запустите сборку:
./install build_modules -
Для версии Frugal для модулей с порядковыми номерами 10 и выше удалять модули, располагающиеся по алфавиту после, не надо.

Надеюсь, у вас получится собрать систему под себя достаточно быстро. Если есть вопросы по сборке - пишите комментарии, буду рад помочь. А на сегодня всё. Надеюсь, этот первый пост не станет последним)

Показать полностью 1
76

Выпуск раскладки клавиатуры Ручей 2.0 с исправлениями от сообщества

Опубликована версия 2.0 инженерной раскладки клавиатуры Ручей. Раскладка позволяет без переключения на латиницу вводить спецсимволы, такие как "{}[]<>", используя правую клавишу Alt, что упрощает набор технических текстов с использованием разметки Markdown, Yaml и Wiki, а также кода программ на русском языке. Также доступен и английский вариант раскладки имеющий одинаковый с русским вариантом расположение спецсимволов. Наработки проекта распространяются как общественное достояние.


Изменения в новой версии:


# Раскладки теперь полностью базируются на русском варианте;

# На своё место вернулась двойная кавычка и гравис;

# Изменено расположение апострофа и параграфа;

# Убрана идентификация раскладок как кириллицы и латиницы;

# Для Linux раскладки теперь не относятся к категории "exotic" и размещены в base.xml;

# Для GNOME исправлена идентификация раскладок как "ru" и "en".


В подготовке новой версии большое участие приняло сообщество opennet.ru и linux.org.ru. С версии 2.0 все изменения заморожены, символы своё положение менять не будут. Для Linux раскладки будут штатно доступны в выпуске пакета xkeyboard-config 2.37. Также в выпуск вошли варианты раскладки для Windows и macOS.


Макет русского варианта раскладки:

Макет английского варианта раскладки:

Показать полностью 2
93

Разработано устройство для определения скрытого включения микрофона

Группа исследователей из Национального университета Сингапура и Университета Ёнсе (Корея) разработала метод для выявления скрытого включения микрофона на ноутбуке. Для демонстрации работы метода на базе платы Raspberry Pi 4, усилителя и программируемого приёмопередатчика (SDR) собран прототип, получивший название TickTock, который позволяет выявлять активацию микрофона вредоносным или шпионским ПО для прослушивания за пользователем. Техника пассивного определения включения микрофона актуальна так как, если в случае с web-камерой пользователь может блокировать запись просто заклеив камеру, то встроенный микрофон отключить проблематично и не понятно, когда он активен, а когда нет.

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

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


В итоге, исследователям удалось адаптировать своё устройство для надёжного определения включения микрофона на 27 из 30 протестированных моделях ноутбуков, производства Lenovo, Fujitsu, Toshiba, Samsung, HP, Asus и Dell. Три устройства, с которыми метод не сработал, оказались модели Apple MacBook 2014, 2017 и 2019 (предполагается, что утечку сигнала не удалось уловить из-за экранирующего алюминиевого корпуса и использования коротких гибких кабелей).


Исследователи также попытались адаптировать метод для других классов устройств, таких как смартфоны, планшеты, умные колонки и USB-камеры, но эффективность оказались заметно ниже - из 40 протестированных устройств определение было налажено только на 21, что объясняется использованием аналоговых микрофонов вместо цифровых, других схем подключения и более коротких проводников, излучающих электромагнитный сигнал.

Показать полностью 2
Отличная работа, все прочитано!