Обновить
305.32

Linux *

Пишем под *nix

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

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

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

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

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

Читать далее

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

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

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

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

AntiBlock 2.0

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

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

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

Читать далее

Rust IPC Ping-Pong

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

На работе наша команда недавно столкнулась с необходимостью в высокопроизводительном 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 мин
Охват и читатели6.5K

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

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

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

Читать далее

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

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

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

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

Читать далее

Как написать свой первый модуль ядра Linux

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели13K

Linux Kernel — это, пожалуй, один из самых распространённых (и, возможно, до сих пор недооценённых) программных продуктов в мире. Он является основой всех дистрибутивов Linux (что очевидно), но на этом его роль не заканчивается. Ядро также работает на множестве встроенных устройств практически повсюду. У вас есть микроволновка? Скорее всего, она работает на ядре Linux. Посудомоечная машина? Тоже. Если у вас достаточно средств на автомобиль Tesla, вы даже сможете найти несколько багов, исправить их и отправить патч в код Model S или Model X на GitHub. А что насчёт схем, которые не позволяют Международной космической станции сойти с орбиты и врезаться в Землю? Конечно, и там тоже Linux. Ядро легковесное — значит, отлично работает даже в условиях невесомости.

В этой статье напишем свой первый модуль ядра под Linux

Читать далее

Что делать, если драйвера в смартфоне нет. Продолжаем эксперименты с «Авророй»

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

Привет, читатель!

Ранее я купил телефон на ОС «Аврора» и стал участником программы бета-тестирования. Это дало возможность разрабатывать ПО для мобильных устройств с применением Qt. Но внезапно я столкнулся с проблемой: к смартфону нельзя подключиться через старый-добрый USB. Как оказалось, на девайсе «из коробки» нет нужных драйверов. Если вам интересно, как я решил эту проблему и подключился через телефон, прошу под кат!
Читать дальше →

Настройка VSCode для разработки в Tauri

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

Как настроить VSCode для удобной работы с проектом Tauri. Установим пару плагинов и настроим launch.json и tasks.json.

Настроить

Использование systemd со Swift приложением

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели806

Все приложения на сервере необходимо запускать под управлением какого-либо демона. Возможно, вы уже используете supervisord или systemd.

Эта статья покажет, как упростить вашу жизнь при помощи systemd, интегрировав его напрямую в ваше приложение через SPM-плагин.

Для начала давайте посмотрим, как мы обычно работаем с systemd и что нужно проделать для его настройки на работу с нашим приложением.

Читать далее

Риски перехода на 64-битный time_t

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

Один из разделов статьи Overview of cross-architecture portability problems я посвятил проблемам, возникающим из-за использования 32-битного типа time_t. Это архитектурное решение, до сих пор влияющее на использующие glibc системы с Gentoo, приведут к тому, что у 32-битных приложений в 2038 году начнут возникать ужасные сбои: они будут получать ошибку -1 вместо текущего времени и не смогут выполнять stat() файлов. Одним словом, возникнет полный хаос.

Считается, что решением будет переход на 64-битный тип time_t. Musl уже перешёл на него, а glibc поддерживает его как опцию. Многие другие дистрибутивы, например, Debian, совершили этот переход. К сожалению, дистрибутивам на основе исходников, например, Gentoo, сделать это не так просто. Поэтому мы по-прежнему обсуждаем эту проблему и экспериментируем, пытаясь понять, как пользователи максимально безопасно могли бы выполнить апгрейд.

К сожалению, это совершенно нетривиально. Во-первых, мы говорим о переломном изменении ABI — ситуация «всё ли ничего». Если в API библиотеки используется time_t, то всё связанное с ней должно использовать ту же ширину типа. В этом посте я бы хотел подробно рассмотреть этот вопрос: почему это плохо и что мы можем сделать, чтобы повысить безопасность.

Читать далее

Создаем свою библиотеку на C++ с тестированием, CMake и блекджеком: часть 2

Уровень сложностиСредний
Время на прочтение30 мин
Охват и читатели5.3K

В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в нескольких своих проектах однообразный код, который приходилось каждый раз перемещать. Да и хотя бы как упаковать свои идеи и знания в удобный и доступный формат, которым можно будет поделиться с сообществом.

Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.

Эту статью вы можете использовать как шпаргалку для создания проектов, и не только библиотек.

Некоторые из вас могут подумать, что мы изобретаем велосипед. А я в ответ спрошу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Добро пожаловать во вторую, скорее всего финальную часть статьи! Здесь мы окончательно допишем код, исправим некоторые ошибки.

Читать далее

Митап по Linux Kernel: про livepatching, работу с расширениями RISC-V и создание модуля ядра для memory extender

Время на прочтение2 мин
Охват и читатели1.1K

30 октября в 19:00 инженеры из YADRO и локальной Linux User группы откроют серию совместных митапов. Они поделятся опытом точечного обновления ядра Linux с помощью livepatching, расскажут о поддержке архитектуры и расширений RISC-V и про устройство подсистемы DMA.

Регистрируйтесь, чтобы забронировать место на площадке, — количество мест ограничено. Но для тех, кто не успеет, будет доступна трансляция в VK, YouTube или Rutube (также по регистрации) и открыт лист записи на следующие Linux-митапы.

Читать далее

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

far2l в Ubuntu 24.04 LTS готов для повседневного использования

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели19K

Несколько дней назад вышло обновление, устраняющее последние шероховатости UX, и мы рады представить вам долгожданный полноценно работающий Far Manager в составе LTS-версии Ubuntu 24.04! В этой статье я расскажу, как получить максимум удовольствия от его использования. Поехали!

sudo apt update

sudo apt install far2l

Читать далее

Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 3

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

Представляю вашему вниманию третью (заключительную) часть перевода статьи A guide to inter-process communication in Linux.

Первая часть перевода была посвящена общему введению в курс дела и механизму разделяемого хранилища (shared storage). Во второй части были рассмотрены механизмы каналов (именованных и неименованных) и очереди сообщений. В третьей части автор статьи ставит перед собой цель рассказать вам о сокетах и сигналах; подводит общие итоги по межпроцессному взаимодействию в Linux.

Приятного чтения!

Читать далее

GNUstep: разрывая все шаблоны

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

В удивительном мире ИТ существуют проекты, узнав о которых можно сильно поменять свои взгляды на жизнь, реальность и саму разработку. Об одном из таких проектов и будет наш рассказ.

Погрузиться

Интеграция GNOME Online Accounts с сервисами Яндекса в ОС «МСВСфера» 9

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

В этой статье мы хотим рассказать о том, как интегрировали сервисы Яндекса в ОС «МСВСфера АРМ» 9. А точнее — gnome‑online‑accounts и сопутствующие программы evolution, календарь и gvfs с Яндекс сервисами.

Читать далее

Надоело просто добавлять запись в log-файл. Что еще можно сделать с помощью syslog-ng в Astra Linux SE?

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели7.9K

Всем привет! Меня зовут Михаил, и в своей предыдущей статье я кратко осветил цепочку прохождения логов в ОС Astra Linux SE. Продолжаем!

Любой человек, который регулярно сталкивается с темой логирования, рано или поздно задаётся вопросом: «А что ещё можно сделать с логами, помимо простого добавления записей в некоторый файл?». Поэтому сейчас поговорим о таком мощном инструменте обработки логов, как syslog-ng.

Читать

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

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели6.3K

Привет, Хабр! Меня зовут Павел Панкратов, я ведущий инженер-программист в дивизионе искусственного интеллекта YADRO. Этим текстом я запускаю цикл статей — экскурс в особенности работы с SoC, комбинирующей в себе реализованные в «железе» аппаратные блоки (Hard IP’s) и программируемую логику (Soft IP’s). Основная задача, которая объединит все три статьи, — параллельный запуск встраиваемой операционной системы на двух различных по архитектуре процессорах, представленных в виде Hard и Soft IP-блоков.

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

Читать далее

Kubernetes на сковородке: готовим самые вкусные кластеры

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели4.4K

Сегодня технологические компании стоят перед выбором без выбора: если перед нами не стоит узкоспециализированная задача, то мы по дефолту идем работать в Kubernetes. Эта система универсальна и проверена годами, поэтому обойтись без нее практически невозможно.

Привет! Меня зовут Игорь Титов, я Product Lead системных инженеров в Garage Eight. В этой статье расскажу, что такое контейнеризация, как с ней помогает Kubernetes и почему важно уметь правильно его готовить.

Читать далее