Спецкурс по Linux, весна 2007, 09 лекция (от 20 апреля)
Материал из eSyr's wiki.
Предыдущая лекция | Следующая лекция
Авторский вариант:
Содержание |
[править] Как самому сделать дистрибутив
Это будет состоять из теории, потому что практика будет состоять из перечисления команд и исправления их неисправимывх рособенностей.
Необходимость сосздания собственного дистрибутива не сщущалась до последнего времени. Тем не менее, 2/3 из них именно самодельные, сделанные на колене, причёём на обычном лысом колене, и большая часть из них есть небольшая модификаця муществующих.
Довольно долго дело изготоааления дистрибутива было жделом компании, поэтому до сих пор в этом деле много работу которую нужно делать, зная многое. К тому же, если мы доведём дистрибутивостроение до полной прозрачности, то Вася Пупкин, как тодбео у него что-то не заработает, должен изучать большойц пласт различной информации. В образовательном дистрибутиве те же проблемы, ибо с одной стороный он должен быть гибким, с другой, не прищлось бы много учить.
Вдруг, ни с того, ни с сего, захотели сделать дистрибутив. Если мы хотим, то хотим потому что хотим, или есть цели и задачи, которые надо рещить. Для начала надо решить, для чего это сделать:
- Цели --- зачем?
- Задачи – что и как?
- Довольно часто оказывается, что либо для ваших целей достаточно выбрать существующий дистрибутив
- Существующий дистрибутив и модифицируете его нетехнологичным образом
- Создание нового дистрибутива --- если ни один не приводит к цели, а модификация более ресурсоёмка. Новый дистрибутив делать на базе другого рисковано.
У ГК цели научиться это делать. Поэтому он не модет научиться ни первое, ни второе, ибо задача --- освоить третий способ.
Дистрибутив --- такой набор программных продуктов, который позволяет сделать ОС на компьютере.
4 этапа того, что мы делаем, когда делаем дистрибутив:
- Сборка, deployment. Есть набор, нужно сделать так, чтобы этот набор появился на каком-то носителе.
- Активация (загрузка). Идея в том, что когда вы планируете сделать ОС на одном отдельно взятом устройствек, вам нужно сделать, чтобы то, что вы положиди на диск, включилось и заработало.
- Подготовка аппаратуры, логики, всего подряд. Приведение аппаратурно-логической части в соответствие (например, партишионинг диска). Некая одноразовая опекрация, которая позволяет поставить ОС.
Недостатком эвляется то, что это --- маленькая ОС.
- Живая система. Идея в том, что чем больше действий по превращанию дистра в ОС будет выполнятся ..., тем меньше накладные расходы.
[править] Стадии
[править] Активация
Какие задачи, какие задачи должны решаться:
- Собственно, загрузка, видимо, ядро и стартовый виртуальный диск (vmlinuz + initrd). Если грузиться с дискетки, то на одной дискетнке будет ядро, на другой виртуальный диск, и надо сказать, чтобы поменяли диск. Чаще всего используется syslinux, там есть загрузчик с исо, хдд, по пхе. Обычно сначала грузится первичный загрузчик, который маленикий-хиленьекий, но умеет грузить крутой загрузчик. В бзд это такая миниОС на ФОРТе, линуксоидам это было делать лень, они сделали лило/граб которые умеют грузить два диапазона секторов, и там уже свой маленький линукс, только очень маленький, который уже грузит настоящий линукс.
- Распознать азовые устройства. Например, диск, с которого грузиться, и который надо примонтировать. И настройка. Скорее всего, автоматисческая: почему автоматическая, так как стадия активации не должна быть интерактвной.
- Одно забавное ответвление: нам надо перезодить на остальные стадии? Мы всё уже нашли и можем работать. Таких дистрибутивов довольно много, это дистрибутивы, связанные с ограниченной функциональности. Это два рода: embedded-системы, которые собственно так и устроены. И всякие сетевые маршрутизаторы.Пример: RAD Linux.
- Как правило, этот инитрд может быть построен по технологии busybox, это некая процедура, которая состоит в слкдующем: берутся те утилиты, котрые нужны, причём сильно урезанные, которые причём компилируются в один большой статический бинарник, то поскольку это линух, то она по ссылке опрделеяется, кто она сегодня, и делает, что нужно. Хотя, когда место не так ограничено, его мол\жно не использовать. Даже так предполагают делать не все, например, ребята из Монта... делают это путём хакинга ядра.
Допустим, мы хотим сделать дистрибутив, но нам недостаточно сделать активацию и расслабиться. Тогда нам нужно настроить устройства для поднготовительной стадии. Например, настроить сеть, чтобы ставить дистрибутив. или настроить raid. Этим занимаются специальные программы. В Альте есть такая штука propagater. Она умеет настраивать сеть, умеет распознавать всякие железяки и монтировпать их. То есть занимается предварительной настройкой.
Если вдруг мы рещили, что мы идёём дальше, то объём этого безобразия должен быть как можно меньшк, там нельзя ставить пакеты, там нет много красивых вещей.
[править] Стадия подготовки
Это ещё хуже. Ое уже не уплющенный, мы можем всё загрузить, но стадия подговтовки, как и активизации, то настройка неинтерактивная. Отличие от стадии активации в том, что это настощая система. Но, он урезаный по функциональности, всё, что не поставили, там нет. И не сохраняются настройки, он константный.
Здесь так же два пути:
- Дистрибутив готов. Если у вас ограниченный круг задач, то можно сказать всё, дистрибутив готов, запустим иксы, запустим опенофис, а потом человек может сохранять всё на флешку. Решение пользовательских задач.
- Подготовиться к полноценной установке настоящего линукса куда-то на носитель, с котроого будет производиться загрузка. Установка от депроймнта имеет мелкие отличия. Это разные вещи, но технология дона.
[править] Live
- Настройка либо автоматическая, либо предварительная
- ПО: иксы, виндов менеджер, файрфокс, все утилитыЮ необходимые для сборки презентаций.
- Эивая система работает не так, как на стадии подготовитедьной. При загрузке всё смонтировано как ридонли, а тут надо перемонтировать часть на запись. В эту систему надо подложить некое количество файлов, которые делают ей Лив.
//пишется “профиль”, читается “хаки”
- вы приняли рещение самостояетльно сделать дистр, следовательно, имеющиеся рещения не удовлетворяют. Следовательно, надо подложить спецконтент, это уже нестоящие хаки.
- “авт”
- патчи --- предварительная ручная работа на стадии деплоймента
[править] Инсталлер
Свои проблемы
- Хорошим является то, что не нужно предусматривать широкий круг задач.
Если это инсталлер, то это инсталлер куда:
- Подготовка устройства --- разбиение диска, указание маунтпоинтов.
- Наполнение системного устройства.
- Либо просто наваливаете: cp -r /bin, /lib... Чем это хорошо: сё с собой. Чем плохо: некоторые файлы из тех, которые есть на подготовительной стадии, не нужно копировать. Тем самым, декларируете, что система, которая инсталлируется, такая же, какая и на подготовительном этапе. Поэтому хочется, чтобы инсталлер сооружал другой дистр. Кроме того, нужно получить такую систему, чтобы можно потом было порулить пакетами.
- Установить пакеты в пустое место.
- Мелкая и гадкая стадия – отличие от лив --- вся система настроена для загрузки с сидюка, а нужно, чтобы грузилась с набега ещё на стадии активации. Тут начинается искуственный интеллект --- изобрести и вписать такие настройки в живую систему, чтобы она заработает. Настройка живой системы. Одна тонкость, которую не используют в Альте: при переходе из стадии в стадию нам необязательно перезагружаться. Это ещё хоршо тем, то можно пользоваться не только тем софтом, который на стадии подготовки, а вообще, какой хотите.
[править] Живая система
- Доустановка пакетов. В том числе, выборочная.
- Настройка всего. Настоящий джедай может настроить всё сам, как в генту, но окошко о трёх элементах быстроее, чем правка конфига.
- first-time скрипты. Некоторые пакеты работуют в первый раз не так, как остальные, например, ссх-демон, ему надо сгенерить ключ.
[править] Deployment
Сейчас рассказывали про то, что делается после того, как воткнули сидюк. Вопрос: а откуда взялся в этот сидюк? Тут область наименее технологичная, и это либо шеллскрипт, который всё делает. Тем не менее, изготовление загрузочного диска, деплоймент, разбивается на стадии:
- Создание дерева ФС, которое имеет место на стадлии подготовки быть
- Установка пакетов в chroot --- из репозитория и собственноручных
- Запустить first-time скрипты
- Перенос некоторого контента
- Сборка загрузочной среды, собрать парочку инитрд+ядро
- Эта ФС, которую собрали, может быть большой, и может не умещаться на ночитель, с которого будем грузиться, и к тому же она ридонли, полэтому можно её хорошенько упаковать. Упаковка ФС, например, с помощью squash fs. Надостаток в том, что если воткнуть его в компьютер под виндовз, то увидите только один файл squash. А можно положить
- Просто файлы. Например, инсталлятор супер-пуперский аспшный. Но просто файлы это не просто файлы
- Просто контент
- Пакеты. Можно положить их в ФС, но сквошфс такой пождлянки не ожидает, да и доустанавливать пакеты будет неудобно
- Записать на сидюк, без этого сидюк не получится. Засовывание этих трёх частей в те места, откуда они будут взяты: сд, флеш, сеть...
Когда мы подготавливаем дистрибути, весь дистрибутив за исключением двух мест не зависит от того, что это будет и куда его поместить. Есть мелка детальЮ связанная с покетом настройки. Некоторые части этого процесса можно убрать.
Единственное, что не рассказал ГК: как сделать ливсиди из сизифа, но для этого достаточно поставить пакет spt3.
Как сделать свой инсталлятор: нужно 6 крепких молодцев, тайной знания, как делать инсталлятор, обладают ровно 2 человека. По двое держут, оставшиеся двое допытываются. Они пользуются поделием spt, которое не имеет документации.
01 02 03 04 05 06 07 08 09 10 11 12
Календарь
Февраль
| 16 | ||||
Март
| 02 | 09 | 16 | 23 | 30 |
Апрель
| 06 | 13 | 20 | 27 | |
Май
| 04 | 11 |
18 мая 2007 года прошёл экзамен по курсу. Краткий конспект экзамена.
22 мая 2007 года прошёл экзамен по курсу для студентов 3 курса и тех, кто не сдал экзамен 18 мая. Подробности здесь.
12 июня 2007 года (вторник) пройдёт экзамен по курсу. Информация об экзамене отсюда.