Международная конференция разработчиков
и пользователей свободного программного обеспечения

История одного маленького дистрибутива Linux

Denis Pynkin, Minsk, Belarus

LVEE 2015

Article describes the history of creation and supporting Linux-based infrastructure in ECM department of BSUIR. Described evolution and current state of technical decisions used for creation Linux-based infrastructure.

Введение

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

Историческая справка

Первые эксперименты по внедрению ОС Linux в обучение на кафедре ЭВМ БГУИР начались примерно в 2002-2003 годах с классического подхода к установке системы параллельно с основной ОС. К счастью, этот подход не прижился — нехватка места на диске, легкость “поломать все”, неопытность внедряющих сделали свое дело.

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

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

Примерно с 2003-2004 годов начались попытки поиграться с сетевой загрузкой — начиная с загрузки самописной “системы восстановления” и заканчивая полноценной загрузки систем с развернутым корнем на сервере [SP01]. Тем не менее возникли те же проблемы, что и с локально установленной системой и, в дополнение к этому, добавились проблемы с общим разделяемым ресурсом, добавилась необходимость отслеживания состояния этих развернутых систем и невозможность студентам починить систему самостоятельно. А ломались и “ломались” такие системы довольно часто — как случайно, так и намеренно.

Интересным опытом оказалось использование рабочих машин в качестве тонких клиентов вплоть до исключительно ssh-клиента на серверную систему. Вот уж где было раздолье для любопытствующих личностей! Начиная от форк-бомб и получения привелегий рута, парализующих работу целой лаборатории и заканчивая “посмотри-меня-xxx-в-sd-качестве.avi” файлами с установленными executable битами.

Примерно в 2005-2006 годах стало понятно, что от идеальной учебной системы требуется, чтобы она:

  • загружалась по сети;
  • работала локально на студенческих системах;
  • не использовала НЖМД;
  • работала в режиме R/O;
  • содержала максимально полный набор ПО для разработки;
  • имела графическое окружение, не вызывающее желания тут же убежать.

К тому моменту такие системы уже существовали в виде Live-CD и initrd-only систем.
Несмотря на все достоинства использования initrd в качестве базовой системы, у нее есть один недостаток, перечеркивающий все плюсы такого подхода — вся система находится в памяти, отъедая этот дефицитный ресурс у полезных программ. Кроме того появляется жесткое ограничение на размер образа, что уменьшает количество полезного ПО и требует зачастую нетривиальных оптимизаций.

Отличие же Live-CD от такой же системы, но загружающейся по сети, минимально и, фактически, заключается в начальной инициализации системы[P01].

Примерно в это же время удалось добиться полноценной работы ОС семейства Windows, что дало возможность отказаться от дисковых систем при создании компьютерных лабораторий на кафедре ЭВМ БГУИР начиная с 2007 года[PGO01].

Дистрибутив

На данный момент архитектура построения stateless-систем, загружающихся по сети[P01] уже считается классикой и используется во всех распространенных дистрибутивах.

Разница по большей части заключается в наборе ПО, которое содержится на stateless-системе и его изначальной конфигурации. Наверное максимально близко к нужному составу ПО стоит Knoppix, разрабатываемый Клаусом Кноппером, однако все равно необходимо проводить адаптацию к целевой инфраструктуре.

Кроме того, некоторое ПО сугубо специфично для некоторых курсов читаемых на кафедре ЭВМ, например MPI и Cuda.

Отдельным пунктом хотелось бы упомянуть, что зачастую недостаточно просто установить нужный пакет из репозитория — ему требуется дополнительная настройка для корректной работы, например тот же OpenMPI требует корректной настройки ssh, а так же корректировки настроек для работы с несколькими сетевыми картами.

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

Все вышесказанное приводит к тому, что фактически приходится разрабатывать свой собственный дистрибутив, предназначенный для stateless-работы в учебных заведениях. Естественно, что создание такого дистрибутива с чистого листа крайне ресурсоемкая задача, а так как универсального решения, как и универсального “эталонного” дистрибутива пока не существует, то необходимо делать выбор в пользу одного из существующих решений.

Я не хочу вступать в дискуссии о том, какой дистрибутив брать в качестве базового для решения этой задачи. Просто отмечу, что до начала 10-х годов 21 века далеко не все дистрибутивы задавались вопросом разработки целостной платформы для создания своих собственных “кастомных” решений. Одним из счастливых исключений является ALT Linux, который используется в качестве базовой системы для построения нужного дистрибутива.

На данный момент в дистрибутивах семейства ALT Linux используется система сборки дистрибутива “mkimage-profiles”[S01], которая по своей сути является набором Makefile’ов, знакомых каждому программисту.

Человеческий фактор

В связи с тем, что у Министерства Образования нет четкой политики по использованию открытого ПО в целом, и ОС Linux в частности, в ВУЗах используют, если вообще используют, тот дистрибутив, который нравится местному системному администратору[DKP01]. Поэтому при смене Linux-администратора на кафедре, сборка текущего дистрибутива прекратила свое развитие, а создание новой сборки, на новой базе — достаточно долгий, тонкий и кропотливый процесс, отнимающий много времени и сил.

Немаловажным фактором являлась фактически непубличная разработка предыдущей версии дистрибутива. Причин масса, однако главными из них являются стыд и лень: стадно за те хаки, которые использовались при кастомизации дистрибутива, а с учетом достаточно большого количества мелких изменений, всегда возникает соблазн отложить “генеральную уборку” еще “на чуть-чуть”. И так до тех пор пока не станет слишком поздно.

Масла в огонь подлило открытие совместной лаборатории БГУИР и Epam, в которой проводятся занятия по изучению ОС Linux[PS01]. Внезапно выяснилось, что помимо ожидаемой разницы между различными дистрибутивами ОС Linux в структуре и работе различных утилит, в рамках даже одного дистрибутива изменений уже достаточно, чтобы сорвать часть занятия.

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

Новое время — новые вызовы.

Первый этап по генеральной чистке и приведению правил сборки в порядок был успешно преодолен с помощью разработчика “mkimage-profiles” Михаила Шигорина.

Но, к сожалению одной только чистки и облагораживания недостаточно: какое-то ПО развилось до неузнаваемого, какое-то исчезло, появились новые интересные приложения и популярные языки программирования — все это необходимо осознать и интегрировать. Добавились современные системы виртуализации и управления контейнерами. При этом все же желательно уложиться в лимит 4GB, чтобы иметь возможность создавать DVD-образ.

И, наконец, ведется работа по адаптации получившейся системы в сетях ОС Windows, чтобы была возможность загружать ОС Linux в учебных заведениях (и не только), без изменения их инфраструктуры.

Литература

[SP01] Р.Х. Садыхов, Д.А. Пынькин. Технология построения кластерных систем для образо­вательных целей. Доклады Международной научной конференции SSA’2004. Минск, 26-28 октября 2004.

[P01] Пынькин Д.А, Бездисковые рабочие станции на базе технологий ALT Linux, http://lvee.org/media/presentations/lvee_2008_03-1.pdf

[PGO01] Д.А. Пынькин, И.И. Глецевич, А.В. Отвагин. Использование бездисковых рабочих станций в образовательном процессе БГУИР // Материалы 4 международной конференции “Информационные системы и технологии” IST’2008. Минск, 2008. С. 310-315.

[S01] М.А.Шигорин. Макраме из дистрибутивов: mkimage-profiles. Девятая конференция разработчиков свободных программ: Тезисы докладов / Обнинск, 23–24 июля 2012 года. С.48-49, http://www.altlinux.ru/media/protva-2012.pdf

[DKP01] Derechennik S.S., Kostiuk D.A., Pynkin D.A. Free/libre software usage in the belarusian system of higher educational institutions // Друга міжнародна науково-практична конференція FOSS Lviv-2012: Збірник наукових праць/ Львів, 26-28 квітня 2012 р

[PS01] Д.А. Пынькин, В.В. Шахов. Обучение Linux в корпоративном секторе. Зимняя международная конференция LVEE’2013. Тезисы докладов. http://lvee.org/en/abstracts/57

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Назад