Обновить
256K+

Linux *

Пишем под *nix

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

Реализация epoll, часть 4

Время на прочтение5 мин
Охват и читатели3K
Это — последний материал из серии четырёх статей (часть 1, часть 2, часть 3), посвящённой реализации epoll. Тут речь пойдёт о том, как epoll передаёт события из пространства ядра в пользовательское пространство, и о том, как реализованы режимы срабатывания по фронту и по уровню.



Эта статья написана позже остальных. Когда я начинал работу над первым материалом, самой свежей стабильной версией ядра Linux была 3.16.1. А во время написания данной статьи это уже версия 4.1. Именно на коде этой версии ядра и основана данная статья. Код, правда, изменился не особенно сильно, поэтому читатели предыдущих статей могут не беспокоиться о том, что что-то в реализации epoll очень сильно изменилось.
Читать дальше →

Реализация epoll, часть 3

Время на прочтение6 мин
Охват и читатели5K
В предыдущих двух материалах (часть 1, часть 2) этой серии речь шла об общих вопросах работы epoll, и о том, как epoll получает уведомления о новых событиях от файловых дескрипторов, за которыми наблюдает. Здесь я расскажу о том, как epoll хранит уведомления о событиях, и о том, как эти уведомления получают приложения, работающие в пользовательском режиме.


Читать дальше →

Хост KVM в паре строчек кода. Примеры на C++ и на Python от эксперта Timeweb

Время на прочтение9 мин
Охват и читатели15K
Привет!

Сегодня публикуем статью о том, как написать хост KVM. Мы увидели ее в блоге Serge Zaitsev, перевели и дополнили собственными примерами на Python для тех, кто не работает с языком С++.

KVM (Kernel-based Virtual Machine) — это технология виртуализации, которая поставляется с ядром Linux. Другими словами, KVM позволяет запускать несколько виртуальных машин (VM) на одном виртуальном хосте Linux. Виртуальные машины в этом случае называются гостевыми (guests). Если вы когда-нибудь использовали QEMU или VirtualBox на Linux, вы знаете, на что способен KVM.

Но как это работает под капотом?
Читать дальше →

Реализация epoll, часть 2

Время на прочтение7 мин
Охват и читатели5.6K
Публикуя перевод первой статьи из цикла материалов о реализации epoll, мы провели опрос, посвящённый целесообразности перевода продолжения цикла. Более 90% участников опроса высказались за перевод остальных статей. Поэтому сегодня мы публикуем перевод второго материала из этого цикла.


Читать дальше →

Как мы прошли путь от разработки прошивок для каждой камеры до создания универсального SDK для вендоров камер

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

Привет, меня зовут Олег Герасимов, я директор центра компетенций IT-кластера Ростелекома. Наша команда среди многих задач разрабатывает прошивки камер видеонаблюдения для B2B и B2C-сервисов. В предыдущей статье я рассказывал, как мы научились самостоятельно разрабатывать софт и прошивки для IP-камер, в том числе и недорогих, и подключать их к облаку.


За прошедшее время камеры с нашей прошивкой уже появились на рынке, и, судя по данным Яндекс.Маркета, — на полках магазинов цены на них начинаются от 1500 рублей. И это уже не дешевый «ноунэйм», а качественные камеры ведущих мировых брендов: Hikvision, Dahua и Uniview. На мой взгляд, это отличный результат!



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

Читать дальше →

Делаем часы из электронной книжки PRS-505

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


Удивительно, но старинная электронная книга Sony prs-505 является очень классным конструктором всевозможных самоделок. В очередной раз взял эту книжку, чтобы сделать себе “бумажные” часы. Мне нравится это решение тем, что цифры получаются большие и яркие, при этом они не светятся в темноте и не мешают спать. Идея часов на электронной бумаге совершенно не новая, но мне просто захотелось снова поиграться с этой классной электронной книгой. В результате получился этакий проект выходного дня, потому что могу. Как обычно, собрал все возможные грабли и ошибки. Свой тернистый путь описал в этой статье.
Читать дальше →

Vivaldi для Linux — открытое признание

Время на прочтение5 мин
Охват и читатели14K
image

Сегодня в мире операционных систем для персональных компьютеров сложилось устойчивое соотношение сил между гигантами индустрии, где львиную долю занимает Microsoft, держит довольно большую группу адептов компания Apple, примерно 1,5% сумела занять Google со своей Chrome OS и ещё около 1,5% с уверенным постоянством уже который год удерживает созвездие Linux-систем (по данным StatCounter). Логично было ожидать, что и среди пользователей браузера Vivaldi соотношение предпочтительных операционных систем будет таким же, но на самом деле для многих станет сюрпризом тот факт, что доля пользователей Vivaldi для Linux в пять раз выше, чем доля пользователей операционных систем Linux на мировом рынке — около 7,5% пользователей браузера Vivaldi использует Linux-системы. Очевидно, что у подобного результата должны быть объективные предпосылки, вот о них мы сегодня и поговорим.
Читать дальше →

Прототип на «коленке»: cоздание приложения для мониторинга датчиков сердечного ритма в спортивном зале

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


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


В результате решили для начала создать, как говорится, «на коленке», прототип устройства, собирающего данные с пульсометров – датчиков сердечного ритма. По результатам работы я решил написать статью для обмена опытом с сообществом читателей, а еще для повышения собственного уровня в практике написания статей. В этой статье мы проследуем поэтапно от идеи до прототипа программы.

Читать дальше →

О сложностях мониторинга работающих процессов в Linux

Время на прочтение9 мин
Охват и читатели12K
Все знают о том, как наблюдать за работающими процессами в Linux-системе. Но почти никто не добивается в подобных наблюдениях высокой точности. На самом деле, всем методам мониторинга процессов, о которых пойдёт речь в этом материале, чего-то не хватает.



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

  1. Логироваться должны сведения обо всех процессах, даже о короткоживущих.
  2. У нас должны быть сведения о полном пути к исполняемому файлу для всех запущенных процессов.
  3. У нас, в пределах разумного, не должно возникать необходимости в модификации или перекомпиляции нашего кода для разных версий ядра.
  4. Дополнительное требование: если хост-система является узлом Kubernetes или использует Docker, то у нас должна быть возможность определить то, к какому именно поду/контейнеру принадлежит процесс. Для этого обычно достаточно знать cgroup ID процесса. Дело в том, что с точки зрения ядра нет такого понятия, как «контейнер» или «идентификатор контейнера». Ядро оперирует лишь такими понятиями, как «контрольные группы», «сетевые пространства имён», «пространства имён процессов», оно работает с различными независимыми API, с помощью которых средства контейнеризации вроде Docker реализуют механизмы контейнеризации. Если попытаться идентифицировать контейнеры посредством ID уровня ядра, нужен уникальный идентификатор контейнера. В случае с Docker данному требованию удовлетворяют идентификаторы контрольных групп.

Поговорим об обычных API Linux, которые могут помочь в решении этой задачи. Мы, чтобы не усложнять повествование, уделим особое внимание процессам, создаваемым с помощью системных вызовов execve. Если же говорить о более полном решении задачи, то при его реализации нужно, кроме того, мониторить процессы, созданные с помощью системных вызовов fork/clone и их вариантов, а так же — результаты работы вызовов execveat.
Читать дальше →

Джентльменский набор команд Linux Часть 1

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


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

Читать дальше →

Bare-Metal Provisioning инфраструктура с нуля

Время на прочтение5 мин
Охват и читатели8.7K
Процесс заливки прошивки

Приветствую, Хабр. Меня зовут Роман, я разработчик встраиваемых систем в Getmobit. Хочу поделиться кейсом по развёртыванию программного обеспечения на большом количестве устройств на производственной линии с нуля. Заставлять людей на производстве бегать вдоль конвейера с флешкой не хотелось, а для автоматизации мне необходимо было четко понимать: на какие шаги можно поделить этот процесс, что на каждом этапе должно происходить, а главное – как модифицировать стандартный процесс, чтобы в итоге выполнять специфичные для нашего продукта операции. Основой для решения этой задачи стала технология загрузки устройств по сети (PXE). Об этом и расскажу.
Читать дальше →

Как мы добавили оттенок совершенства в инструмент для анализа производительности Linux Perf GUI (Hotspot)

Время на прочтение3 мин
Охват и читатели2.6K
В ходе выполнения одного из наших проектов мы усовершенствовали профилировщик Linux Perf GUI разработкой его новой функциональности.
Читать дальше →

Команда find в Linux – мощный инструмент сисадмина

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


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


Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:


  • Дате добавления.
  • Содержимому.
  • Регулярным выражениям.

Данная команда будет очень полезна системным администраторам для:


  • Управления дисковым пространством.
  • Бэкапа.
  • Различных операций с файлами.

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

Читать дальше →

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

Топ-10 лучших дистрибутивов Linux для этичного взлома и пентеста в 2020 году

Время на прочтение3 мин
Охват и читатели87K
image

Топ-10 лучших дистрибутивов Linux для этичного взлома и пентеста в 2020 году
В зависимости от задач этичный хакинг требует использования большого арсенала хакерских инструментов. Самостоятельный поиск – длительный и трудоемкий процесс, который по душе не каждому. Благо, что существуют уже готовые дистрибутивы со всем необходимым инструментарием для:

  • Этичного взлома.
  • Пентестов.
  • Других операций в сфере кибербезопасности.
Читать дальше →

Разбираемся с системными вызовами в Linux с помощью strace

Время на прочтение10 мин
Охват и читатели59K
Перевод статьи подготовлен специально для студентов базового и продвинутого курсов Administrator Linux.





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

В операционной системе можно выделить два режима работы:

  • Режим ядра (kernel mode) — привилегированный режим, используемый ядром операционной системы.
  • Пользовательский режим (user mode) — режим, в котором выполняется большинство пользовательских приложений.

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

JWT аутентификация в CLI приложении на Linux

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

Когда речь идёт о хранении sensitive data в браузере, достаточно воспользоваться одним из двух доступных вариантов: cookies или localStorage. Тут каждый выбирает по вкусу. Однако я посветил эту статью Secret Service – службе, которая работает через D-Bus и предназначена для хранения «секретов» в Linux.

У службы есть API, которым пользуется GNOME Keyring для хранения аутентификационных данных пользовательских приложений.

Читать дальше →

Разбираемся с CAMELK, инструкция по руководству OpenShift Pipelines, а также семинары в формате TechTalk…

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


Возвращаемся к вам с традиционным коротким дайджестом полезных материалов, найденных нами в сети за последние две недели.
Читать дальше: Разбираемся с CAMELK, инструкция по руководству OpenShift Pipelines...

NetSarang xShell — мощный клиент SSH

Время на прочтение3 мин
Охват и читатели37K
image

Всё ещё пользуетесь Putty + WinSCP/FileZilla?

Тогда рекомендуем обратить внимание на такое ПО как xShell.

  • Он поддерживает не только SSH протокол, но и другие. Например, telnet или rlogin.
  • Одновременно можно подключаться к нескольким серверам (механизм вкладок).
  • Нет необходимости каждый раз вводить данные, их можно запомнить.
  • Начиная с 6-й версии появился русский интерфейс, понимает все русские кодировки, в том числе и UTF-8.
  • Поддерживает как подключение по паролю, так и подключение по ключу.

Читать дальше →

Линукс-порт Far Manager: прогресс за 4 года

Время на прочтение5 мин
Охват и читатели72K
Первая публикация исходников far2l, порта Far Manager под Линукс — штуки, которая когда-то считалась принципиально невозможной — состоялась 10 августа 2016го. Поскольку главный разработчик поговаривает о переходе проекта в статус беты, решил написать обзорный пост, как там идут дела и чего удалось добиться за прошедшие четыре года.

Консольная версия


Первый же вопрос, который все задавали и здесь, и на опеннете, и на лоре — а чего не в консоли? Изначально far2l действительно работал только в графическом режиме, через wxWidgets. Это оказалось самым простым способом быстро получить работающий порт со всеми пользовательскими удобствами: иксовым буфером обмена и всеми сочетаниями клавиш, причем с поддержкой событий не только KeyDown, но и KeyUp.

Сейчас это ограничение в прошлом: far2l прекрасно себя чувствует в консоли. Более того, там появились так называемые расширения терминала far2l, поэтому если запускать консольный far2l внутри графического (например, зайдя куда-нибудь по ssh), они «сконнектятся» между собой, и внутренний far2l тоже будет видеть и буфер обмена (с разрешения пользователя, конечно), и все возможные горячие клавиши. Более того, сделана даже специальная сборка putty, позволяющая наслаждаться всеми этими фишками из Windows.

Вот, смотрите, это far2l в GNOME Terminal


Читать дальше →

Секретная информация? Используй 2FA для VPS/VDS

Время на прочтение4 мин
Охват и читатели6.5K
image

Часто задаваемый вопрос, как надежно защитить свой VPS / выделенный сервер от взлома? Поэтому я решил написать инструкцию о внедрении двухфакторной аутентификации.

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