Обновить
325.65

Linux *

Пишем под *nix

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

Как создать образ диска в Linux с несколькими разделами, не имея физического образца

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

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

Для чего это нужно? Все процессорные платы, разрабатываемые нашим предприятием, обладают слотом для sdcard и установленной на плате mmc. Загрузка системы производится либо с sd, либо c mmc. sd-карта является, как правило, временным решением, подкупает простотой установки. А mmc является постоянным решением, куда устанавливается уже финальное программное обеспечение. Переключение между способами загрузки осуществляется перемычками (джамперами на плате).

Читать далее

Tcl/tk: интегрированная среда разработки TKproE-2.30

Время на прочтение10 мин
Количество просмотров5.7K
Прошло без малого пять лет как я впервые столкнулся с интегрированной средой разработки программ на tcl/tk TKproE-2.20. В апреле 2021 года вышла новая версия этого продукта — TKproE-2.30 и я полностью погрузился в её мир. Он меня заворожил. Название TKproE является аббревиатурой от TCL/TK Programming Environment. TKproE — это интегрированная среда разработки программ для языка сценариев TCL/TK. Сам TKproE полностью написан на языке TCL/TK. В преамбуле к TKproE подчёркнуто, что он поддерживает быструю разработку сложных графических пользовательских интерфейсов.

Что же принципиально нового появилось в новой версии по сравнению с версией 2.20 помимо нового логотипа?
Читать дальше →

И еще немного про авто-тесты в QEMU

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

Привет, Хабр. Меня зовут Роман, я разработчик встраиваемых систем в Dannie и мы тут делаем умные камеры. По долгу службы, мне потребовалось завести эмуляцию прошивки для чипа из семейства MIPS. В рамках разработки проекта мы обозначили для себя задачу получения быстрой обратной связи при разработке ПО и прошивки. Для этого начали выстраивать CI/CD-цепочку с проверкой прошивки в эмуляторе. Одной из требуемых функций являлась возможность манипулировать окружением загрузчика (u-boot environment). В статье я расскажу что получилось и как из говна и палок завести авто-тесты прошивки в CI.

Читать далее

Telegram inlineKeyboard. Оценка качества обслуживания после звонка

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

Я занимаюсь разработкой АТС с открытым исходным кодом MikoPBX.

Недавно познакомился с проектом tg2sip. Шлюз позволяет подключить Telegram аккаунт к офисной АТС, принимать и совершать звонки.

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

При попытке реализовать функцию столкнулись со сложностями:

- Пользователь не может отправлять / пересылать клавиатуру другому пользователю

- Бот не может писать пользователю, если тот на него не подписан

Как же быть? Решение опишу под катом

Приступим...

Ассeмблерные хаки из книги «xchg rax, rax»

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

Разбор фрагментов кода из загадочной книги, которая содержит только ассемблерный листинг и никаких комментариев. Часть 1

Читать далее

Представляем Windows Terminal Preview 1.13

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

Добро пожаловать в первый релиз Windows Terminal 2022 года! Как всегда, вы можете установить Windows Terminal и Windows Terminal Preview из Магазина Microsoft или из репозитория GitHub. Ну а подробности о релизе под катом.

Читать далее

FastTrack: Управление вводом/выводом с учетом FG приложений для улучшения пользовательского опыта смартфонов Android

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

Я разобрала статью:

Hahn, S. S., Lee, S., Yee, I., Ryu, D., & Kim, J. (2018). FastTrack: Foreground App-Aware I/O Management for Improving User Experience of Android Smartphones. In 2018 Annual Technical Conference (USENIX 18) (pp. 15-28).

И хочу поделиться основными идеями по улучшению пользовательского опыта при взаимодействии со смартфонами Android.

Пользователям смартфонов важно, чтобы их устройства без задержек реагировали на действия пользователя. Инверсии приоритетов ввода-вывода в разделах кэша страниц (page cache) и хранилище (storage device) являются причинами увеличения времени отклика приложений переднего плана (FG, Foreground). Цель статьи - исследовать проблему инверсии приоритетов ввода-вывода на смартфонах Android, ее влияние на работу пользователя. Авторы статьи предлагают инструмент управления вводом-выводом FastTrack. Он вытесняет текущую фоновую активность на всех уровнях. 

По результатам тестирования инструмент ограничивает увеличение времени отклика на 27%, в дефолтной реализации Android еще на 2,319%. Когда шесть фоновых приложений (BG, Background) работают вместе, FastTrack может сократить время отклика приложения FG на 94% по сравнению с Android. Авторы изменили реализацию кэша страниц, планировщик ввода-вывода внутри хранилища. FastTrack улучшает взаимодействие пользователя со смартфонами, предотвращая инверсию приоритетов ввода-вывода.

Читать далее

Указания по проектированию D-Bus API

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

Продолжаем тему D-Bus на Хабре. D-Bus — система межпроцессного взаимодействия (IPC), которая позволяет приложениям в операционной системе сообщаться друг с другом. При этом приложения могут находиться на разных компьютерах.

Данная публикация является логическим продолжением переводов вводной статьи и cпецификации D-Bus. Она имеет уже практическую направленность, поскольку в ней рассказывается о том, как грамотно проектировать D-Bus интерфейсы. Будет показано как избежать промахов, которые обычно происходят, когда вы создаете свой первый, второй, третий D-Bus интерфейс.

Читать далее

Флаг EPOLLEXCLUSIVE и проблема неравномерного распределения соединений в Nginx на Linux

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

Совсем недавно, 25 января 2022 года вышел новый релиз Nginx - 1.21.6, в котором исправлена проблема неравномерного распределения входящих соединений между несколькими worker процессами в дефолтной конфигурации на Linux системах. Если конкретнее - use epoll, accept_mutex off, reuseport выключен.

В данной конфигурации при определенном характере нагрузки большинство входящих в Nginx соединений обрабатывается лишь одним worker процессом. 

Насколько я понимаю, эта проблема существует уже более пяти лет и берет начало в версии 1.11.3 (Jul 2016), когда в Nginx по умолчанию отключили accept_mutex, а вместо него стали полагаться на флаг EPOLLEXCLUSIVE, появившийся в ядре Linux 4.5.

Стоит заметить, что проблема балансировки входящих соединений при использовании механизма epoll и флага EPOLLEXCLUSIVE более глобальна и касается не только Nginx, а любых сетевых приложений, работающих по аналогичной схеме.

В этой статье мы посмотрим на историю и причины появления данной проблемы, а также рассмотрим код ее решения в новом релизе Nginx.

Читать далее

Компания SUSE открыла код NeuVector

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

Компания SUSE объявила о выпуске NeuVector - платформы, обеспечивающей комплексную безопасность контейнеров. Это решение предназначено для выполнения   контейнеризированных приложений в среде нулевого доверия (zero trust). База кода NeuVector уже доступна сообществу на GitHub.

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

Образы контейнеров NeuVector стали открытым ПО и могут быть развернуты на любом кластере Kubernetes. Пользователи SUSE Rancher могут установить их из каталога приложений. В следующих версиях интеграция этих двух продуктов станет еще более плотной. Разработчики NeuVector придерживаются той же стратегии, что и SUSE, и предлагают решение для всех популярных решений для управления контейнерами – SUSE Rancher, Red Hat OpenShift, VMware Tanzu, Google GKE, Amazon EKS, Microsoft Azure AKS и других.

Проект NeuVector позволяет пользователям SUSE Rancher обеспечить требуемый уровень безопасности на протяжении всего жизненного цикла приложения и решать все необходимые для этого задачи: сегментирование сети, мониторинг и анализ трафика, сканирование уязвимостей в контейнерах, управление их конфигурацией и проверка на соответствие требованиям регуляторов, профилирование рисков, обнаружение угроз и реагирование на инциденты ИБ.

Исходный код предварительного релиза SUSE NeuVector опубликован на GitHub:

Для Controller, Enforcer и Scanner

Для Manager

Документация для всех компонентов

Читать далее

IO_URING. Часть 3

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

Всем привет! Симулятор написания echo-server'ов на связи. Сегодня завершающая часть из цикла посвященного io_uring. В этом материале мы поговорим о настройке io_uring, режимах работы и перформансе. Полученные знания используем чтобы улучшить конкурента netpoller'у из предыдущей статьи. 

Читать далее

Sysbox: Изолированный container runtime. Краткий обзор и настройка

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

О Sysbox в 3-х предложениях:

- Sysbox - это "VM-like" контейнеры с возможностью запускать внутри системный софт: Docker, Kubernetes, Systemd, вложенные контейнеры и т.д. 
- Любой софт, работающий на виртуальной машине, должен также работать в контейнере без проблем и с надежной изоляцией.
- Никаких сложных настроек, все настраивается за несколько шагов.

Если тема заинтересовала, то в статье проведем краткий обзор и даже запустим изолированный контейнер на локальной машине.

Читать далее

Как скрестить Коня и Трепетную лань

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

«Бить (Bash) или не бить», - спрашивал один датский принц. Вот и у меня возник аналогичный вопрос, когда у нас в компании появился сервер сборки Bamboo. Как можно в задании Bamboo, выполняющем скрипт Bash или Cmd, написать команды, одновременно понятные интерпретатору командной строки Windows и оболочки Linux?

У нас в компании в качестве скриптового языка планов Bamboo используется кроссплатформенный язык Python. Но для запуска скриптов в Windows и Linux используется разный код.

Команды, понятные Linux, будут обработаны с ошибкой в Windows и наоборот. Что делать в этой ситуации?

Читать далее

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

Минималистичный универсальный Linux-ПК со странным названием minimum viable computer: что он умеет

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

На днях разработчик по имени Брайан Бенчофф (Brian Benchoff) анонсировал начало работы над проектом, который получил название minimum viable computer или MVC. Это миниатюрный ПК на базе Linux с базовыми возможностями, которые, впрочем, можно использовать для самых разных целей.

В частности, компьютер может использоваться для тестирования систем безопасности, работы в дата-центре, для создания софта. Также он может работать как аппаратный криптокошелек или в качестве ПК для ретро-геймеров, поскольку способен запускать Doom. Проект необычный, но в целом, вполне реализуемый. Под катом — подробности проекта.
Читать дальше →

Разработка графических приложений в WSL2

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

Данная статья будет неким дополнением опубликованной ранее (не мной) статьи. Чтобы не повторять написанное, по ссылке выше есть информация о требованиях к работе wsl2 на windows 10, как его включить, настроить, обновить и запустить графическую среду. В текущей статье я расскажу о том, как вести разработку графических приложений в wsl используя не только visual studio code со спец. плагином, а любую среду разработки.

Читать далее

Keylime — ключ от облака

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

Если ваша организация управляет сотнями или тысячами (а может сотнями тысяч) серверов, как убедиться, что они не взломаны? Вы можете использовать традиционную программную систему обнаружения вторжений (Intrusion Detection System, IDS), но она по-прежнему уязвима для сложных программных атак. Что вам действительно нужно, так это создать аппаратный корень доверия, который можно использовать для проверки самых первых шагов процесса загрузки и распространения этого доверия вверх на каждый уровень вашей системы. Аппаратный модуль Trusted Platform Module (TPM) обеспечивает такую ​​опору для настоящего решения удаленной аттестации.

Keylime, проект песочницы Cloud Native Computing Foundation, предоставляет масштабируемое решение для аттестации измеряемой загрузки, используя TPM и Linux архитектуру измерения целостности (Integrity Measurement Architecture, IMA), чтобы предоставить платформу удаленной аттестации, безопасную доставку полезной нагрузки и структуру отзыва, и дать вам полный контроль над политикой аттестации и устранением атак.
Читать дальше →

Go и плагины

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

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

Примерно год назад передо мной встала задача добавить поддержку плагинов в приложение на Go. Задача стояла не особо остро, и руки до решения дошли только сейчас. Ответ, однако, оказался не столь очевидным, сколь хотелось бы. Идеального решения, как по мне, нет, поэтому попытаюсь максимально объективно рассмотреть все три имеющихся.

Читать далее
Привет, Хабр! Недавно мы провели опрос, чтобы выяснить, что читатели Хабра думают об использовании открытых продуктов в финтехе — строго регулируемой и консервативной отрасли. Вопросы нам помогли составить эксперты компании Osnova, создающей платёжный процессинг на базе Open Source. Мы проанализировали 558 ответов и заметили некоторые закономерности — ими и поделимся в этом посте.
Читать далее

Диагностика виртуальной сети в Linux. BPFTrace и skbtrace в опенсорсе

Время на прочтение9 мин
Количество просмотров6.1K
Привет! Меня зовут Сергей Кляус, и я как разработчик виртуальной сети сопровождаю создателей приложений, размещённых в Yandex.Cloud. При этом диагностические возможности самого облака ограничены: мы не видим метрики пользовательских виртуальных машин, например количество TCP retransmissions, а записывать и анализировать огромные дампы всего сетевого трафика с помощью tcpdump дорого и трудно из-за ограничений безопасности.
К счастью, динамическая трассировка позволяет получить лучшее от двух миров: исполнять произвольный код в момент увеличения метрики, а в самом коде печатать тело пакета. Например, недавно мы диагностировали проблемы с TCP-соединениями у одного из наших managed-сервисов, и оказалось, что теряются на самом деле UDP-пакеты. Гипотеза требовала уточнения, хотя корреляция между ростом метрики и сбоем была поначалу очевидна. В современном Linux динамическая трассировка реализована через eBPF и утилиту BPFTrace, но постепенно мы накопили набор типовых сценариев их использования и сделали обёртку над BPFTrace. Она называется skbtrace и доступна на GitHub. Про неё я и расскажу под катом.
Читать дальше →

Стартуем RISCV Sipeed LicheeRV — Nezha CM C906 без официального SDK

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

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

В принципе, я никогда не интересовался продуктами вроде Banana Pi или Orange Pi от Allwinner, взглянув на официальное чудо, я понял почему от этих продуктов все так воротят нос:

— Прошивки для не китайцев "заботливо" лежат на MEGA (хочешь качать - плати деньги...)

— Для прошивки карт используется "замечательный" инструмент под названием PhoenixCard (судя по китайским форумам он не слушается даже китайцев), который работает под Windows (что всегда хорошо!)

— Официальный "SDK" обернут вместе c rootfs и разбит на архивы общей суммой >10 Gb (да-да и лежит на MEGA - то есть все равно заплатишь)

— И изюминка - все образы в комплекте расчитаны на карты ёмкостью больше 16 Gib (у наших друзей написано 16 GB - card_needs_≥16GB.txt)

Квест про реверс (он в конечном счете не понадобился) и печальное ковыряние палкой данного продукта жизнедеятельности (то что я собрал с помощью SDK, так и не заработало...) мы опустим, так как, я наконец наткнулся на гайд для Sipeed Nezha от дяди Samuel'a Holland'a спасибо ему за это огромное...

Читать далее

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