Приветствую! В сегодняшнем материале мы опробуем с вами новый формат статей, а именно — «ретрошортсы». В этой рубрике будем вкратце вспоминать крутые гиковские штуки прошлых лет, и конкретно сегодня — тот самый журнал Vogue от декабря 2010 года с внешним дисплейчиком, на который можно было накатить Linux и получить мини-компьютер буквально за 200 рублей. Если вам интересно, что за девайс придумали в далеком 2009 году, причём здесь игровые консоли и как бородатые 30-летние хабровчане бегали по всей Москве в поисках ставшего дефицитным женского журнала, то добро пожаловать под кат!
Разработка под Linux *
Пишем под *nix
Новости
Установка Linux на Android: новые горизонты для разработчиков и энтузиастов
В мире мобильных технологий грядет очередная революция, которая может изменить подход к разработке и использованию приложений для Android. Google работает над интеграцией полноценной среды Linux в мобильную ОС. Это может не только упростить процесс создания софта, но и потенциально трансформировать мобильные устройства в полноценные рабочие станции.
Коротко о SLAB, SLOB и SLYB в Linux
Привет! Когда речь заходит о динамическом управлении памятью в Linux, мы имеем дело с несколькими разными подходами, каждый из которых имеет свои плюсы и минусы.
В этой статье разберём три аллокатора памяти ядра: SLAB, SLOB, а также SLUB.
Технология NTB: опыт применения и ее виртуализация QEMU
В статье мы расскажем о системах хранения данных (СХД), в частности о применении технологии NTB поверх шины PCIe. Наша команда столкнулась с задачей виртуализации технологии NTB в QEMU, решение которой было сведено к созданию частичной виртуализации IDT 89HPES24NT6AG2 PCI Express Switch, модификации модуля ядра Linux для поддержки нашей виртуализации и сборки воедино с помощью Yocto Project.
Истории
Операционная система реального времени Xenomai 4
В данной статье подробно рассмотрим, как собрать ядро, поддерживающее 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).
Автоматизированное тестирование графических приложений и сценариев установки
Одна из самых сложных задач в разработке и поддержке операционных систем – тестирование графических приложений и сценариев установки. Процесс усложняется постоянными обновлениями дистрибутива, увеличением количества пакетов, различными редакциями и вариантами установки ОС, а также множеством архитектур (x86_64, aarch64 и т.д.).
Большинство компаний выбирает автоматизированное тестирование. Этот способ тестирования сложен в реализации, для запуска процесса на поток требуются различные специалисты – тестировщики, разработчики, devops-инженеры. Одна из главных проблем заключается в том, что тестирование обычно происходит с позиции разработчика: тестируются низкоуровневые функции, библиотеки и утилиты, различные API и т.п. Однако, пользователь взаимодействует не с этим. Для человека, который будет пользоваться операционной системой, важен интерфейс: что он видит на экране, как он с этим взаимодействует?. Почему бы в этом случае не тестировать ОС вручную? Это возможно, но такой подход затратен и может приводить к ошибкам, связанным с человеческим фактором.
В этой статье расскажем о том, как мы используем открытый проект openQA в тестировании российской операционной системы ОС “МСВСфера” 9 от вендора “Инферит”.
Предлагаю сделать интернациональный форк ядра Linux
Приветствую, всех!
Я думаю, многие не только на Хабре, читали ядреные новости о Linux и Open Source. Если кратенько, то из мейнтейнеров ядра Linux исключены русские программисты работающие в подсанкционных компаниях.
6 вариантов генерации конфигурационных файлов Shell-скриптами
Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы
И снова здравствуй, Хабр! Мы добрались до второй части повествования о параллельном запуске двух ОС на FPGA с процессорной подсистемой.
В этой статье мы сначала определим минимально необходимые компоненты для запуска Embedded Linux. Затем осуществим сборку под ARM стандартными инструментами производителя и под Soft-CPU «вручную». И наконец, подготовим загрузочный носитель, чтобы подойти во всеоружии к запуску и верификации проекта, которые ожидают нас в заключительной части цикла.
Про qemu и протокол 802.1p
Выпускаю первую ВМ. По сети не пингуется. Локально с гипервизора — всё ок. Лезу на консоль, запускаю что-то типа "tcpdump -nvvvi any"
(по-умолчанию выставляется promisc-режим) — ping побежал. Выключаю tcpdump — опять глухо. При запуске с ключом "-p" (запретить неразборчивый режим) tcpdump вообще ничего не видит.
Установка и использование утилиты screen в Linux, Ubuntu
Утилита Screen — это менеджер окон Linux, который позволяет переключаться между несколькими процессами в одном физическом терминале. Screen предоставляет буфер истории для прокрутки и механизм копирования и вставки текста между окнами.
С помощью Screen можно создавать новые окна с различными программами, закрывать текущие окна, просматривать список активных окон, включать и отключать логирование вывода и переключаться между окнами. Все окна работают независимо друг от друга, и программы продолжают выполняться даже при отключении сеанса от терминала пользователя. Это делает Screen полезным инструментом для эффективного управления несколькими задачами в одном терминале.
AntiBlock 2.0
Приблизительно два года назад я начал разрабатывать свою программу AntiBlock, о которой я писал ранее. Версия, которую я описал тогда, была далека от завершения. Но сейчас уже применятся другая архитектура, появился скрипт для сборки пакета и удобная служба, с конфигурационным файлом.
С помощью обработки DNS запросов, программа направляет только заблокированные сайты через VPN, а остальные идут без изменений.
Rust IPC Ping-Pong
На работе наша команда недавно столкнулась с необходимостью в высокопроизводительном IPC в Rust. Поиск привел нас к содержательной статье от 3tilley «IPC in Rust — a Ping Pong Comparison», что стало превосходной отправной точкой в нашем исследовании.
Вдохновляясь этой работой, мы решили копнуть глубже и провести собственные замеры производительности, в особенности нас интересовал новый многообещающий фреймворк iceoryx2. Взяв за основу работу в исходной статье, мы будем использовать UNIX Domain Sockets (как stream, так и datagram), Memory Mapped Files и Shared Memory с использованиемiceoryx2 для сравнения производительности IPC между процессами на одной машине для различных размеров пэйлоада.
Ближайшие события
Погружаемся в initrd
Приветствую! Меня зовут Валерий, я инженер операционных систем в секторе клиентской и мобильной ОС.
Сегодня хочу затронуть фундаментальные вопросы:
- процесс загрузки операционной системы в автоматизированное рабочее место (АРМ),
- распаковку начального образа оперативной памяти,
- подробный разбор initrd, что это такое и с чем его едят.
Этот материал поможет понять как природу загрузки ОС Astra Linux Special Edition в частности, так и загрузку GNU/Linux в целом.
Как написать D-Bus сервис, работающий на системной шине, на Rust
Привет, Хабр! На связи Федотов Максим, ведущий разработчик в "Открытой Мобильной Платформе". В этой статье я хочу поделится нашим опытом создания D-Bus-сервиса на Rust, который работает на системной шине.
Если Вы только недавно начали изучать темы ОС GNU/Linux, Rust и D-Bus, но при этом Вам уже стало тесно в рамках простых базовых примеров и хочется зайти немного поглубже, то эта статья для Вас.
Как написать свой первый модуль ядра Linux
Linux Kernel — это, пожалуй, один из самых распространённых (и, возможно, до сих пор недооценённых) программных продуктов в мире. Он является основой всех дистрибутивов Linux (что очевидно), но на этом его роль не заканчивается. Ядро также работает на множестве встроенных устройств практически повсюду. У вас есть микроволновка? Скорее всего, она работает на ядре Linux. Посудомоечная машина? Тоже. Если у вас достаточно средств на автомобиль Tesla, вы даже сможете найти несколько багов, исправить их и отправить патч в код Model S или Model X на GitHub. А что насчёт схем, которые не позволяют Международной космической станции сойти с орбиты и врезаться в Землю? Конечно, и там тоже Linux. Ядро легковесное — значит, отлично работает даже в условиях невесомости.
В этой статье напишем свой первый модуль ядра под Linux
Что делать, если драйвера в смартфоне нет. Продолжаем эксперименты с «Авророй»
Привет, читатель!
Ранее я купил телефон на ОС «Аврора» и стал участником программы бета-тестирования. Это дало возможность разрабатывать ПО для мобильных устройств с применением Qt. Но внезапно я столкнулся с проблемой: к смартфону нельзя подключиться через старый-добрый USB. Как оказалось, на девайсе «из коробки» нет нужных драйверов. Если вам интересно, как я решил эту проблему и подключился через телефон, прошу под кат!
Настройка VSCode для разработки в Tauri
Как настроить VSCode для удобной работы с проектом Tauri. Установим пару плагинов и настроим launch.json и tasks.json.
Использование systemd со Swift приложением
Все приложения на сервере необходимо запускать под управлением какого-либо демона. Возможно, вы уже используете supervisord
или systemd
.
Эта статья покажет, как упростить вашу жизнь при помощи systemd
, интегрировав его напрямую в ваше приложение через SPM-плагин.
Для начала давайте посмотрим, как мы обычно работаем с systemd
и что нужно проделать для его настройки на работу с нашим приложением.
Риски перехода на 64-битный time_t
Один из разделов статьи 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, то всё связанное с ней должно использовать ту же ширину типа. В этом посте я бы хотел подробно рассмотреть этот вопрос: почему это плохо и что мы можем сделать, чтобы повысить безопасность.
Вклад авторов
dlinyj 1092.6Seleditor 955.0unxed 854.5artyomsoft 716.0Andrey2008 636.2Bright_Translate 580.7ru_vds 555.4m1rko 537.2bodyawm 495.0maisvendoo 435.0