Обновить
256K+

Linux *

Пишем под *nix

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

Настройка окружения в CLI. WSL / Windows Terminal

Время на прочтение17 мин
Охват и читатели108K
Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже senior yaml developer`ом, пользуется command line interface. Далеко не все задумываются об улучшении рабочего окружения в CLI и повышении продуктивности работы в терминале. Мне хотелось бы поделиться своим опытом настройки окружения для работы с Linux из Windows.



Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux. Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).

Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы. Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.
Читать дальше →

Серия постов по Istio Service Mesh

Время на прочтение9 мин
Охват и читатели23K
Мы начинаем серию постов, в которой продемонстрируем некоторые из множества возможностей сервисной сетки Istio Service Mesh в сочетании с Red Hat OpenShift и Kubernetes.



Часть первая, сегодняшняя:

  • Объясним концепцию sidecar-контейнеров Kubernetes и сформулируем лейтмотив этой серии постов: «вам не надо ничего менять в своем коде».
  • Представим основополагающую вещь Istio – правила маршрутизации. На них строятся все остальные возможности Istio, поскольку именно правила позволяют направлять трафик к микросервисам, используя для этого внешние по отношению к коду сервисов файлы YAML. Также рассматриваем схему развертывания Canary Deployment. Новогодний бонус – 10 интерактивных занятий по Istio
Читать дальше: Серия постов по Istio Service Mesh

Запустить Linux в браузере — поможет эмулятор jor1k (со встроенными Monkey Island, Doom и Frontier Elite II)

Время на прочтение3 мин
Охват и читатели5.4K
В материале говорим о возможностях этого открытого инструмента и его технических параметрах. Также расскажем об аналогичных проектах, разрабатываемых в этой сфере.

В предыдущих сериях:


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

Проект ELISA: Linux в Safety-Critical системах

Время на прочтение6 мин
Охват и читатели2.3K
Представляем вам перевод пресс-релиза (февраль 2019) в котором анонсируется проект ELISA, который позволит включать Linux в системы, для которых критически важна безопасность. За наводку спасибо lingvo

image

Arm, BMW Car IT GmbH, KUKA, Linutronix и Toyota присоединяются к проекту ELISA для продвижения функциональной безопасности открытого ПО в транспортной, производственной, медицинской и энергетической отраслях.

21 февраля 2019, Сан-Франциско. Сегодня Linux Foundation запустил проект включения Linux в приложения, требующие безопасной работы, (также называемый ELISA), используемый для создания общего набора инструментов и процессов, чтобы помочь компаниям создавать на основе Linux и сертифицировать безопасные приложения и системы, отказ которых может привести к человеческим жертвам, материальному ущербу или вреду окружающей среде. Опираясь на работу, выполняемую проектами SIL2LinuxMP и Real-Time Linux, ELISA облегчит компаниям создание систем на базе Linux, критических с точки зрения безопасности, таких как роботизированные и медицинские устройства, умные производства, транспортные системы и системы беспилотного вождения. Членами-учредителями ELISA являются Arm, BMW Car IT GmbH, KUKA, Linutronix и Toyota.
Читать дальше →

Делаем кроссплатформенное нативное десктоп приложение на Angular

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

angular-nodegui


Как вы уже наверно знаете, Angular уже есть во многих платформах:



Ну и, конечно, здесь не хватало десктопа (не будем пока про Electron).

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

CreateRemoteThread для Linux

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

Мицуха несёт новые потокиВ WinAPI есть функция CreateRemoteThread, позволяющая запустить новый поток в адресном пространстве другого процесса. Её можно использовать для разнообразных DLL-инъекций как с нехорошими целями (читы в играх, кража паролей, и т. д.), так и для того, чтобы на лету исправить баг в работающей программе, или добавить плагины туда, где они не были предусмотрены.


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


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


Для понимания текста потребуются базовые знания о системном программировании под Linux: язык Си, написание и отладка программ на нём, осознание роли машинного кода и памяти в работе компьютера, понятие системных вызовов, знакомство с основными библиотеками, навык чтения документации.

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

Большая часть суперкомпьютеров работают под управлением Linux — обсуждаем ситуацию

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

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

Девелопишь на .NET Core? Го в Ubuntu, я создал

Время на прочтение3 мин
Охват и читатели37K
image
Photo by Kevin Horvat
Все 12 лет своей карьеры я работал с .NET и был крепко привязан к Windows и проприетарным инструментам разработки. Но, спасибо Microsoft, .NET Core все изменил и теперь разрабатывать для .NET можно почти на чем угодно и в чем угодно. Дело за малым — перетащить на Core свои проекты. Не так давно я решил и этот вопрос и завел трактор для полного переезда на Ubuntu.

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

Дабы сэкономить время будущему себе и тем, кто также планирует попробовать разработку под Linux, я оформил все в виде скриптов. Их можно запустить на чистой Ubuntu и они все настроят пока ты сидишь и пьешь чаек. Также, при желании, их легко допилить под свои нужды.

Если для вас это звучит полезно — добро пожаловать под кат.
Читать дальше →

Так все же, зачем нужен make?

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


Все началось, казалось бы, с простого вопроса, который сначала ввел меня в ступор — "Зачем нужен make? Почему нельзя обойтись bash скриптами?". И я подумал — Действительно, зачем нужен make? (и самое важное) Какие проблемы он решает?

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

Systemd, интерактивные скрипты и таймеры

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


Введение


При разработке под linux возникают задачи создания интерактивных скриптов, выполняемых при включении или завершении работы системы. В system V это делалось легко, но с systemd вносит коррективы. Зато оно умеет свои таймеры.

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

Linux Kernel Library: ядро Linux в форм-факторе so или dll

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

Когда-то читал статью о выборе файловых систем «чтоб везде-везде работало». В ней в очередной раз увидел жалобы, что Ext4 замечательная файловая система, но на Windows есть только кривые неточные проприетарные драйверы. Но отмотаем ленту ещё на пару лет назад: тогда на Хабре (а в те времена — Гиктаймсе) пролетала новость про LibOS — попытку превратить Linux kernel в обычную библиотеку пользовательского режима. Упор там делался на вынос сетевого стека в user space. Как-то раз я решил поглядеть, а жив ли вообще проект, и в их блоге увидел ссылку на своего рода конкурента — проект Linux Kernel Library (LKL). По сути, это порт ядра, так сказать, на аппаратную архитектуру «библиотека пользовательского режима POSIX / Win32».


Чем интересна LKL? Во-первых тем, что она живёт и здравствует, пусть и не в основной кодовой базе ядра. Во-вторых, это более-менее честная поддержка «архитектуры», автоматически делающая доступной бОльшую часть ядра. Более того, прямо в комплекте идут утилиты-примеры: cptofs/cpfromfs, fs2tar, lklfuse. В этой статье мы протестируем LKL на хостовом Linux, заглянем в файл с образом Ext4 (Btrfs, XFS...) без рута и виртуалок и коротко обсудим, как её можно попробовать на Windows.

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

Buildroot: Создание кроссплатформенной прошивки с zabbix-server

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


История задачи


Небольшие по размеру фирмы с одной стороны, нуждаются в качественном мониторинге своей инфраструктуры (особенно в свете повсеместной виртуализации ), с другой стороны, для них финансово тяжело закупать новое оборудование. Также часто встречаются проблемы с серверной/аппаратной: зачастую стоит 1-3 tower-сервера рядом с пользовательскими рабочими местами или в небольшой нише/чулане.


Проще использовать уже готовую сборку(дистрибутив), который достаточно залить на microSD-карту и вставить в распространенный одноплатный компьютер (beaglebone, семейства raspberry pi и orange pi, asus tinker board). Кроме того, такое оборудование стоит недорого и может быть установлено в любом месте.

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

Функция buildargv с помощью Ragel

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

Забавное использование Ragel State Machine Compiler для создания функции разбора строки на int argc, char *argv[].


Все началось с того, что понадобилась функция buildargv, чтобы разбирать строку для последующей передачи в


int main (int argc, char *argv[]) { body }

Ну ладно подумал я, не может быть, чтобы нигде нельзя было позаимствовать, сейчас найдем… И не нашёл...


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

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

Крутые лайфхаки для работы с WSL (Подсистема Windows для Linux )

Время на прочтение3 мин
Охват и читатели45K
Я глубоко погружен в WSL (Windows Subsystem для Linux), и теперь, когда WSL2 доступен в Windows Insiders, это отличное время, чтобы по-настоящему изучить доступные опции. Очень интересная фича, которую я нашел в WSL, — возможность «чисто» перемещать данные между мирами. Это не тот опыт, который вы легко можете получить с полноценными виртуальными машинами, и он говорит о тесной интеграции Linux и Windows.

Под катом подробнее о некоторых интересных вещах, которые вы можете делать, смешивая арахисовое масло и шоколад!

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

Разработка IoT-шлюза на базе Raspberry CM3+

Время на прочтение3 мин
Охват и читатели15K
image
Рисунок 1 — Плата устройства

Большой опыт работы в сфере промышленной автоматизации и АСУТП, казалось бы, должен способствовать тому, что со временем уже много всего видел и много всего знаешь. Но не тут-то было. Оказывается, иногда могут возникать задачи и проекты, которые трудно реализовать стандартными средствами. Так под один крупный проект по мониторингу и управлению в «облаке» одного небезызвестного завода N требовалось найти подходящее железо. Однако оказалось, что в России по требованиям помехозащищенности устройства и открытости системы ничего подходящего не существует. Попытка заказать идеально подходящее нам устройство из-за рубежа провалилась, поскольку на территорию нашей страны оборудование с пометкой «IoT» весьма трудно ввести в промышленных масштабах. Другие же поставщики не устроили сроками доставки в 12 недель при небольших объемах и ценой. Поэтому в голове родилась и плотно осела мысль о создании своего устройства. Причем такого, чтобы оно было универсальным и подходило не только конкретно под этот один проект, а под множество других. В итоге от момента зарождения идеи, подбора поставщиков и корпуса, разработки платы, её отладки и тестирования, написания инструкций и технической документации прошло весьма много времени. Но зато теперь я держу с легким трепетом в руках полностью законченное и рабочее устройство, и могу заявлять, что мы это сделали!
Читать дальше →

Пишем USB-драйверы для заброшенных устройств

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


Недавно на eBay мне попалась партия интересных USB-девайсов (Epiphan VGA2USB LR), которые принимают на вход VGA и отдают видео на USB как веб-камера. Меня настолько обрадовала идея, что больше никогда не придётся возиться с VGA-мониторами, и учитывая заявленную поддержку Linux, я рискнул и купил всю партию примерно за 20 фунтов (25 долларов США).

Получив посылку, я подключил устройство, но оно даже не подумало появиться в системе как UVC. Что не так?

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

Проблема Linux — в плохом маркетинге

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


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

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

Собираем в rpm WireMock — утилиту для создания заглушек над веб-сервисами в Fedora COPR аналоге PPA в Ubuntu

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

WireMock — утилита, библиотека на java для создания заглушек над веб-сервисами. Он создает HTTP-сервер, к которому мы могли бы подключиться, как к реальному веб-сервису.


Fedora COPR — это бесплатный хостинг для размещения пользовательских репозиториев (аналог AUR в Arch Linux или PPA в Ubuntu). Из особенностей встроенная возможность собирать rpm пакеты указав имя PIP и RubyGems.


В этом посте напишу как собирать rpm из вашего репозитория по коммиту в Fedora COPR.

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

Криптографический АРМ на базе стандартов с открытым ключом. Конфигурирование токенов PKCS#11

Время на прочтение4 мин
Охват и читатели2.5K
Еще раз просмотрев функционал утилиты cryptoarmpkcs, обратил внимание на то, что она, в основном работая с криптографическими токенами/смаркартами PKCS#11, не имеет встроенного функционала для их конфирурирования. Речь идет об инициализации токенов, установки PIN-кодов и т.п. И было решено добавить этот функционал. Первым делом для этого пришлось расширить функционал пакета TclPKCS11, библиотека которого написана на языке Си.

Новые функции пакета TclPKCS11


В пакете появились три новые функции:

::pki::pkcs11::inittoken <handle> <slotId> <SO-pin> <label for token>

::pki::pkcs11::inituserpin <handle> <slotId> <SO-pin> <USER-pin>

::pki::pkcs11::setpin <handle> <slotId> <so | user> <oldpin> <newpin>
Читать дальше →

Умный сервис кэша на базе ZeroMQ и Tarantool

Время на прочтение14 мин
Охват и читатели5.3K
Руслан Ароматов, главный разработчик, МКБ



Привет, Хабр! Я работаю бэкенд-разработчиком в Московском кредитном банке, и за время работы у меня накопился некоторый опыт, которым я хотел бы поделиться с сообществом. Сегодня я расскажу, как мы писали свой собственный сервис кэша для фронт-серверов наших клиентов, использующих мобильное приложение «МКБ Онлайн». Статья может быть полезна тем, кто занимается проектированием сервисов и знаком с микросервисной архитектурой, in-memory базой данных Tarantool и библиотекой ZeroMQ. В статье практически не будет примеров кода и объяснения основ, а только описание логики работы сервисов и их взаимодействия на конкретном примере, работающем у нас на бою уже более двух лет.
Читать дальше →