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

*nix *

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

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

Кросскомпилируем под macOS с OSXCross

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

Давно интересовал вопрос возможности кросскомпиляции под macOS. Как оказалось, на самом деле это не составит особых проблем.

В этой статье мы установим тулчейн, а так же кросскомпилируем пару учебных примеров на языках C и Rust. В качестве host будет выступать Ubuntu 24.04 на amd64, а в качестве target - macOS 14 (Sonoma) на Apple Silicon.

Читать далее

Новости

Простой и универсальный способ чтения логов в терминале

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

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

Читать далее

Операционная система в 1 000 строках кода (Часть 1)

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

Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.

Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.

В рамках предстоящей серии статей мы на языке С реализуем базовое переключение контекста, страничное распределение памяти, режим пользователя, командную оболочку, драйвер дискового устройства и операции чтения/записи. И хотя такой объём работы может показаться масштабным, всё это уместится всего в 1 000 строк кода.

Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!

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

Как я случайно купил последний в мире прототип игрового смартфона и доработал его до ума

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

В своём блоге я время от времени рассказываю о различных устройствах, предназначенных для разработчиков портативных гаджетов - девкитах, инженерных прототипах и т.п. Недавно я ковырял китайские барахолки в поисках интересных девайсов для будущих статей и мой взор привлёк весьма интересный игровой смартфон на очень редком процессоре всего за 1.000 рублей. Изучив информацию в сети, я узнал что устройство было разработано небольшим стартапом для локального рынка Китая, а когда телефон приехал ко мне... оказалось, что это не серийное устройство, а редчайший инженерный прототип, о которых в сети нет никакой информации. В сегодняшней статье мы с вами узнаем: почему этот прототип вероятно последний в мире, что из себя представляет смартфон и что у него "под капотом", а также пофиксим некоторые баги в прошивке, которые не успели поправить разработчики устройства. Интересно? Тогда жду вас под катом!

Читать далее

Истории

Я решил, что обнаружил баг…

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

Я работал над совершенствованием эмулятора DOS и внезапно обнаружил, что достаточно тривиальная операция работает неправильно. Когда просишь COMMAND.COM сделать следующее:

echo AB> foo.txt
echo CD>> foo.txt

то вместо ABCD в файл foo.txt записывается ABBC.

Я проверил и убедился, что fwrite() действительно передаются правильные данные, но хитрость в том, что действия COMMAND.COM не так просты, как можно подумать:

  • Открываем foo.txt
  • Записываем «AB»
  • Закрываем foo.txt
  • Открываем foo.txt
  • Выполняем поиск на один байт назад от конца файла
  • Считываем один байт
  • Записываем «CD»
  • Закрываем foo.txt

Такая сложность нужна, потому что COMMAND.COM хочет учесть случай, когда файл заканчивается символом Ctrl-Z (в нашем случае его нет): в этом случае Ctrl-Z необходимо удалить. Почему-то последовательность «поиск-чтение-запись» работала странно. Но почему?
Читать дальше →

Iomega home media drive — восстановление и открытие чакр

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

Лет 15 назад мною в подарок моей будущей супруге было куплено такое устройство — «Сетевое хранилище Iomega Home Media Network Hard Drive». В принципе, нормальная железяка, но она не нашла своего места. Главная проблема заключалась в том, что по самбе хранилище работало неоправданно медленно, а веб‑интерфейс — это не для ежедневного использования.

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

Спустя ещё пару лет было решено, что негоже вещи кануть в Лету, не оставив следа. Ну а заодно, как водится, можно хорошенько поковыряться во внутрянке, авось чего интересного выяснится.

Читать далее

GNU/Linux/nvme-cli/Kingston/firmware

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

О чем эта статья

Вендор NVMe дисков предоставлял пригодные для обновления прошивки под ОС GNU/Linux, но это изменилось.

В статье разбираюсь с новым форматом прошивок и возвращаю возможность обновления.

Читать далее

Подинтерфейсная настройка dhcp на роутере Eltex NTP-RG-1402G

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

Однажды мне потребовалось заставить сделать роутер Eltex NTP-RG-1402G-W то, чего он не хотел и даже не мог. Читаем о том, как зайти в него так глубоко, как только возможно и получить над ним власть, ограниченную только вашими знаниями.

Читать далее

Сравнение Bash и Python при написании скриптов в Linux

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

Sh (от shell) является обязательным командным интерпретатором для UNIX‑совместимых систем по стандарту POSIX. Однако по возможностям он ограничен, поэтому зачастую вместо него используются более богатые возможностями командные интепретаторы, такие как Bash или Ksh. Ksh обычно используется в операционных системах семейства BSD, в то время как Bash — в операционных системах семейства Linux. Командные интерпретаторы облегчают решение мелких задач, связанных с работой с процессами и файловой системой. В данной статье будут рассматриваться операционные системы Linux, поэтому речь пойдёт о Bash.

Python, в свою очередь, является полноценным интерпретируемым языком программирования, и он также нередко используется для написания скриптов или решения мелких прикладных задач при работе с операционной системой. Современную UNIX‑подобную систему сложно представить как без Sh, так и без Python, если только это не устройство с минималистичной ОС вроде маршрутизатора. Например, в Ubuntu Oracular пакет python3 удалить не получится хотя бы потому, что от него зависит пакет grub‑common, от которого, в свою очередь зависят пакеты grub2-common и, соответственно, grub‑pc, то есть непосредственно загрузчик операционной системы. Таким образом, Python 3 можно смело использовать как замену Bash в случае необходимости.

Читать далее

Конвертация корневой файловой системы BTRFS в подтом

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

При активной работе с настройкой Linux повышается риск потери данных - информации и настроек, на восстановление которых потребуется не мало времени и рутинной работы в случае сбоя.

Для быстрого восстановления можно использовать возможности файловой системы BTRFS, которая позволяет легко создавать снимки файловой системы.

К сожалению, при установке некоторых современных дистрибутивов (например Ubuntu 24.04 и 24.10) нет возможности создать разные подтома в рамках одной файловой системы BTRFS для того, чтобы поместить в них корневой и другие разделы, например /home. Как правило, установщик позволяет создать файловую систему BTRFS и установить в нее корневой раздел, но при такой конфигурации нет возможности воспользоваться полезной утилитой Timeshift. Для работы Timeshift необходимо, чтобы корневой раздел был помещен в отдельный подтом файловой системы BTRFS. Это можно исправить, создав необходимый подтом и перенастроив загрузчик, чтобы он загружал систему из него.

Перенесем корневой раздел в подтом и перенастроим Grub, чтобы Linux загружался из подтома файловой системы BTRFS.

Читать далее

Программирование в машинных кодах

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

Я остался под впечатлением от прочитанной первой или второй главы про хакерство в книге Криса Касперского «Техника отладки программ без исходных текстов».

Хоть я и знал о том, что раньше писали в машинных кодах, но когда Крис так подал интересно материал, что я замотивировался сделать небольшой компьютер эмулятор, который бы позволял обрабатывать мой машинный код. Тут дело проще чем кажется, так как я решил взять всего 16 инструкций для этого дела. Плюс ко всему я как‑то давно мечтал сделать hex редактор на ncurses, но каждый раз не было смысла его делать просто так, а теперь сделал.

Инструкция храниться в старшем полубайте, вот их битовые обозначения.

Читать далее

Как добавить или расширить диск в Linux

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

На виртуалке кончилось место ? Не беда, у нас виртуалка - увеличим диск. Не хотим размещать файлы на основном диске ? Не беда у нас виртуалка - добавим новый диск.

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

Эта инструкция будет о том как настроить операционную систему Ubunta, для управления новым железом (в нашем случае дисковым пространством).

Будет три части:

Как расширить раздел (увеличить диск)

Как добавить новый диск

Как создать базу данных на новом диске

Читать далее

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере и настройка доступа к ним по доменному имени 3-го уровня

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

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере с Ubuntu и настройка доступа к ним по доменному имени 3-го уровня.

Читать далее

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

27 марта
Deckhouse Conf 2025
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

20-летие Linux для десктопных систем (часть 2)

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

Коротко о прошлой части: в стремлении создать идеальную десктопную систему, аналогичную GNOME и Debian, молодой Ploum присоединяется к тайному проекту «no-name-yet», который в итоге становится Ubuntu.
Читать дальше →

Умный принт-сервер: печать и скан без драйверов на старых принтерах + финансирование опенсорса

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

TL;DR: из-за отсутствия «умных» принт-серверов на рынке сделал собственное устройство, позволяющее печатать и сканировать на старых USB-принтерах через Wi-Fi и Ethernet, с любого смартфона и компьютера под любой ОС, без установки драйверов (AirPrint/Mopria). Девайс включает не только распространённые открытые драйверы, но и проприетарные, в режиме эмуляции x86-кода, plug&play.

Особенностью проекта является со-финансирование открытого ПО: разработчики сервера печати CUPS и сканирования SANE/AirSane получают по $2 с каждого проданного устройства, а оставшиеся деньги формируются в пул, для улучшения существующих открытых драйверов и написания новых.

Читать далее

Барьеры и модели памяти – explained

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

Всем привет! 

Начну с предыстории.

Когда мы в Амазоне планировали переносить сервис с x86/64 на ARM, почему-то никто в нашей команде не поднял тему того, что надо уделить особое внимание работе с многопоточностью и синхронизацией, так как из-за того, что у этих двух архитектур разные модели памяти, могли случиться неожиданные проблемы.

Однако, на тот момент я тоже об этом не знал, и нам повезло, что мы изначально везде использовали модель памяти Sequential Consistency (что это – далее в статье), поэтому все прошло гладко. Теперь, зная про модели памяти и возможные последствия, боюсь представить, что было бы в противном случае.

Как родилась статья

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

Статья основана на материалах лекции Computer Science Center (CSC) с курса “Параллельные вычисления” преподавателя Калишенко Е.Л. Крайне рекомендую ознакомиться со всеми лекциями курса (более структурированного материала по теме я еще не встречал). Благо он в открытом доступе – ссылка.

Что такое барьеры памяти и зачем это все нужно?

Начнем с небольшого описания того, как устроена “условная” архитектура процессора. Почему условная? Потому что может отличаться в зависимости от конкретной реализации, но суть похожа. 

Читать далее

Не очень стандартное использование Docker

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

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

Нет, в самом деле, а что еще нужно? Несколько файлов с исходным кодом, Makefile для сборки всего этого, MidnightCommander чтобы копировать файлы туда-сюда и удобный текстовый редактор, например Vim.

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

Читать далее

История оболочки Bash и чему она нас может научить

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

В этот день, практически в канун католического рождества, 23 декабря 1996 года, вышла оболочка Bash версии 2.0. Последний мажорный релиз на сегодня — это версия 5.3. Сейчас Bash встроена почти во все версии Linux и MacOS, а также заявлена как встроенный компонент Microsoft Windows.

Bash поставляется по умолчанию почти во всех дистрибутивах Linux и современных версиях MacOS и, как ожидается, вскоре он станет неотъемлемой частью Windows Terminal. Bash действительно повсюду и это не фигура речи. Как до этого дошло? В сегодняшней статье мы глубоко исследуем этот вопрос, задавая вопросы именно тем людям, которые причастны к разработке оболочек.

Читать далее

Подмания: запускаем графические приложения в контейнерах. Часть 2

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

Привет, Хабр!

Это вторая статья о контейнеризации как стиле повседневного использования графических приложений в ОС Линукс.

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

Посему, без долгих предисловий, ныряем под кат!

Читать далее

20-летие Linux для десктопных систем (Часть 1)

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

Двадцать лет назад на меня снизошло озарение: Linux готов для десктопа.

(*смех аудитории*)

Я был одним из тех подростков, которых то и дело звали «починить» компьютер. Соседи, друзья, родственники. Да, такой вот подросток-ботан. Вы наверняка понимаете, о чём я. Но в итоге мне надоело устанавливать взломанные антивирусы и налаживать системы Microsoft Windows, избавляя RAM от вредоносов и оживляя тормозящие процессоры в компьютерах, мигающих светодиодами питания в мольбе облегчить их страдания.

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

И, к моему удивлению, некоторые это предложение принимали.
Читать дальше →
1
23 ...

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