Pull to refresh
9
0
Send message

Кунг-фу стиля Linux: организация работы программ после выхода из системы

Reading time9 min
Views19K
Если вы пользуетесь Linux с ранних дней появления этой ОС (или если, вроде меня, начинали с Unix), то вам не надо очень быстро и в больших количествах изучать то новое, что появляется в системе по мере её развития и усложнения. Вы можете разбираться с новым постепенно, в режиме обычной работы. Но если вы только начинаете знакомство с Linux, то вам будет непросто сразу в ней разобраться, сразу понять её особенности. Среди тех, кому приходится изучать Linux с нуля, те, кто пользуется Raspberry Pi, те, кого расстроило то, что Microsoft забросила Windows XP, те, кто развернул облачную среду для своего IoT-проекта, похожего на Skynet.

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


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

Эмулятор RFID на Arduino

Reading time7 min
Views36K

Многие читали мой пост "Эмулятор RFID", где я в деталях рассказывал об устройстве EM Marine, о том как намотать антенну, и как сделать RFID-эмулятор из трёх деталей. Но, будем честны, несмотря на гениальную простоту того устройства, оно достаточно сложно для повторения. Не каждый имеет дома осциллограф, для того чтобы поймать резонанс, да и для прошивки ATtiny85 требуется отдельный программатор.

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

Проект Open Book и сборка E-Book FeatherWing

Reading time10 min
Views7.6K
Нас окружают переносные устройства. Часто мы воспринимаем их как нечто, созданное из стекла и кремния, появившееся в нашей жизни уже полностью готовым к использованию. И обычно даже речи не идёт о том, чтобы как следует понять, как, например, работает что-то вроде Kindle. Не говоря уже о том, чтобы самому создать подобное устройство. Цель проекта Open Book заключается в том, чтобы любой, пользуясь обычными инструментами, которые несложно найти, мог бы самостоятельно создать простое, доступное устройство для чтения электронных книг на любом из существующих языков.

E-Book FeatherWing (далее — просто «FeatherWing») — это самая простая версия электронной книги, созданная в рамках проекта. С функциональной точки зрения это — плата расширения, которая стыкуется с платформой Adafruit Feather M4 Express, дающей устройству микроконтроллер и систему для зарядки аккумуляторов. Почти все компоненты поверхностного монтажа FeatherWing достаточно велики, их несложно припаять к плате вручную. Благодаря этому FeatherWing можно рассматривать как отличный проект для тех, кто хочет научиться выполнять поверхностный монтаж электронных компонентов с использованием пайки.


Электронная книга, созданная в рамках проекта Open Book
Читать дальше →

Технологии и инструменты, на которые стоит обратить внимание в 2021 году

Reading time5 min
Views12K
Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о технологиях и инструментах из сфер DevOps и SRE, на которые, как он полагает, стоит обратить внимание в 2021 году.


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

Разворачивание Minecraft сервера под linux

Reading time5 min
Views30K


В моей прошлой статье я рассказывал, как быстро развернуть свой Minecraft сервер из образа под Windows. И очень многие справедливо заметили, что Windows не очень годится для разворачивания такого типа сервера. А PowerShell через RDP — это какое-то ненормальное извращение.

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

Расширение возможностей Raspberry Pi с помощью загрузочного NVMe-диска

Reading time4 min
Views47K
Возможности подсистемы хранения данных одноплатного компьютера Raspberry Pi можно расширить, подключив к нему NVMe-диск. Такие диски обычно подключают к PCIe, что даёт им потенциальную возможность считывать и записывать данные на скорости более 3000 Мб/с.

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

Раскрыть весь потенциал NVMe-накопителя на Raspberry Pi 4 не удастся. Но у NVMe-диска есть пара преимуществ перед обычной SD-картой. Это — надёжность и скорость. Покупка подобного диска и адаптера к нему не потребует заметно больше средств, чем покупка более старого диска M.2. А если понадобится, то NVMe-диску можно найти и другое применение (ниже, при разговоре о CM4, я ещё к этому вернусь).



Если у вас имеется внешний SSD с интерфейсом USB или M.2-диск, то вы тоже можете воспользоваться этим руководством.
Читать дальше →

Кунг-фу стиля Linux: синхронизация настроек

Reading time9 min
Views11K
Одним из лучших качеств Linux и похожих на неё операционных систем является возможность их глубокой настройки. Если вам что-то не нравится — высоки шансы того, что вы легко сможете это изменить, подправив какой-нибудь файл. Например, рассмотрим bash — командную оболочку, по любым меркам, весьма популярную. Если вам нужно поменять приглашение командной строки — это вполне осуществимо. Если нужно, чтобы клавиша Tab позволяла бы автоматически дополнять имена файлов без учёта регистра — это тоже не проблема. Обычно подобные настройки выполняются в одном из так называемых «файлов профиля», вроде .bashrc, находящихся в домашней директории пользователя.



Если некто работает за единственным компьютером, то никаких проблем с настройками у него не возникает. Он вносит в файл .bashrc, и в другие подобные файлы, необходимые изменения, настраивает систему под себя, и работает в той среде, которая ведёт себя так, как ему того хочется. Проблемы появляются тогда, когда кому-то приходится пользоваться несколькими компьютерами. Возможно, речь идёт о веб-сервере, о настольном компьютере, о машине, играющей роль файрвола, и о нескольких десятках Raspberry Pi. Как настроить все эти системы одинаково? И как, после того, как они все одинаково настроены, поддерживать настройки в актуальном состоянии?
Читать дальше →

Кунг-фу стиля Linux: устранение неполадок в работе incron

Reading time11 min
Views9.5K
Возможно, вам знакома утилита cron, которая позволяет планировать запуск различных задач в заданное время. Мы, кроме того, уже говорили о программе incron, которая реагирует не на события, связанные со временем, а на изменения в файловой системе. Возможно, вам когда-нибудь надо было написать программу, которая, например, обнаруживает изменения в файле и автоматически прошивает какой-нибудь контроллер, или делает резервную копию файла, или отправляет файл по электронной почте. Для решения подобных задач вполне можно воспользоваться incron. Мы обсуждали основы incron, но надо сказать, что в работе этой утилиты есть некоторые особенности, которые сильно усложняют поиск и устранение неполадок, возникающих при её применении. Здесь я хочу рассказать о некоторых приёмах, которыми я пользовался для того чтобы привести в рабочее состояние проекты, основанные на incron.

В моём случае речь идёт о разработке простой системы для работы с документами, хранящимися в директории, находящейся под контролем git. А именно, при изменении Markdown-файла с расширением .md, находящегося в этой директории, генерируются эквивалентные ему .docx- и .pdf-документы. Аналогично — при измерении .docx-документа воссоздаются .md- и .pdf-файлы.



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

Nextcloud: отказоустойчивый деплой для средних компаний

Reading time12 min
Views42K


Есть очень крутой комбайн для совместного ведения проектов, LDAP-авторизацией, синхронизацией файлов с версионированием и чем-то вроде корпоративного мессенджера с видеоконференциями, которые прикрутили в последних версиях. Да, я про Nextcloud. С одной стороны, я сторонник Unix-way и четкого дробления приложений по отдельным функциям. С другой — этот продукт более чем устойчив, работает много лет в нескольких проектах без особых проблем и дополнительные свистелки особо не мешают ему работать. Если очень хочется, то туда можно прикрутить практически любую дичь. Коммьюнити живое и вполне допиливает различные плагины, которые доступны как отдельные приложения.

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

Деплоить будем в отказоустойчивом варианте для небольшой компании в 150-1000 пользователей, но для домашних пользователей тоже пригодится.
Читать дальше →

Идеальный клавиатурный КПК Jornada 720

Reading time10 min
Views16K

Linux на Psion 5mx, Jornada 720, NEC MobilePro 900c

Этой статьёй хочу завершить цикл статей о КПК. Через мои руки прошло громадное количество различных карманных персональных компьютеров, но, IMHO, самый интересный и лучший среди них — это Jornada 720. Это безупречный КПК для своего времени, впитавший лучшее что было на тот момент на рынке, и фактически стал полноценным настоящим карманным ноутбуком, который мог решать вполне себе взрослые задачи, хотя и работал на процессоре ARM 200 МГц. А после того, как энтузиасты портировали на него Linux — эта вещица стала просто пределом мечтаний каждого уважающего гика. Обо всех моих экспериментах с этим КПК, а также пару слов о NEC читайте в этой статье.

Личная файлопомойка. Как я настраивал файлообменник на VPS

Reading time10 min
Views43K


Эпоха флешек давно канула в Лету. Что, впрочем, неудивительно: незаменимый инструмент для переноса файлов в кармане утратил свою актуальность с появлением облачных сервисов — доступных везде, где есть интернет, причем практически с любого устройства. Однако в этой бочке меда не обошлось без маленькой ложки дегтя. Во-первых, бесплатные тарифы у большинства вендоров накладывают строгие ограничения на объем облачного хранилища и количество устройств, на которые можно установить приложение для синхронизации. Во-вторых, используя публичные облачные сервисы, вы доверяете свои файлы сторонней компании и никак не можете повлиять на их безопасность. В-третьих, подобные хранилища не слишком удобны для командной работы, которая весьма актуальна в период мировой короновирусной истерии пандемии. Выход? Можно смириться, а можно организовать сетевое файловое хранилище самостоятельно! Один из примеров решения этой задачи мы сейчас и рассмотрим.
Читать дальше →

Кунг-фу стиля Linux: наблюдение за файлами

Reading time7 min
Views28K
Linux или Unix приятно отличаются от многих других операционных систем тем, что Linux-программы часто выдают сообщения, которые записываются в какой-нибудь журнал. А многие команды даже можно настроить так, чтобы они генерировали бы больше сообщений, чем обычно. Я знаю о том, что в Windows есть средство для просмотра событий, но множество программ не особенно охотно делятся сведениями о своей работе. Это усложняет поиск источников проблем в тех случаях, когда что-то идёт не так, как ожидалось.



В случае с Linux проблема заключается в том, что иногда программы сообщают нам слишком много сведений о своей работе. Как найти в этом море информации именно то, что нужно? Когда киношный хакер сидит перед терминалом и смотрит на текст, прокручивающийся со скоростью 500 строк в секунду, выглядит это впечатляюще. Но в реальной жизни почти бесполезно изучать логи, выводимые на экран с такой скоростью. Хотя, если попрактиковаться, из этого потока информации можно иногда, рискуя ошибиться, выхватить какое-нибудь ключевое слово. Но задачу анализа логов в реальном времени это не решает.
Читать дальше →

Raspberry Pi и RetroPie: делаем консоль для ретро-игр

Reading time9 min
Views101K
Для того чтобы создать собственную консоль для ретро-игр, которую можно будет подключить к любому телевизору или монитору, поддерживающему HDMI, понадобится примерно $50 и немного времени. В этом материале представлено полное пошаговое руководство по сборке и настройке игровой системы, основанной на одноплатном компьютере Raspberry Pi и на операционной системе RetroPie. RetroPie — это замечательный проект, созданный специально для тех, кто хочет превратить Raspberry Pi или другие устройства в эмулятор для старых игр.

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

Psion 5mx и аппаратные развлечения с linux

Reading time8 min
Views15K

Многие из вас знают легендарный КПК Psion 5mx. Он был необыкновенно популярен и был мечтой многих гиков того времени. Карманный клавиатурный КПК, легко помещается в карман. Работает от двух пальчиковых батареек, одной кнопкой полностью обесточивается. Имеет на борту CF (и на моей практике спокойно переваривал объёмы в 8 ГБ!). Машинка опередившая время.

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

5 гаджетов, которые опередили свое время, и другие диковинки

Reading time7 min
Views19K


Если хорошенько вспомнить историю, то оказывается, что всё уже однажды было, а если вспомнить еще лучше, то можно обнаружить, что было и до этого. Изобретения, которые мы называем прорывными, случаются не на пустом месте: им предшествуют годы исследований и поисков. В этой статье мы посмотрим на устройства, которые опередили свое время на годы, если не на десятки лет. Умные часы из восьмидесятых, планшет, который загружался с дискеты, первый мобильник и прочие занимательные штуки.
Читать дальше →

Мониторинг пропускной способности интернет-канала

Reading time8 min
Views15K
Я использую для выхода в интернет LTE-модем. Меня часто интересует то, какую полосу пропускания канала обеспечивает провайдер. Поэтому я и подумал о том, что неплохо было бы сделать систему для мониторинга интернет-канала. Такая система должна была быть компактной и экономичной в плане потребления электроэнергии. В качестве её основы я решил использовать Raspberry Pi Zero. Этот одноплатный компьютер подключается к модему по беспроводной сети. В результате с помощью моей системы можно не только мониторить интернет-канал, но ещё и обнаруживать проблемы с сетью.


Готовая система мониторинга пропускной способности интернет-канала

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

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


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

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

Reading time6 min
Views10K


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

Путь от вычислительной машины к машине координационной

Reading time7 min
Views3K
В наши дни существует огромное количество технологий, ориентированных на различные аспекты облачных вычислений. В частности, речь идёт о контейнеризации и микросервисах. Они — причина того, что мы стали воспринимать приложения в виде распределённых систем, компоненты которых можно легко разворачивать и перемещать в облаке. Я полагаю, что то, с чем мы столкнулись сегодня — это революция. Но дело тут не только в технологиях. Сейчас мы стоим на пороге чего-то настолько огромного, что это может изменить то, как мы воспринимаем и понимаем программы и программные инфраструктуры.



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

Здесь я хочу поразмышлять о новой базовой идее, направленной на работу с вычислительными ресурсами, которая лучше согласуется с реальностью облачных вычислений, чем традиционная модель вычислительной машины. То, о чём я хочу поговорить, я называю «коммуникационной машиной» (communication machine).
Читать дальше →

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

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



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

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

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

Information

Rating
Does not participate
Works in
Registered
Activity