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

*nix *

Хаб про UNIX-подобные операционные системы

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

Xv6: увеличим размер страниц виртуальной памяти с 4Кб до 2Мб

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

Научим xv6 работать с виртуальными страницами размера 2 Мб, узнаем, как компоновщик создает образ памяти программы и научим файловую систему xv6 справляться с большими файлами.

Пример: Пусть программа занимает 4 Мб памяти. Размер страницы - 4 Кб. Программа займет (1024 * 1024 * 4) / (1024 * 4) = 1024 страницы памяти. ОС избавит процессор от лишней работы, если увеличит размер страницы до 2 Мб - тогда программа займет 2 страницы.

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

Памятка по работе с JSON в консоли Linux на примере api

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

Язык разметки JSON используется в огромном количестве приложений и систем благодаря своей простоте, а также является стандартным форматом обмена данными между клиентом и сервером в RESTful API. Многие приложения и системы предоставляют интерфейс удаленного управления, который может использоваться как для получения информации (например, для передачи данных в систему мониторинга), так и для управления этой системой через другое приложение или скрипты. В данной статье на примере работы с одним сервисом через API разберемся, как обрабатывать данными в формате JSON через утилиту jq, а также расскажу про другие инструменты.

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

.NET на SBC максимально канонично

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

В интернетах всегда кто‑то не прав. В этот раз, по моему максимально предвзятому мнению, оказался не прав @bodyawm. Для меня.NET в каждой бочке затычка, поэтому меня бобмануло от использования mono в 2024 году. В этой статье я покажу своё видение того, как максимально канонично и современно писать на.NET для GNU/Linux и SBC (Single‑board computer, aka одноплатник).

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

Введение в SCTP

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

Здравствуйте, уважаемые читатели! SCTP — достаточно специфичный протокол, о котором, наверняка, многие не слышали. Тем не менее, он более чем актуален в некоторых областях, одна из них — использование для доставки контрольных сообщений в LTE сетях.

Я относительно недавно присоединился к команде, занимающейся разработкой ПО для базовых станций. Ранее я не сталкивался с данным протоколом, поэтому решил разобраться с ним более подробно и столкнулся со следующей проблемой — относительно малое количество источников, посвященных данной теме. Несомненно, они есть, и я обязательно перечислю те из них, которыми мне пришлось воспользоваться, в данной статье.

В общем, главная мотивация — желание написать небольшую вводную на таком ресурсе как habr для более легкого старта у новичков.

Также, отдельно хочу обратить внимание — в первую очередь упор идет на моменты, на которых можно споткнуться, если о них не знать.

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

Истории

Как генерируется PID-ы в Linux

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

Вы когда-нибудь задумывались, что происходит за кулисами, когда мы запускаем или завершаем процесс? В этом уроке мы узнаем, как Linux генерирует PID для процессов.

Читать далее
Всего голосов 15: ↑6 и ↓9+1
Комментарии5

Как malloc сломала JPGLoader в Serenity, или Как выиграть в лотерее

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

Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.

Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:

-   const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+   const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
    context.bitmap->set_pixel(x, y, color);

приводит к корректному показу картинки. Вроде бы можно считать дело закрытым!

…Но нет. Возникает вопрос, почему вообще произошёл этот сбой?
Читать дальше →
Всего голосов 52: ↑51 и ↓1+74
Комментарии25

Миссия «wayland на gentoo c nvidia» (провалена)

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

Вечером, в районе 8 часов, стукнуло в голову таки посмотрeть на wayland. Вообще такие мысли возникают переодически, но обычно идея быстро затухает после некоторого времени чтения мануалов, ибо нефига не понятно. Десктоп — gentoo с nvidia. Последннее время графическая часть на нем это: Xorg, проприетарные дрова nvidia, LightDM на входе, WM в виде awesomewm. До awesomewm были xfcei3wm. В целом все работает, устраивает, но иногда хочется нового. Надо ли говорить что KDE/Gnome терпеть ненавижу.

Включаю wayland в USE в /etc/portage/make.conf, пересобираю все что его умеет через emerge -avtN @world. Что интересно, пересобирается без ошибок. Насколько я помню, я уже пытался включать этот флаг с мыслью что потом попробую, но в итоге выключал, потому что были проблемы со сборкой некоторых пакетов. Параллельно ищу что там вообще с WM.

Читать далее
Всего голосов 15: ↑14 и ↓1+19
Комментарии25

Установка ubuntu на виртуальную машину при помощи PXE загрузки

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

Я много работаю с PXE загрузкой машин по сети. Для тестирования загрузочных образов я использую qemu и однажды я понял, что для установки ubuntu на виртуальную машину мне удобнее использовать PXE, чем загружаться с образа оптического диска. В данной статье я буду работать с ubuntu, однако подобный подход можно применять и для других дистрибутивов (у меня есть позитивный опыт работы со SLES).

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

Проблемная секунда

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

Сегодня каждый может легко проверить текущее время множеством способов. У нас есть смартфоны, часы, компьютеры, ТВ, холодильники и так далее. Все знают, какой на дворе год, и что он означает. Мы разбираемся во временны́х зонах и знаем, что такое всемирное координированное время (UTC). Всё кажется таким тривиальным. Однако с точки зрения IT-систем здесь существует множество сюрпризов, вынуждающих нас сталкиваться с проблемами, которые возникают очень редко.

В различных IT-системах можно встретить множество нюансов, касающихся времени. Чаще всего они связаны с точностью его измерения и синхронизации между машинами в распределённых системах. В этой же статье я разберу одну странную ситуацию, которая за всю историю случалась лишь несколько раз.
Читать дальше →
Всего голосов 63: ↑60 и ↓3+73
Комментарии63

Автоматизация мартышкиного труда с помощью Xdotool и Ansible

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

Всем привет!

В этой небольшой статье я опишу простой способ, как можно автоматизировать 10 000+ ручных протыкиваний мышкой или клавиатурой на нескольких удаленных Linux-машинах (Xserver + SDDM).

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

А если нет?

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

Драйвер Ethernet для xv6

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

Xv6 - учебная ОС - рассказывает об идеях, что лежат в основе операционных систем.

Научим xv6 работать в сети, познакомимся со стандартом виртуальных устройств VirtIO, деревом устройств DeviceTree, технологией Ethernet, сетевыми протоколами, возведем сетевой мост между виртуальными машинами.

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

Большие и не очень технологии в маленьком доме

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

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

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

Баг Y292B: мы обречены (снова)

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

Измерение времени — очень сложная задача. Я выяснил это, набив шишки при попытке запрограммировать расширяемый хронометр для небесных тел Солнечной системы. Сложность в том, что все календарные системы имеют так много правил и исключений, что сборщик календаря, по сути, становится ещё одним языком программирования. Впрочем, мне хорошо знаком закон Завински*, поэтому я постарался избежать создания ещё одного Emacs.

*Закон Завински — выдуманный закон computer science, высмеивающий неизбежное разрастание фич. Он гласит, что каждая программа рано или поздно постарается прочитать электронную почту. Стоит отметить, что закон сформулирован в 90-х, поэтому и речь об электронной почте. Кстати, я нашёл хороший веб-сайт с другими законами computer science.

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

Y2KY2038 и другие баги Y2xx — это на самом деле не совсем «баги», а простые переполнения выделенного пространства памяти. Unix и подобные ему компьютерные системы измеряют время, выполняя инкремент секунд в единой целочисленной переменной time_t. Естественно, такой хронометраж назван временем Unix, а 0 в нём означает полночь 1 января 1970 года.

В разных реализациях времени Unix для time_t используются разные типы данных. Когда тип данных достигает своего верхнего предела, он «сбрасывается» или до обратного (отрицательного) значения, или до нуля. В текущей основной ветви ядра Linux используются 64-битные числа со знаком. В таком решении точка сброса приходится на 292 277 026 596 год. Он настанет примерно через 292 миллиарда 277 миллионов 24 тысяч лет.

Но что потом?

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

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

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Немного о NixOS. Часть 1. Общая информация и установка

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

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

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

Как мы создавали PaaS-платформу App.Farm — цифровое сердце РСХБ

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

Привет, Хабр! Меня зовут Константин Белкин, я Teamlead SRE в РСХБ‑Интех. Сегодня я расскажу вам про App.Farm — PaaS‑платформу, которую мы самостоятельно разрабатываем и поддерживаем с сентября 2020 года.

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

systemD с 0 до 1: библия сисадмина

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


Что бы кто не говорил, systemD становится стандартом систем инициализацией в линуксе. И с 80% вероятностью все сервера будут с systemD. Не факт, конечно, есть и личные сервера, на которых может стоять хоть Gentoo, хоть Devuan, хоть NixOS.

Некоторые дистрибутивы хотят даже перейти с загрузчика Grub на systemd-boot! Потому знать, как работать с данной системой инициализации, должен каждый сисадмин и просто программист, ибо сейчас он практически везде.

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

А также напишем небольшой скрипт на Python для автомизации некоторых задач. Приятного чтения, господа линуксоиды и просто пользователи!
Читать дальше →
Всего голосов 51: ↑46 и ↓5+53
Комментарии11

Уникальный планшет со съёмным процессором в DDR2-слоте: что за устройство ценой в 100$ сделали китайцы в 2010?

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

Друзья, я почти уверен, что большинство читателей не видели такого диковинного девайса, который будет в сегодняшней статье! Едва ли где-то ещё можно найти планшет, у которого процессор с ОЗУ выполнен в виде съёмного модуля, который стоит в слоте DDR2-памяти, а само устройство настолько просто и гениально спроектировано, что фактически построено на базе USB-хаба и AC97-кодека. Кроме того, планшет построен на базе редкого и диковинного ARMv5 процессора, способного загружаться в Android, Linux и Windows CE. Недавно читатель с Хабра подарил мне такой планшет в нерабочем состоянии и я его оживил. Интересно узнать о том, что за интересный такой девайс и как я его ремонтировал? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 51: ↑48 и ↓3+64
Комментарии45

Firmware в Linux. Коротко и своими словами

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

Рано или поздно системный программист сталкивается с понятием firmware. В данной статье мы коротко рассматриваем, что это, зачем, и как с этим работать.

Disclaimer:
Материал не является сборником best practices и не претендует на фундаментальный труд. Это шпаргалка. Если угодно - application note в свободной форме. Основная задача материала - "сделать короткую статью, которая помогла бы лично мне быстро разобраться, если бы я впервые столкнулся с темой". Если вы знаете что-то лучше - дополнения и замечания по существу приветствуются. Мотивацией для написания послужила недавно встреченная статья, которая как раз объясняла эти аспекты не очень хорошо.

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

Моя первая встраиваемая система под управлением Linux

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

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

Первая часть статьи может показаться не совсем по теме, но в ходе прочтения вы поймёте, что она также имеет отношение к основному тексту. В общем, рекомендую терпеливо прочесть всю историю.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+65
Комментарии24

Реверс-инжиниринг eBPF-программы на примере сокет-фильтра и уязвимости CVE-2018-18445

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

Привет! Меня зовут Евгений Биричевский, в Positive Technologies я работаю в отделе обнаружения вредоносного ПО экспертного центра безопасности (PT ESC). Не так давно исследователи из Black Lotus Labs рассматривали несколько образцов 2018 года — elevator.elf и bpf.test. Пускай образцы и старые, но они используют уязвимости в eBPF, что происходит крайне редко: такие случаи можно практически пересчитать по пальцам.

Исследователи достаточно подробно описали общие функции и особенности ВПО, отметили запуск и использование eBPF-программ, но практически не описали сами eBPF-программы. Мне это показалось значительным упущением, ведь крайне редко удается пощупать in the wild использование уязвимостей в eBPF. Основываясь на дате появления образца и его поведении, исследователи предположили, что используется CVE-2018-18445. В этой статье мы научимся анализировать eBPF, достаточно подробно разберем используемые eBPF-программы, а также подтвердим или опровергнем гипотезу об использовании CVE-2018-18445.

Вперед
Всего голосов 12: ↑12 и ↓0+14
Комментарии0

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