Обновить
373.54

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Мини заметка об оптимизации Arch Linux

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров21K

Всем привет! Наверно, многие пришли к линуксу, когда их старый компьютер или ноутбук не тянул, или плохо тянул операционные системы от Microsoft. Многие пробовали разные дистрибутивы - AntiX, MX Linux, Linux Lite, Lubuntu, Xubuntu, и многие другие. Но скорее всего, вы в итоге пришли к Arch Linux - по моему скромному мнению, одному из лучших дистрибутивов.

Читать далее

Поревьюим и порефакторим — Ассемблер для любопытных #2

Время на прочтение12 мин
Количество просмотров3.3K

Ещё статья про ассемблер для тех кто с ним не знаком. В предыдущей про 5 ассемблеров последний примерчик вызвал критику за "упрощенизм". А давайте посмотрим вместе как его улучшить и немножко нарастить - в качестве "продолжения знакомства".

Заодно полюбуемся на несовместимость Linux и BSD, а также на различие 32 и 64-битной версии обеих ОС - и подумаем как с этим бороться.

Автор не претендует на непогрешимость, поэтому приглашаем умудрённых коллег делиться идеями и подсказками в комментариях если что упущено.

cmpb $0, (%eax)

DPDK: 100 больших и маленьких багов

Уровень сложностиСредний
Время на прочтение34 мин
Количество просмотров2.6K

100 багов в DPDK


В своей обители в Р'лайхе мёртвый Ктулху спит в ожидании своего часа. А в C коде проекта DPDK спит множество ошибок, и тоже в ожидании своего часа. Давайте посмотрим, какие из них может выявить анализатор PVS-Studio.

Читать дальше →

Подмания: запускаем графические приложения в контейнерах. Часть 1

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров4.1K

Привет, Хабр!
Перед вами серия статей, в которых на подробно разобранных примерах показано, как удовлетворить некоторые базовые потребности пользователя ПК под управлением ОС Линукс, при помощи контейнеризации. В основном, это базовые потребности в безопасности, то есть, сохранении целостности системы и данных/идентичности пользователя, при повседневном использовании ПК. Надеюсь, что после прочтения статьи, вы спросите себя: "почему я не делал/а так всегда?". Если вы хотите получить быстрый старт в стиле использования ОС Линукс, за который вам не будет стыдно перед самим/ой собой, тогда прошу под кат.

Читать далее

Запросто собираем базу данных при помощи команд Linux

Время на прочтение6 мин
Количество просмотров14K

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

Читать далее

Поиск ошибок в юнит-тестах

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.1K

Вы должны были бороться с ошибками


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

Читать дальше →

Ретрошортсы: вспоминаем бумажный журнал с дисплеем и Linux на борту

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K

Приветствую! В сегодняшнем материале мы опробуем с вами новый формат статей, а именно — ‭«ретрошортсы‭». В этой рубрике будем вкратце вспоминать крутые гиковские штуки прошлых лет, и конкретно сегодня — тот самый журнал Vogue от декабря 2010 года с внешним дисплейчиком, на который можно было накатить Linux и получить мини-компьютер буквально за 200 рублей. Если вам интересно, что за девайс придумали в далеком 2009 году, причём здесь игровые консоли и как бородатые 30-летние хабровчане бегали по всей Москве в поисках ставшего дефицитным женского журнала, то добро пожаловать под кат!

Читать далее

Установка Linux на Android: новые горизонты для разработчиков и энтузиастов

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров15K

В мире мобильных технологий грядет очередная революция, которая может изменить подход к разработке и использованию приложений для Android. Google работает над интеграцией полноценной среды Linux в мобильную ОС. Это может не только упростить процесс создания софта, но и потенциально трансформировать мобильные устройства в полноценные рабочие станции.

Читать далее

Коротко о SLAB, SLOB и SLYB в Linux

Время на прочтение4 мин
Количество просмотров4K

Привет! Когда речь заходит о динамическом управлении памятью в Linux, мы имеем дело с несколькими разными подходами, каждый из которых имеет свои плюсы и минусы.

В этой статье разберём три аллокатора памяти ядра: SLAB, SLOB, а также SLUB.

Читать далее

Технология NTB: опыт применения и ее виртуализация QEMU

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров2.2K

В статье мы расскажем о системах хранения данных (СХД), в частности о применении технологии NTB поверх шины PCIe. Наша команда столкнулась с задачей виртуализации технологии NTB в QEMU, решение которой было сведено к созданию частичной виртуализации  IDT 89HPES24NT6AG2 PCI Express Switch, модификации модуля ядра Linux для поддержки нашей виртуализации и сборки воедино с помощью Yocto Project.

Читать далее

Операционная система реального времени Xenomai 4

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.8K

В данной статье подробно рассмотрим, как собрать ядро, поддерживающее EVL core, и библиотеку, реализующую пользовательский API для этого ядра. А также разберем некоторые аспекты реализации драйвера устройства и приложения под Xenomai 4.

Xenomai — Фреймворк для разработки приложений реального времени на базе ядра Linux. Проект Xenomai был запущен в 2001 году с целью эмуляции традиционной ОСРВ и облегчения ее переноса на GNU/Linux с сохранением гарантий работы в режиме реального времени. Изначально Xenomai был связан с RTAI (интерфейсом приложений реального времени), но на данный момент он независим.

Мы будем работать с Xenomai версии 4. Xenomai 4 имеет архитектуру с двумя ядрами. Первое ядро Linux: для задач, отличных от реального времени, и ядро Xenomai: для задач реального времени. Ядро Linux и ядро реального времени работают практически асинхронно, оба выполняют свой собственный набор задач, всегда отдавая последнему приоритет над первым. Для осуществления доступа к основным сервисам реального времени в проекте Xenomai предусмотрена библиотека С, известная как libevl.

Xenomai поддерживает множество архитектур, таких как PowerPC, Blackfin, ARM, x86, x86_64 др. В данной статье мы используем компьютер c архитектурой x86_64 (Процессор: 12th Gen Intel® Core™ i5-12400 × 12, память: 32,0 ГиБ), операционной системой Debian GNU/Linux 12 (bookworm).

Читать далее

Автоматизированное тестирование графических приложений и сценариев установки

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров1.8K

Одна из самых сложных задач в разработке и поддержке операционных систем – тестирование графических приложений и сценариев установки. Процесс усложняется постоянными обновлениями дистрибутива, увеличением количества пакетов, различными редакциями и вариантами установки ОС, а также множеством архитектур (x86_64, aarch64 и т.д.). 

Большинство компаний выбирает автоматизированное тестирование. Этот способ тестирования сложен в реализации, для запуска процесса на поток требуются различные специалисты – тестировщики, разработчики, devops-инженеры. Одна из главных проблем заключается в том, что тестирование обычно происходит с позиции разработчика: тестируются низкоуровневые функции, библиотеки и утилиты, различные API и т.п. Однако, пользователь взаимодействует не с этим. Для человека, который будет пользоваться операционной системой, важен интерфейс: что он видит на экране, как он с этим взаимодействует?. Почему бы в этом случае не тестировать ОС вручную? Это возможно, но такой подход затратен и может приводить к ошибкам, связанным с человеческим фактором.

В этой статье расскажем о том, как мы используем открытый проект openQA в тестировании российской операционной системы ОС “МСВСфера” 9 от вендора “Инферит”. 

Читать далее

Предлагаю сделать интернациональный форк ядра Linux

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров32K

Приветствую, всех!

Я думаю, многие не только на Хабре, читали ядреные новости о Linux и Open Source. Если кратенько, то из мейнтейнеров ядра Linux исключены русские программисты работающие в подсанкционных компаниях.

Читать далее

Ближайшие события

6 вариантов генерации конфигурационных файлов Shell-скриптами

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров8.9K


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

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров5.9K

И снова здравствуй, Хабр! Мы добрались до второй части повествования о параллельном запуске двух ОС на FPGA с процессорной подсистемой. 

В этой статье мы сначала определим минимально необходимые компоненты для запуска Embedded Linux. Затем осуществим сборку под ARM стандартными инструментами производителя и под Soft-CPU «вручную». И наконец, подготовим загрузочный носитель, чтобы подойти во всеоружии к запуску и верификации проекта, которые ожидают нас в заключительной части цикла.

Читать далее

Про qemu и протокол 802.1p

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.1K

Выпускаю первую ВМ. По сети не пингуется. Локально с гипервизора — всё ок. Лезу на консоль, запускаю что-то типа "tcpdump -nvvvi any" (по-умолчанию выставляется promisc-режим) — ping побежал. Выключаю tcpdump — опять глухо. При запуске с ключом "-p" (запретить неразборчивый режим) tcpdump вообще ничего не видит.

Прохождение квеста

AntiBlock 2.0

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров9.8K

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

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

Читать далее

Rust IPC Ping-Pong

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров2.4K

На работе наша команда недавно столкнулась с необходимостью в высокопроизводительном IPC в Rust. Поиск привел нас к содержательной статье от 3tilley «IPC in Rust — a Ping Pong Comparison», что стало превосходной отправной точкой в нашем исследовании.

Вдохновляясь этой работой, мы решили копнуть глубже и провести собственные замеры производительности, в особенности нас интересовал новый многообещающий фреймворк iceoryx2. Взяв за основу работу в исходной статье, мы будем использовать UNIX Domain Sockets (как stream, так и datagram), Memory Mapped Files и Shared Memory с использованиемiceoryx2 для сравнения производительности IPC между процессами на одной машине для различных размеров пэйлоада.

Читать далее

Погружаемся в initrd

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров10K

Приветствую! Меня зовут Валерий, я инженер операционных систем в секторе клиентской и мобильной ОС.

Сегодня хочу затронуть фундаментальные вопросы:
- процесс загрузки операционной системы в автоматизированное рабочее место (АРМ),
- распаковку начального образа оперативной памяти,
- подробный разбор initrd, что это такое и с чем его едят.

Этот материал поможет понять как природу загрузки ОС Astra Linux Special Edition в частности, так и загрузку GNU/Linux в целом.

Читать далее

Как написать D-Bus сервис, работающий на системной шине, на Rust

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.5K

Привет, Хабр! На связи Федотов Максим, ведущий разработчик в "Открытой Мобильной Платформе". В этой статье я хочу поделится нашим опытом создания D-Bus-сервиса на Rust, который работает на системной шине.

Если Вы только недавно начали изучать темы ОС GNU/Linux, Rust и D-Bus, но при этом Вам уже стало тесно в рамках простых базовых примеров и хочется зайти немного поглубже, то эта статья для Вас.

Читать далее

Вклад авторов