История создания Изначально создавать свою версию дистрибутива с ОС линукс не планировалось. Где-то в ноябре 2004 года на кафедре КБиПА в ЧелГУ появилась лаборатория "Сетевой полигон". В данной лаборатории планировалось изучать взаимодействие различных ОС и ставить эксперименты над сетью. Грубо говоря, в ней можно было делать, то, что не станешь делать на своей машине или в рабочей лаборатории. Почти сразу возникла следующая проблема - если один человек поставил свою ОС и изучает ее, а вскоре приходит другой и ставит свою ОС, то часто были недоступны или машины, коих было 7 штук, или проделанная работа пропадала. Поэтому решено было разработать программу, которая позволяла бы сохранять и восстанавливать операционные системы в максимально короткие сроки. Такая программа была написана где-то к декабрю 2004 года. Сейчас она позволяет сохранить ОС из раздела в 4GB за 10 минут и восстанавливает Linux FC4 за 1 минуту, а Windows 2000 за 2. Но не будем отходить от нашей задачи. Изначально программа запускалась с Rescue CD FC3(RCD) и ручками вводилось множество, не всегда ясных для лаборанта, команд. У этой идеи были очевидные минусы: . Скорость загрузки RCD . Относительная сложность работы К тому времени я уже опыт создания загрузочного диска с ОС Linux. В основу первой версии лег компакт диск сделанный для фирмы Астра-СТ. Единственным плюсом этого компакт диска была быстрота загрузки. Он работал достаточно неустойчиво, и для сохранения ОС приходилось вводить непонятные команды. К следующей версии появился скрипт для автоматического сохранения и восстановления ОС. Частично были заменены старые библиотеки на новые и установлены программы из пакета busybox. Далее развитие шло очень быстро и скорей напоминало кашу, чем создание дистрибутива, о котором тогда никто еще и не задумывался. Чуть позже появилась идея заменить RCD на этот компакт диск, для этого туда были добавлены утилиты типа fdisk, mkfs и т.д. Первые пользователи тогда еще безымянной компашки вполне могли использовать ее для тех же целей что и RCD. Стимулом к выходу новой версии послужила следующая история. У моей девушки - Элины есть брат Эдик. Так этот самый брат очень любил поиграть в игры. Дома у нее стояла Windows XP с файловой системой NTFS. Так же как и я, и она учились на КБ. А раз так, то было решено исправить права на диски, так чтобы брат мог только читать и в некоторые места писать, но не мог запускать. Казалось бы, система отлично защищена и игрушки больше не будут засорять компьютер. Но через какое-то время стали замечать, что места все меньше и меньше, а комп глючит все больше и больше. Оказалось, что Эдик знал старый пароль от администратора, который, как ни странно, совпадал с текущим. Говоря по-русски в системе, был пользователь Элиночка, который являлся администратором, а про системного админа все благополучно забыли, чем и воспользовался юный хакер. Вспылив мы лишили Элиночку прав администратора, а потом, войдя под администратором заблокали и сменили ему пароль. Через какое то время возникло желание поставить программку, а войти под админом нельзя. Пришлось искать программу для сброса пароля в интернете, а потом нести к Элиночке домой. На этом мы потеряли 2 дня. Я подумал и решил, что неплохо было бы поставить эту программу на компашку. Русифицировав её и засунув в основное меню была выпущена новая версия. Поняв, что компашка перерождается в нечто большее, стал думать над названием. Думал не долго. К названию было всего 2 требования - присутствие в нем linux или nix, а также чего-нибудь близкого лично мне. Идеальным решением стало название Elinux (читается Элинукс). Элина - моя бывшая девушка, ради которой я в дальнейшем и развивал проект, хотя иногда и вопреки её желанию. В то время Элиночка училась на 2 курсе, и у нее начались пары по ОС (Операционные Системы). Ставить у нее дома Linux мне было в ломы, поэтому я решил изменить направленность диска и сделать его userfriendli. В результате появилась опция монтирования всех доступных дисков и файловый менеджер Deco. Дальше - больше - были добавлены все необходимые программы для прохождения курса ОС. Шел отлов багов, а баги ловились сетями... Учитывая, что на компашке была конфиденциальная информация (ключи для связи с сервером, программа для сброса пароля в Windows и т.д.), то я принял решение зашифровать содержимое диска и установить пароль на загрузку. В результате, при утере диска злоумышленник не мог им воспользоваться, что было хорошо. Часть истории уже забыта, но вернемся к тому месту, с которого началась нумерация версий. Посчитав, что прошло достаточно много изменений, в том числе и кардинальных первой версией стала версия 0.2. К сожалению, название той версии не сохранилось, а может, его и не было. Известно только, что ChangeLog стал вестись с версии 0.2.2, по причине существования множества компашек с версией 0.2.1, которые отличались друг от друга. Версия 0.2.2 билд 107 - самая ранняя из сохранившихся версий. Следующая версия появилась через 3 месяца в марте 2005, промежуточные билды были, но история их не сохранила. Как сейчас вспоминаю, разработка была прервана по причине моего валяния в больнице с ушибом мозга, который я заработал, пытаясь скатиться на горных лыжах, с не очень большой горочки, и затормозив головой. Пролежав дня 4 с подбитой головой, я подумал, что неплохо было бы по GPRS-ить, и по выходу из больницы ввел эту функцию. Так появилась возможность использовать телефон Motorola и лазить через него в интернет. Так же в этом релизе появилась возможность работать с LVM томами и Raid 0 уровня. Этой особенностью мы обязаны появившемуся серверу с 2-мя 160 гиговыми винтами, которые и были объединены в RAID и LVM. Поддержка RAID была реализована только для RAID 0 и отсутствовала возможность создавать новые массивы. Учитывая, что была возможность работать с ОС в оперативной памяти, я подумал. А по чему бы и не разрешить запись компакт дисков, раз CD-ROM свободен, так появилась возможность записывать компакт диски. Где-то в это же время мне удалось затолкать полноценный компилятор языка C на компашку, а раз был компилятор, то необходимо было и записать документацию. И о чудо! На компашке появились man страницы. Интересна история появления команды man, которая существует в Элинукс. Стандартный man требовал множество зависимостей, да и сами ман страницы были не максимально зажаты. В результате введения нормального мана компашка стала походить на бегемота. Было решено вытащить текст из манов и написать простой шеловский скрипт. Забегая вперед, скажу, что написание и отладка, казалось бы, маленького скрипта, растянулась на пол года. В последней версии все страницы зажаты bzip2 и просматриваются mceditom. В версии 0.2.4 кроме записи СД добавилась работа с rar архивами и возможность создавать и проверять файловые системы minix, ext3, reiserfs, cramfs, isofs. В этой же версии появилась система билдов. Изначально предполагалось, что каждое нововведение - это билд, а 10-20 билдов это новая версия. Но, соизмерив темпы разработки и исправлений, понял, что таким макаром месяца через 3-4 уже будет версия 1.0, которая будет далеко не стабильная. Сейчас новые версии выходят с интервалом в 2-3 месяца и обязательно включают в себя какое-либо крупное изменение. Может существовать 2 различные компиляции Elinux у которых будут совпадать номера версий и билдов, поэтому различия необходимо смотреть в ChangeLoge, это, как предполагается, подтолкнет пользователей к изучению новых особенностей системы. Билд 125. Я являюсь яростным противником всяческих мышей и остальных указательно-тыкательных вещей. Но копировать команды мышкой оказалось намного проще, чем вводить текст вручную. Да плюс к этому Элиночка один раз намекнула, что неплохо было бы вставить эту феньку. Следующие билды были скучные и неинтересные. Из веселого можно разве что рассказать про русский ввод. Изначально вводить текст можно было только в латинском алфавите, что совсем не нравилось преподавателю по ОС. Поэтому первый и ОЧЕНЬ корявый русский ввод был добавлен в 126 билде. А в 127 корявости ввода были немного подправлены. К версии 0.2.5 я решил, что неплохо бы добавить некоторых веселых штучек. И добавил 1 подборщик паролей, 1 взломщик БИОСа и пару тройку фиксов. Как-то раз мы с Элиночкой решили выпендрица, и выйти в аську по GPRS с компашки. Как ни странно это получилось. Но уже в следующем билде(131) пришлось подправлять и GPRS и аську. Вот так - поспешишь - людей насмешишь. Болтать по асе без больших русских букв было тяжело, поэтому в 132 билде русский язык заработал уже нормально. Довольно важной вехой в развитии стал релиз 0.2.6. Я отказался от монолитного ядра. А также исправил код загрузки, так что от версии, которая готовилась для АСТРА-СТ, не осталось почти ничего. А так как на дворе была уже весна, и тем более 1 апреля, то Элинукс заиграл музыку! Но заиграл не очень красиво, а точнее не в той кодировке. Поэтому, взяв исходники mpg321 и еще одной из библиотек, подправив немного, выпустил новый билд, который уже отображал все корректно. В это же время закончился лицензионный ключ на DrWeb и возникла проблема: платить или не платить. Решил остановиться на втором варианте и немного похакал этого доктора. Не прошло и 4 дня с версии 0.2.6, как появляется версия 0.3. Возникает вопрос. Откуда такой скачек версий и что же такое важное произошло. А ничего важного и не происходило - добавились системные утилиты типа добавить юзера и т.д. От сюда и название версии System. А еще через 4дня был удален, надоевший всем deco и установлен mc. Видя радость в рядах пользователей, я не сдержался и объявил новую мини эру развития дистрибутива - теперь с mc. А также сделал новую версию 0.3.1. Вся эта неразбериха происходила на фоне немного осложнившихся отношений с моей вдохновительницей Элиночкой. А раз на личном фронте не ахти, то я, как и большинство ударился головой об работу - то есть погрузился в нее по самое не хочу. На следующий день после удаления деко и выпуска нового релиза у меня был день рождения. Кстати свой день рождения я не считаю праздником, т.к. всегда смотрю, что я сделал за этот год и тому подобные депресняковые мысли. В общем на это время хотелось исчезнуть. А тут представьте, Элинушка приносит вам в лабораторию подарок. Приятно - но это неглавное. Подарила она тогда наушники, но не простые, а USB. И вот я стою посреди класса и думаю, как такую радость использовать - ладно под винду дрова есть, а под пингвина? После часового рытья по и интернету все оказалось до банального просто - в ванильном ядре драйвер был - его просто надо было включить, что я и сделал в 137 билде. В тот день наши отношения были просто замечательными и я готов был забросить все компьютеры, линуксы, работу и т.д. на дальнюю полку и не трогать до второго пришествия. Увы, моим мечтам, к сожалению или к счастью не суждено было сбыться. Через пару дней все вернулось на круги своя. А я в свою конуру, то есть в 423 лабораторию. За 4 дня я сделал очень много. Во первых, зарегистрировал сайт www.Elinux.org.ru и даже немного заполнил его. Во вторых, написал утилиту для сохранения и восстановления изменений компашки на сервере, дискете или флэшке. То есть пользователь работает с компашкой как с обычной ос, а все изменения могут быть автоматически записаны и восстановлены. В третьих, хорошо был подправлен mc. Ну и в четвертых, 3 фикса и выпуск версии 0.3.2 (Config). Потом был месяц очень напряженной работы, который привел Элинукс в стабильное состояние, и появилась версия 0.3.3 (Feanor). Феанор - просто название песни у группы Эпидемия и для меня оно больше ничего не значит. Давайте рассмотрим поподробнее, что же изменилось в системе от билда к билду. В 139 билде появились программки позволяющие работать с расширенными правами на ФС, что было необходимо для сдачи экзамена по одному из курсов. Отмечу, что к тому времени Elinux уже прочно занял место моей домашней ОС. В 140 билде изменения, возникающие при работе с системой, можно было записывать на этот же CD, что позволило использовать только одну компашку и только с ней и работать. Интересно, что все изменения и файлы шифровались, так что злоумышленник не мог прочитать конфиденциальную информацию. В 141 билде все внимание было уделено файловым системам - изменение размера, восстановление файлов. 142 билд принес с собой патч к программе zimg. Бага заключалась в том, что если программа не могла идентифицировать таблицу разделов, то завершала работу. А таблицу разделов OpenBSD она не понимала, => не могла сохранить эту ОС. 143 билд был отмечен работой с ядром linux. В ядро были включены все доступные ФС, и появилась поддержка sshfs - монтирование каталогов сервера, на котором запущен ssh демон. Также можно было восстановить загрузчик любой ОС семейства Windows. К моему удивлению загрузчики всех виндовсов идентичны по своему устройству и принципу работы. Билд 144 - это самый тяжелый билд из всех. Он принес большинство изменений в систему и определил ее сегодняшнее лицо. Этот билд создавался в тяжелом душевном разладе, в то время мне хотелось многое изменить в своей жизни, на как человек ленивый и трусливый дальше изменений в дистрибутиве я не пошел. Перейдем к тому, что было покорежено и добавлено. Во первых, большинство программ были запакованы, что позволило существенно уменьшить размер ОС. Во вторых, этап загрузки был сильно изменен, а большинство программ используемых на этапе загрузки были переписаны или как минимум перекомпилированы. Из загрузчика были удалены все библиотеки, заменен init и т.д. В общем, это был уже другой загрузчик. В третьих, была изменена файловая система для CD, что позволило существенно уменьшить объем CD. В четвертых, было запрещено, каким либо образом менять информацию о владельце, версии и билде. При изменении этой информации работа с ОС становится невозможной. Было сделано около 20 фиксов. Добавились ssh и web сервера. Появился парольный снифер, анализатор трафика, мп3 плэйер, просмоторщик word и excel файлов. Важной возможностью стала полная поддержка NTFS на запись. Если бы вы знали, сколько сил было потрачено на эту возможность. Учитывая, что модуль к ядру не компилится, а драйвер требует даже библиотеки из гнома... Из интересных особенностей стоит отметить появившуюся возможность писать в каталоги ранее доступные только для чтения. Была проведена мощная оптимизация системы, благодаря которой оперативной памяти стало требоваться на порядок меньше. В это же время в лаборатории возник спор о том можно ли жить без иксов и винды. Я как ярый сторонник консоли и линукса доказывал что можно. На резонный вопрос, а как смотреть картинки и фильмы без иксов? Была найдена богом забытая библиотека svgalib, популярная еще во времена doom. Не без трудов она была собрана, ну а под нее нашлись и просмоторщик картинок и мощнейший видеоплэйер. Учитывая возможность использования Элинукса в нелегальных действиях, руководство решило прикрыть распространение и изъять существующие копии, чем сильно повредило развитию. Т.к. у меня одно представление о линуксе, а чем больше голов, тем больше мнений => лучше и интересней. 145 билд принес с собой измененную систему сохранения ОС. В нем появилась возможность создавать патчи к образам, что позволило в разы уменьшить объем хранимой информации на сервере. Этим ново ведением я обязан, как ни странно, сгоревшему винчестеру объемом в 160Gb. Проще говоря, место на сервере резко закончилось и пришлось думать. В личной жизни все было совсем не в ажуре, и я чувствовал себя чужим человеком для Элины (как оказалось в дальнейшем почти так оно и было). И в душевном порыве я разбил свой телефон Motorola. Купил новый Ericsson и включил его поддержку в Elinux. Этот билд был еще ближе к пользователю - можно было читать pdf файлы, включена полноценная поддержка USB наушников, игрушки, регулятор громкости, добавлены новые файловые системы и программы восстановления MBR. Следующий 146 билд был посвящен исправлению ошибок и оптимизации системы. Было сделано несколько фиксов. Удалены некоторые игры и дублирующиеся программы. Из забавного можно отметить возможность играть музыку через бипер. Это очень полезно, когда в лаборатории на несколько машин одновременно ставится ОС и по окончании установки бипер играет смешную мелодию. Сразу замечаешь что такой-то компьютер уже готов. Очень полезной вещью стал консольный графический браузер. Еще ни один человек не остался равнодушным к нему. Наконец то можно почти полноценно бродить по интернету. Версия 0.3.4 (Death). Эта версия вышла на следующий день после окончательного разрыва с Элиной. Отсюда и такое "жизнеутверждающее" название - смерть. В этой версии было сделано несколько фиксов облегчающих работу пользователя: пароль спрашивается 3 раза, при монтировании ntfs спрашивается, необходимо ли монтировать на запись. Наконец-то была добавлена программа для восстановления удаленных файлов с FAT раздела. При разработке этой версии в лаборатории "сетевой полигон" были проведены интересные опыты. Мы пытались объединить 3 компьютера в один большой дисковый раздел и работать с ним по сети. Говоря по-русски у нас, было 3 машины с жесткими дисками по 40Gb и было большое желание объединить их в один виртуальный винчестер размером 120Gb, причем все это дело должно было работать через сеть. Используя NBD (сетевой доступ к блочным устройствам) мы расшарили диски по сети. И потом подсоединили их к одной машине. Далее возникла проблема, как объединить все диски в один массив. Первый вариант - использовать RAID0. Так на диске появилась программа mdadm. Объединение прошло очень быстро и просто. В результате мы получили виртуальный диск размером около 120Gb. Измерив, скорость работы мы получили скорость 6-9 Mb/с на 100мегабтной линии. Решив понять причину столь невысокой скорости, мы выяснили, что большую роль играет скорость процессора. Данные передаются почти параллельно на все машины из сетевого RAID, в результате чего свич начинает подтормаживать. И через каждые 10-15 секунд идет пауза в записи секунды на 3. Второй вариант - LVM том. Создать и запустить LVM намного сложнее. Но результат подтвердил наши лучшие ожидания. Максимальная скорость 12Mb/c, средняя 11-12 Mb/c. Такая скорость достигается благодаря тому, что данные пишутся по порядку - с начала на 1-ое блочное устройство, потом на 2-ое и т.д. Решив выбрать второй вариант, как основной был написан небольшой скрипт, который объединяет несколько блочных устройств в один LVM том. Зачем это нужно? Допустим, у вас есть винчестер, гигов на 100, и необходимо временно сохранить с него данные. В распоряжении есть 3 машины с винтами гиг по 40. Можно конечно переткнуть 3 винта в одну машину и переписать инфу. Но тут возникает две проблемки. Первая, если на большом винте нет ос или необходимо скопировать его побитово, следовательно, грузиться с большого винта нельзя, а все маленькие будут забиты информацией. Загрузиться с CD нельзя. Т.к. для CD-ROM уже не останется места. Вторая проблема - компьютер может быть запломбирован. Нельзя разобрать корпус большой машины или одной из маленьких. В этом случае, грузитесь с CD, запускаете на всех машинах Elinux и делаете сетевой LVM. На этом развитие Элинукс надеюсь, не закончится. И будут еще новые билды и функции. И в конце файла моя любимая фраза: Всегда так будет Те, кто нас любит Нам рубят крылья и гасят свет (С) "Агата Кристи"