Создание дистрибутива linux
Создание с нуля дистрибутива Linux для встраиваемых устройств
В этом руководстве рассказывается о том, как собрать специализированный дистрибутив Linux® для использования во встраиваемых системах, в данном случае для работы одноплатного компьютера Technologic Systems TS-7800. Обсуждаются кросс-компиляция, загрузчик, файловые системы, корневая файловая система, образы дисков и процесс загрузки. Все это рассматривается через призму конкретных решений, принимаемых по мере построения системы и создания дистрибутива.
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
«В дистрибутивах ядра Linux есть некоторая поддержка для создания подходящих образов initrd, но подробная информация об этом конкретном образе не имеет решающего значения для понимания процесса сборки нашего дистрибутива.» (с) IBM EE/A
«Промптом» переводили? Или чем ещё?
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
> «Промптом» переводили? Или чем ещё?
мясо хреново, а водка — в самый раз!
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
> «В дистрибутивах ядра Linux есть некоторая поддержка для создания подходящих образов initrd, но подробная информация об этом конкретном образе не имеет решающего значения для понимания процесса сборки нашего дистрибутива.» (с) IBM EE/A
> «Промптом» переводили? Или чем ещё?
Предложение построено достаточно корректно, вряд ли промт смог бы так. Но вот всю глубину мысли мне постичь не удалось 🙂
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
Поддержки некоторой дистрибутивы образов initrd обладают, но Йода мастер подробной не владеет информацией для понимания процесса значения решающего имеющей. Силу используй энергии ментальной, медиахлорианами рожденной, понимания бреда для.
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
> В этом руководстве рассказывается о том, как собрать специализированный дистрибутив Linux® для использования во встраиваемых системах
А это так сложно что ли, что нужно об этом писать целую статью?
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
Ага, и мне не удалось, хоть я и переводчик этого текста. Дело в том, что довольно много статей на IBM попадается от «нерусских» авторов — от тех, кто плохо владеет английским языком. То, что автор сказал — я перевел, но ЧТО он этим сказал — не знаю, я не телепат. Когда я локализую программы (например, dvdisaster или qucs), то активно общаюсь с авторами, а тут — хз, как общаться. Насчет «писатель, Неизвестный» — я отправлял текст с такой строкой: «Петер Зеебах (Peter Seebach), независимый автор, Plethora.net», а все дальнейшее — это уже творчество редактора. Игорь Горбунов
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
Да статья, бох бы с ней — она маленькая. Некоторые ведь вообще учебники пишут. И толстенные, как будто про что-то ну очень сложное.
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
>А это так сложно что ли, что нужно об этом писать целую статью?
Несложно если проделать это успешно хотя бы раз. Для начинающих статья в самый раз, много разрозненной информации собрано воедино, по крайней мере объясняется в каком направлении копать если что-то непонятно.
Впрочем желающим потрындеть на тему статья конечно ненужна.
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
Чем способ сборки, что описан в статье, лучше чем применение OpenEmbedded?
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
ОМГ! А ведь он только недавно учил shell scripting! Во как быстро чувак растет!
Re: Создание с нуля дистрибутива Linux для встраиваемых устройств
imho, ничем не лучше. хоть и более наглядно, чем bitbake gpe-image 😉
Создаем Linux-дистрибутив с помощью онлайн-мастера SUSE
Создайте свою скачиваемую версию Linux с помощью онлайн-мастера SUSE.
Как ни интересно методично прорабатывать разные функции Linux, было бы намного удобнее иметь программу, способную сделать за вас всю тяжелую работу.
За долгие годы появлялось немало инструментов типа UCK (Ubuntu Customization Kit), с целью помочь вам создать свой собственный дистрибутив Однако во время наших тестов ни один из них не работал с последними версиями Ubuntu.
Для тех, кто предпочитает дистрибутивы Linux на базе RPM, история будет несколько иная, поскольку добрые люди из SUSE разработали отличный онлайн-мастер для создания персонально вашей устанавливаемой версии Linux на основе openSUSE или SUSE Enterprise.
SUSE Studio, под каковым именем он известен, проводит вас по процессу создания вашего собственного т.н. appliance (приспособления), определяя, какие программы предустанавливать, выбирая фон рабочего стола и логотип и загружая ваши личные файлы. Если вам не хватает вдохновения, зайдите в галерею SUSE (https://susestudio.com/browse), где демонстрируются индивидуальные дистрибутивы SUSE, созданные другими пользователями.
Руководство, представленное во второй части данной статьи, проведет вас по базовым шагам настройки вашего дистрибутива, включая конфигурацию настроек запуска, таких как автоматический вход в систему и запуск программ и/или скриптов при загрузке.
Если вы никогда не использовали RPM-дистрибутив Linux, такой как Red Hat, Fedora или openSUSE, то, возможно, захотите скачать стандартную версию, чтобы познакомиться с ней перед созданием вашего собственного индивидуального Linux.
Менеджер пакетов openSUSE отличается от используемого в дистрибутивах на базе Debian, таких как Ubuntu. Это означает, что любое руководство Linux, которое вы найдете для Ubuntu, может не работать.
У самых популярных программ Linux, таких как Mozifla Firefox, есть RPM-версии, но обязательно проверьте их в разделе Software перед установкой. SUSE Studio поддерживает добавление репозиториев и загрузку вручную файлов RPM, если там имеется какое-то конкретное необходимое для вас приложение.
Если вы не вняли нашим зловещим предупреждениям и жаждете приступить к созданию собственной версии Linux в SUSE Studio, то вам понадобится перенести законченные файлы на носитель, например, на USB или на DVD, чтобы установить их на свой компьютер.
Когда настанет время собрать ваш личный дистрибутив Linux, советуем вам выбрать Live CD/DVD. Это позволит загрузить и протестировать вашу индивидуальную версию перед установкой. Если вы хотите сделать какие-то изменения, это намного проще сделать в SUSE Studio с помощью мастера. В порядке альтернативы можете использовать функцию Testdrive в SUSE Studio, чтобы поэкспериментировать со своим дистрибутивом в браузере.
Создание собственного дистрибутива Linux
На сегодняшний день существует несколько сотен активно развивающихся дистрибутивов Linux всех цветов и размеров. Существуют различные инструменты для создания собственного дистрибутива.
Быстрое создание своего собственного Ubuntu
Подходит также для mumbuntu и dadbuntu.
За долгие годы, прошедшие с момента выхода первого релиза Ubuntu, было придумано множество утилит, позволяющих создать собственную версию Ubuntu. Отчасти этим объясняется существование огромного количества его производных. Хотя большинство их быстро забрасывают, Ubuntu Customisation Kit (UCK) жив до сих пор.
Вы можете установить UCK в Ubuntu или любом другом дистрибутиве на его базе, например в Linux Mint. Утилита есть в официальных репозиториях, поэтому вы можете установить ее с помощью пакетного менеджера. Далее, вам понадобится ISO-образ того дистрибутива, который вы хотите изменить. Чтобы упростить этот процесс, желательно использовать образ дистрибутива, включающий графическую оболочку, которую вы собираетесь задействовать. Например, если вы хотите использовать в своем дистрибутиве локализированный декстоп Gnome, лучше использовать образ Ubuntu Gnome, а не стандартного Ubuntu. Если вы работаете на 32-битной машине, образ должен быть собран для архитектуры i386. Однако если у вас 64-битная система, вы можете настраивать 32-битный образ.
После запуска UCK вы увидите приветствие и информацию о требуемом дисковом пространстве, затем мастер, который будет управлять дальнейшим процессом. На первом этапе необходимо будет выбрать язык для вашего дистрибутива вместе с языком загрузочного меню (убедитесь, что дистрибутив на базе которого вы собираете свою систему, поддерживает эти языки).
После выбора языка необходимо указать графическое окружение дистрибутива. UCK позже скачает для него файлы локализации, основываясь на вашем выборе языка. Затем необходимо будет указать местонахождение образа дистрибутива Ubuntu, который вы будете настраивать.
Затем UCK запросит у вас имя вашего дистрибутива и спросит, хотите ли вы вручную настроить свой дистрибутив. Если вы ответите положительно, откроется окно терминала, в котором корневая директория будет изменена на окружение сборки вашего дистрибутива. На последней стадии UCK предложит вам опцию удаления из вашего дистрибутива всех относящихся к Windows файлов, и создания гибридного ISO-образа диска, который можно прожечь на болванку, или скопировать на USB-флешку. После этого UCK распакует образ диска и скачает файлы локализации. Затем, вы сможете настроить дистрибутив вручную, если ранее выбрали эту опцию. Опция «Run Console Application» запустит окно терминала с оболочкой root.
Продвинутые настройки
В этом окне вы можете использовать менеджер пакетов apt-get для удаления и установки приложений. Например, вы можете установить поддержку мультимедиа с помощью apt-get install ubuntu-restricted-extras. Если ваш дистрибутив предназначен для использования на слабых машинах, вы можете удалить LibreOffice:
и заменить его на AbiWord:
Если вы хотите поместить на рабочий стол ярлыки для ваших программ, сначала создайте директорию Desktop:
Теперь вы можете скопировать туда ярлыки для всех установленных приложений:
и затем сделать их исполняемыми:
Если вы хотите изменить обои для рабочего стола, откройте файл /usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override в текстовом редакторе и измените параметр picture-uri на путь к вашему изображению:
Аналогично вы можете изменить тему и иконки, отредактировав соответствующие параметры в этом файле. Например, если вы хотите заменить тему Ambiance на Radiance и использовать набор иконок HighContrast:
После редактирования этого файла не забудьте скомпилировать модифицированные темы оформления:
Вы таже можете копировать файлы на свой live CD. Для этого запустите еще один терминал и перейдите в директорию
/tmp/remaster-root/, которая является корневой для нашего live CD. Например, вы хотите скопировать определенные ярлыки и папки в Desktop:
После завершения закройте терминал chroot и выберите опцию «Continue Building» в мастере UCK. Теперь начнется сборка вашего нового дистрибутива.
Создание собственного установочного образа Ubuntu
Если вам нужно установить Ubuntu с одним и тем же набором программ на большое количество компьютеров с похожими храрктеристиками, например в лаборатории или в классе, вы можете сэкономить свое время, создав образы для автоматической установки. Сервис www.instalinux.com похож на SUSE Studio, но вместо полнофункциональных дистрибутивов на базе OpenSUSE он создает небольшие ISO-образы, которые предназначены для развертывания готовых к использованию Linux-машин путем автоматического скачивания и установки пакетов.
Сервис работает с использованием скриптов SystemDesigner CGI из проекта Linux Common Operating Environment (http://linuxcoe.sourceforge.net). Интерфейс проведет вас через процесс сборки, состоящий из тех же этапов, что и установка дистрибутива, то есть выбор раскладки клавиатуры, часового пояса, пароля для root, пакетов, разметка диска и т.д. После этого создается установочный образ небольшого (около 30 Мб) размера.
Другие онлайновые сборщики дистрибутивов
SUSE Studio — не единственный веб-сервис для создания дистрибутивов linux. Debian Builder (http://live-build-cgi.debian.net/cgi-bin/live-build) на хостинге проекта Live Systems предоставляет инструменты для создания официальных образов Debian. Он позволяет создавать базовые образы для сетевой установки без X сервера, а также гибридные ISO-образы для загрузки с USB.
Вы можете быстро создать базовый диск, выбрав требуемые вам опции, в том числе ветвь Debian (Wheezy, Jessie, Sid) и предопределенный набор пакетов (Gnome Desktop, KDE Desktop, Mate Desktop, Rescue и т.д).
Продвинутые пользователи могут также работать с дополнительными опциями. Вы можете указать архитектуру сборки, файловую систему окружения chroot, загрузчик, и многое другое. Система уведомит вас по электронной почте, что ваш образ готов для скачивания.
Также есть Porteus Wizard (http://build.porteus.org). Porteus — это небольшой дистрибутив на базе Slackware. Используя простой, но мощный веб-интерфейс, вы можете собрать свою версию Porteus, выбрав графическое окружение (KDE4, Mate, LXDE, Xfce) и программы, включая веб-браузеры (Firefox, Chrome, Opera), текстовые процессоры (LibreOffice, AbiWord), клиент VoIP (Skype), графические драйвера для видеокарт Nvidia и AMD Radeon и так далее. Вы также можете настроить продвинутые параметры загрузки, например заданный размер раздела tmpfs, или активацию модуля ядра zram.
Создание дистрибутивов на базе Fedora Linux
Если вы живете в мире RPM и являетесь адептом Fedora, вы можете собрать собственный дистрибутив с помощью утилиты livecd-creator. Это набор скриптов, имеющийся в официальных репозиториях Fedora. В отличие от UCK, livecd-creator работает исключительно в командной строке, а все пакеты, необходимые для сборки дистрибутива, скачиваются из интернета.
Скрипты используют для сборки файлы Kickstart. Если вы о них еще не слышали, Kickstart представляет собой простой текстовый файл, содержащий список инструкций, в соответствии с которыми livecd-creator компилирует ваш дистрибутив.
Чтобы облегчить себе жизнь, вы можете скачать файлы Kickstart для нескольких разновидностей Fedora, установив из репозиториев пакет spin-kickstarts, после чего эти файлы будут лежать у вас в директории /usr/share/spin-kickstarts. Вы можете настраивать свой дистрибутив, просто редактируя один из этих файлов в текстовом редакторе. Изучить их синтаксис более подробно можно в Fedora wiki (http://fedoraproject.org/wiki/Anaconda/Kickstart).
Можно также сэкономить себе время, установив утилиту Kickstart Configurator.
Эта программа предлагает простой графический интерфейс для создания файла Kickstart.
Вы можете задать требуемые вам пакеты, перечисляя их в секции %packages. Вместо отдельных пакетов здесь также можно добавить определенные группы пакетов, например gnome-desktop. Вы также можете указывать здесь пакеты из других файлов Kickstart, задавая их имя и расположение с параметром %include:
Если вам нужно после загрузки дистрибутива запустить на выполнение какую-либо команду, например для настройки сети, необходимо задать ее в секции %post. Например, если вы хотите автоматически запускать Firefox, можете поместить его ярлык в папку
/.config/autostart, добавив в секцию %post следующие строки:
Убедитесь, что конец секций %packages и %post обозначен с помощью %end. Если вы хотите запустить какую-либо команду за пределами своего live-окружения, например скопировать файлы хоста в свой дистрибутив, добавьте параметр -nochroot в секцию %post, как показано ниже:
Переменная $LIVE_ROOT указывает на live-окружение. Аналогичным способом вы можете копировать файлы с хоста в свое live-окружение, например:
Если вы используете графическую утилиту для задания репозиториев, вы должны вручную добавить в файл Kickstart одну важную строку. Она указывает на список зеркал для репозитория Fedora (а также содержит информацию о версии и архитектуре сборки), откуда будут скачиваться пакеты. Например, если вы хотите получать пакеты для 64-битной Fedora 21, эта строка будет иметь следующий вид:
После того, как вы закончили с файлом Kickstart, откройте его с помощью livecd-creator для сборки дистрибутива. Предположим, файл сохранен в
/custom-kickstarts/Custom-Fedora.ks, тогда команда будет иметь вид:
Ключ -fslabel задает имя вашего дистрибутива. После выполнения всех инструкций в файле Kickstart утилита собирает ISO-образ вашего дистрибутива, который сохраняется в вашей домашней директории.
Создание собственного дистрибутива для Raspberry Pi
New Out Of the Box Software, или NOOBS — это официальный инсталлятор для Raspberry Pi. Он упрощает и стандартизирует процесс установки дистрибутивов на Raspberry Pi. Хотя главной целью создания NOOBS является упрощение установки операционных систем на Pi, эта утилита может также использоваться для создания собственных дистрибутивов.
Сначала скачайте инсталлятор NOOBS с сайта и установите его в любом поддерживаемом дистрибутиве, на основе которого вы хотите сделать свою систему. Мы советуем использовать дистрибутив Raspbian, который рекомендуется и создателями NOOBS.
После установки и загрузки Raspbian вы можете вносить в него свои изменения. Например, вы можете изменить обои рабочего стола и сменить тему с помощью утилиты командной строки obconf, а также установить дополнительные темы с помощью команды:
Вы также можете устанавливать или удалять с помощью apt-get, или установив графический менеджер пакетов Synaptic.
Вы можете скопировать в этот дистрибутив Raspbian любые файлы.NOOBS позволяет создать раздел размером 512 Мб, в котором вы будете хранить свои файлы. Или вы можете воспользоваться командой raspi-config, чтобы расширить корневой раздел на всю SD-карту.
Кроме того, не забудьте настроить работу с сетью. Например, вы можете настроить беспроводный адаптер для подключения к вашей точке доступа Wi-Fi, а также доступ к различным сетевым службам.
После завершения настройки дистрибутива необходимо упаковать его в архив. Перейдите в корневую директорию с помощью команды cd / и выполните следующую команду:
Упаковка займет примерно полчаса, в зависимости от количества сделанных вами изменений.
Теперь у вас есть файл root.tar в корневой директории. Аналогично упаковываем загрузчик. Сначала переходим в директорию boot.
Затем создаем архив.
Это не займет много времени. Теперь у вас есть файл boot.tar в директории boot.
NOOBS требует сжатые версии этих файлов. Но у Raspberry Pi недостаточно ресурсов для сжатия этих файлов, поэтому вам необходимо переместить их на PC и сжать с помощью команд xz -9 -e boot.tar и xz -9 -e root.tar. При этом исходные файлы будут заменены на их сжатые версии, boot.tar.xz и root.tar.xz соответственно.
Теперь отформатируйте SD-карту и разверните на ней свежую копию NOOBS. С помощью файлового менеджера перейдите в директорию os, которая, в свою очередь включает множество директорий, в каждой из которых имеются файлы для одного из поддерживаемых дистрибутивов, включая Arch, Pidora, Raspbian и других. Так наш дистрибутив сделан на базе Raspbian, мы можем удалить все другие директории. Назовите директорию Raspbian именем, которым вы хотите назвать свой дистрибутив.
Создание дистрибутива linux
Сегодня давайте обсудим, как создать пользовательскую сборку live cd image (ISO). И есть много инструментов для этих целей, но все они давно уже не поддерживаются.
Когда-то был инструмент Remastersys, который отлично делал свою работу, но сейчас он уже долгое время не поддерживается и не развивается, хотя пользоваться им все еще можно(смотрите мою последнюю сборку, которая была создана этим инструментом).
Ему на смену пришел Pinguy Builder. Но, похоже, он тоже уже давно не обновлялся. Ведь я не вижу никаких обновлений в последнее время на официальном сайте Pinguy.
Есть еще инструмент для резервного копирования и создания собственных пользовательских образов – Systemback, но он тоже не поддерживается, и в Linux Mint работает через раз.
К счастью, я нашел альтернативный инструмент для создания пользовательских live cd-образов.
Встречайте – Cubic, который расшифровывается как C ustom U buntu I SO C reator, это GUI приложение для создания пользовательского загрузочного образа Ubuntu Live CD (ISO).
Cubic активно развивается и предлагает множество возможностей для создания индивидуального компакт-диска Ubuntu. Он имеет интегрированную среду chroot командной строки, где вы можете выполнять все настройки, такие как установка новых пакетов, ядра, добавление дополнительных фоновых обоев, добавление дополнительных файлов и папок.
Он имеет интуитивно понятный графический интерфейс, который позволяет легко перемещаться (с помощью мыши) во время процесса создания live-образа. Вы можете создать новый пользовательский образ или изменить существующие проекты. Поскольку он используется для создания live-образов Ubuntu, я считаю, что он может использоваться в других дистрибутивах основанных на Ubuntu, таких как Linux Mint.
Для кого это пригодится?
Это пригодится для тех людей, которые после установки новой системы, еще много чего до-устанавливают, или удаляют, и хотят при этом иметь актуальную систему.
Как установить Cubic
Существует официальный репозиторий для облегчения процесса установки. И чтобы установить Cubic в вашу систему Ubuntu, выполните следующие команды в терминале:
Как создать пользовательскую сборку linux с помощью Cubic
После установки найдите и запустите Cubic из меню приложений.
Создайте каталог для вашего нового проекта. Это будет каталог, в котором будут сохранены ваши файлы, а также образ новой системы.
Перед процессом создания, вы должны заранее скачать официальный образ Ubuntu, или другой системы которую вы хотите переделать. Например я скачал KDE NEON с официального сайта, и хочу сделать свою сборку на основе этой системы.
После нажатия “Next”, вы должны выбрать путь, по которому вы сохранили ISO-образа системы. Cubic автоматически заполнит все детали вашей пользовательской ОС. Вы можете изменить все это, если конечно хотите. Нажмите «Далее», чтобы продолжить.
Начнется распаковка iso-образа, и все файлы будут сохранены в вашу созданную директорию
Как только файловая система будет извлечена, вы автоматически попадете в среду chroot. Если вы не видите терминал, несколько раз нажмите клавишу ENTER.
И вот здесь начинается самое интересное. Вы можете установить любые дополнительные пакеты, добавить фоновые изображения, добавить новые репозитории, установить последнее ядро Linux и любую другую настройку. Настолько, насколько вы разбираетесь в GNU/Linux в целом.
Например, я хочу, чтобы google-chrome был установлен в моем live CD, я просто беру, и устанавливаю его как обычное приложение Ubuntu.
Нам не нужно вводить «sudo», потому что мы уже находимся в корневой среде.
Кроме того, вы можете обновить свою систему до актуального состояния введя команду “apt update && apt upgrade”
Но и это еще не все, вы можете просто копировать файлы и папки, а далее вставлять в это окно терминала.
Например я хочу скопировать несколько изображений для рабочего стола. Я создаю новую директорию
Открываю свой менеджер файлов, выделяю нужные мне файлы и просто перетаскиваю их
Внимание! У вас не должно быть кириллических символов в вашем пути. Например программа не распознает вот такой путь – /home/linuxthebest/Загрузки/, лучше просто скопируйте файлы в вашу домашнюю директорию(если название на латинице)
Примечание для пользователей Ubuntu 17.10:
В системе Ubuntu 17.10 поиск DNS может не работать в среде chroot. Если вы создаете пользовательский образ Ubuntu 17.10 в реальном времени, вам нужно указать правильный файл resol.conf:
Чтобы проверить работу разрешения DNS, выполните:
Когда вы внесете все изменения, нажмите «Далее»
В следующем разделе выберите версию ядра Linux, которая будет использоваться при загрузке новой версии ISO. Если вы установили какие-либо дополнительные ядра, они также будут перечислены в этом разделе. Просто выберите Ядро, которое вы хотите использовать в своем реальном компакт-диске.
В следующем разделе выберите пакеты, которые вы хотите удалить из своего live-образа. Выбранные пакеты будут автоматически удалены после установки операционной системы с использованием пользовательского образа в реальном времени. Будьте осторожны при выборе пакетов для удаления, возможно, вы случайно удалите пакет, который зависит от другого пакета.
Теперь начнется процесс создания live-образа. Это займет некоторое время в зависимости от характеристик вашей системы.
После завершения процесса создания образа, нажмите «Готово». Cubic отобразит только что созданные пользовательские детали образа.
Если вы хотите в дальнейшем изменить только что созданный образ, снимите галочку напротив «Удалить все файлы проекта, кроме генерируемого образа диска и соответствующей контрольной суммы MD5 файла». Cubic оставит пользовательский образ в рабочем каталоге проекта, вы можете вносить любые изменения в будущем.
Чтобы создать новую сборку, используйте другой каталог проекта.
Как изменить уже созданную сборку
Запустите Cubic из меню и выберите существующий каталог проекта. Нажмите кнопку «Далее», и вы увидите следующие три варианта:
- Создать образ диска из существующего проекта.
- Продолжить настройку существующего проекта.
- Удалить существующий проект.
Первый вариант позволит вам создать новый live образ ISO из существующего проекта, используя ту же настройку, что и ранее. Если вы потеряли образ ISO, вы можете использовать первый вариант для создания нового.
Второй вариант позволяет вам вносить какие-либо дополнительные изменения в ваш существующий проект. Если вы выберете эту опцию, вы снова попадете в среду chroot. Вы можете добавлять новые файлы или папки, устанавливать любые новые программные продукты, удалять любые программные продукты, добавлять другие ядра Linux, добавлять фоны рабочего стола и т. д.
Третий вариант удалит существующий проект, чтобы вы могли начать все сначала.
Я создал пользовательскую сборку на основе KDE NEON с помощью Cubic. Вот как выглядит система загруженная с флешки
Установка прошла успешно, и в целом система работает как будто я ее скачал с официального сайта.
А вы пробовали это программное обеспечение? Поделитесь своими сборками.
LinuxSoID
Интересные и полезные заметки связанные с ОС Linux
понедельник, 2 февраля 2009 г.
Сборка собственного дистрибутива
вольный перевод с изменениями, искажениями и тд
Введение
Подготовка собственного дистрибутива выполняется по разным причинам. Например, для автоматизации установки на множестве компьютеров однотипной среды, или для добавления часто используемых программ в установку дистрибутива. В любом случае, предполагается выполнение нескольких шагов. В качестве примера используем дистрибутив CentOS 5.1. Но можно и любой другой, который работает на системе пакетов, основанных на RPM и anaconda в качестве инсталлятора (то есть RedHat5, ASPLinux12, Fedora8/9).
Подготовка инструментов
В процессе работы могут потребоваться некоторые программы. Установим их. Для отдельных случаев может подойти инсталляция по сети. Тогда все ограничится созданием kickstart файла (где лежит описание параметров, передаваемых инсталлятору) и изменением репозитария — для этого можно поставить только createrepo.
#yum install anaconda-runtime yum-utils anaconda anaconda-help
#yum install busybox-anaconda
#yum install createrepo
#yum install squashfs-tools
#yum install mkisofs
Так же для создания файла kickstart можно применять следующую утилиту
yum install system-config-kickstart
После сделаем локальную копию диска (для удобства работ с пакетами и т.д.), включая .discinfo файл. В оригинальной документации используется rsync для создания копии с параметром –a. Это сделано для того, чтобы при копировании сохранялись символические ссылки и права доступа.
mkdir centos-disk centos
sudo mount /dev/dvd centos-disk
rsync -a centos-disk/* centos
cp centos-disk/.discinfo centos/
sudo umount centos-disk
rmdir centos-disk
Теперь все готово к созданию дистрибутива. Редакторы для графики каждый выбирает по своему усмотрению.
Создание файла kickstart
А сейчас сделаем заготовку (по ходу доработаем) файла kickstart, того чем будем «кормить» анаконду. Главное — описать все что потребуется инсталлятору, чтобы не спрашивал у нас (ну, кроме редких случаев которые каждый определит самостоятельно).
Способов много. Взять готовый после установки и исправить, написать с нуля, воспользоваться system-config-kickstart и доработать руками.
В целом kickstart представляет собой список параметров, передаваемых инсталлятору (ответов на вопросы), дополненный списком пакетов и скриптами предварительной/заключительной настройки.
#— метод инсталляции (install, это не upgrade) и источник пакетов (CD-ROM)
install
cdrom
#— языковые средства и устройства ввода
lang en_US.UTF-8
langsupport ru_RU.UTF-8
keyboard ru
#— пропустить конфигурацию X-Window
skipx
#— авторизация и настройки безопасности
rootpw —iscrypted $1$nIbsWYcm$AJ3Dm/kvbhDP3f30j2EKy/
firewall —disabled
selinux —disabled
authconfig —enableshadow —enablemd5
#— часовой пояс
timezone —utc America/New_York
#— место положения загрузчика
bootloader —location=mbr
#— разбиение диска (можно применить и lvm)
zerombr yes
clearpart —all —initlabel
part /boot —fstype ext3 —size=128
part swap —size=1024
part /recovery —fstype ext3 —size=1024
part / —fstype ext3 —size=4096
part /var —fstype ext3 —size 1 —grow
#— перезагрузка после инсталляции
reboot
#— список пакетов и групп пакетов
%packages —resolvedeps
@core
very_important_app
#— скрипты выполняемые перед инсталляцией
%pre
#— скрипты выполняемые после инсталляции
%post
Подготовка пакетов
Большое число пакетов, не входивших в поставку дистрибутива, перед созданием репозитария желательно подписать.
Делаем это следующим образом:
1. Устанавливаем (если еще нет в системе) gpg.
2. Генерируем ключ для подписывания.
3. Создаем файл
/.rpmmacros с содержанием:
%_signature gpg
%_gpg_name
Публичный ключ экспортируется для последующего распространения вместе с реподанными.
Подписывание пакетов выполняется коммандами:
rpm -addsign
rpm -resign
Репозитарии и comps.xml
Самая длительная часть — выбор пакетов и поиск зависимостей. Для начала можно посмотреть разделы core и base оригинального comps.xml. В этом файле описываются группы пакетов для меню инсталлятора и файла kickstart. При желании можно сделать по аналогии свой comps.xml, это сильно поможет, если делается несколько kickstart для одного диска.
Для проверки зависимостей воспользуемся таким скриптом:
# инициализация тестовой базы
rpm —initdb —dbpath
# —test для того чтобы только проверить на конфликты
# -Uvh в режиме обновления с выводом дополнительной информации
rpm —test —dbpath
/testdb -Uvh path/to/dir/with/packages/*.rpm
В зависимости от того какой результат получен, корректируем список пакетов.
Для того чтобы в kickstart-файле вызвать группу пакетов указываем символ @ и идентификатор группы. Для всего остального просто указываем имя пакета.
Еще одно место, где можно найти полезную информацию — install.log в домашней папке root. Правда, для этого придется установить систему в той комплектации, в какой она вам интересна. (Одной инсталляцией больше, одной меньше. Для процесса не критично, но поиск пакетов ускоряет).
Когда набор пакетов собран и протестирован, делаем сборку метаданных для того, чтобы использовать в yum (система управления пакетами) и anaconda. Это выполняется с помощью утилитки createrepo:
createrepo —baseurl= —groupfile=
В качестве baseurl указываем номер из первой строки .discinfo, в groupfile ставим подготовленный comps.xml, ну и путь к месту с пакетами.
Замена графики anaconda
Графика — картинки, которые показываются анакондой во время инсталляции. Их замена — это маленькая радость от возможности порезать подборку картинок и запихать их в собственноручно собранный дистрибутив, а заодно и оформление инсталлятора поменять. Тем более, что для этого надо только разобрать файл stage2.img, а потом собрать по новой с новой графикой.
Разбираем. Копируем. Перенос через tar делается из-за жестких ссылок (сам не проверял, но люди из sipX в это верят). (Примечание: раньше вместо squashfs использовалась cramfs)
mount -o ro,loop -t squashfs ./stage2.img /mnt
cd /mnt
tar -cvf
mkdir stage2; cd stage2
tar -xvf ../stage2.tar
В каталоге
/stage2/usr/share/anaconda/pixmaps находятся картинки интерфейса anaconda. Там же в подкаталоге rnotes лежат картинки от процесса установки.
После замены всего, что хочется, делаем сборку…
cd
mksquashfs stage2/ stage2.img.new
…И кладем на место. То есть заменяем оригинальный stage2.img в images создаваемого дистрибутива своим. Кстати из images я оставил только stage2.img и minstg2.img. Существование остального в моем конкретном случае не имело значения.
Подготовка загрузчика диска
Загрузчик диска дает нам поле для творчества. Это и тексты, вызываемые по функциональным клавишам, и картинки с логотипами или «рекламой». Всего лишь нужно изменить isolinux/isolinux.cfg (чтобы страниц хватило) и соответствующие msg файлы.
Вот в этом файле есть два варианта загрузки: тест памяти и инсталляция по kickstart (ks.cfg в корне диска), причем последний по умолчанию. Также здесь урезано количество экранов с сообщениями — всего два (по умолчанию isolinux.cfg конечно отличается но не сильно).
default minimize
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
label local
localboot 1
label memtest86
kernel memtest
append —
label minimize
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ks.cfg
Вот экран который мы видим при загрузке (из-за строки с display в isolinux.cfg), он же boot.msg. В других msg-файлах (если упомянуты в isolinux.cfg) можно написать обращения и воззвания к будущим пользователям (или к самому себе).
^L
^Xsplash.lss
— Press ^O0b ^O07 to begin installation.
— ^O0bWARNING:^O07 all data will be erased and disk formatted.
— Root password is «hez123».
^O0f[F1-Main] [F2-Info]^O07
Упомянутый splash.lss это и есть картинка, но немножко «мутная». К созданию картинок прилагаются следующие ограничения:
- ppm(raw/необработаный) формат изначально, потом конвертируется;
- только 14 цветов, режим «indexed»;
- 640 точек по горизонтали;
- по вертикали зависит от того, сколько пространства под текст отводится внизу экрана. Обычно 220-300 точек.
Ну и преобразование из ppm в lss делается так:
./ppmtolss16 ‘#c0cfc0=7’ splash.lss
Прочие навороты
За подобные вещи отвечает отдельная секция kickstart-файла — %post.
Например, в файле от sipX производится замена фоновой картинки grub.
Самое главное — не забыть, что все выполняется в chroot итоговой инсталляции, и если надо что-нибудь скопировать или запустить с инсталляционного диска, то его необходимо примонтировать.
Вот пример секции, которая приводилась на сайте sipX:
%post
#!/bin/sh
#. Make copy of installation CD to the «/recovery» partition
/sbin/start_udev
/sbin/chkconfig —del smartd &> /dev/null
mkdir /recovery/linux
mkdir /tempdir
mount /dev/cdrom /tempdir
cp -a /tempdir/* /recovery/linux
cp -a /tempdir/.discinfo /recovery/linux
umount /tempdir
rm -rf /tempdir
#. Create initial setup script to run one time (after initial reboot only)
cp /recovery/linux/sipx_reset_cd /root/sipx_reset_cd
chmod u=rwx /root/sipx_reset_cd
echo -e «n/root/sipx_reset_cdn» >> /root/.bashrc
# the script removes itself from the root .bashrc file when it completes