
Однажды мне потребовалось заставить сделать роутер Eltex NTP-RG-1402G-W то, чего он не хотел и даже не мог. Читаем о том, как зайти в него так глубоко, как только возможно и получить над ним власть, ограниченную только вашими знаниями.
Хаб про UNIX-подобные операционные системы
Однажды мне потребовалось заставить сделать роутер Eltex NTP-RG-1402G-W то, чего он не хотел и даже не мог. Читаем о том, как зайти в него так глубоко, как только возможно и получить над ним власть, ограниченную только вашими знаниями.
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 в случае необходимости.
При активной работе с настройкой Linux повышается риск потери данных - информации и настроек, на восстановление которых потребуется не мало времени и рутинной работы в случае сбоя.
Для быстрого восстановления можно использовать возможности файловой системы BTRFS, которая позволяет легко создавать снимки файловой системы.
К сожалению, при установке некоторых современных дистрибутивов (например Ubuntu 24.04 и 24.10) нет возможности создать разные подтома в рамках одной файловой системы BTRFS для того, чтобы поместить в них корневой и другие разделы, например /home. Как правило, установщик позволяет создать файловую систему BTRFS и установить в нее корневой раздел, но при такой конфигурации нет возможности воспользоваться полезной утилитой Timeshift. Для работы Timeshift необходимо, чтобы корневой раздел был помещен в отдельный подтом файловой системы BTRFS. Это можно исправить, создав необходимый подтом и перенастроив загрузчик, чтобы он загружал систему из него.
Перенесем корневой раздел в подтом и перенастроим Grub, чтобы Linux загружался из подтома файловой системы BTRFS.
Я остался под впечатлением от прочитанной первой или второй главы про хакерство в книге Криса Касперского «Техника отладки программ без исходных текстов».
Хоть я и знал о том, что раньше писали в машинных кодах, но когда Крис так подал интересно материал, что я замотивировался сделать небольшой компьютер эмулятор, который бы позволял обрабатывать мой машинный код. Тут дело проще чем кажется, так как я решил взять всего 16 инструкций для этого дела. Плюс ко всему я как‑то давно мечтал сделать hex редактор на ncurses, но каждый раз не было смысла его делать просто так, а теперь сделал.
Инструкция храниться в старшем полубайте, вот их битовые обозначения.
На виртуалке кончилось место ? Не беда, у нас виртуалка - увеличим диск. Не хотим размещать файлы на основном диске ? Не беда у нас виртуалка - добавим новый диск.
Всё бы ни чего, но виртуалка сама железо не настроит, в том смысле что конечно виртуальная машина предоставляет доступ к железу, но ресурсы этого железа программам предоставляет не виртуалка, ресурсы предоставляет операционная система. И пока вы не настроите операционную систему, ваши программы не получат ресурсы этого железа (в нашем случае свободное место на диске для размещения файлов)
Эта инструкция будет о том как настроить операционную систему Ubunta, для управления новым железом (в нашем случае дисковым пространством).
Будет три части:
Как расширить раздел (увеличить диск)
Как добавить новый диск
Как создать базу данных на новом диске
Деплоймент нескольких ASP.Net Core-приложений на VPS сервере с Ubuntu и настройка доступа к ним по доменному имени 3-го уровня.
TL;DR: из-за отсутствия «умных» принт-серверов на рынке сделал собственное устройство, позволяющее печатать и сканировать на старых USB-принтерах через Wi-Fi и Ethernet, с любого смартфона и компьютера под любой ОС, без установки драйверов (AirPrint/Mopria). Девайс включает не только распространённые открытые драйверы, но и проприетарные, в режиме эмуляции x86-кода, plug&play.
Особенностью проекта является со-финансирование открытого ПО: разработчики сервера печати CUPS и сканирования SANE/AirSane получают по $2 с каждого проданного устройства, а оставшиеся деньги формируются в пул, для улучшения существующих открытых драйверов и написания новых.
Всем привет!
Начну с предыстории.
Когда мы в Амазоне планировали переносить сервис с x86/64 на ARM, почему-то никто в нашей команде не поднял тему того, что надо уделить особое внимание работе с многопоточностью и синхронизацией, так как из-за того, что у этих двух архитектур разные модели памяти, могли случиться неожиданные проблемы.
Однако, на тот момент я тоже об этом не знал, и нам повезло, что мы изначально везде использовали модель памяти Sequential Consistency (что это – далее в статье), поэтому все прошло гладко. Теперь, зная про модели памяти и возможные последствия, боюсь представить, что было бы в противном случае.
Как родилась статья
Когда я впервые изучал модели памяти, я мало что понял, и спустя месяц все забыл. Потом прочитал еще раз, но, к сожалению, тоже хватило ненадолго. В итоге я решил расписать все для себя максимально подробно, с красивыми картинками, чтобы при необходимости можно было к ним возвращаться и не тратить много времени на вспоминание.
Статья основана на материалах лекции Computer Science Center (CSC) с курса “Параллельные вычисления” преподавателя Калишенко Е.Л. Крайне рекомендую ознакомиться со всеми лекциями курса (более структурированного материала по теме я еще не встречал). Благо он в открытом доступе – ссылка.
Что такое барьеры памяти и зачем это все нужно?
Начнем с небольшого описания того, как устроена “условная” архитектура процессора. Почему условная? Потому что может отличаться в зависимости от конкретной реализации, но суть похожа.
В то время как настоящие разработчики активно используют в своей работе всякие продвинутые IDE с элементами искуственного разума - некоторым по прежнему хватает текстового редактора.
Нет, в самом деле, а что еще нужно? Несколько файлов с исходным кодом, Makefile для сборки всего этого, MidnightCommander чтобы копировать файлы туда-сюда и удобный текстовый редактор, например Vim.
А еще куча установленных пакетов типа gcc, make, cmake - в общем, настроенная и подготовленная среда, вплоть до указания желаемой цветовой схемы в редакторе.
И вот однажды так получилось, что удобный настроенный компьютер вдруг накрылся медным тазом: жесткие диски тоже выходят из строя.
В этот день, практически в канун католического рождества, 23 декабря 1996 года, вышла оболочка Bash версии 2.0. Последний мажорный релиз на сегодня — это версия 5.3. Сейчас Bash встроена почти во все версии Linux и MacOS, а также заявлена как встроенный компонент Microsoft Windows.
Bash поставляется по умолчанию почти во всех дистрибутивах Linux и современных версиях MacOS и, как ожидается, вскоре он станет неотъемлемой частью Windows Terminal. Bash действительно повсюду и это не фигура речи. Как до этого дошло? В сегодняшней статье мы глубоко исследуем этот вопрос, задавая вопросы именно тем людям, которые причастны к разработке оболочек.
Привет, Хабр!
Это вторая статья о контейнеризации как стиле повседневного использования графических приложений в ОС Линукс.
Здесь мы научимся безопасно запускать браузер и менеджер паролей, так как это близкие потребности. Здесь не будут повторяться инструкции, данные в первой статье, так как предполагается, что они известны читателю.
Посему, без долгих предисловий, ныряем под кат!
Статья описывает настройки в консоли linux и графическом окружении для организации быстрой работы с минимальным применением мыши. Описаны настройки systemctl для автозапуска беспроводного интернета, Xorg (раскладка клавиатуры, клавиатурные сокращения). Горячие клавиши работают во всех трёх проверенных автором средах рабочего стола: Openbox с панелью tint2, xfce4 и lxde.
$ wget https://www.canvio.jp/en/support/download/hdd/ot_ihdd/fw/ISFw.dat
$ grep -C2 MODELNAME ISFw.dat
# ^
# |___ здесь определяем нужное имя файла
$ wget https://www.canvio.jp/en/support/download/hdd/ot_ihdd/fw/sk060202.ftd
# hdparm --fwdownload-mode3 sk060202.ftd /dev/sdX
hdparm -I /dev/XXX
:ATA device, with non-removable media
Model Number: TOSHIBA HDWG480
Serial Number: 3430A00RFR0H
Firmware Revision: 0601
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x006d)
Supported: 10 9 8 7 6 5
Likely used: 10
[...]
0602
.Иногда хочется странного, но чаще ничего не хочется, а странного хочется кому-то другому. Вот и в этот раз появилась необходимость прицепить в pod кубера удалённую samba-шару с одного из виндовых серверов. Вызов брошен - вызов принят.
В последнее время я думала о том, что всё, происходящее в терминале — это та или иная комбинация
Работы операционной системы
Работы шелла
Работы эмулятора терминала
Работы той программы, которая у вас запущена (например, top
, vim
или cat
)
Первые три (операционная система, шел и эмулятор терминала) — это достаточно известные переменные: если вы пользуетесь bash в GNOME Terminal Linux, то можете более-менее представлять, как всё это взаимодействует, а часть их поведения стандартизирована POSIX.
Но четвёртый элемент («программа, которая у вас запущена») как будто бы может делать ЧТО УГОДНО. Как узнать, что будет из себя представлять поведение программы?
В настоящее время планировщик работы с ядрами ЦП, действующий в ядре Linux, предусматривает несколько режимов вытеснения. В этих режимах предлагается целый ряд компромиссов между временем отклика и пропускной способностью системы. Ещё в сентябре 2023 года развернулась дискуссия о работе планировщиков, в результате которой была выработана концепция «ленивого вытеснения». Данная концепция упрощает планирование задач в ядре, при этом улучшая результаты. Какое-то время эта работа протекала тихо, но затем ленивое вытеснение было заново реализовано Питером Зайлстрой в виде этой серии патчей. Притом, что сама концепция с виду работает хорошо, здесь ещё немало требуется доделывать.
Дорогие друзья, сегодня мы займемся такой нетривиальной задачей как алертинг. А именно, мы заставим заббикс отправлять нам сообщения в телеграм бот в случае сбоев и ошибок замеченных на наших серверах.
Я очень люблю различные ноутбуко-подобные устройства на необычных процессорах. Мне нравится коллекционировать и ковырять машинки на MIPS, ARM, RISC, SH3 и других диковинных архитектурах. Пару месяцев назад я джейлбрейкнул и расковырял электронный переводчик на Windows CE, превратив его в полноценный мини-ноутбук, а недавно мне в руки попал весьма интересный девайс — электронный переводчик с QWERTY-клавиатурой, представляющий из себя планшет-трансформер на Android из далекого 2013 года всего за 2 000 рублей. Что за аппарат можно купить за такую скромную сумму и чем он может быть полезен в наше время? Читайте в статье!