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

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

Пишем под *nix

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

Android Generic Kernel Image — как Google может (теоретически) заменить ядро Linux

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

Привет, хабр! Все знают, что Android использует ядро Linux. В этой статье мы разберёмся как современные (12+) версии Android позволяют Google обновить ядро Linux без участия вендора устройства, и как при помощи этого же механизма Google может обновить ядро с Linux на Fuchsia.

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

Исследуем внутренности Linux версии 0.01

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

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

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

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

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

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

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

Часть 2: Модуль ядра, Регистрация файловой системы

Часть 3: Inode, Lookup

Что в результате получилось можно увидеть по ссылкам: демо-видео, код.

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

Графические инструменты управления групповыми политиками в Linux

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

Многие организации в России переходят на Linux-решения, и планируют каким-то способом управлять своим парком машин. В общих словах необходима массовая настройки операционных систем по некоторым шаблонам. На этот случай есть различные решения - от Ansible до Samba, но в этом материале я подробно расскажу про групповые политики от Alt. Постараюсь написать об интересных технических реализациях, собственных графических инструментах и, в двух словах, о сходстве и различии с другими популярными решениями.

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

Истории

Что происходит, когда запускаешь «Hello World» в Linux

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

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →
Всего голосов 98: ↑98 и ↓0+98
Комментарии10

Что не так с Enterprise Linux

Время на прочтение5 мин
Количество просмотров11K
Enterprise Linux работает примерно по такой модели:

Принимается решение сделать мгновенный снимок неких восходящих свободных проектов по состоянию на определённую версию (это касается, в том числе, ядра Linux) и заложить этот снапшот в качестве основы для новой целостной версии, дистрибутива Enterprise Linux. Коллекция программ останется замкнута на уровне этих конкретных версий на протяжении всей службы этого релиза Enterprise Linux – а этот срок часто составляет 10 лет или даже больше.

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

Для этого релиза начинается следующий кусок сложной работы. Чтобы держать большой комплект софта максимально защищённым и при этом свободным от багов, не хуже, чем его вышестоящие аналоги, придётся постоянно месить код и выпускать новые и новые версии. Те, кто отвечают за поддержку вашего Enterprise-дистрибутива Linux, должны тщательно ориентироваться в океане изменений.
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии5

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android

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

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
Читать дальше →
Всего голосов 93: ↑92 и ↓1+91
Комментарии38

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

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

Давным, давно ... искал средство организации видео-файлов.

Чтобы можно было каждой киношке назначить какие-то маркеры, тэги. Выбирать файлы по наличию тэгов. Или наоборот - по отсутствию тэгов. Например: детектив, фантастика, не-ужасы.

Чтобы всё работало в обычном проигрывателе: кликнул "Открыть файл..."; выбрал Детектив, Фантастика, не-Ужасы; получил список фильмов и выбрал нужный. Без специальных файловых менеджеров и браузеров.

И тогда такое средство мне не нашлось. А сейчас ... сейчас решил сделать его сам.

Что в результате получилось можно увидеть по ссылкам: демо-видео, код.

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

Часть 2: Модуль ядра, Регистрация файловой системы

Часть 3: Inode, Lookup

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

Как это делалось
Всего голосов 5: ↑4 и ↓1+3
Комментарии19

Свободное ПО теснит проприетарное

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

Преимущества свободного ПО (СПО) — защищенность и безопасность ИТ-инфраструктуры, высокое качество программного кода, широкий выбор аппаратных платформ, возможность быстрой адаптации к текущим потребностям бизнеса, открытые форматы.

Переход на СПО — мировой тренд. За рубежом этот процесс идет не один год и приобретает массовый характер. По результатам опроса 70 тысяч разработчиков на Stack Overflow, в 2022 году Linux как основную ОС использовали порядка 40% специалистов. Для сравнения, в 2018 году эта цифра составляла чуть более 23%.

В числе известных свободных программ стоит назвать широко распространенный веб-сервер Apache, ОС GNU/Linux, офисный пакет LibreOffice.org, браузер Mozilla Firefox, операционную систему FreeBSD. На СПО работают Google и Yandex.

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

Безопасный переход на СПО

Иногда у заказчиков возникают опасения, что миграция на СПО будет долгой и сложной, поскольку у продукта нет единого хозяина, в его разработке принимают участие разные команды. Здесь важно отметить, что безопасный и беспроблемный переход на СПО возможен только при наличии вендора, отвечающего за совместимость и качественную работу разнообразных решений в составе единой системы. Пример такого вендора — компания «Базальт СПО», разработчик ОС семейства «Альт».

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

Дизайнер не нужен. Правила создания красивых UI

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


Чем проще система — тем она эффективнее. Здесь не нужен художественный вкус или особая одарённость. Красота появляется сама собой, если система спроектирована без лишних деталей. Хороший пример таких интерфейсов дают рабочие инструменты. Молоток, ножовка, электропила. Всё это создано не для красоты, а чтобы идеально ложиться в руку и эффективно выполнять свою функцию. О красоте думают в последнюю очередь, но в итоге дизайн профессиональных инструментов зачастую вызывает искреннее восхищение. Ничего лишнего.

Такие же правила действуют в компьютерных интерфейсах. Чем проще — тем лучше. В этом смысле интересно посмотреть на новое поколение Linux-приложений в современном стиле с адаптацией под смартфоны (на КДПВ некоторые примеры), а также на свежие UI-фреймворки, которые продвигают современный стиль разработки.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии30

Итак, вы установили fzf. Что дальше?

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

Разработчики ПО — если не единственные, то практически единственные, кому очень просто создавать инструменты для улучшения своей профессиональной работы; однако со временем это усложняет жизнь людям, постоянно переключающимся между разными инструментами и не вкладывающим время в глубокое изучение своего инструментария. Имея глубокое уважение к негласным знаниям людей лучше меня, я всё же считаю, что отличная эвристика 80/20 заключается в том, чтобы изучать старые добрые инструменты Unix cat, ls, cd, grep и cut. (а если вам повезло устроиться на должность настоящего современного сисадмина, то ещё и sed с awk.)

Однако существуют инструменты, выгода от использования которых настолько мгновенна и ценность от применения настолько уникальна, что эвристика 80/20 полностью к ним неприменима. Один из них — это fzf. И меня очень печалит то, что многие скачивают его, запускают в командной строке «как есть», а потом просто мотают головой и произносят: «Я не понимаю».

Мне хотелось бы изменить ситуацию. Предположим, что вы работаете на более-менее стандартной машине с Ubuntu. Вы только что установили fzf при помощи стандартного скрипта установки. Что же дальше?
Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии25

Как делается OpenSource: личный опыт

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

Я - автор двух пакетов, входящих более-менее во все дистрибутивы Linux: sane-airscan и ipp-usb.

Кроме того, sane-airscan входит во все основные дистрибутивы BSD (FreeBSD, NetBSD и OpenBSD) и в ChromeOS. ipp-usb в ChromeOS не взяли потому, что он написан на Go, а у них там очень жестко с размером исполняемых файлов, вместо этого они написали свое на Rust, но предпочли бы взять моё изделие, если бы могли. Совсем недавно появился порт ipp-usb на FreeBSD, вероятно, другие BSD тоже скоро подтянутся.

Вместе эти два пакета образуют стек "бездрайверного" сканирования документов для Linux и *BSD, а в перспективе нескольких лет, когда старые сканеры, наконец, вымрут, вероятно других драйверов и не останется.

Кроме того, ipp-usb делает возможным "бездрайверную" печать на USB-устройствах.

Здесь я хочу рассказать, каково оно, быть автором популярных OpenSource пакетов. Хоть эта работа и не принесла мне особых денег (на что я, впрочем, особо и не рассчитывал), она принесла мне бесценный опыт.

В целом, я полагаю, продвижение OpenSource пакетов структурно близко к продвижению на рынок программных продуктов. Занимаясь этой деятельностью, очень хорошо начинаешь понимать разницу между (1) написать программу, которая работает для меня (2) написать программу, которую можно назвать продуктом (3) вывести продукт на рынок.

Первое занимает гораздо меньше времени, чем второе. Второе - гораздо меньше времени, чем третье.

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

Продвинутая работа с логами в Linux

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

Журнал событий, это компонент systemd, который захватывает сообщения Syslog, логи ядра, все события при инициализации системы (RAM, диск, boot, STDOUT/STDERR для всех сервисов), индексирует их и затем предоставляет удобной пользовательский интерфейс для поиска и фильтрации логов. Журнал (systemd journal) можно использовать вместе или вместо syslog или syslog-ng.

Утилита командной строки journalctl, если сравнивать ее с традиционным инструментами для работы с логами в UNIX (tail, grep, sed, awk) более широкие возможности.

Давайте рассмотрим основные возможности которые предоставляет журнал systemd и способы их применения.

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

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

Прошло полгода и даже больше: релиз Linux Mint 21.2 Victoria. Возможности и характеристики дистрибутива

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

В декабре прошлого года вышел Linux Mint 21.1 “Vera” Cinnamon Edition. Сейчас, несколько месяцев спустя, появился и Linux Mint 21.2. Он продолжает «традицию» ветки, которая основана на пакетной базе Ubuntu 22.04 LTS. Сейчас уже доступны сборки на базе MATE 1.26, Cinnamon 5.8 и Xfce 4.18. Еще один положительный момент в том, что Linux Mint 21 будут поддерживать вплоть до 2027 года, это «долгоиграющий» релиз. Ну а подробности о новинке — под катом.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+52
Комментарии14

Изучаем Kirigami от KDE: примеры разработки приложений

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

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

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

Микросервисы Rust в серверном WebAssembly

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

Язык программирования Rust за последние несколько лет значительно распространился. Он несколько лет подряд считается самым любимым языком программирования среди разработчиков и включён в состав ядра Linux. Rust позволяет разработчикам писать корректные программы, обеспечивающие безопасность при работе с памятью, а также такие же компактные и быстрые, как на языке C. Он идеально подходит для создания инфраструктурного программного обеспечения, включая серверные приложения, от которых требуется высокая надёжность и производительность.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии10

Простыми словами о базовых принципах SRE

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

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

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

Как выбрать российскую операционную систему?

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

По состоянию на июнь 2023 года в Единый реестр российского программного обеспечения включена 31 операционная система (ОС) общего назначения!

Как выбрать санкционно независимую защищенную российскую ОС?

Проблематика

Практически все, кто использует иностранное программное обеспечение, столкнулись с проблемами. Среди основных — трудности с обновлением, отказ зарубежных фирм обслуживать используемое ПО, блокировка некоторых функций, утечка данных с зарубежных облачных хранилищ.

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

В корпоративных программах импортозамещения рекомендуется использовать только операционные системы, включенные в Единый реестр российского ПО. Для госсектора обязательные требования закреплены в Постановлении Правительства Российской Федерации № 1236 от 16 ноября 2015 «Об установлении запрета на допуск программного обеспечения, происходящего из иностранных государств, для целей осуществления закупок для обеспечения государственных и муниципальных нужд».

Построение ИТ-инфраструктуры предприятий КИИ с госучастием и бизнеса регулирует Указ Президента Российской Федерации №166 от 30 марта 2022 г. «О мерах по обеспечению технологической независимости и безопасности критической информационной инфраструктуры Российской Федерации». Он предписывает согласовывать закупки иностранного ПО по 223-ФЗ для использования на значимых объектах КИИ, а также вводит полный запрет на использование таких продуктов с 2025 года.

Читать далее
Всего голосов 28: ↑12 и ↓16-4
Комментарии26

Как с помощью Rust FFI превратить ori-файл в jpeg-панораму

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

Всем привет, на днях возникла необходимость использования камеры Xphase без официального приложения, и я столкнулся с тем, что в интернете особо-то этим никто не занимался. О том, что делать с файлами типа ori и о FFI на Rust читайте под катом.

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

Дальняя радиосвязь с LoRa на одноплатных микрокомпьютерах Repka Pi

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

Если вы занимаетесь сбором данных на обширной территории, да еще не охваченной интернетом, возникает задача передачи данных на расстояния, исчисляемые километрами без использования WiFi и сети Ethernet.

В решении этой задачи вам помогут радиомодули, передающие данные с использованием технологии связи на большие расстояния (Long Range, LoRa). Эта технология запатентована компанией Semtech и реализована в микросхемах приемо‑передатчиков (трансиверов), таких как SX1268, SX1276, SX1278.

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

К сожалению, скорость передачи данных LoRa невелика, порядка 2400–19 200 бит/c. Однако этого достаточно, например, для систем телеметрии и удаленного контроля, систем умного дома или других подобных систем.

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