вторник, 1 апреля 2014 г.

Блог переезжает

Делаем очередную попытку перебраться на отдельный хостинг и жить там долго и счастливо. Новый адрес http://maisvendoo.org. Новые статьи будут писаться там. Данный ресурс остается как хранилище старых статей и резервная площадка.

среда, 5 марта 2014 г.

OpenWrt: Применение wol для включения компьютеров по сети

Опубликовав ссылку на предыдущую статью вот тут, получил массу полезных комментариев. Отдельное спасибо человеку с ником Natrio за критику и дельные советы по поводу усовершенствования системы.

Утилита wol реабилитирована. Теперь скрипт запуска компов переписан мною в таком виде

Листинг 1. Модификация скрипта включения компьютера

#!/bin/ash
 
wol -p 9 -i <host> <MAC-адрес>

работает отлично. Скрипт завершения работы и выключения питания переделан с выполнением активации Wake-On-LAN перед выключением машины

Листинг 2. Скрипт выключения питания

#!/bin/bash

ethtool -s <имя LAN-интерфейса> wol g

systemctl poweroff

Кроме того, в BIOS-е управляемой машины активированно включение питания после появления внезапно отключенного сетевого напряжения ~220 В - опция AC Back function в настройках Power Management выставлена в "Full-On". 

вторник, 4 марта 2014 г.

OpenWrt: Интернет-панель управления питанием своими руками

Мечта родилась давным давно, когда линукс более-менее укоренился на моей домашней машине, я получил нормальный доступ в интернет и познал возможность рулить домашним компом удаленно, через ssh-интерфейс. Теперь, уезжая из дома, можно было оставив компьютер включенным, в любой момент получить к нему доступ, что иногда было жизненно необходимо.

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

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

Мечта была несбыточной, пока дома не появился хороший роутер, сразу после покупки прошитый открытой прошивкой OpenWrt. Порадовавшись безотказной работе и удобству настройки сабжа, я крепко задумался - а не кисло бы выставить веб-интерфейс наружу, во внешний интернет, да прикрутить к нему формочку с кнопками "Включить", "Выключить" и "Перезагрузить".

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

понедельник, 3 февраля 2014 г.

OpenWrt: прошивка и настройка роутера TP-Link TL-WR1043ND v2.1

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

Дома, до недавнего времени у меня работал дешевенький D-Link DIR-300 N150 (аппаратная ревизия D1), и, надо сказать, это та ещё дрянь. Во-первых, нормально он заработал только после заливки обновленной (v2.0.17) прошивки с официального сайта (при покупке на нем обреталась v1.0.4). Функционал этого девайса вполне себе нормальный для домашнего использования, но все же не хватало некоторых необходимых мне фич, как-то, например, клиент DDNS. Обычно я использую No-IP, но D-Link по дефолту предоставляет обслуживание только dyndns.com (который стал платным!), собственный кривой dlinkddns.com, и ещё некий мутный, и видимо тоже платный TZO. 

Попытки прошить DIR-300 прошивкой от OpenWrt успехом не увенчались, из-за того что в моем устройстве в качестве процессора установлен Realtek RTL8196E, и хоть я и нашел способ скачать исходники для него (в официальных ветках их нет), но собрать не удалось. Может быть я вернусь к этому вопросу позже а пока...

среда, 28 августа 2013 г.

PhantomEx: Эксперимент в отладчике - работа системных вызовов

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

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

PhantomEx: Системные вызовы

Что нельзя, то нельзя. Но если очень хочется - то можно...!

Народная мудрость


Необходимость в реализации внутри системы доступа к операциям ввода/вывода для пользовательских приложений, и одновременная невозможность выполнения привилегированных команд из пользовательского режима поднимает вопрос - а как же производится, например файловый ввод/вывод в пользовательских программах больших ОС? Для этого применяются так называемые системные вызовы.

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

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

вторник, 27 августа 2013 г.

PhantomEx: Переход в пользовательский режим - лабораторная работа

В прошлой статье мы переключили нашу ОС в пользовательский режим. Рассмотрим теперь этот процесс подробнее.

Для этого выполним пошаговую отладку процесса переключения. Для этого необходимо настроить удаленную отладку ядра, например используя связку Eclipse CDT  + GDB + VMware. О том как настроить эту систему я рассказывал в одной из статей цикла.

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

 

1. Процесс переключения в режим пользователя


Запустим процесс отладки и поставим точку останова на функции init_user_mode(...). Дойдя до этой точки остановимся и посмотрим что мы имеем
Инициализация пользовательского стека