как создать свою сборку линукс

Cоздание своего дистрибутива Linux с помощью Remastersys

Содержание

ВВЕДЕНИЕ

Прежде чем делать свою сборку, Вы должны определить цель и задачи своего творения. Иначе сборка может не получить своё предназначение в этом мире и остаться малоизвестной.Итак, цели и задачи определены и Вы решились сделать сборку своей системы.
Для начала Вы должны либо в Virtualbox (или в другой виртуальной машине), либо у себя на компьютере установить операционную систему со всеми настройками, со всеми программами, которые считаете нужными иметь в Вашей сборке.
Теперь, когда всё настроено и установлено, будем создавать свою сборку. Для этого нам в первую очередь необходимо свободное место на разделе с папкой /home не менее 6 ГБ.
Для создания сборки есть несколько инструментов. Мы будем говорить о Remastersys, который позволяет создать полноценную сборку даже не очень продвинутому пользователю.
Все действия дальше описаны для Ubuntu, но подходят для всех Debian совместимых дистрибутивов.

1. УСТАНОВКА

2. ПЕРВЫЕ ШАГИ

3. РАСШИРЕННЫЕ ВОЗМОЖНОСТИ

mksquashfs
SYNTAX:mksquashfs source1 source2 … dest [options] [-e list of exclude dirs/files]

Filesystem build options:
-comp select compression
Compressors available:
gzip (default)
lzo
xz

то всё в порядке и использовать опцию -comp xz можно смело.

как создать свою сборку линукс

4. ЗАГРУЗОЧНОЕ МЕНЮ

5. ОЧИСТКА СБОРКИ ОТ «ЛИШНЕГО»

Прежде всего уточню, что речь пойдет не об удалении приложений из сборки, а об удалении временных файлов из кэша, коих великое множество на сотни мегабайт.
Перед очисткой системы установите пакет ubiquity-frontend-gtk.
В первую очередь воспользуемся стандартными инструментами очистки системы. Открываем терминал и пишем:

Первая команда автоматически удалит все неиспользуемые пакеты.
Вторая команда удалит скачанные файлы пакетов в архиве.

Теперь воспользуемся программой Synaptic и удалим все ненужные настройки, оставшиеся после удаленных пакетов. Открываем Synaptic. В открывшемся окне внизу выбираем группу фильтров «Состояние».
Выбираем фильтр «Не установленные (остались файлы настроек)», выделяем все пакеты, попавшие в этот фильтр. Правой клавишей мыши на выделенном выбираем в меню «отметить для полного удаления» и жмем «Применить».
как создать свою сборку линукс
Здесь же в этой группе фильтров удалите пакеты под фильтром «Установленные (авто удаляемые)«
Если фильтры «Не установленные (остались файлы настроек)» и «Установленные (авто удаляемые)» отсутствуют, значит система уже прошла чистку и под данные фильтры ничего не попадает.

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

Следующим этапом будет очистка кэша программ. В корне системы есть папка /var. В ней программы оставляют свои временные файлы, нужные до поры до времени. Дальше я перечислю папки, в которых можно удалить все файлы, не причинив вреда системе, и тем самым уменьшить размер сборки.

6. СОВЕТЫ И РЕКОМЕНДАЦИИ

В этой главе описаны советы и рекомендации по созданию своей сборки, которые сложились у меня, как правила, после многочисленных опытов. Надеюсь, они Вам пригодятся в создании своих сборок.

Удачи! И пусть мир узнает Ваши творения!

Источник

Создание операционной системы на базе ядра linux. С нуля

Рано или поздно каждый пользователь Линукса задумывается над созданием собственного дистрибутива. Некоторые аргументируют это тем, что можно «все настроить под себя». Другие сетуют на то, что среди уже представленных дистрибутивов в Ветке нет идеального. А у них, якобы, есть суперконцептуальные идеи для собственной системы. Зачем я всю эту психологию затеял? Для того, чтобы сразу перекрыть кислород играющимся с Линуксом новичкам, которым делать нечего. Если уж задумались над созданием ОС, думайте до конца. Итак,

Я хочу создать ОС на базе Linux.
Сразу предупреждаю: был бы XVIII век, всех тех, кто для основы своей будущей системы выбирает другой развитый дистрибутив (и, не дай Бог, популярный. ) ждала бы виселица. Пост именно про создание системы с нуля, а значит, всякие Slax и Linux Mint мы трогать не будем.

Шаг 1. Выбор носителя
Вариантов немного: либо ваша ОС запускается с LiveCD, либо с жесткого диска, либо с флеш-устройства. Сразу оговорюсь: не скажу в посте ни слова про жесткий диск, потому что гораздо удобнее создавать гибкий дистрибутив из серии «все свое ношу с собой», либо залоченный дистрибутив на оптическом диске. Если вы научитесь создавать LiveCD или LiveUSB систему, с установкой на жесткий диск проблем не будет.

На всякий случай, приготовьте чистую флешку, CD-диск, и установите, наконец, Virtualbox.

Шаг 2. Компиляция ядра
По поводу выхода третьего ядра Linux, этот шаг воодушевляет на дальнейшие разработки… Итак, нам нужны исходники ядра. Каждый пользователь знает, что их можно достать на сайте kernel.org. Ни в коем случае, слышите?, никогда не прикручивайте к своей системе постороннее ядро, скомпилированное не вами!

как создать свою сборку линукс

Поскольку лень моя зашкаливала, я создал папку /linuxkernel и распаковал туда архив с исходниками. Залогинившись под рутом, я сделал следующее:

cd /linuxkernel
make menuconfig

В принципе, ядро можно конфигурировать тремя способами: make config (диалоговая конфигурация), make menuconfig (псевдографическая конфигурация через ncurses), а также make xconfig (графическая конфигурация). Суть в том, что make config испортит вам настроение надолго, т.к. он задаст все возможные вопросы по всем аспектам всех тем. Проблема с make xconfig встречается не у всех, но вот у меня встречалась и встречается. Если приспичило сделать через X, разбирайтесь сами. Оптимальный вариант — make menuconfig. Эта штука откроет вам псевдографический интерфейс, через который вы сможете настроить ядро на свой лад. Штука требует библиотеки ncurses, которая легко устанавливается.

как создать свою сборку линукс

В принципе, если ваш мозг хоть сколько понимает Линукс, вы разберетесь с конфигурированием. Процесс это интересный, вариантов действительно много, а справка, хоть и на английском языке, но все же радует своей доступностью и простотой.

как создать свою сборку линукс

Еще поройтесь в Device Drivers, полезно. Можете шутки ради понавыбирать там все и скомпилировать ядро весом > 50 Мб.

Далее. Ядро после загрузки себя должно загружать, собственно, систему. Либо из скомпилированных в себе файлов (используются во встраиваемых системах), либо из CPIO архива, сжатого чем-нибудь, либо из Initrd. Здесь вам не DOS, здесь не получится сразу сослаться на какой-нибудь init’овый файл в корневом каталоге диска или флешки. На самом деле получится, не слушайте дядю Анникса! Неправильно это, хоть в Интернете по этому поводу уже нехилая полемика ведется. В своей системе мы будем использовать initrd, т.к. это удобно, и не вызовет нецензурных выражений от сторонних разработчиков, в отличие от CPIO архива.

Ах, да, скомпилируйте ядро командой

Если у вас x86, найдете его по адресу /linuxkernel/arch/x86/boot/bzImage.

Для суровых челябинских программистов можно использовать Кросс-компайлинг…

Теперь нам нужен initrd с установленной там простейшей оболочкой. Мы будем использовать busybox, потому что эта няша может все. Способ мы украдем у Роберто де Лео, создателя Movix (я бы даже уважать его начал, если бы не запредельная любовь к Perl):

Все, теперь у нас есть Ramdisk, емкостью в 5 Мб. Можно и больше, только не нужно. В отличие от Томаса Матеджисека, я не собираюсь пичкать initrd модулями в Squashfs, сжатыми LZMA. Все, что необходимо, будет скомпилировано вместе с ядром. Да, это не очень логично и правильно, но мороки в сто раз меньше. А специально для тех, кто осуждает такой подход, можно разрешить опцию модульности в ядре: Enable loadable module support.

В нашем Ramdisk’е, смонтированном в /distro, есть такая папка, lost+found. Это потому, что мы отформатировали его в ext2. Ни в коем случае нельзя ее удалять, хоть она здесь вряд ли поможет, образ-то фиксированный. Нам бы busybox сначала поставить…

Установка Busybox
Вот почему у таких классных проектов такие отстойные сайты? Хотя… это уже не суть важно, если исходники скачаны и успешно распакованы в папку /busybox.

как создать свою сборку линукс

Сконфигурировать busybox можно так же:

cd /busybox
make menuconfig

как создать свою сборку линукс

Если вы еще не поняли, что это, объясню. Busybox заменяет тонны UNIX приложений, хранящихся в папках /bin, /sbin, /usr/bin, /usr/sbin. Вместо этого, создается только одно приложение: /bin/busybox, а на него создается куча ссылок в указанных выше папках. Установим busybox следующей командой:

make CONFIG_PREFIX=/distro install

Еще Busybox создаст файлы /sbin/init и зачем-то /linuxrc, чтобы ваша система корректно запустилась. Но не все необходимые папки были созданы. Так что завершаем все руками и создаем:

/distro/etc
/distro/lib
/distro/dev
/distro/mnt
distro/proc
/distro/root
/distro/tmp
/distro/root

Если что забыл — вспомните, т.к. директории эти забыть сложно.

Все бы хорошо, вот только busybox для работы требует библиотеки, которые нужно скопировать в наш дистрибутив. Очень легко узнать, какие:

Программа покажет нам библиотеки, требуемые для нашей оболочки. Сразу говорю: linux gate создается ядром и скопирован быть не может.

При копировании библиотек можно отсекать отладочную информацию (так Роберто советует):

Делаем из Линукса Линукс

Надо создать несколько системных текстовых файлов:

Нам нужен /etc/inittab. Удивлю вас: в начале жизни система даже не знает, что такое Root. У нас даже пользователь безымянный, но вот файл общесистемных низкоуровневых фич (ОНФ) должен присутствовать. Пилотное содержание файла следующее:

# Запустить оболочку в консоли.
::respawn:-/bin/sh

# Перезагрузка по нажатии на Ctrl+Alt+Del.
::ctrlaltdel:/sbin/reboot

Следующий файл — /etc/fstab. Это таблица, в которой описано, что и куда монтировать при загрузке. Вещь бесполезная! Нам нужно обязательно смонтировать proc, иначе вообще ничего работать не будет, так что в файле пишем:

none /proc proc defaults 0 0

Для mount нужен также файл /etc/mtab. Создайте его и оставьте пустым.

Но mount сделает все необходимое только тогда, когда мы явно его об этом попросим. А просить мы будем в том самом первозагрузочном файле /etc/rc.d/rc.S (rc.d — папка). Вежливо попросим:

Еще нам необходим файл профиля (b)(a)sh, тут вообще раздолье для фантазии. Создаем файл /etc/profile и заполняем следующим:

PATH=»$PATH:/bin:/sbin:/usr/bin:/usr/sbin:»
LESS=-MM
TERM=linux
HOME=/root
PS1=’> ‘
PS2=’> ‘
ignoreeof=10
export PATH DISPLAY LESS TERM PS1 PS2 HOME ignoreeof

Понадобится также файл /etc/shell, в котором указано, что есть оболочка:

Вот собственно и все. Можно записывать наш Ramdisk в файл.

Создание загрузочной флешки

«Финишная прямая» нашей маленькой разработки. Берем флешку, вставляем, форматируем в vfat (можно и в ext, но не забывайте, что еще не все пользователи Windows застрелились).

На флешке создаем папку boot, в ней папки initrd и kernel.

Из папки /os копируем сжатый Ramdisk в папку boot/initrd на флешке, называем «main.gz». Из папки с исходниками ядра копируем bzImage в папку boot/kernel на флешке, называем «main.lk». Достаем файлы загрузчика Syslinux (в Интернете, либо из другого дистрибутива: тут не принципиально), а именно syslinux.bin, syslinux.boot, syslinux.cfg. Копируем их в корневой каталог нашей флешки. В файле syslinux.cfg пишем что-то подобное:

default mm
prompt 1
timeout 100
label mm
kernel /boot/kernel/main.lk
append initrd=/boot/initrd/main.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label mc
kernel /boot/kernel/main.lk
append initrd=/boot/initrd/custom.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label cm
kernel /boot/kernel/custom.lk
append initrd=/boot/initrd/main.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label cc
kernel /boot/kernel/custom.lk
append initrd=/boot/initrd/custom.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
label hd
localboot 0x80

Тем самым мы поддержали кастомные initrd и ядро, которые, эксперимента ради, можно подключить к нашему дистрибутиву.

Узнаем, каким девайсом в системе является наша флешка (можно запустить mount без параметров и посмотреть). Это либо /dev/sdb1, либо /dev/sdc1, либо /dev/sdd1. Стоит отмонтировать флешку перед началом установки.

Устанавливаем syslinux (если пакета в системе нет, apt-get install syslinux):

В корневом каталоге флешки должен появиться файл ldlinux.sys. Если он есть, значит syslinux.bin, syslinux.boot больше не нужны.

как создать свою сборку линукс

Как настроить BIOS на загрузку из флешки, я вам рассказывать не буду — это легко. Скажу только, что очень удобно создать папку /boot/initrd/init, в которую можно будет смонтировать /boot/initrd/main, для последующей работы с ним. Только не забудьте разжимать и сжимать его gzip’ом.

Как-бы я только что рассказал вам, как создать с нуля систему на Linux. Легко, не правда ли? Далее вы можете редактировать скрипт /sbin/init, ведь у вас еще много работы! Вы должны будете написать скрипт для монтирования флешки, который делает chroot в корневой каталог. В противном случае, вы вынуждены будете работать с ReadOnly разделом, величиной в 5 Мб. Но это уже совсем другая история.

Томас Матеджисек — создатель Slax и Linux Live Scripts.
Роберто де Лео — создатель Movix.

Источник

MNorin.com

Блог про Linux, Bash и другие информационные технологии

Как собрать свой дистрибутив Linux

как создать свою сборку линуксСобрать свой дистрибутив операционной системы на базе ядра Linux и свободного программного обеспечения можно несколькими способами. Среди них есть как сложные, так и очень простые. Давайте рассмотрим несколько способов разной степени сложности и, может быть, вы для себя какой-то из этих способов выберите, чтобы собирать образы операционных систем для дома или работы. Некоторые способы даже не требуют каких-то более или менее глубоких знаний о Linux.

Linux From Scratch (LFS)

Самый суровый способ. LFS представляет из себя сочетание книги и загрузочного диска для сборки собственной операционной системы на базе ядра Linux полностью с нуля из исходных кодов. Отлично подходит для изучения операционных систем GNU/Linux, но абсолютно не подходит для начинающих. Очень не рекомендую тем, кто еще не умеет пользоваться Linux’ом. И очень рекомендую тем, кто хочет более плотно изучить что и как работает в операционных системах на базе ядра Linux и готов на это потратить какое-то время. Официальный сайт — http://www.linuxfromscratch.org/.

Для тех, кто освоил первую часть,- сборку основной части операционной системы,- есть вторая часть, которая называется Beyond Linux From Scratch (BLFS). Из недостатков этого способа можно отметить, пожалуй, только количество времени, которое потребуется.

simple-cdd

Гораздо менее суровое средство сборки своего дистрибутива на базе Debian. Позволяет достаточно быстро собрать свое установочный образ, включающий необходимый набор пакетов. Есть официальная страничка в вики Debian, но она, похоже, достаточно стара и давно не обновлялась. Это один из самых простых и быстрых способов собрать свой дистрибутивный образ, но придется предварительно прочитать официальный How-To и посмотреть страницу руководств.

SUSE Studio

Один из наиболее простых способов собрать собственную операционную систему на базе ядра Linux и свободного программного обеспечения. Если быть более точным, то это возможность собрать свой потомок OpenSUSE или SUSE Linux Enterprise. Для сборки своего дистрибутива надо просто зарегистрироваться на сайте http://susestudio.com. Для хранения образов дается 15 гигабайт. Вкратце сборка своего дистрибутива выглядит так:

Более подробно расписывать не буду, на сайте всё очень просто и понятно. SUSE Studio позволяет создать следующие типы образов:

Кроме того, на сайте есть галерея уже готовых операционных систем, в которой можно выбрать готовую конфигурацию и изменять уже ее.

Ubuntu Builder

Программа для сборки дистрибутива на базе Ubuntu. Собственно, получится обычная Ubuntu нужной конфигурации. Проект закрылся 10 марта 2014 года, поэтому сложно его рекомендовать к использованию. Если есть желание с ним ознакомиться, это можно сделать здесь. Там же указана команда для подключения репозитория, из которого можно установить пакет ubuntu-builder. Если не заметили, то вот она:

Вообще это был достаточно известный проект в свое время. Жаль, что закрылся.

Novo Builder

Еще одна программа для сборки дистрибутива, которую надо устанавливать. Устанавливается она при помощи скрипта, который можно взять здесь. Скрипт сам добавит репозиторий и поставит пакеты. Это, пожалуй, лучшая на данный момент программа для сборки дистрибутива на базе Ubuntu по простоте использования. И рассказать-то больше особо нечего, достаточно поставить и посмотреть. Всё интуитивно понятно.

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

Источник

Как смастерить собственный дистрибутив Линукс

Хотите ли вы подогнать под свои нужды Knoppix, переделать существующую операционную систему с открытыми кодами, например Puppy Linux, или вы нацелились создать свою собственную систему из ничего, мы поможем вам на этом пути.

Сделай сам. Это тот способ, которым создавался Линукс. Группа энтузиастов, вдохновляемая и ведомая Линусом Торвальдсом, создала величайшую «самодельную» операционную систему, которую когда-либо видел мир. Вам тоже под силу создать собственный дистрибутив Линукс.

как создать свою сборку линукс

Простой восстанавливающий скрипт в Puppy Linux позволяет взять существующую инсталляцию и «свернуть» ее в ISO файл

Звучит довольно устрашающе, и действительно, в этом деле многое, определенно, не для новичков. Но, принимая во внимание множество знаний, которые вы приобретете по ходу работы, и, учитывая результат, эта задача имеет много общего с собиранием компьютера из разрозненных деталей. Допускаю, что в случае сборки компьютера, всегда найдется множество причин, чтобы купить готовый с полки, точно также найдется достаточно оснований скачать готовый дистрибутив и просто пользоваться им. Существует лишь несколько рациональных причин заниматься созданием собственного дистрибутива:

Для развлечения. Я называю это «а почему нет?». Линукс существует, чтобы с ним возиться, так вот и возитесь, и получайте удовольствие. Сомнительно, чтобы вы доверили ценную работу системе, на которую затратили столько времени, но разве это уменьшает удовольствие? А если что-то пойдет наперекосяк, всегда можно все стереть и начать с чистого листа. (В конце концов, вы же не в рабочее время этим занимаетесь, и не в коммерческих целях, верно?)

Предостережения

Прежде чем начитать «ваять», следует хорошо понимать несколько вещей.

Для начала нужно уже знать что-нибудь о Линукс. Прежде чем пытаться создать свой собственный дистрибутив, хотя бы в общих чертах познакомьтесь с Линукс, если вы этого еще не сделали. Короче: попользуйтесь Линуксом какое-то время. Если вы не знаете основ, мало толку пытаться вносить улучшения.

Будьте терпеливы и внимательны. Любой проект такого типа, даже автоматизированный до известной степени, скорее всего, будет долгим и полным разочарований. Не надейтесь закончить все в тот же день; будьте готовы вести заметки о том, как все работает и почему.

Переделка существующего дистрибутива

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

как создать свою сборку линукс

Начало процесса инсталляции Gentoo при помощи Gentoo Live CD. Классическая версия инсталлятора Gentoo из командной строки, работает все так же хорошо, но некоторым удобнее работать в графическом интерфейсе

Заметьте, что если вы захотите проделать это все с дистрибутивом, установленным на жесткий диск, то лучше будет произвести так называемую «экономную» установку дистрибутива Puppy на жесткий диск, затем произвести желательные изменения, а потом «слепить» все обратно. «Экономная» установка позволяет Puppy сосуществовать с другими операционными системами в одном разделе винчестера (обычно другого Линукса). Все содержимое дистрибутива Puppy устанавливается в виде пяти больших файлов, один из которых является файлом-образом, представляющим файловую систему Puppy. Это отличается от «полной» инсталляции, при которой Puppy требует для себя целый раздел, где «расписывает» все файлы обычным порядком. Simple CD Remaster скрипт, в тот виде, как он есть, не может работать с полной инсталляцией, хотя, якобы, существует способ его «заставить».

Линукс из ничего

как создать свою сборку линукс

Подготовка к началу работы Линукса Из Ничего при помощи одного из автоматизированных скриптов. Это вовсе не заменяет знания того, как строить дистрибутив; вам необходимо знать, как контролировать «стройку» от начала до конца

Gentoo

В этом есть хорошая и плохая стороны. Да, это позволяет вам собирать всю систему снизу доверху, чтобы сделать ее своей в такой степени, в какой вряд ли позволят настройки любого другого дистрибутива; идеальный инструмент для самовыражения. Но в то же время, это позволит вам запутать все до крайности, или, по крайней мере, насажать множество «ляпов» во множестве мест. Gentoo определенно дистрибутив «только для экспертов». Мой приятель так охарактеризовал его: «Знал бы, насколько это трудно, никогда бы не взялся». Поэтому Gentoo может использоваться, и используется, в качестве «производственной среды» для знающих и аккуратных.

Процесс создания системы Gentoo довольно схож с таковым системы LFS. Сперва вы скачиваете один из нескольких возможных установочных CD, в зависимости от архитектуры машины, на которой работаете. 32-битная x86 версия Gentoo, например, идет на другом CD, нежели 64-битная. (Имейте в виду, что ссылки в этой статье относятся к документации версии Gentoo x86; для иных архитектур вам придется поискать документацию самостоятельно).

На этой стадии вы также имеете возможность влиять на то, как Portage компилирует пакеты, какие применяются параметры оптимизации, хотя обычно, для начала, стоит оставить их по минимуму. Подобные же настройки могут быть применены к компиляции ядра, и такие свойства как multiprocessor/multicore или поддержка PC карт, могут быть активированы, либо отключены. Имейте в виду, что попытки регулировать все подряд с первого раза могут привести к плохим результатам, оставьте их на потом, когда хоть раз пройдете весь процесс от начала до конца и получите результат, близкий к ожидаемому.

Распространение

Не забудьте представить также дерево исходников. Я подразумеваю, что как дистрибутив, вами созданный, так и его отдельные пакеты распространяются под лицензией GPL (Гну Публичная Лицензия), так что не забудьте также включить исходный код. Исходные коды не должны находиться в тех же пакетах, что и бинарники, особенно потому, что дерево исходников может быть весьма велико, несколько гигабайт не является чем-то неслыханным. Важно, что вы делаете его доступным, и документируете этот факт, особенно если вы уже закончили вносить изменения в исходники.

Говоря о документации, есть еще кое-что, что неплохо бы присоединить к новому дистрибутиву. Может быть, это набор README файлов, или полная документация, или информация о каких-либо особенностях вашего дистрибутива, причуды, которые вам удалось заметить, вещи, которые стоит попробовать (и которые не стоит!), мысли по поводу развития проекта. Дистрибутив, в конце концов, всегда развивается.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *