Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
Начну с самого начала. Купил компакт с FC6 Zod. Начитался, что это чуть ли не самый лучший дистрибутив. Вообще-то мне Федора никогда особо не нравилась - то мелкие глюки, которые нужно исправлять самому после установки, то проблемы с виндой, то проблемы с nVidia. А тут все-таки 6-ая версия. Думаю, все исправлено. А зря я так думал.
Начнем с программы установки. Такого гадкого инсталлятора я еще не видел. ИМХО инсталлятор старой Red Hat 6 был намного удобнее, не говоря уже о Mandriva 2006.
Во-первых, зачем для запуска инсталлятора нужно 256 Мб оперативки. На 192 он запускаться отказался, сообщив, что мало папяти. Куда мы идем??? В сторону Windows? Может 7-ая версия Федоры для установки будет требовать уже 1 Гиг????? Ну Виста - это понятно, ей простительно, винда всегда была пожирателем оперативки, но от Линукс я такого не ожидал. Хорошо, что дело было в виртуальной машине VMWare и мне не пришлось бежать в магазин за оперативкой. Я просто увеличил память до 256 Мб. Вообще-то, если меньше 256 установить можно, но в текстовом режиме, но ведь сейчас не 1999 год? Правда?
Далее описывать установку в виртуальной машине не буду, лучше перейду на реальную. Вчера я устанавливал в виртуальной, а сегодня на обычный комп. Недочеты при установки от этого не изменились, поэтому проще описывать на реальной машине, чтобы никто не думал, что все это из-за того, что я запускаю инсталлятор в VMWare.
Дошел до разметки диска. У меня 768 Мб оперативки (теперь реальная машина - не забываем), 250 уже было отведено под своп (до этого на hda5 стояла Mandriva 2006 (и до сих пор стоит))), а на hda6 - asp11, которым я решил пожертвовать ради FC6). А инсталлятор сообщает мне, что моя система будет нестабильно работать, поскольку у меня размер свопа меньше размера оперативки. С какой стати мне ставить размер своп раздела 1 Гиг? Или это уже новые системные требования линукса? Да будет покруче даже, чем у Висты. В общем, изменять размер свопа я отказался и продолжил установку как есть.
Дошел до выбора пакетов. Тут меня инсталлятор поразил на повал. Почему не пишется, сколько будут занимать на диске выбранные пакеты? Я знаю, что у меня hda6 3 с небольшим Гб, ну отметил KDE, GNOME, средства для разработки. Начало ставиться. А потом, когда было установлено более 80%, сообщило что не хватает 255 Мб для продолжения установки? Спрашивается: что нельзя было сначала вычислить размер пакетов, а потом сравнить с к-вом имеющихся мегабайтов???? Тем более инсталлятор так тщательно вычислял зависимости пакетов - наверное минут 5, за это время можно было и размер посчитать! Ксати, вчера в виртуальной машине было то же самое - осталось 95% а мне сообщили что не хватает 40 Мб!!!
Куда катятся дистры???? В сторону виндузятников??? Понимаю, что хочется все сделать проще, но может не нужно перегибать палку? Может они рассчитывали, что у всех винты на 200 Гб и места хватит - по-любому влезет? Да пусть у меня винт на 160 Гиг, но я хочу поставить на раздел размером 3 Гига. Может и не влезет, но скажите до установки - я отменю выбор того же GNOME, чтобы все поместилось.
Вообще Линукс всегда был рассчитан на квалифицированного пользователя, который понимал, что он делает. Сейчас идет рассчет вообще не понятно на кого, а так не должно быть! Этот крик души прежде всего адресован разработчикам дистры.
Спрашивается, что тут такого? А то, что вчера я потратил лишний час если не больше времени - можешь себе представить, сколько длится установка в виртуальной машине? И сегодня опоздал везде, где только мог из-за этого дистры.
Ладно, идем дальше. Со второго раза поставил. Кстати, выбор загрузчика меня тоже добил. А где старый добрый LILO? Почему только Граб? Может Граб и лучше, но ИМХО LILO удобнее. Во всяком случае для меня. А его нету. В Mandrive 2006 есть, причем по умолчанию. Да пусть будет уже Граб, но почему он напрочь не видит, что у меня еще на hda5 Линукс установлен - пишет в конфиг только себя и винду??? непорядок! В общем загрузчик не ставил.
Перегрузился в Mandriva и потратил еще минут 15 для того, чтобы заставить Федору загружаться - раза три вылазило Kernel panic. Но это мелочи.
Дальше загрузка. Красиво, не спорю, но оно не стоит тех мегабайтов, потраченных впустую. Потом при запуске начался второй этап настройки - то, что у у Mandriva после установки пакетов. То есть добавление дополнительных пользователей, настройка звуковой платы и т.д. А после всего этого система предложила перезагрузится.... Мдя... Винда и все. Явно, что разработчики Федоры смотрели в сторону винды.
Если в Mandriva мы после установки получаем уже полностью готовую к работе систему (1 перезагрузка), то тут перезагрузок 2 и еще нужно много чего руками исправлять. Вот только до сих пор не могу понять, зачем понадобилась вторая перезагрузка. Хоть убей, но не могу понять.
Вот так вот. Далее попробую поработать с этой системой и опишу дальнейшие впечатления, а сейчас убегаю - уже и так опоздал на полтора часа. Спрашивается и зачем я в 7-45 начал установку этой дистры? Чтобы окончательно испортить настроение с самого утра?
С нетерпением жду компакта с Mandriva 2007 - должен быть на днях. Может хоть она оправдает ожидания.
Последний раз редактировалось: den (Пт Dec 08, 2006 6:21 am), всего редактировалось 1 раз
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
После установки Федора тоже меня не порадовала. Вообще не порадовала. Во-первых, абсолютно не настроен менеджер пакетов, точнее он настроен на репозитарий в Интернете, а не на локальный DVD. С одной стороны удобно, но что делать пользователям, у которых нет Интернета – менеджер пакетов даже не загрузится. Да и согласитесь устанавливать пакеты из Интернета не очень выгодно – денег на Интернет не напасешься. А вдруг пользователь подключился к Инету и выбрал установку GNOME. Менеджер начнет установку GNOME с Инета и через несколько часов пользователь обнаружит, что его счет у провайдера похудел на пару сотен Мб. Не очень хорошо. Правда? Ладно настроил депозитарий yum. Но а что делать тем, кто не знает как это делать? Тем более сам менеджер работает медленно как-то и при выборе пакетов изрядно подтормаживает. А потом меня ждало разочарование. При попытке установки пакета менеджер сообщил, что пакет невозможно установить, поскольку неизвествен тип URL – media. Класс! В общем, забросил я его и решил устанавливать пакеты с помощью старого доброго rpm. Первым делом установил mc, который почему-то не был установлен по умолчанию.
Во-вторых, нет поддержки MP3. Опять эти байки про лицензирование и т.д. Хотел расслабиться и послушать музыку. Послушал... В общем сейчас допишу это и перегружусь в Винду. Чтобы послушать музыку.
В-третьих. Куда пропал самый удачный ИМХО проигрыватель xmms?
Конечно, есть и положительные моменты. Во-первых, обновленный KDE с темой Пластик. Смотрится красиво. Нравится. Радует глаз. Во-вторых, доволен что заработал мой Lexmark – в Mandriva 2006 он определялся, но не хватало какого-то файла и поэтому принтер отказывался работать. Особо я с этим и не разбирался – времени нет. В-третьих, понравился обновленный OpenOffice 2.0 – работает намного быстрее! Особенно загружается – ну просто летает по сравнению с 1.1
Вот таким был первый день с Федорой. Сейчас 16 ноября. А этот текст выложу на сайт в лучшем случае только 18 или даже 20 числа – перестраиваю свой Интернет.
В любом случае по ходу разборок с Федорой буду писать подробный лог, который потом выложу на сайте.
Во-вторых, нет поддержки MP3. Опять эти байки про лицензирование и т.д. Хотел расслабиться и послушать музыку. Послушал... В общем сейчас допишу это и перегружусь в Винду. Чтобы послушать музыку.
Почитал и про себя отметил, что не зря потерял ссылку на FTP дяди Фёдора.
Mandriva 2007 действительно радует. Красиво и быстро. Только пожалуй грузится долговато.
Зарегистрирован: 08.02.2006 Сообщения: 1322 Откуда: 74 регион, Россия
Maxim писал(а):
Почитал и про себя отметил, что не зря потерял ссылку на FTP дяди Фёдора.
Mandriva 2007 действительно радует. Красиво и быстро. Только пожалуй грузится долговато.
ну это попровимо думаю.. тут наткнулся на один менеджер загрукзи, не init а по другому называется.. найду сразу сюда выложу.. ускоряет загрузку рабюстанции как минимум в два раза по утверждениюю.
InitNG -начни сначала (взято с ЧИП-специала)
С InitNG мне довелось познакомиться еще в версии 0.06 — одной из
первых публично доступных. Тогда новость о нем облетела все ленты.
И я не удержался от того, чтобы не поэкспериментировать.
И не зря: тогда я впервые увидел, что замученный жизнью Celeron
480 со 128 Мбайт памяти, оснащенный к тому же множеством сервисов,
может запускать пингвина в полет быстрее, чем это делает стоящий
рядышком Athlon 1700+ с 256 Мбайт.
Правда, с той версией пришлось изрядно повозиться, поскольку стабильно она работать никак не хотела и периодически норовила отказаться то от загрузки kdm, а то и других сервисов. Тем не менее старый добрый шаманский бубен меня выручил, и эта версия простояла на том самом компьютере очень долго, периодически выдавая сбои, но в целом обеспечивая достаточный уровень надежности работы.
Да, InitNG все еще является экспериментальным софтом, поэтому накладки в процессе его использовании весьма вероятны. Позже я заменил старую версию на InitNG 0.3.x, поборолся с новыми глюками и отметил чуть более стабильное поведение системы. Однако по-настоящему беспроблемной стала только лишь последняя ветка InitNG версий 0.4.x.
| Init |
Что же такое InitNG и что он призван заменить? InitNG является альтернативой Init, который однозначно наличествует в вашем дистрибутиве, каким бы он ни был. Init — процесс номер один в системе, именно ему ядро передает управление после инициализации, и именно он запускает все, что вы от него хотите на этапе загрузки. К тому же Init является предком любого процесса, запущенного в вашей системе.
Так сложилось, что эта область свободных систем практически не развивалась. В GNU использовался аналог — SysVinit, и всем жилось, в общем-то, хорошо. Ровно до тех пор, пока не обнаружилось, что Windows XP загружается быстрее многочисленных пользовательских дистрибутивов GNU/Linux.
Время загрузки явилось основным катализатором исследований в этой области, а InitNG стал одним из результатов этого трудоемкого процесса.
Естественно, проект не представляет интереса для серверов, поскольку в этой области машины не должны выключаться и перезагружаться вообще, а уж если и придется, то минута-другая погоды не делает. InitNG, равно как и многие из последних довольно значительных изменений в GNU/Linux, предназначен для настольных машин простых пользователей, которые не любят долго сидеть перед монитором в ожидании окончания процесса загрузки. Правда, пока
он не используется как стандарт ни в одном дистрибутиве.
Пользователям придется разминать пальчики в консоли и познавать таинства конфигурации своих систем.
| Проблемы Init |
В чем же проблема старого Init, почему ему потребовалась замена? Он плохо дружит с параллельным запуском сервисов, это факт. Весь процесс загрузки должен быть расписан в скриптах строго последовательно. Это плохо, так как большинство сервисов на самом деле не зависят друг от друга, но при этом они не могут запускаться параллельно из-за ограничений Init.
Как правило, все запускаемые сервисы что-то считывают с диска, а это всегда происходит очень медленно. Во время та InitNG —
-----
С InitNG мне довелось познакомиться еще в версии 0.06 — одной из
первых публично доступных. Тогда новость о нем облетела все ленты.
И я не удержался от того, чтобы не поэкспериментировать.
И не зря: тогда я впервые увидел, что замученный жизнью Celeron
480 со 128 Мбайт памяти, оснащенный к тому же множеством сервисов,
может запускать пингвина в полет быстрее, чем это делает стоящий
рядышком Athlon 1700+ с 256 Мбайт.
Роман Химов
--------------------------------------------
кого ввода/вывода процессор мог бы уделить внимание дру-
гому сервису, но старый Init этому не способствует. Анало-
гично происходит и с coldplug, который задает работу ядру по
общению с устройствами, а это тоже весьма длительная опе-
рация, и хорошо бы в эти миллисекунды простоя занять про-
цессор чем-нибудь другим, не менее полезным.
| Новации InitNG |
InitNG решает описанную проблему путем параллельного запу-
ска всех не зависимых друг от друга сервисов, что способствует
равномерной загрузке процессора и периферии, в результате
все сервисы вместе успевают загрузиться значительно быстрее.
InitNG ладно скроен и имеет модульную архитектуру, хотя
это больше интересно программистам, которые захотят его рас-
ширить. Параллельность же запуска обеспечивается правиль-
ной системой скриптов, в которой порядок их выполнения рас-
считывается на основе реальных зависимостей сервисов.
Надо отметить, что существующая сегодня система загрузки
в Gentoo имеет схожую структуру (основывается на зависимо-
стях) и даже позволяет параллельно запускать сервисы, однако
старый Init ограничивает эти возможности, и реальный при-
рост скорости загрузки от этого весьма невелик. Новый InitNG
полностью лишен подобных недостатков.
| Установка и дистрибутивы |
Надо признать, что наиболее комфортно InitNG чувствует се-
бя в той среде, где он и вырос, а именно в Gentoo. Еще в
очень ранних версиях для него был доступен ebuild, который
теперь также входит в основной репозиторий Gentoo. Поэто-
му все, что от вас здесь потребуется, — это ввести emerge initng,
а portage сделает все самостоятельно. Хотя минимальная
конфигурация, наверное, все-таки потребуется.
Обладателям других дистрибутивов придется засучить ру-
кава. Пользователям Debian и его многочисленных отпрыс-
ков (в том числе и Ubuntu) здесь повезло несколько больше,
поскольку для этих систем существует специальный пакет
Debian (http://alioth.debian.org/projects/pkg-initng), который
упрощает процесс установки.
Остальным же придется производить сборку своими ру-
ками из исходников (http://initng.thinktux.net), что на самом
деле не так уж и плохо. InitNG имеет достаточно умный
Makefile, который пытается догадаться, какой дистрибутив у
вас установлен (соответственно подстраивая скрипты запуска
сервисов) и что за сервисы стартуют по умолчанию (соответ-
ственно составляя список запуска у себя).
Отмечу, что все тесты и примеры конфигураций основаны
на InitNG версии 0.4.4. Проект очень бурно развивается, по-
4 / 2 0 0 5 L I N U X | C H I P
ɇÙËÍË Á‡„ÛÁÍË, ÔÓÎÛ˜ÂÌÌ˚ ‚ bootchartd. InitNG ӷӄ̇ΠInit ÔÓ˜ÚË ‚ ‰‚‡ ‡Á‡
58
C H I P | L I N U X 4 / 2 0 0 5
a d v a n c e d Ò Ë Ò Ú Â Ï ‡
этому, возможно, к моменту выхода журнала некоторая ин-
формация будет уже не совсем точной.
После установки необходимо добавить еще один пункт в ме-
ню загрузки вашей системы и в нем прописать ядру параметр
init=/sbin/initng. В GRUB он напрямую помещается в конец
строки «kernel (..)/...», а в LILO это означает добавление строч-
ки 'append = «init=/sbin/initng»' в желаемый пункт. Не стоит по-
ка что делать эту конфигурацию загружаемой по умолчанию.
Далее необходимо попробовать перезагрузиться с InitNG и
приготовиться к работе в чистом консольном режиме — ставлю
пять к одному, что с первого раза X и [kgx]dm у вас не запустят-
ся. Равно как и многие другие сервисы. Не нужно бояться этих
проблем — хотя вывод об ошибках может быть и пугающим,
навредить системе вы вряд ли сможете, незапускающийся сер-
вис не означает разрушенной конфигурации, достаточно пере-
загрузиться со старым Init — и все будет в порядке.
| Притирка и доводка |
К огромному сожалению, каждый дистрибутив считает чуть
ли ни своим долгом использовать собственные загрузочные
скрипты, а также расположение и формат конфигурацион-
ных файлов, скрипты-помощники и прочее. Но к этому
можно отнестись с большим энтузиазмом — настраивая
InitNG, вы лучше узнаете свою систему, а любители LFS
(Linux from Scratch) уже могут примерять InitNG к своим
системам в качестве единственного Init. В конечном счете
на это вряд ли уйдет так много времени (все зависит от ва-
ших навыков работы с консолью).
Итак, пробуем перезагрузиться с InitNG. Если у вас все за-
работало, знайте — вы редкий везунчик. Скорее же всего, вы
увидите, что система загрузилась не полностью, и вывод
InitNG запнулся на уровне 70–80% загрузки, при этом первая
консоль совершенно непригодна к использованию, а «ик-
сы»... о них на время вообще лучше забыть.
Вспоминаем о существовании других терминалов и смело
нажимаем «Alt+F2». По умолчанию InitNG запускает agetty
на шести терминалах, но первый из них запускается только
в случае абсолютно успешной загрузки стандартного уровня
исполнения. Заходите сразу как root и не стесняйтесь.
Основная задача на данном этапе — выявить сервис или
демон, который помешал полноценной загрузке. Для этого
придется познакомиться с инструментом ngc (New Generation
Init Control), который входит в состав InitNG. Он позволяет
полностью управлять процессом загрузки с InitNG. В нашем
случае потребуется ngc -s, который покажет статус загружен-
ных сервисов/демонов.
Скорее всего, в выводе будет обнаружено несколько сер-
висов, ожидающих разрешения зависимостей (START_DEP_
FAILED), а также один или два, которые не сумели запустить-
ся (FAIL_STARTING). Ваша задача — избавиться от «плохих»
сервисов и демонов.
Ненужные сервисы можно просто удалить из рассмотре-
ния с помощью ng-update del service/badservice, а проще, на
мой взгляд, сразу перейти к прямой правке конфигураци-
онных файлов InitNG. Загрузочные скрипты и настройки
InitNG располагаются в /etc/initng. Там же вы обнаружите
несколько файлов *.runlevel, *.i и каталогов с файлами *.i.
Файлы *.runlevel описывают уровни исполнения InitNG,
вы можете загрузить любой из них, передав ядру в качестве
параметра необходимый уровень в виде runlevel=level. Фай-
лы *.i описывают конкретные сервисы и демоны, запускае-
мые InitNG, а в каталоги они просто логически группиру-
ются для удобства.
Таким образом, вы сразу можете перейти к правке фай-
лов system.runlevel или default.runlevel (нетрудно догадаться,
что именно этот уровень запускается по умолчанию, однако
он зависит от параметра system) с целью удаления сервисов
и демонов, которые дали сбои. В этих файлах используется
простейший список, одна строка — один сервис.
Необходимая настройка
çÓ‚˚ ‰ÂÏÓÌ˚
К сожалению или к счас-
тью, но в составе InitNG мо-
жет и не оказаться скрипта
запуска используемого ва-
ми демона. Однако теперь
вы уже гуру в области его
конфигурации, поэтому, ду-
маю, у вас не возникнет
проблем с добавлением но-
вых скриптов. Вот в качест-
ве примера самописный
скрипт запуска pure-ftpd:
daemon daemon/pure-ftpd {
need = system/initial system/
mountfs system/hostname
net/lo
require_network
daemon = /usr/sbin/pureftpd
}
çÂÛ‰‡˜ÌÓ ‡ÒÔÓÎÓÊÂÌË Ò‚ËÒÓ‚. åÌÓ„Ë ËÁ ÌËı ʉÛÚ
‡Á¯ÂÌËfl ÍÓÌÙÎËÍÚÓ‚
4 / 2 0 0 5 L I N U X | C H I P
Û Ò Í Ó Â Ì Ë Â Á ‡ Ô Û Ò Í ‡ L i n u x 59
Однако какая же польза от InitNG, если мы вырежем все
запускаемые сервисы и демоны? Они нам все-таки нужны,
поэтому пора познакомиться с файлами *.i, описывающими
все, что стартует при помощи InitNG. Стоит отметить, что се-
годня также имеется возможность использовать XML для
описания сервисов, но это сложнее и не так наглядно, как ис-
пользование формата *.i. Оставим XML заботливым дистри-
бьюторам, которые добавят к ним красивые графические на-
стройки; кто-нибудь из них, возможно, решится в следующем
году сделать InitNG основным для своего дистрибутива.
| Сервисы |
Чем отличаются сервисы от демонов? Все очень просто,
демоны — стандартные и привычные всем sshd или mysqld —
запускаются и функционируют в течение всего времени рабо-
ты системы. Сервисы же, в терминологии InitNG, являются
сущностью, запускаемой единожды на этапе загрузки или вы-
грузки системы. Примеры — coldplug или настройка часов;
все это выполняется один раз при загрузке, настраивает то,
что надо, и завершается.
Примеры очень простых сервисов можно также увидеть в
system/local.i, system/ntpdate.i и system/swap.i. Рассмотрим
синтаксис на примере system/swap.i:
service system/swap {
need = system/initial system/mountroot
start = /sbin/swapon
start_args = -a
# start {
# #!/bin/bash
# /sbin/swapon -a
# exit $?
# }
}
Каждый сервис объявляется как «service имя_сервиса», и все
его описание заключается в фигурные скобки. Оно состоит из
ключевых слов и их параметров. Самое главное, что должно
быть у сервиса, — это start и/или stop.
Посмотрите на различия между закомментированным фор-
матом (а комментарии по традиции начинаются с «#») и рабо-
чим (аналогично отличаются system/local.i и system/ntpdate.i):
в них представлены два разных способа задания действий.
Первый использует ключевые слова start и start_args.
Команда, выполняемая InitNG при запуске такого сервиса,
формируется напрямую из них и тут же вызывается. В данном
примере это /sbin/swapon -a.
Второй способ задания действий значительно более гиб-
кий, поскольку все, что заключается в блоке start{} (или
stop{}), является обычным shell-скриптом — со всеми вытека-
ющими последствиями. Но такой метод работает медленнее
(и именно поэтому в system/swap был закомментирован), так
как для его запуска InitNG приходится разворачивать отдель-
ный процесс интерпретатора командной строки и отдавать
ему скрипт. Для простых сервисов, потребности которых мож-
но описать в первом формате, он явно менее предпочтителен.
Простейший сервис может состоять только из одного блока
start и будет успешно работать, однако сервисы могут зависеть
от других сервисов, и мы переходим к наиболее интересной ча-
сти InitNG — работе с зависимостями.
| Зависимости |
В простейшем виде используется ключевое слово need, в
котором через пробелы вписывается все, что требуется за-
пустить, до того как будет запущен описываемый сервис.
В примере с system/swap это system/initial и system/mountroot;
действительно, все сервисы зависят от успешного заверше-
ния работы скрипта начальной инициализации системы, и
Дополнительная информация
èÓÎÂÁÌ˚Â ‚ÓÁÏÓÊÌÓÒÚË ngc
После того как вы, наде-
юсь, разрешите все пробле-
мы, связанные с настрой-
кой InitNG, стоит поближе
познакомиться с инстру-
ментом ngc. Продолжив это
знакомство, например, с
ngc -O. Эта нехитрая коман-
да расскажет вам все об оп-
циях, которые можно ис-
пользовать в описаниях
сервисов и демонов, по-
скольку на самом деле их
несколько больше, чем бы-
ло упомянуто ранее. Более
того, они постоянно разви-
ваются, расширяются и
изменяются, поскольку
InitNG — все еще очень
молодой продукт.
Также сразу же стоит за-
помнить ngc -u и ngc -d,
которые соответственно
запускают и останавливают
сервисы и демоны, переда-
ваемые следующим пара-
метром. Полезен и ngc -r,
позволяющий сервисы пе-
резапускать. Остальное уже
не так интересно, но при
желании доступно для
изучения по ngc -h.
臂ËθÌÓ ÔÓ‰Ó·‡Ì̇fl ˆÂÔӘ͇ Ò‚ËÒÓ‚ — ‚Ò Á‡ÔÛÒÚËÎÓÒ¸
60
C H I P | L I N U X 4 / 2 0 0 5
a d v a n c e d Ò Ë Ò Ú Â Ï ‡
почти всем необходимо иметь возможность записывать ин-
формацию в корневой раздел.
Важно, что описываемые в need зависимости являются кри-
тическими для сервиса, и без удовлетворения всех зависимос-
тей InitNG даже не будет пытаться запускать сервис.
Несколько другой подход представляет использование
ключевого слова use. Описанные с его помощью зависимости
позволяют задавать порядок запуска сервисов/демонов, если
они описаны в заданном уровне запуска. То есть, в отличие
от need, если вы не собираетесь запускать нечто из списка use,
все будет в порядке.
Например, в daemon/apache2 среди use числятся daemon/
sshd и daemon/mysql. Это значит, что если вы запускаете на
своей машине sshd, то apache2 будет запущен после него.
Однако если вы не запускаете sshd, то apache2 будет успешно
запущен и без него. Аналогично и с демоном mysql.
| Дополнительные возможности |
Одной из интересных зависимостей, вынесенной даже в отдель-
ное ключевое слово, является также require_network. Как можно
догадаться из названия, она используется теми сервисами и де-
монами, которые нуждаются в сетевом подключении. Локаль-
ное сетевое подключение lo эту зависимость не удовлетворяет.
Помимо этого также доступен env, в формате env =
VAR=something можно передавать переменные окружения
вызываемым сервисам и демонам. Таких определений может
быть несколько для одного сервиса (соответственно, будут
заданы несколько переменных окружения). Это и отличает
env от других описателей.
Также можно задавать nice, suid и sgid — соответственно
приоритет, пользователь и группа, от имени которых будет
запущен процесс. На закуску имеются stdout и stderr, с по-
мощью которых можно перенаправлять стандартные пото-
ки ввода и вывода ошибок.
| Демоны |
Что касается различий сервисов и демонов, последние имеют до-
полнительные возможности и несколько иной формат задания
процессов. С одной стороны, их можно описывать с помощью
start{} и stop{} (в качестве примера смотрите daemon/ openvpn), но
InitNG имеет гораздо более интересные возможности.
Существует ключевое слово daemon — опять-таки в раз-
ных форматах. Пример использования короткого формата
можно подсмотреть в daemon/apache2: как видите, сущест-
вует и daemon_args для передачи параметров демону. При-
мер формата daemon{} — в daemon/acpid.
Необходимо пояснить, что InitNG не просто запускает
демоны, он за ними еще и приглядывает. По умолчанию
считается, что если демон возвращает управление (стан-
дартное поведение, например, sshd), значит он так или ина-
че был убит, а стало быть, InitNG попытается перезапустить
его. Именно поэтому в скриптах для запуска демонов стоит
использовать exec (как в примере с acpid).
Но можно поступить иначе. Для sshd, например, можно
использовать параметр -D, и тогда все будет в порядке.
А можно найти и альтернативные способы. Пускай демон
возвращает управление InitNG, но мы можем отслежи-
вать его состояние через файл pid. Для этого и предназ-
начена опция pid_file. Пример ее использования есть в daemon/
vixie-cron; он возвращает управление в любом случае,
но благодаря pid-файлу InitNG может убедиться в том, что
он жив-здоров.
Все это позволяет обеспечить надежность функционирова-
ния демонов. В случае их внезапной смерти по тем или иным
причинам они будут перезапущены (без необходимости
применения дополнительных решений вроде daemontools). Од-
нако, чтобы обеспечить подобную функциональность, стоит
прописать в параметрах демона «respawn=yes», так как стан-
дартное поведение от версии к версии здесь менялось (в версии
0.4.4 по умолчанию перезапуск отключен).
| Прочее |
Осталось только упомянуть возможность использования шабло-
нов имен, а также то, что имена файлов не обязаны совпадать с
именами сервисов (хотя это удобно). Прекрасным примером
последнего является файл net/net.i, где описаны net/lo и net/*,
имеющие разные зависимости и последствия (network_provider
в net/* как раз и удовлетворяет зависимость require_network).
Шаблоны здесь позволяют единообразно работать с сетевыми
подключениями любого вида; запускаемое в данный момент под-
ключение передается в переменной ${NAME}.
| Настройка |
Всей этой информации должно с лихвой хватить для осознан-
ного изменения настроечных файлов InitNG, что в конечном
счете приведет вас к желаемому результату.
В деле исправления настроек в первую очередь стоит об-
ратить внимание на параметры, с которыми запускаются те
или иные демоны/сервисы — убедиться в том, что запуска-
ются именно те бинарники и что они лежат там, где предпо-
лагает это InitNG. Он действительно здорово подстраивает-
ся под окружающую обстановку (если не верите, сравните
содержимое файлов *.ii и *.i каталога initfiles в дереве исход-
ников InitNG после сборки), но всему есть свои пределы, и
иногда он может ошибаться.
Например, созданный на SUSE 9.1, использованной в каче-
стве тестовой площадки, скрипт daemon/apache2 планировал
вызвать /usr/sbin/apache2 -D PHP5 -k start, в то время как PHP5
на этой системе не стоит, а файл /usr/sbin/apache2 вообще
отсутствует. Вместо этого в SuSE 9.1 есть /usr/sbin/apache2ctl,
которому необходимо передать единственный параметр start.
Однако и этого маловато — pid-файл для Apache 2 в SUSE 9.1
виден как /var/run/httpd2.pid, а не /var/run/apache2.pid. После
этих тривиальных изменений Apache стал запускаться без
каких-либо проблем.
А вот на примере mysqld уже можно рассмотреть тви-
кинг скриптов InitNG. Скрипт по умолчанию запускал
/usr/bin/mysqld_safe и зависел от сетевого подключения
(require_network), однако mysqld_safe всего лишь обеспечи-
вает поддержку mysqld в запущенном состоянии и логиро-
4 / 2 0 0 5 L I N U X | C H I P
Û Ò Í Ó Â Ì Ë Â Á ‡ Ô Û Ò Í ‡ L i n u x 61
вание некоторой информации. Последнее вам может быть
просто не нужно, а первое вполне может сделать сам
InitNG. Поэтому можно смело вписать «daemon=/usr
/sbin/mysqld», а в daemon_args прописать все желаемые
параметры, после чего добавить respawn=yes и убрать
require_network, если вы используете этот сервер только с
локальной машины. MySQL после этого прекрасно запус-
кается и работает, а killall mysqld продемонстрирует живу-
честь сервера — InitNG его моментально перезапустит. За-
мечу, что в отличие от mysqld_safe эта связка значительно
надежнее, поскольку первый можно просто убить, а вот
если убить Init, будет слишком заметно.
По поводу «иксов» надо заметить, что основные проблемы
с ними сводятся к загрузке модулей. Необходимо убедиться в
том, что к моменту запуска [gkx]dm у вас будет загружено все,
что касается устройств ввода/вывода. Например, драйвер гра-
фического планшета вместе с evdev или, не дай бог, проприе-
тарный драйвер NVIDIA. Если с этим возникают какие-то
проблемы, можно прописать принудительную последова-
тельную загрузку необходимых модулей в отдельный (или су-
ществующий, хотя это не лучший вариант) сервис, от которо-
го будет зависеть запуск [gkx]dm.
Все это потребует от вас определенных знаний о своей си-
стеме и ее настройках, используемых демонах, утилитах,
скриптах и, соответственно, их настройках. Отличный под-
сказчик — /etc/init.d, где расположены «эталонные» скрипты
запуска всего, что нужно вашей системе (вы же работали на
ней до этого, не так ли?). Пользуйтесь ими как ценными ис-
точниками информации.
Хочется отметить, что на сегодня у InitNG есть еще одно
огромнейшее преимущество перед стандартным init с любым
стилем загрузки — он очень прост, и у вас есть прекрасная
возможность проделать персональную конфигурацию с ми-
нимумом усилий, которая будет очень быстро запускаться и
поддерживать работу необходимых вам демонов.
Как видите, ничего сверхсложного.
| И о результатах |
Так ради чего же боролись? Предлагаю взглянуть на краси-
вейшие графики загрузки, полученные с помощью
bootchartd (www.bootchart.org). Результат очевиден — время
загрузки уменьшилось практически вдвое. При этом еще
остался резерв для оптимизации, поскольку из скриптов
можно убрать как минимум все специфичные для Gentoo
проверки и настройки (если, конечно, вы не используете
именно Gentoo), а также вообще обойтись без использова-
ния некоторых конфигурационных файлов, вписав желае-
мое прямо в скрипты.
Полезно будет прогнать на своей машине bootchartd и
выявить узкие места, которые тормозят загрузку системы,
после чего заняться их устранением. Как говаривал Ричард
Столлмен, «счастливого хака!» |
Самостоятельная работа
֢ ·˚ÒÚÂÂ?
Чтобы добиться еще более
высокой скорости загрузки,
можно переписать скрипты
InitNG для своей конфигура-
ции. Если это дополнить пере-
компиляцией ядра и отказом
от coldplug (все ведь уже в
ядре?), то можно сократить
время загрузки еще в полтора-
два раза — взгляните на еще
одну картину загрузки систе-
мы. Машина по-прежнему та
же, сервисы по-прежнему
те же, однако время — уже
всего лишь 18 секунд!
Надо отметить, что за чертой
двадцати секунд результаты
загрузок довольно сильно
варьируются (минимум,
которого удавалось достичь
на тестовой машине —
17 секунд). Например, за-
державшийся ответ сервера
на DHCP-запрос может запро-
сто изменить время загрузки
на несколько секунд, причем
еще вопрос — в какую сторо-
ну, поскольку bootchart счи-
тает окончанием загрузки
полноценный графический
логин. Кстати, bootchart в та-
кой конфигурации уже тоже
начинает мешать сервисам,
и сам успевает запустить мо-
ниторинг процессора/диска
только тогда, когда половина
дела уже сделана.
Также становится очевидным
то, что дальнейшее сокраще-
ние времени зависит в пер-
вую очередь от винчестера и
файловой системы, посколь-
ку узким местом становится
ввод/вывод — он нужен всем
стартующим демонам, и па-
раллельный запуск здесь мо-
жет даже мешать.
С чего начать хакинг скриптов
InitNG? В первую очередь об
этом расскажет bootchartd, но
вот некоторые общие реко-
мендации:
3 Начните с оптимизации са-
мых первых скриптов, запус-
кающихся при старте, их за-
вершения ждут все.
3 Трезво оценивайте, дейст-
вительно ли сервис не может
жить без сети.
3 Разберитесь, нужно ли ему
дожидаться, когда смонтиру-
ются все файловые системы
кроме корневой.
3 Перейдите на журналируе-
мые ФС и избавьте себя от
mountroot.
3 Не стесняйтесь изучать
скрипты-обертки для запуска
разных сервисов и скрипты на-
стройки сети вашего дистрибу-
тива. Затем подумайте, нужно
ли вам все это, и не проще ли
написать их самим для своей
системы и конфигурации?
А теперь опять по поводу Федоры: только что обнаружил, что в ней нет программы adduser, useradd тоже нет. Добавлять пользователей нужно только system-config-users. Команды passwd тоже нет. Вместо нее userpasswd - графическая прога изменения пароля. Не пойму, кому мешали adduser и passwd???
Зарегистрирован: 08.02.2006 Сообщения: 1322 Откуда: 74 регион, Россия
den писал(а):
Завтра получу новую Мандриву - сравню
а я сеюе купил SUSE 10.1 Released постаивл на работе и даже он у меня в домен виндовый вошел... дальше не брался пока неокгда все. а ночевать на работе не тянет. да и жена не поймет..
Приветствую Вас Господа!
Скачал я и установил данный дистрибутив буквально через 3 часа после того как его официально выложили на ftp сервере федоровском.
Установил я все это добро без особых проблем, но вот до сих пор мучаюсь с данным дистрибутивом.
И никак не пойму окончательно в чем проблема.
А именно после установки (что интересно и до установки ) и настройки всех необходимых мне служб, типа squid, apache, iptables, sendmail и прочих, сервак глючит по черному.
А именно при перезагрузке любой командой reboot или shutdown -r now сервак иногда виснит, причем не всегда, но часто. Ругается что мол хочет размонтировать разделы, а они уже размонтированы и встает в мертвый ступор.
И частенько сервак виснит в процессе работы. Причем три дня может работать без проблем, а потом зависнуть так, что на пинги отвечает, но не одна служба не работает.
Вот такие вот дела. Как я уже только не изголялся.
Работает федора на полностью Интеловском железе, мать Интел, проц Pentium III 800Mhz, 512 ОЗУ и т.д.
У меня стоит Федорино Горе 6 уже полгода...
За период эксплуатации поставленно обновлений объемом с дистриб самого Горя... Заменено 2 версии ядра, в итоге плюнул перекомпилил под свои нужды. Сейчас на Горе болтается SQUID+Apache+SARG+PHP+mrtg, форум построенный на IPB, клиент torrent, а также настроен шлюз... ну и конечно мое рабочее место. Критических сбоев не было, в принципе я доволен, но как всегда стоит сервер холодной замены на старом добром Red HAT 9.0.
Для более полной картины опишу основной сервак и сервак холодной замены.
Основной:
P4 HT 3.0 GHz\RAM 512 Mb\HDD 120 Gb\GeForce FX 5200\2 Lan
Холодной замены:
Celeron 633 Mhz\Ram 196 Mb\HDD 10 Gb\S3Trio3D\2 LAn
Впечатления:
Федорино Горе 6 слишком уж виндово как-то хотя запас прочности еще есть пока, но уже не тот. Рабочее место ДА! Сервер 7/8.
9 Красная шапка комментариев нет.!!!
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах