Загрузка Linux.

Июль 16, 2008 by krolser

В продолжение предыдущей статьи о подключении флешки в Debian, я хочу рассказать вам о своём опыте изучения Linux.

У меня возник вопрос, а где в Linux автозагрузка.

Итак, матчасть :)

Linux использует специальные возможности загрузки, называемые SysVinit. Они основаны на концепции уровней запуска (runlevels).

SysVinit (с этого момента мы будем называть его init) работает используя схему уровней запуска. Всего есть семь (от 0 до 6) уровней запуска (точнее, есть больше уровней запуска, но они предназначены для специальных целей и обычно не используются. Документация по init содержит более полную информацию по этому вопросу) man page describes those details) и каждуй из них сообщает компьютеру, что ему делать при запуске соответствующего уровня. Уровень запуска по умолчанию - 3. Вот описание разных уровней загрузки и их назначение:

0: выключение компьютера
1: однопользовательский режим
2: многопользовательский режим без поддержки сети
3: многопользовательский режим с поддержкой сети
4: зарезервирован или используется как 3
5: тоже самое, что и 4, он обычно используется для графического входа в систему (например xdm из X’ов xdm или kdm из KDE)
6: перезагрузка компьютера

Для изменения уровня запуска используется команда init <runlevel>, где <runlevel> нужный уровень запуска. Например, для перезагрузки компьютера можно использовать команду init 6. Это и делает команда reboot, а команда halt является аналогом init 0.

Есть ряд директорий в /etc/rc.d, которые выглядят как rc?.d, где ? является уровнем запуска, и rcsysinit.d, которые содержат ряд символических ссылок. Часть из них начинается с K, другие начинаются с S, затем идут две цифры уровня инициализации. K означает остановку (kill) сервиса, а S - запуск (start). Цисло означает порядок, в котором запускаются скрипты, от 00 до 99; чем меньше номер, тем раньше вызывается скрипт. Когда init переключается на другой уровень загрузки, одни сервисы останавливаются, другие запускаются.

Сами скрипты расположены в /etc/rc.d/init.d. Они проделывают всю работу, а ссылки только указывают на них. Ссылки остановки и запуска указывают на один и тот же скрипт в /etc/rc.d/init.d. Это возможно благодаря тому, что скрипты запукаются с различными параметрами, такими как start, stop, restart, reload, status. Когда обрабатывается ссылка K, то соответствующий скрипт вызывается с аргументом stop. Если же обрабатывается ссылка S, то скрипт вызывается с параметром start.

Но есть одно исключение. Ссылки, начинающиеся с S iв директориях rc0.d и rc6.d никогда не выполняются для запуска скрипта с параметром start. Они вызываются только с параметром stop для остановки чего-либо. Это понятно, потому что когда вы собираетесь перезагрузить или отключить систему, вам не надо ничего запускать, а только остановить систему.

Вот описание параметров, которые можно передавать скриптам запуска:

  • start: Запуск сервиса.
  • stop: Остановка сервиса.
  • restart: Сервис останавливается и запускается заново.
  • reload: Это команда для обновления настроек сервиса. Она обычно вызывается после изменения конфигурационного файла скрипта, но сервису не нужно перезапускаться.
  • status: Показывает, запущен ли сервис и какой у него PID.

Но это еще не всё.

Есть ещё один файл /etc/rc.local. В него вносятся строчки с названиями скриптов для исполнения после полной загрузки системы. Например можно внести такую строчку

/etc/init.d/subversion

которая заставить запускаться Subversion при старте системы.

Источники:

  1. Как происходит загрузка с помощью этих скриптов?
  2. Кратко о настройке Subversion

Как в Debian подключить флешку

Июль 9, 2008 by krolser

Недавно перешел на новую работу. А там Linux, дистрибутив Debian, KDE 3.5. Систему я не ставил. Она была поставлена на один из компов а потом просто скопирована на други.

Так вот. Мне нужно было подключить флешку. После того, как я её всовывал, то мне выдавалось сообщение что я не могу этого сделать по какой то непонятной магической причине :).

Поискав в интернете, я нашел такое вот решение. Нужно просто моего пользователя было добавить в группу plugdev.

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

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

Свой блог.

Март 27, 2008 by krolser

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

Новый комп.

Март 25, 2008 by krolser

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

Новый монитор.

Март 21, 2008 by krolser

Вчера купил новый монитор Philips 220WS8FS за 355 у.е. Сначала я хотел купить
ViewSonic VA2226w. Но мне сказали, что он будет только через неделю или даже через 10 дней. И я решил не ждать. Мне это мониторище, иначе его назвать нельзя, привезли в половину одиннадцатого.

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

Что ж, осталось только купить комп и можно спокойно занимать дипломом дома. Кстати, после 22 дюймового монстра как то непривычно на работе за 17 дюймами :)

Я учусь кататься на коньках.

Декабрь 28, 2007 by krolser

Мой один друг всё-таки затащил меня на каток в ледовый дворец. И, самое интересное, мне понравилось. Негатив остался только от двух вещей Прочтите эту запись до конца »

Мобильное рассписание автобусов.

Декабрь 28, 2007 by krolser

По адресу http://wap.strix.by доступно wap рассписание движения городских автобусов г. Гродно. Для того, чтобы его просмотреть необходимо иметь телефон с wap браузером и желательно GPRS, чтобы платить меньше за трафик.

Прочтите эту запись до конца »

Flash. Как сделать сложный Tween?

Декабрь 10, 2007 by krolser

Как создавать простой Tween я узнал из livedocs

В этой документации имеется пример, который изменяет только одно свойство.


import fl.transitions.Tween;
import fl.transitions.easing.*;
var myTween:Tween = new Tween(myObject, "x", Elastic.easeOut, 0, 300, 3, true);

А как можно одновременно изменять два свойства?

С этим вопрос я обратился на форум flasher.ru. И как оказываеться, есть специальный класс TweenLite. Про него можно почитать на http://blog.greensock.com/

Всё очень грамотно офрмлено, а в комлекте есть генериловка кода под этого класса. Честное слово, очень порадовало.

За подсказку спасибо fljot.

Strix. Переезд на наш домен.

Ноябрь 19, 2007 by krolser

Наш проект под кодовым названием strix переезжает на свой основной домен strix.by.

Из нововведений следует отметить новую карту и постоянно изменяющийся дизайн. Уже практически добавлена функциональность поиска улиц и домов.

Идёт активная разработка. У нас много идей и энтузиазма. Так что, ждите новых новостей.

Java. Как измерить время работы метода.

Ноябрь 14, 2007 by krolser

На днях меня мой teamlead столкнул с этой задачей. Каково самое простое решение? Очень просто…. Берем исходный код и дописываем всё необходимое для измерения. Например, если был такой код


public class C {

public void m() throws Exception {
// do doSomething
}
}

и мы хотим померять производительность метода m(), то можем поменять его например так:


public class C {

public void m() throws Exception {
long timer = -System.currentTimeMillis();
// do doSomething
timer += System.currentTimeMillis();
System.out.println("C.m() " + timer);
}
}

Потом снимаих результаты с консоли и анализируем. Но вот беда, а если мне надо протестировать две версии проекта. Тогда мне придётся компилировать эти две версии с этими изменениями. Не гуд, скажу я вам. Очень муторно и неудобно. Мне то всего надо чуть чуть дописать, а ради этого перекомпиливать кучу всего.

У вот тут нам поможе ASM. Нет, не пугайтесь это не ассемблер, но очень близко. Это framework для анализа и изменения байт кода Java. Так вот с помощью этого “зверька” можно автоматически дописать в байт код всё что вам вздумаеться.

Давайте рассмотрим как с помощью ASM реализовать нашу идею. Всё очень просто.

  1. Качаем сам framework
  2. Качаем мануал по ASM с официального сайта. И, если вы хорошо знаете английский, читаете его и находите в нём ответ на данный вопрос.

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