Делаем очередную попытку перебраться на отдельный хостинг и жить там долго и счастливо. Новый адрес http://maisvendoo.org. Новые статьи будут писаться там. Данный ресурс остается как хранилище старых статей и резервная площадка.
PhantomEx: журнал разработки
Создание "игрушечной" операционной системы
вторник, 1 апреля 2014 г.
среда, 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(...). Дойдя до этой точки остановимся и посмотрим что мы имеем
Инициализация пользовательского стека |
Подписаться на:
Сообщения (Atom)