Как стать автором
Обновить
109.35

Разработка под Linux *

Пишем под *nix

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

Устройство GPIO-драйверов в Linux

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

Рассмотрим, как устроены GPIO-драйверы в Linux, и почему это сделано именно так. Поймем, почему для простого мигания светодиодом в этой операционной системе надо пройти через N слоев абстракции.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 11

Новости

Разбираемся с Bluetooth Low Energy на примере превращения USB-клавиатуры в беспроводную

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


Меня давно интересовало, как работают беспроводные клавиатуры, но как-то не сильно вдавался в подробности, пока не возникла идея превратить свою механическую клавиатуру в беспроводную. Честно говоря, не думал, что узнаю так много нового и интересного.

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

Не имея навыков пайки, вы сможете создать полезное Bluetooth-устройство, а ваше понимание Bluetooth и Linux уже не будет прежним, если вы, конечно, не являетесь экспертом в этих областях.

Данная статья ставит целью на примере разработки собственной Bluetooth-клавиатуры помочь разобраться в базовых понятиях Bluetooth, так как чтение скучных спецификаций и статей с введением в технологию даёт мало пользы.
Читать дальше →
Всего голосов 67: ↑65 и ↓2 +63
Комментарии 52

Как я уменьшил размер образа docker на 40%

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

Ежедневно по работе я сталкиваюсь с Dockerfile, написал несколько из них самостоятельно, создавал контейнеры и всё такое. Но я никогда не публиковал их в реестре docker hub. Мне хотелось создать ugit — инструмент для отмены команд git (написанный в виде шелл-скрипта), который бы могли использовать люди, не любящие устанавливать случайные шелл-скрипты из Интернета.

Да-да, знаю. НАДО ПЕРЕПИСАТЬ ЕГО НА GO/RUST/ЕЩЁ КАКОМ-ТО ВОЛШЕБНОМ ЯЗЫКЕ. Сейчас скрипт состоит из пятисот с лишним строк Bash, поэтому я перепишу его на другой язык только под страхом смертной казни. Кроме того в ugit уже есть практически все функции (осталось реализовать отмену лишь небольшого количества команд, используемых не так часто).

В этой статье я расскажу о том, как написал официальный Dockerfile для ugit (шелл-скрипта) и снизил размер образа почти на 40% (с 31,4 МБ до 17,6 МБ), выполняя пошаговые попытки работы по инструкции. Надеюсь, это замотивирует других любителей шелла тоже публиковать свои скрипты в виде образов docker!

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 49

Мигель де Икаса и его мечта — Linux на десктопах

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

Мигель де Икаса, 2014 г. Фото: he San Diego Union-Tribune

Как известно, гении предпочитают общаться и работать с равными себе, они притягивают друг друга. И если вы хотите что-то узнать о человеке — посмотрите, кто его друзья. Например, взять выдающегося Фабриса Беллара, о котором мы публиковали несколько статей. Его не очень волнует мирская суета (карьера, деньги, известность и прочие атрибуты «успеха» у обывателей), а только интересная работа. В интернете всего две фотографии Фабриса, и одна из них — с компьютерной конференции, где он сфотографировался с Мигелем де Икаса, основателем проектов GNOME и Mono.

Сразу понятно, кто достоин уважения с точки зрения Беллара.
Читать дальше →
Всего голосов 83: ↑82 и ↓1 +81
Комментарии 46

Истории

Замешиваем файлы в тэги. Часть 4

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

Продолжаем создавать модуль ядра в Линукс на примере виртуальной файловой системы.

Часть 1: Описание задачи, Модуль ядра

...

Часть 3: Inode, Lookup

Часть 4: Inode-операции: symlink, unlink

Продолжаем разбираться
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 4

Библиотека контролов для Avalonia UI

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

Последний год наша команда работала над кроссплатформенной версией САПР Delta Design. В результате этой работы была создана своя библиотека UI контролов для Avalonia, которая поддерживает как ОС Windows, так и ряд систем Linux, включая российские АстраЛинукс, РедОс, а также их модификации под Эльбрус.

Создание единой библиотеки контролов EremexControls.NET позволило компании ЭРЕМЕКС значительно ускорить темпы разработки и показать мультиплатформенную версию САПР Delta Design раньше обещанного срока. Применение готовых типовых блоков дало возможность инженерам фокусироваться на предметной области, не отвлекаясь на другие задачи. Сейчас библиотека контролов используются в трех внутренних проектах компании.

Под катом обзорная статья по новому продукту от компании ЭРЕМЕКС – библиотека компонентов EremexControls.NET для Avalonia UI.

Читать далее
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 31

Библиотека Helium от проекта tauOS

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

В настоящее время существует множество самых разных операционных систем на базе ядра Linux. Далеко не все разработчики заморачиваются созданием собственных приложений для своих дистрибутивов. Если кто-то и озаботится написанием парочки программ, то они, как правило, пользуются уже готовыми библиотеками для разработки приложений. 

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

В этой статье я хочу немного рассказать о компонентах библиотеки Helium, о том как запускать приложения, написанные с ее помощью, и как на ней разрабатывать свои программы. Репозиторий библиотеки можно найти здесь. Все действия, приведенные в этой статье, выполнялись в Fedora Linux 39 (Workstation Edition).

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 3

Apache Maven — введение в автоматизированную сборку проектов (часть 1)

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

Добрый день Хабр, в данной статье мы разберём один из сборщиков проектов Apache Maven. Начнём с установки, настройки и сборки нашего первого проекта.

Apache Maven - это фреймворк по автоматизации и сборки Java-проектов. Обычно просто называют Maven.

Самую подробную информацию вы всегда можете найти на официальном сайте Maven.

А также центральный репозиторий Maven где собрано всё самое необходимое для работы с Maven.

Читать далее
Всего голосов 14: ↑2 и ↓12 -10
Комментарии 2

Старая ошибка Unix, которую вы можете совершить при сигнале init (PID 1)

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

Init — традиционное имя для программы, которая выполняется как process ID 1, главный наследник всех процессов Unix, исторически отвечающий за управление системой. Process ID 1 настолько критичен для системы, что его или невозможно убить, или система перезапускается при выходе из него (или и то, и другое, тогда этот перезапуск — хак). Сегодня в Linux PID 1 необязательно оказывается двоичным файлом и процессом с именем init в буквальном смысле, в отличие от *BSD, где init остаётся двоичным файлом.

Исторически сложилось так, что по множеству причин системный администратор отправляет сигналы в init, что задокументировано для современных систем Unix, например, на странице руководства к  init(8) FreeBSD. Одна из причин заключается в том, чтобы считывать заново список последовательных портов. Традиционно и даже сегодня это выполнялось отправкой init сигнала SIGHUP.

Программа kill долгое время поддерживала отправку сигналов по имени, но сисадмины ленивы и мы обычно запоминали что SIGHUP — это сигнал 1 (а сигнал 9 — это SIGKILL). Поэтому довольно часто мы вводили kill -1 1 для отправки сигнала 1 (SIGHUP) к process ID 1 (init). Однако эта версия немного опасна, потому что она лишь на один символ отличается от версии с совершенно другими эффектами.

Читать далее
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 2

Как реализовать поведенческий анализ в Linux на уровне гипервизора

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

Привет, Хабр! Меня зовут Алексей Колесников, я работаю в отделе обнаружения вредоносного ПО экспертного центра безопасности Positive Technologies (PT Expert Security Center, PT ESC). Недавно я выступил на международной конференции AVAR 2023, которая проходила в Дубае. Рассказывал про новые плагины, разработанные PT Expert Security Center для опенсорсной системы динамического анализа вредоносного программного обеспечения DRAKVUF, и показывал, как с их помощью в песочнице PT Sandbox детектировать актуальные угрозы для Linux.

Под катом мини-обзор популярных инструментов для мониторинга вредоносов в Linux, о работе наших плагинов в DRAKVUF и анализ ВПО с их использованием.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Стабильный релиз Wine 9.0? Спустя год он всё-таки появился — вместе с 7 000 изменений

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

Привет, Хабр! Кажется, мы действительно дождались стабильного релиза Wine 9.0. Спустя год времени и 26 промежуточных версий представлена официальная версия Wine 9.0. Разработчики внесли несколько тысяч изменений, так что здесь есть что обсудить. Основные нововведения — архитектура WoW64 для запуска 32-разрядных программ в 64-разрядном окружении, интеграция архитектуры ARM64, а также добавление драйвера для поддержки Wayland. Конечно, есть и другие новинки. Подробнее о них — под катом.

Читать далее
Всего голосов 53: ↑49 и ↓4 +45
Комментарии 22

Создание deb-пакета для самых маленьких. Из простого проекта с разделяемыми библиотеками

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

Краткая инструкция с некоторыми опущениями о том, как собрать deb-пакет из собственного проекта быстро, без регистрации и смс

Ну-ка помацаем, кто у нас тут....
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 16

Можно ли использовать DMA вместо memcpy в Linux

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

В интернете можно найти описание проблем, связанных с использованием DMA для стандартной функции копирования данных из памяти в память:

Linux – DMA memcpy operation in Linux

Давайте попробуем разобраться, как можно использовать интерфейс к DMA для реализации стандартной операции копирования memcpy и есть ли в этом смысл.

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 47

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

One Day Offer от УЦСБ
Дата 17 февраля
Время 10:00
Место
Онлайн

Загрузка драйверов в ядре Linux

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

Почти все знают, как написать простой драйвер под Linux. На эту тему много материалов в сети. Очень мало информации о том, что находится "под капотом" у процедуры загрузки драйверов.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 4

Эльфы и пингвины: что такое ELF и как он работает в Linux?

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

image


Всем привет! С вами как всегда я, Аргентум. Сегодня я расскажу и поведаю вам древние тайны, которые хранят горные старцы-сисадмины — тайны об эльфах, и как они взаимодействуют с древним народцем пингвинов. Дамы и господа, встречайте — статья о работе ELF и двоичных файлов в Linux!


Что такое ELF? Чем он отличается от PE в Windows? И многие другие ответы на ваши вопросы.


Перед тем как погрузиться в технические детали, будет нелишним объяснить, почему понимание формата ELF полезно. Это позволяет изучить внутреннюю работу операционной системы. Когда что-то пошло не так, эти знания помогут лучше понять, что именно случилось, и по какой причине. Также возможность изучения ELF-файлов может быть ценна для поиска дыр в безопасности и обнаружения подозрительных файлов. И наконец, для лучшего понимания процесса разработки. Даже если вы программируете на высокоуровневом языке типа Go или Rust, вы всё равно будет лучше знать, что происходит за сценой.


Итак, зачем изучать ELF?


  • Для общего понимания работы операционной системы
  • Для разработки ПО
  • Цифровая криминалистика и реагирование на инциденты (DFIR)
  • Исследование вредоносных программ (анализ бинарных файлов)
Читать дальше →
Всего голосов 58: ↑52 и ↓6 +46
Комментарии 22

Строим свой SSO. Часть 4: Vue.js, Регистрация, Сброс пароля

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

Всем привет!
Мы продолжаем строить собственный SSO Server. Сегодня мы детально разберем Vue.js приложение, а также спроектируем и реализуем долгожданные механизмы регистрации и сброса пароля. Как всегда, дополнительно мы разберём ряд интересных общесистемных решений, которые наверняка Вам пригодятся в дальнейшем.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 6

Переезд на Астра Линукс

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

Бывает ситуация, когда вот стоит нормальный, не ветхий дом с жильцами, с работающими коммуникациями. И простоял бы он так еще много лет. Но принято решение проложить новую магистраль и дом ей мешает. Можно снести дом, недалеко построить новый и жильцов туда переселить. А можно переместить в нужное место сам этот дом прямо вместе с жильцами и тараканами.

Такая аналогия приходит на ум после принятия решения о переходе с платформы Windows на пока единственную сертифицированную альтернативу – ОС Астра Линукс. Как жильцы гипотетического дома не могли отменить решение о магистрали, так и мы не можем отменить это решение. Придется переходить. Однако легко сказать «перейти». Когда я познакомился с IBM-PC/XT, какой-нибудь Торвальдс еще школу не кончил. За эти годы (чего уж там годы - десятилетия) появилось много привычек, приемов, навыков. Жалко все это оставлять ради принудительного перехода в другую среду. И приходит мысль – попытаться переехать, так сказать, всем домом, а не строить новый.

Читать далее
Всего голосов 48: ↑42 и ↓6 +36
Комментарии 152

Выделение памяти для DMA в Linux

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

Это перевод Поста Allocating Memory for DMA in Linux

В этом посте мы рассмотрим распределение памяти в Linux с использованием очень больших страниц с тем, чтобы совместно использовать эту память с устройствами PCIe, использующими DMA.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 2

Отслеживание изменений в директории с помощью Inotify

Время на прочтение 4 мин
Количество просмотров 3.4K
Столкнулся с задачей, где необходимо было отслеживать в ОС Linux изменение файла в директории на чистом С++. Так как чистый С++, Qt с его QFileSystemWatcher сразу отпадал, из-за того что необходимо было подключать QObject. В итоге решил пользоваться линуксовой функцией Inotify.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 5

Пингвин расставил сети: работа сети в Linux

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

Всем привет! С вами снова я, Аргентум! Сегодня я продолжу нашу серию статей об ядре Linux.

В этой статье мы будем изучать способ организации сети в мире серверов и то, как она эволюционировала от использования традиционного сетевого стека ядра Linux к виртуализации сети с использованием OVS и к обработке нагрузки телекоммуникационных компаний с использованием NFV и SR-IOV.

Читать далее
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 5

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