Время на прочтение
7 мин
Количество просмотров 193K
Рано или поздно каждый пользователь Линукса задумывается над созданием собственного дистрибутива. Некоторые аргументируют это тем, что можно «все настроить под себя». Другие сетуют на то, что среди уже представленных дистрибутивов в Ветке нет идеального. А у них, якобы, есть суперконцептуальные идеи для собственной системы. Зачем я всю эту психологию затеял? Для того, чтобы сразу перекрыть кислород играющимся с Линуксом новичкам, которым делать нечего. Если уж задумались над созданием ОС, думайте до конца. Итак,
Я хочу создать ОС на базе 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, которая легко устанавливается.
В принципе, если ваш мозг хоть сколько понимает Линукс, вы разберетесь с конфигурированием. Процесс это интересный, вариантов действительно много, а справка, хоть и на английском языке, но все же радует своей доступностью и простотой.
Однако, направить вас все же придется. Перейдите по адресу File Systems —> и поставьте необходимые звездочки. Буква M означает, что поддержка того или иного драйвера осуществляется с помощью подключения к ядру внешнего модуля (ненавижу их!). Нам понадобится также поддержка isofs, для чтения дисков. File Systems —> CD-ROM/DVD Filesystems —> ISO 9660 CDROM file system support. Можно еще поддержать древнедосовские системы.
Чмошные разработчики Mandriva забыли разрешить File systems —> DOS/FAT/NT Filesystems —> NTFS write support, и на одном из их дистрибутивов я мучился с доступом к древневиндовскому разделу.
Посмотрите Processor type and features —> Processor family, мне порекомендовали выбрать Pentium-MMX.
Еще поройтесь в Device Drivers, полезно. Можете шутки ради понавыбирать там все и скомпилировать ядро весом > 50 Мб.
Далее. Ядро после загрузки себя должно загружать, собственно, систему. Либо из скомпилированных в себе файлов (используются во встраиваемых системах), либо из CPIO архива, сжатого чем-нибудь, либо из Initrd. Здесь вам не DOS, здесь не получится сразу сослаться на какой-нибудь init’овый файл в корневом каталоге диска или флешки.
На самом деле получится, не слушайте дядю Анникса!
Неправильно это, хоть в Интернете по этому поводу уже нехилая полемика ведется. В своей системе мы будем использовать initrd, т.к. это удобно, и не вызовет нецензурных выражений от сторонних разработчиков, в отличие от CPIO архива.
Ах, да, скомпилируйте ядро командой
make bzImage
Если у вас x86, найдете его по адресу /linuxkernel/arch/x86/boot/bzImage.
Для суровых челябинских программистов можно использовать Кросс-компайлинг…
Создание Ramdisk.
Теперь нам нужен initrd с установленной там простейшей оболочкой. Мы будем использовать busybox, потому что эта няша может все. Способ мы украдем у Роберто де Лео, создателя Movix (я бы даже уважать его начал, если бы не запредельная любовь к Perl):
dd if=/dev/zero of=/dev/ram0 bs=1k count=5000 - Создаем Ramdisk в оперативной памяти нашего компьютера.
mke2fs -m0 /dev/ram0 5000 - Форматируем Ramdisk в системе Ext2
mkdir /distro - Создаем папку
mount /dev/ram0 /distro - Монтируем в папку /distro
Все, теперь у нас есть 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 для работы требует библиотеки, которые нужно скопировать в наш дистрибутив. Очень легко узнать, какие:
ldd /distro/bin/busybox
Программа покажет нам библиотеки, требуемые для нашей оболочки. Сразу говорю: linux gate создается ядром и скопирован быть не может.
При копировании библиотек можно отсекать отладочную информацию (так Роберто советует):
objcopy --strip-debug откуда куда
Делаем из Линукса Линукс
Надо создать несколько системных текстовых файлов:
Нам нужен /etc/inittab. Удивлю вас: в начале жизни система даже не знает, что такое Root. У нас даже пользователь безымянный, но вот файл общесистемных низкоуровневых фич (ОНФ) должен присутствовать. Пилотное содержание файла следующее:
::sysinit:/etc/rc.d/rc.S
# Запустить оболочку в консоли.
::respawn:-/bin/sh
# Перезагрузка по нажатии на Ctrl+Alt+Del.
::ctrlaltdel:/sbin/reboot
# Команды, выполняемые перед выключением и перезагрузкой.
::shutdown:/sbin/swapoff -a >/dev/null 2>&1
::shutdown:/bin/umount -a -r >/dev/null 2>&1
Следующий файл — /etc/fstab. Это таблица, в которой описано, что и куда монтировать при загрузке.
Вещь бесполезная!
Нам нужно обязательно смонтировать proc, иначе вообще ничего работать не будет, так что в файле пишем:
none /proc proc defaults 0 0
Для mount нужен также файл /etc/mtab. Создайте его и оставьте пустым.
Но mount сделает все необходимое только тогда, когда мы явно его об этом попросим. А просить мы будем в том самом первозагрузочном файле /etc/rc.d/rc.S (rc.d — папка). Вежливо попросим:
#!/bin/ash
/bin/mount -av -t nonfs
Еще нам необходим файл профиля (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, в котором указано, что есть оболочка:
/bin/sh
/bin/ash
/bin/bash
Вот собственно и все. Можно записывать наш Ramdisk в файл.
mkdir /os - папка для "готового".
umount /dev/ram0 - размонтируем кусочек оперативной памяти.
dd if=/dev/ram0 of=/os/initrd bs=1k count=5000 - создаем файл.
gzip /os/initrd - сжимаем файл initrd
Создание загрузочной флешки
«Финишная прямая» нашей маленькой разработки. Берем флешку, вставляем, форматируем в 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):
syslinux -d путь_к_устройству
В корневом каталоге флешки должен появиться файл ldlinux.sys. Если он есть, значит syslinux.bin, syslinux.boot больше не нужны.
Как настроить BIOS на загрузку из флешки, я вам рассказывать не буду — это легко. Скажу только, что очень удобно создать папку /boot/initrd/init, в которую можно будет смонтировать /boot/initrd/main, для последующей работы с ним. Только не забудьте разжимать и сжимать его gzip’ом.
Ну вот и все.
Как-бы я только что рассказал вам, как создать с нуля систему на Linux. Легко, не правда ли? Далее вы можете редактировать скрипт /sbin/init, ведь у вас еще много работы! Вы должны будете написать скрипт для монтирования флешки, который делает chroot в корневой каталог. В противном случае, вы вынуждены будете работать с ReadOnly разделом, величиной в 5 Мб. Но это уже совсем другая история.
Unnx Davis T, B.
Для непросвещенных:
Томас Матеджисек — создатель Slax и Linux Live Scripts.
Роберто де Лео — создатель Movix.
Оригинал:
BUILD YOUR OWN LINUX DISTRO
Автор: Ben Everard
Дата публикации: 23 апреля 2015 года
Перевод: А. Кривошей
Дата перевода: июль 2015 г.
На сегодняшний день существует несколько сотен активно развивающихся дистрибутивов Linux всех цветов и размеров. Но нет ни одного точно такого же, как установлен на вашем компьютере, так как вы скорее всего настраивали его под свои предпочтения. Вы потратили определенное время на то, чтобы установить или удалить программы, изменить внешний вид и так далее.
Было бы неплохо преобразовать свою точно настроенную в соответствии со своими потребностями систему в Live дистрибутив? Вы сможете носить ее с собой на флешке, или устанавливать на другие компьютеры.
Существуют различные инструменты для создания собственного дистрибутива. Мы начнем с наиболее простого в использовании, но предлагающего ограниченное количество опций настройки, и потом перейдем к более сложным, которые позволяют тонко настроить каждый аспект дистрибутива.
Быстрое создание своего собственного 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:
$ apt-get remove --purge libreoffice* /
и заменить его на AbiWord:
$ apt-get install abiword
Если вы хотите поместить на рабочий стол ярлыки для ваших программ, сначала создайте директорию Desktop:
$ mkdir -p /etc/skel/Desktop
Теперь вы можете скопировать туда ярлыки для всех установленных приложений:
$ cp /usr/share/applications/firefox.desktop /etc/skel/Desktop
и затем сделать их исполняемыми:
$ chmod +x firefox.desktop
Если вы хотите изменить обои для рабочего стола, откройте файл /usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override в текстовом редакторе и измените параметр picture-uri на путь к вашему изображению:
picture-uri='file:///usr/share/backgrounds/Partitura_by_Vincijun.jpg' /
Аналогично вы можете изменить тему и иконки, отредактировав соответствующие параметры в этом файле. Например, если вы хотите заменить тему Ambiance на Radiance и использовать набор иконок HighContrast:
[org.gnome.desktop.interface] gtk-theme="Radiance"icone-theme="HighContrast"...[org.gnome.desktop.wm.preferences]theme="Ambiance"
После редактирования этого файла не забудьте скомпилировать модифицированные темы оформления:
$ glib-compile-schemas /usr/share/glib-2.0/schemas
Вы таже можете копировать файлы на свой live CD. Для этого запустите еще один терминал и перейдите в директорию ~/tmp/remaster-root/, которая является корневой для нашего live CD. Например, вы хотите скопировать определенные ярлыки и папки в Desktop:
$ sudo cp -r ~/Documents/README.txt ~/remaster-root/etc/skel/Desktop
После завершения закройте терминал chroot и выберите опцию «Continue Building» в мастере UCK. Теперь начнется сборка вашего нового дистрибутива.
Системы быстрой сборки дистрибутивов
Сборка дистрибутива в браузере с помощью SUSE Studio
SUSE Studio — это наверное самый простая система для создания собственного дистрибутива. Она графическая и работает в браузере. Вам нужен только веб-браузер и подключение к интернету. С помощью SUSE Studio вы можете создавать полнофункциональные десктопные дистрибутивы, серверные системы, или дистрибутивы, заточенные под какую-либо узкую область применения. В веб-интерфейсе вы можете добавлять пользователей, настраивать список приложений и даже настраивать внешний вид и добавлять файлы.
Перейдите на сайт SUSE Studio на www.susestudio.com и создайте аккаунт. Или вы можете авторизоваться с помощью любого провайдера OpenID, например Google, Yahoo, Twitter, Facebook и так далее. После авторизации нажмите ссылку «Create New Appliance» на панели.
Перед тем, как начать сборку своего дистрибутива, необходимо выбрать один из предлагаемых шаблонов. Эти шаблоны помогут вам наполнить дистрибутив основным набором пакетов. Есть шаблоны для последнего и предыдущего релизов OpenSUSE, OpenSUSE 13.1, OpenSUSE 12.3, а также для дистрибутива SUSE Linux Enterprise. Если у вас нет лицензии на SLES, вы можете строить свой дистрибутив на базе любого из шаблонов OpenSUSE.
Для сборки минималистичной системы идеален шаблон Just enough OS (JeOS). Кроме того, есть шаблон Server, на базе которого можно собрать консольный серверный дистрибутив. И наконец, есть шаблоны, которые помогут вам настроить дистрибутив на базе Gnome 3 или KDE 4. После выбора шаблона, в нижней части страницы выберите архитектуру процессора. Кликните кнопку «Create Appliance» для создания базового образа, который послужит основой вашего дистрибутива.
Вы можете протестировать свой образ, запустив дистрибутив непосредственно в браузере в среде TestDrive перед тем, как скачивать его.
Теперь вы находитесь в главном окне вашего окружения с набором вкладок, которые призваны помочь вам в настройке различных аспектов вашего дистрибутива. В первой вкладке под названием «Software» вы выбираете пакеты. Здесь вы увидите список активированных репозиториев и список программ, которые уже установлены в вашей системе. Они зависят от выбранного вами шаблона.
Для поиска и установки дополнительных программ из репозиториев используйте поле «Find». Добавление найденного пакета в состав дистрибутива производится с помощью кнопки «+add». SUSE studio автоматически проверит и добавит все зависимости. Если добавленный вами пакет конфликтует с уже включенным в дистрибутив, вы можете выбрать, какой из них удалить. Если вы хотите добавить свои программы, которых нет в репозиториях, вы можете добавить RPM-файлы.
Кроме того, если программа, которая вам нужна, отсутствует в системных репозиториях, вы также можете добавить добавить дополнительные репозитории с помощью опции «Add Repositories», после чего они будут проиндексированы SUSE Studio, и вы сможете искать в них пакеты.
Персонализация
Основная часть настроек скрывается во вкладке «Configuration». Эта вкладка, в свою очередь, разделена на семь секций для настройки различных аспектов вашего дистрибутива. В секции «General» вы можете локализовать дистрибутив, выбрать раскладку клавиатуры и часовой пояс. Вы также можете здесь указать, как настроить сеть (если не знаете этих тонкостей, всегда выбирайте DHCP), активировать брандмауэр и открыть порты для удаленного доступа. Кроме того, здесь вы можете добавить пользователей или группы. В секции «Personalise» вы можете выбрать обои рабочего стола и логотип для дистрибутива, или загрузить свои.
Секцию «Server» вы в большинстве случаев можете пропустить, так как здесь вы можете только добавить данные для сервера PostgreSQL или MySQL. Аналогично, секция «Appliance» вам понадобится только в том случае, если ваш дистрибутив предназначен для запуска в виртуальной машине. В то же время секция «Desktop» будет полезной большинству пользователей, так как здесь вы можете включить автоматическую авторизацию в системе и выбрать приложения для автозагрузки.
Если вы считаете себя опытным пользователем, то можете посмотреть секцию «Scripts». Здесь вы можете задать скрипты, которые будут запущены после окончания сборки системы, а также те, которые будут запускаться при каждой загрузке дистрибутива.
Закончив с вкладкой «Configuration», перейдите на вкладку «Files», где вы можете добавить в дистрибутив любые файлы или архивы. Все файлы изначально добавляются в корневую директорию, но после того, как они будут загружены на сервер, вы сможете указать место их размещения.
Теперь, когда вы закончили с настройками, самое время попросить SUSE Studio конвертировать ваш дистрибутив в какой-нибудь устраивающий вас формат. Во вкладке «Build» вы увидите набор опций для преобразования дистрибутива в различные форматы. Вы можете, например, создать Live ISO-образ для оптических приводов и USB-флешек, а также образы для различных систем виртуализации, включая KVM, VirtualBox, VMware, Xen и т.д. Чтобы создать традиционный установочный образ, выберите опцию » Preload ISO (.iso)».
После выбора формата нажмите кнопку «Build» для запуска сборки вашего дистрибутива, которая займет несколько минут. Если вы выбирали дополнительные форматы, кликните кнопку «Build Additional», чтобы получить образы в других форматах. Также SUSE Studio присвоит вашему дистрибутиву номер версии. При каждой модификации дистрибутива номер версии будет увеличиваться, а также будет генерироваться лог изменений.
После сборки образа вы можете протестировать его прямо в браузере с помощью опции «Testdrive». Если все в порядке, скачайте образ с помощью опции «Download». Вы можете также расшарить свой дистрибутив для других пользователей SUSE Studio на вкладке «Share» с описанием его особенностей.
SUSE Studio имеет очень низкий порог входа и может использоваться практически любым пользователем, независимо от его уровня знаний Linux. Большая часть тяжелых и занимающих много времени процессов, таких как поиск пакетов и сборка дистрибутивов, осуществляется на удаленных серверах SUSE. Вы можете также удаленно тестировать собранные образы и загружать только те, что удовлетворяют вашим требованиям. Кроме того, система сохраняет ваши настройки и вы можете изменять их без труда.
Создание собственного установочного образа 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.
$ yum install system-config-kickstart
Эта программа предлагает простой графический интерфейс для создания файла Kickstart.
Вы можете задать требуемые вам пакеты, перечисляя их в секции %packages. Вместо отдельных пакетов здесь также можно добавить определенные группы пакетов, например gnome-desktop. Вы также можете указывать здесь пакеты из других файлов Kickstart, задавая их имя и расположение с параметром %include:
%include /usr/share/spin-kickfedora-live-base.ks
Если вам нужно после загрузки дистрибутива запустить на выполнение какую-либо команду, например для настройки сети, необходимо задать ее в секции %post. Например, если вы хотите автоматически запускать Firefox, можете поместить его ярлык в папку ~/.config/autostart, добавив в секцию %post следующие строки:
Убедитесь, что конец секций %packages и %post обозначен с помощью %end. Если вы хотите запустить какую-либо команду за пределами своего live-окружения, например скопировать файлы хоста в свой дистрибутив, добавьте параметр -nochroot в секцию %post, как показано ниже:
%post --nochroot #copy resolv.conf from host to the custom distrocp /etc/resolv.conf $LIVE_ROOT/etc/%end
Переменная $LIVE_ROOT указывает на live-окружение. Аналогичным способом вы можете копировать файлы с хоста в свое live-окружение, например:
$ cp -r /home/bodhi/Music $LIVE_ROOT/
Если вы используете графическую утилиту для задания репозиториев, вы должны вручную добавить в файл Kickstart одну важную строку. Она указывает на список зеркал для репозитория Fedora (а также содержит информацию о версии и архитектуре сборки), откуда будут скачиваться пакеты. Например, если вы хотите получать пакеты для 64-битной Fedora 21, эта строка будет иметь следующий вид:
repo --name=fedora --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-21&arch=x86_64
После того, как вы закончили с файлом Kickstart, откройте его с помощью livecd-creator для сборки дистрибутива. Предположим, файл сохранен в ~/custom-kickstarts/Custom-Fedora.ks, тогда команда будет иметь вид:
$ sudo livecd-creator --config=/home/bodhi/custom-kickstarts/Custom-Fedora.ks--fslabel=FedoraUltimate--cache=/var/cache/live--verbose
Ключ -fslabel задает имя вашего дистрибутива. После выполнения всех инструкций в файле Kickstart утилита собирает ISO-образ вашего дистрибутива, который сохраняется в вашей домашней директории.
Создание собственного дистрибутива для Raspberry Pi
New Out Of the Box Software, или NOOBS — это официальный инсталлятор для Raspberry Pi. Он упрощает и стандартизирует процесс установки дистрибутивов на Raspberry Pi. Хотя главной целью создания NOOBS является упрощение установки операционных систем на Pi, эта утилита может также использоваться для создания собственных дистрибутивов.
Сначала скачайте инсталлятор NOOBS с сайта и установите его в любом поддерживаемом дистрибутиве, на основе которого вы хотите сделать свою систему. Мы советуем использовать дистрибутив Raspbian, который рекомендуется и создателями NOOBS.
После установки и загрузки Raspbian вы можете вносить в него свои изменения. Например, вы можете изменить обои рабочего стола и сменить тему с помощью утилиты командной строки obconf, а также установить дополнительные темы с помощью команды:
$ sudo apt-get install openbox-themes
Вы также можете устанавливать или удалять с помощью 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 именем, которым вы хотите назвать свой дистрибутив.
Перейдите в эту директорию и откройте файл os.json в текстовом редакторе. Заметите текст рядом с полями name и description на свой. Удалите файл flavours.json.
И наконец, удалите имеющиеся в этой директории файлы root.tar.xz и boot.tar.xz, заменив их на свои. Это все. Теперь загрузите Pi с этой карты.
Сборка пользовательского дистрибутива на базе Arch с нуля
Если у вас хватит терпения собрать собственный дистрибутив с нуля, вы должны собирать его поверх Arch Linux. Подход создателей этого дистрибутива позволяет пользователю полностью настраивать свою рабочую среду и делает его идеальной платформой для разработки пользовательских систем.
Вы можете создать пользовательский дистрибутив на базе Arch с помощью утилиты командной строки Archiso, которая представляет собой набор скриптов Bash и достаточно сложна в освоении, но при этом дает вам полный контроль над конечным результатом.
Настройка среды для сборки дистрибутива
Первое, что вам нужно для сборки — это установленный дистрибутив Arch. Инструкций по его инсталляции в сети более чем достаточно, поэтому здесь мы не будем описывать этот процесс.
После установки Arch настройте его в соответствии со своими нуждами. Установите дополнительные пакеты, смените обои и темы оформления, и настройте другие аспекты системы, например сеть. Позже мы скопируем все эти изменения из установленного экземпляра Arch в тот, который мы будем собирать.
После того, как вы настроите свой дистрибутив, откройте терминал и установите зависимости для Archiso:
$ pacman -S make squashfs-tools libisoburn dosfstools patch lynx devtools git
Теперь скачайте последнюю версию пакета archiso из репозитория Git с помощью команды:
$ git clone git://projects.archlinux.org/archiso.git
Она скопирует файлы в директорию ~/archiso. Перейдите в эту директорию и установите утилиту с помощью команды make install. После окончания установки вы можете без всяких опасений удалить директорию ~/archiso. Далее, создадим директорию, в которой мы будем настраивать файлы для нашего будущего дистрибутива:
Убедитесь, что у вас достаточно свободного дискового пространства для размещения всех приложений, которые вы хотите установить, а также любых других файлов, которые вы решите поместить в свой дистрибутив.
Теперь вам нужно скопировать один из двух профилей Archiso. Профиль baseline хорош для создания базовой live-системы без предустановленных пакетов. Мы будем использовать профиль releng, который позволяет создать полностью настроенный под свои нужды Arch Linux с предустановленными приложениями. Для использования этих скриптов просто скопируйте их в директорию ~/archlive:
$ cp r /usr/share/archiso/configs/releng/ ~/archlive/
Добавление пакетов
Добавлять пакеты в ISO-образ с помощью Archiso также просто, как добавлять их в текстовый файл, по одному пакету на строку. В директории ~/archlive у нас три файла: packages.i686, packages.x86_64 и packages.both. Вы можете открыть их в текстовом редакторе и добавить названия пакетов, которые вы хотите включить в дистрибутив. Archiso будет считывать содержимое файла для соответствующей архитектуры и затем упаковывать их в образ, который будет работать как на 32-х, так и на 64-битных машинах. Тем не менее, для обеспечения согласованности, мы рекомендуем вам добавлять название пакетов в файл packages.both, чтобы они были доступны для обеих архитектур.
Файл packages.both уже содержит определенный набор пакетов. Вы должны оставить их там, и добавлять свои пакеты в конец файла. Вы можете вывести список всех установленных в системе пакетов с помощью команды:
И затем скопировать те, которые вам нужны. Вы можете создать базовую систему с рабочим столом Mate, менеджером входа в систему и браузером Firefox, добавив в файл packages.both следующие пакеты:
xorg-server xorg-xinit xorg-server-utils xf86-video-vesa slim mate firefox
Вы также можете скопировать в файл packages.both все пакеты, установленные в системе, с помощью команды:
$ pacman -Qqe >> ~/archlive/packages.both
Настройка корневой директории
Директория airootfs внутри ~/archlive/ служит оверлеем для того, что будет находиться в корневой директории нового дистрибутива. Любые файлы, которые вы поместите в эту директорию, будут добавлены в файловую систему дистрибутива, поэтому, если вы используете менеджер входа Slim, скопируйте его конфигурационный файл:
$ cp /etc/slim.conf ~/archlive/airootfs/etc/
Аналогично, вам необходимо скопировать файл /etc/systemd/system/display-manager.service в соответствующее место внутри ~/archlive/airootfs/, а также директории, в которых хранятся темы оформления, а именно /usr/share/backgrounds, /usr/share/icons и /usr/share/themes.
Если вы хотите, чтобы новый дистрибутив имел тот же набор пользователей, скопируйте соответствующие файлы:
$ cp /etc/{shadow,passwd,group} ~/archlive/airootfs/etc/
Перед тем, как копировать любые файлы из домашней директории пользователя, необходимо создать директорию skel:
$ mkdir ~/archlive/airootfs/etc/skel
Эта директория отображает домашнюю директорию пользователя во время подготовки системы. Теперь вы можете копировать файлы из домашней директории:
$ cp ~/.bashrc ~/archlive/airootfs/etc/skel/
Таким образом, вы можете скопировать любые файлы или папки из своей домашней директории в директорию skel, включая ~/.xinitrc и ~/.config.
Для того, чтобы автоматически авторизовываться в системе от имени обычного пользователя, а не root, откройте файл ~/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf в текстовом редакторе и отредактируйте следующую строку:
$ cp ~/.bashrc ~/archlive/airootfs/etc/skel/
ExecStart=-/sbin/agetty —autologin bodhi —noclear %I 38400 linux
Замените bodhi на свое имя пользователя.
Заключительные настройки
В домашней директории root (~/archlive/airootfs/root) есть файл customize-root-image.sh. Любая задача по администрированию систему, которую вы хотели бы выполнять после установки Arch, может быть добавлена в этот файл. Помните, что инструкции в этом файле должны составляться для нового окружения, то есть / в скрипте должна относиться к корневой директории собираемого дистрибутива.
Откройте файл в текстовом редакторе, найдите строку с /etc/localtime и задайте свой часовой пояс:
$ ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Также убедитесь, что в качестве командной оболочки установлен Bash:
$ usermod -s /usr/bin/bash root
Затем скопируйте содержимое директории skel в свою пользовательскую домашнюю директорию:
$ cp -aT /etc/skel/ /home/bodhi/
и задайте правильного владельца этих файлов:
$ chown bodhi:users /home/bodhi -R
В двух последних командах замените bodhi на свое имя пользователя.
Наконец, прокрутите страницу вниз, до конца файла, и закомментируйте все команды systemctl, добавив перед ними символ #. Чтобы загружаться в графический интерфейс, добавьте следующие строки для запуска всех нужных служб:
systemctl enable pacman-init.service choose-mirror.service systemctl set-default graphical.targetsystemctl enable graphical.target
Это все. Теперь вам нужно собрать образ дистрибутива. Перейдите в директорию ~/archlive и запустите нижеприведенную команду для запуска процесса сборки:
$ ./build.sh -v -N EduArch -V 1.0 -L EduArch_1.0
Ключ -v включает режим вывода подробной информации о процессе, -N задает имя ISO-образа, -V задает версию, в а -L добавляет метку в сгенерированный ISO.
Обратите внимание, что процесс сборки достаточно медленный, и может занять до нескольких часов в зависимости от мощности вашего компьютера. После завершения вы найдете ISO-образ в директории ~/archlive/out.
Обновление образов
Через некоторое время после сборки образа вы захотите обновить его. Возможно выйдут новые версии приложений, или вам понадобится изменить какие-либо файлы, которые вы добавляли в образ вручную.
Для этого перейдите в директорию ~/archlive/work. Директории i686 и x86_64 внутри work содержат файловые системы для соответствующих архитектур. Вы можете сменить корневую директорию на одну из них с помощью команды:
$ arch-chroot ~/archlive/work/x86_64/root-image
или
$ arch-chroot ~/archlive/work/i686/root-image
Теперь, изнутри, вы можете делать любые обновления или изменения системы. Если вы хотите обновить приложения, то сначала обновите базу данных ключей пакетного менеджера и список пакетов:
$ pacman-key --init $ pacman-key --populate
После чего можете обновить систему с помощью команды:
Сделав необходимые изменения, выйдите из окружения chroot.
Не забудьте сделать эти изменения для обеих архитектур. Теперь необходимо заново собрать образ. Однако скрипт build.sh, так как мы уже в директории work. Чтобы заставить его все-таки собрать новый образ, откройте файл build.sh в текстовом редакторе. Перейдите в конец файла и удалите параметр run_once из начала команд make_prepare и make_iso:
for arch in i686 x86_64; do make_preparedonemake_iso
Сохраните файл и запустите скрипт для создания образа:
$ ./build.sh -v -N EduArch -V 2.0 -L EduArch_2.0
Сборка дистрибутивов Linux для встраиваемых систем
Linux — это популярный выбор на рынке встраиваемых решений. Однако это поле занято различными специализированными встраиваемыми дистрибутивами Linux. Чтобы упорядочить этот рынок, Linux Foundation вместе с такими лидерами отрасли, как Intel, AMD, Freescale, Texas Instruments, Wind River и другими, создали проект Yocto.
Главной целью проекта является создание и распространение окружения и инструментов для создания и сборки встраиваемых дистрибутивов Linux. Проект поддерживает 32- и 64-битные встраиваемые архитектуры, такие как ARM, PPC и MIPS. С помощью этих инструментов разработчики могут собирать полнофункциональные системы Linux для встраиваемых устройств.
В помощь разработчикам проект предлагает программу Hob, которая представляет собой графический фронтенд к движку сборки проектов BitBake. Hob читает инструкции и, следуя им, скачивает пакеты, собирает их и компилирует результат в виде загрузочного образа. Вы можете установить его во всех популярных дистрибутивах, включая Fedora, Ubuntu, Debian, OpenSUSE и CentOS.
Для начала вы можете загрузить систему сборку с сайта проекта, используя git:
$ git clone -b daisy git://git.yoctoproject.org/poky.git
Если вам понравилась статья, поделитесь ею с друзьями:
Download Article
Download Article
This wikiHow teaches you how to create a Linux operating system. While creating a Linux distribution from scratch requires advanced knowledge of how to code, a free Linux distribution called Slax will allow you to customize your Linux installation to create a distribution with only the items you want. You will need a windows computer for this process.
-
1
Install WinRAR if you don’t have it. Since Windows doesn’t have a program which can open ISO files as directories, you’ll use this free program to open the ISO file for Slax later. Go to https://www.rarlab.com/download.htm (or go to https://www.rarlab.com/ and click Downloads on the left side), then do the following:
- Click WinRAR x64 (64 bit) 5.60 beta 5 near the top of the page.
- Double-click the downloaded setup file.
- Click Yes when prompted.
- Click Install
- Make sure the «ISO» box is checked.
- Click OK
- Click Done
-
2
Open the Slax website. Go to https://www.slax.org/en/ in your computer’s web browser. This is the website from which you can download Slax.
Advertisement
-
3
Click Slax 64bit. It’s on the left side of the page. Doing so prompts the Slax ISO file to download onto your computer.
- Unless your computer was manufactured in the 90s or early 2000s, don’t use the 32-bit link for Slax.[1]
- Unless your computer was manufactured in the 90s or early 2000s, don’t use the 32-bit link for Slax.[1]
-
4
Plug a flash drive into your computer. You can use any type of USB flash drive for this step, but the flash drive must have at least one gigabyte of storage space.
- Given that it costs less than $10 to buy a 16-gigabyte flash drive, you might want to purchase a flash drive which is larger than one gigabyte.
-
5
Format the flash drive for NTFS. If your flash drive has never been formatted for NTFS, you’ll need to change the file system on the flash drive to NTFS by selecting it from the «File system» drop-down menu in the Format window.
Advertisement
-
1
Right-click the downloaded Slax ISO. Doing so will prompt a drop-down menu.
- Make sure that Slax has finished downloading before you do this.
-
2
Select Open with. It’s near the middle of the drop-down menu. This prompts a pop-out menu to appear.
-
3
Click WinRAR archiver. You’ll see it in the pop-out menu. The ISO file will open in WinRAR.
-
4
Select the «slax» folder. Click once the «slax» folder near the top of WinRAR.
-
5
Click Extract To. It’s a folder-shaped option at the top of the WinRAR window. Doing so opens a pop-up window.
-
6
Select your flash drive’s name. You’ll find this option in the pop-up window.
-
7
Click OK. It’s at the bottom of the window. This will allow the «slax» folder to extract and copy to your flash drive.
Advertisement
-
1
Understand how modules work. Slax is a lightweight distribution, meaning that it only comes with a few absolutely necessary programs and services installed. By adding module files to your Slax installation flash drive, you can determine which programs, features, and graphical interfaces appear in your final distribution.
- Like Slax, modules are completely free to download and use.
-
2
-
3
Select a category. Click any one of the categories (e.g., artwork) to view a list of its included modules.
-
4
Find a module you want to install. Each listed module will have a description to the right of it, so scroll through the descriptions until you find one for a program or feature you’d like to include in your installation.
-
5
Click 64bit. It’s a button to the left of your preferred module.
- If this button is greyed out, you’ll click 32bit instead. Almost all of the available modules are 64 bit.
-
6
Repeat for any other module files. Once you’ve downloaded all of the modules you want to install, you can proceed.
- Don’t worry about renaming or classifying the modules—they’re all going to go in the same folder.
-
7
Copy the module files. Click and drag your mouse to select all of your downloaded module files, then press Ctrl+C.
-
8
Open your flash drive. If your flash drive is already open in a window, you’re all set. If not, do the following:
- Press ⊞ Win+E to open File Explorer (or type file explorer into Start and then click File Explorer).
- Click This PC on the left side of File Explorer.
- Double-click your flash drive’s name.
-
9
Open the «slax» folder. Double-click the «slax» folder at the top of your flash drive’s window.
-
10
Open the «modules» folder. Double-click the «modules» folder near the top of the window.
-
11
Paste in the module files. Once the empty «modules» folder is open, press Ctrl+V to paste the module files into it.
Advertisement
-
1
Re-open your flash drive. If you closed your flash drive, re-open it via File Explorer.
- If your flash drive is open, click the «Back» button in the top-left corner of the File Explorer, then skip the next step.
-
2
Open the «slax» folder. It should be the only folder on your flash drive.
-
3
Open the «boot» folder. This folder is near the top of the flash drive’s window.
-
4
Run the boot installer. Double-click the bootinst file in the «boot» folder, then click Yes when prompted. This will allow Slax to make your USB flash drive bootable.
-
5
Press any key when prompted. Doing so signifies that your USB flash drive is now bootable.
-
6
Open your computer’s BIOS page. This will vary slightly from Windows computer to Windows computer, but you’ll always start by restarting your PC. After the computer shuts down and begins to reboot, you’ll press your computer’s «BIOS» key, which will change depending on your computer’s manufacturer.
- The «BIOS» key is usually one of the function keys (e.g., F12), the Del key, or something similar.
-
7
Set your flash drive as the primary boot location. Again, this will vary depending on your computer’s manufacturer. In most cases, you’ll find the «Boot», «Advanced», or «Drives» section in which all of your computer’s attached drives are, then you’ll use the arrow keys to select your flash drive and press the + key to move the flash drive to the top of the list.
- Keep in mind that this will cause your computer to boot from the flash drive rather than its built-in hard drive whenever the flash drive is connected.
-
8
Save and exit. Press the «Save and Exit» key that’s listed in the key legend at the bottom or on the side of the screen.
- You may have to confirm this choice by pressing another key.
-
9
Wait for the Slax startup icon to appear. Once you see the Slax four-leaf clover appear, Slax is opening. You should see the Slax desktop appear shortly after this point.
-
10
View your installed programs. Click the four-box «Menu» icon in the lower-left corner of the screen to do so. You should see any module programs that you installed here.
- If you added any graphical modules, they will appear as part of your system. For example, if you added an icon module which changes the icons in your Slax distribution, the icons will be different upon booting.
- You can delete modules from or add modules to your flash drive at any time from within the «slax/modules/» directory.
Advertisement
Add New Question
-
Question
Is there any way that I can make it by coding?
You can use Linux from scratch. Search for it and you will find some tutorials about it.
-
Question
How do I build my own Linux distribution if SUSE studio is being discontinued?
You’ll have to take the harder path, building your own Linux from scratch. It is quite difficult, but will soon be your only option if you want the best customization.
-
Question
I try to create an account at SUSE Studio, but get error 500 when trying to use my Google account. I do not have any other account to use for it. I don’t want to use method 1. What do I do?
SUSE Studio is discontinuing soon, so there really isn’t that much choice.
See more answers
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
-
If you’re interested in coding your own Linux distribution from scratch, you should check out the free Linux from Scratch eBook available at http://www.linuxfromscratch.org/lfs/downloads/stable/. You can click the LFS-BOOK-8.2.pdf link to open the PDF version of the book, which offers step-by-step instructions on creating your own distribution.
-
While you can easily run Slax on a virtual machine (e.g., VirtualBox), you won’t be able to use any of the modules for it if you do so.
-
By default, Slax only comes with a few programs. This makes it incredibly fast and easy to install on virtually any computer built in the last decade.
Thanks for submitting a tip for review!
Advertisement
-
Unfortunately, building a Linux distribution via other formerly popular methods (e.g., SUSE) is no longer possible as these services have been discontinued.
-
Slax, like any other Linux version, offers limited support for some programs.
Advertisement
References
About This Article
Thanks to all authors for creating a page that has been read 163,322 times.
Is this article up to date?
Download Article
Download Article
This wikiHow teaches you how to create a Linux operating system. While creating a Linux distribution from scratch requires advanced knowledge of how to code, a free Linux distribution called Slax will allow you to customize your Linux installation to create a distribution with only the items you want. You will need a windows computer for this process.
-
1
Install WinRAR if you don’t have it. Since Windows doesn’t have a program which can open ISO files as directories, you’ll use this free program to open the ISO file for Slax later. Go to https://www.rarlab.com/download.htm (or go to https://www.rarlab.com/ and click Downloads on the left side), then do the following:
- Click WinRAR x64 (64 bit) 5.60 beta 5 near the top of the page.
- Double-click the downloaded setup file.
- Click Yes when prompted.
- Click Install
- Make sure the «ISO» box is checked.
- Click OK
- Click Done
-
2
Open the Slax website. Go to https://www.slax.org/en/ in your computer’s web browser. This is the website from which you can download Slax.
Advertisement
-
3
Click Slax 64bit. It’s on the left side of the page. Doing so prompts the Slax ISO file to download onto your computer.
- Unless your computer was manufactured in the 90s or early 2000s, don’t use the 32-bit link for Slax.[1]
- Unless your computer was manufactured in the 90s or early 2000s, don’t use the 32-bit link for Slax.[1]
-
4
Plug a flash drive into your computer. You can use any type of USB flash drive for this step, but the flash drive must have at least one gigabyte of storage space.
- Given that it costs less than $10 to buy a 16-gigabyte flash drive, you might want to purchase a flash drive which is larger than one gigabyte.
-
5
Format the flash drive for NTFS. If your flash drive has never been formatted for NTFS, you’ll need to change the file system on the flash drive to NTFS by selecting it from the «File system» drop-down menu in the Format window.
Advertisement
-
1
Right-click the downloaded Slax ISO. Doing so will prompt a drop-down menu.
- Make sure that Slax has finished downloading before you do this.
-
2
Select Open with. It’s near the middle of the drop-down menu. This prompts a pop-out menu to appear.
-
3
Click WinRAR archiver. You’ll see it in the pop-out menu. The ISO file will open in WinRAR.
-
4
Select the «slax» folder. Click once the «slax» folder near the top of WinRAR.
-
5
Click Extract To. It’s a folder-shaped option at the top of the WinRAR window. Doing so opens a pop-up window.
-
6
Select your flash drive’s name. You’ll find this option in the pop-up window.
-
7
Click OK. It’s at the bottom of the window. This will allow the «slax» folder to extract and copy to your flash drive.
Advertisement
-
1
Understand how modules work. Slax is a lightweight distribution, meaning that it only comes with a few absolutely necessary programs and services installed. By adding module files to your Slax installation flash drive, you can determine which programs, features, and graphical interfaces appear in your final distribution.
- Like Slax, modules are completely free to download and use.
-
2
-
3
Select a category. Click any one of the categories (e.g., artwork) to view a list of its included modules.
-
4
Find a module you want to install. Each listed module will have a description to the right of it, so scroll through the descriptions until you find one for a program or feature you’d like to include in your installation.
-
5
Click 64bit. It’s a button to the left of your preferred module.
- If this button is greyed out, you’ll click 32bit instead. Almost all of the available modules are 64 bit.
-
6
Repeat for any other module files. Once you’ve downloaded all of the modules you want to install, you can proceed.
- Don’t worry about renaming or classifying the modules—they’re all going to go in the same folder.
-
7
Copy the module files. Click and drag your mouse to select all of your downloaded module files, then press Ctrl+C.
-
8
Open your flash drive. If your flash drive is already open in a window, you’re all set. If not, do the following:
- Press ⊞ Win+E to open File Explorer (or type file explorer into Start and then click File Explorer).
- Click This PC on the left side of File Explorer.
- Double-click your flash drive’s name.
-
9
Open the «slax» folder. Double-click the «slax» folder at the top of your flash drive’s window.
-
10
Open the «modules» folder. Double-click the «modules» folder near the top of the window.
-
11
Paste in the module files. Once the empty «modules» folder is open, press Ctrl+V to paste the module files into it.
Advertisement
-
1
Re-open your flash drive. If you closed your flash drive, re-open it via File Explorer.
- If your flash drive is open, click the «Back» button in the top-left corner of the File Explorer, then skip the next step.
-
2
Open the «slax» folder. It should be the only folder on your flash drive.
-
3
Open the «boot» folder. This folder is near the top of the flash drive’s window.
-
4
Run the boot installer. Double-click the bootinst file in the «boot» folder, then click Yes when prompted. This will allow Slax to make your USB flash drive bootable.
-
5
Press any key when prompted. Doing so signifies that your USB flash drive is now bootable.
-
6
Open your computer’s BIOS page. This will vary slightly from Windows computer to Windows computer, but you’ll always start by restarting your PC. After the computer shuts down and begins to reboot, you’ll press your computer’s «BIOS» key, which will change depending on your computer’s manufacturer.
- The «BIOS» key is usually one of the function keys (e.g., F12), the Del key, or something similar.
-
7
Set your flash drive as the primary boot location. Again, this will vary depending on your computer’s manufacturer. In most cases, you’ll find the «Boot», «Advanced», or «Drives» section in which all of your computer’s attached drives are, then you’ll use the arrow keys to select your flash drive and press the + key to move the flash drive to the top of the list.
- Keep in mind that this will cause your computer to boot from the flash drive rather than its built-in hard drive whenever the flash drive is connected.
-
8
Save and exit. Press the «Save and Exit» key that’s listed in the key legend at the bottom or on the side of the screen.
- You may have to confirm this choice by pressing another key.
-
9
Wait for the Slax startup icon to appear. Once you see the Slax four-leaf clover appear, Slax is opening. You should see the Slax desktop appear shortly after this point.
-
10
View your installed programs. Click the four-box «Menu» icon in the lower-left corner of the screen to do so. You should see any module programs that you installed here.
- If you added any graphical modules, they will appear as part of your system. For example, if you added an icon module which changes the icons in your Slax distribution, the icons will be different upon booting.
- You can delete modules from or add modules to your flash drive at any time from within the «slax/modules/» directory.
Advertisement
Add New Question
-
Question
Is there any way that I can make it by coding?
You can use Linux from scratch. Search for it and you will find some tutorials about it.
-
Question
How do I build my own Linux distribution if SUSE studio is being discontinued?
You’ll have to take the harder path, building your own Linux from scratch. It is quite difficult, but will soon be your only option if you want the best customization.
-
Question
I try to create an account at SUSE Studio, but get error 500 when trying to use my Google account. I do not have any other account to use for it. I don’t want to use method 1. What do I do?
SUSE Studio is discontinuing soon, so there really isn’t that much choice.
See more answers
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
-
If you’re interested in coding your own Linux distribution from scratch, you should check out the free Linux from Scratch eBook available at http://www.linuxfromscratch.org/lfs/downloads/stable/. You can click the LFS-BOOK-8.2.pdf link to open the PDF version of the book, which offers step-by-step instructions on creating your own distribution.
-
While you can easily run Slax on a virtual machine (e.g., VirtualBox), you won’t be able to use any of the modules for it if you do so.
-
By default, Slax only comes with a few programs. This makes it incredibly fast and easy to install on virtually any computer built in the last decade.
Thanks for submitting a tip for review!
Advertisement
-
Unfortunately, building a Linux distribution via other formerly popular methods (e.g., SUSE) is no longer possible as these services have been discontinued.
-
Slax, like any other Linux version, offers limited support for some programs.
Advertisement
References
About This Article
Thanks to all authors for creating a page that has been read 163,322 times.
Is this article up to date?
Содержание
ВВЕДЕНИЕ
Прежде чем делать свою сборку, Вы должны определить цель и задачи своего творения. Иначе сборка может не получить своё предназначение в этом мире и остаться малоизвестной.Итак, цели и задачи определены и Вы решились сделать сборку своей системы.
Для начала Вы должны либо в Virtualbox (или в другой виртуальной машине), либо у себя на компьютере установить операционную систему со всеми настройками, со всеми программами, которые считаете нужными иметь в Вашей сборке.
Теперь, когда всё настроено и установлено, будем создавать свою сборку. Для этого нам в первую очередь необходимо свободное место на разделе с папкой /home не менее 6 ГБ.
Для создания сборки есть несколько инструментов. Мы будем говорить о Remastersys, который позволяет создать полноценную сборку даже не очень продвинутому пользователю.
Все действия дальше описаны для Ubuntu, но подходят для всех Debian совместимых дистрибутивов.
1. УСТАНОВКА
Для установки Remastersys необходимо скачать и установить вручную , например, через программу gdebi, 2 пакета: remastersys_3.0.x-2_all.deb и remastersys-gtk_3.0.x-2_all.deb
Для Ubuntu 10.04 — 14.04 скачать отсюда
Для Ubuntu 16.04 — 17.04 скачать отсюда
Для Ubuntu 17.10 скачать отсюда
Для Ubuntu 18.04 скачать отсюда
2. ПЕРВЫЕ ШАГИ
Запускаем Система ⇒ Администрирование ⇒ Remastersys (Я использую Мате 1.6. С другими рабочими столами расположение может отличаться). Видим вот такое окно:
Коротко об основных кнопках:
Backup — полная резервная копия установленной системы, включая пользовательские данные и настройки. Сохраняется полностью все файлы в домашних каталогах пользователей системы.
Dist — резервная копия только установленной системы, БЕЗ пользовательских данных. Самый оптимальный вариант для создания сборки системы. Создается структура загрузочного диска и образ диска(iso).
Distcdfs — то же, что и Dist, но создается структура загрузочного диска без создания образа диска(iso).
Distiso — создает образ диска(iso), при условии готовой структуры загрузочного диска. Применяется только после Dist или Distcdfs.
Очистить — очистить временную папку программы. Используется для очищения папки перед созданием нового образа.
Переходим во вкладку Settings:
Здесь мы видим параметры нашей будущей сборки. Рассмотрим самое необходимое.
Username — имя пользователя по-умолчанию при входе в систему LiveCD.
CD Label — метка диска. Высвечивается название при загрузке диска в CD-привод. Ограничение 32 символа, учитывая пробелы.
Filename — имя файла созданного образа.
Остальное пока трогать не будем.
Итак зададим:
— Имя пользователя в строке Username, скажем, alex;
— Придумаем название нашей сборки и запишем в CD Label, допустим, AlexBuntu;
— В строке Filename запишем имя файла сборки, AlexBuntu-12.04-x32.iso.
Должно получится следующее:
Галочка в строке Show install icon on Backup mode desktop создает иконку установки Вашей системы на рабочем столе. Опция работает на всех основных рабочих столах.
Теперь переходим на вкладку Actions:
Нажимаем кнопку Dist. Появится окно:
Жмем ОК. Появится окно:
Всё, теперь можете спокойно и не торопясь попить чай или кофе. Минут через 15 — 60 (всё зависит от мощности ПК) появится сообщение:
Поздравляю Вас с первой Вашей сборкой!
Файл сборки находится по адресу /home/remastersys/remastersys и имеет то имя, которое Вы дали своей сборке. В моем случае это файл AlexBuntu-12.04-x32.iso. В этой же папке есть еще текстовый файл контрольной суммы образа с расширением md5, в моем случае файл AlexBuntu-12.04-x32.iso.md5.
Теперь Вы можете записать свою сборку на диск и насладиться своим творением. Возможно при входе в систему с LiveCD придется ввести имя пользователя, которое было выбрано при создании образа, в моем случае это alex. Пароль оставьте пустым.
3. РАСШИРЕННЫЕ ВОЗМОЖНОСТИ
Многих устроят выше описанные главы. Если Вы всё еще читаете, то Вы действительно хотите познать все тонкости создания сборки, приближенной к профессиональной.
В первую очередь коснемся вкладки Settings и рассмотрим остальные нужные строки.
Working directory — рабочая папка программы. Вы можете ее переназначить в любое место и на любой раздел.
Ну и самая важная строчка настроек Squashfs options.
Remastersys использует для создания дистрибутива возможности SquashFS. Чтобы понять весь смысл данной строки предлагаю Вам рускоязычный блог , в котором прекрасно изложен весь смысл этого мощнейшего инструмента.
После изучения всех возможностей добавим в нашу строчку Squashfs options следующие опции: -comp xz.
Строчка должна иметь вид:
Эта опция устанавливает алгоритм компрессии xz вместо gzip по-умолчанию, что сожмет нашу сборку примерно на 20-25% лучше.Эта опция доступна с версии squashfs 4.2 и, например, в Ubuntu 10.04 она не доступна. В версии Ubuntu 12.04 установлена нужная версия 4.2 squashfs.
Чтобы проверить, доступна ли эта опция, наберите в терминале mksquashfs. Если вы видите похожее на следующее:
mksquashfs
SYNTAX:mksquashfs source1 source2 … dest [options] [-e list of exclude dirs/files]
Filesystem build options:
-comp <comp> select <comp> compression
Compressors available:
gzip (default)
lzo
xz
то всё в порядке и использовать опцию -comp xz можно смело.
С версии 3.06 включение компрессии xz вместо gzip заменено на вкл./выкл. флажка
4. ЗАГРУЗОЧНОЕ МЕНЮ
По-умолчанию Remastersys создает загрузочное меню сборки довольно-таки скучное и однообразное. Одно только радует, что меню достаточно функциональное. Я долго искал простой способ включения своего меню без пересборки всего образа. Все дальнейшие действия не были задуманы авторами Remastersys и являются своего рода моими уловками и обходными способами, к которым я шел несколько месяцев различными экспериментами. Поэтому этот раздел не претендует на правильную инструкцию по Remastersys.
Итак. Вот такое загрузочное меню мы имеем в стандартной установке:
Вот такое меню можно получить после некоторых манипуляций:
Такое загрузочное меню используется в одной из моих сборок. Как видим, картинка изменена и меню русифицировано. Кроме всего прочего я убрал название дистрибутива из меню и написал его в GIMPe яркими красками. Сейчас мы с Вами и займемся заменой картинки и русификацией меню. Для этого нам потребуется обратить внимание на содержимое файлов в папке /home/remastersys/remastersys:
Здесь нас интересует папка ISOTMP. В этой папке хранятся временные файлы программы Remastersys. Этим мы и воспользуемся. Переходим в эту папку:
Структура данной папки очень похожа на структуру образа диска. Не хватает только папки .disk. В папке isolinux хранятся файлы загрузочного меню. Заходим в нее:
Рассмотрим файлы загрузочного меню:
splash.png — фоновое изображение. Размер изображения 640х480 точек на дюйм.
isolinux.cfg — конфигурационный файл загрузочного меню.
vesamenu.c32, isolinux.bin — системные файлы.
Смело меняем фон загрузочного меню на свой. Тип файла и название должно остаться таким же. Размер изображения обязательно 640х480 точек на дюйм.
Далее я выложил листинг отредактированного конфигурационного файла isolinux.cfg. За основу взят стандартный конфигурационный файл Remastersys. Я постарался максимально понятно написать комментарии к строкам. Почти вся информация в интернете на английском языке и очень краткая, поэтому много времени потратил на эксперименты, чтобы узнать, что и как работает.
default vesamenu.c32 prompt 0 timeout 100 font cyr_a8x16.psf # Фон загрузочного меню menu background splash.png # Цвет имеет первые два регистра прозрачности значение от 0 (прозрачно) до 255 (непрозрачно) в HEX. # Остальные 6 цифр цвет в режиме HEX (код цвета можно взять из GIMPa). Сначала пишется цвет букв, потом фона, потом 3 режима тени (none, std, all) # Цвет заголовка menu color title * #ff00923F #00000000 none # Цвет оконтовки меню (бордюра) menu color border * #00000000 #00000000 none # Цвет выбранной строки меню menu color sel * #7fffffff #00000000 none # Цвет невыбранной строки меню menu color unsel * #ffC4613B #00000000 none # Цвет неактивной строки (отключенной но отображающейся на экране) menu color disabled * #ffC4613B #00000000 none # Цвет строки tabmsg расположенной под меню (с надписью Нажмите ENTER для загрузки или TAB для редактирования меню) menu color tabmsg * #ffCC623E #00000000 none # Цвет строки timeout (с надписью Автоматическая загрузка начнется через) menu color timeout_msg * #ffCC623E #00000000 none #Отступ с верху, строк menu vshift 1 #Количество строк меню menu rows 6 # Положение строки tabmsg menu tabmsgrow 11 # Положение строки timeout menu timeoutrow 12 menu AUTOBOOT Автоматическая загрузка начнется через # сек menu tabmsg Нажмите ENTER для загрузки или TAB для редактирования меню menu cmdlinerow 11 #Ширина меню, количество символов menu width 80 #Отступ символов слева от края (как табуляция) menu margin 12 #menu title Ubuntu 12.04 Desktop Mate 1.6 label live # menu label live - boot the Live System menu label Загрузить систему с LiveDVD диска kernel /casper/vmlinuz append file=/cdrom/preseed/custom.seed boot=casper initrd=/casper/initrd.gz quiet splash -- label install menu label Установить Ubuntu 12.04 LTS Mate 1.6 kernel /casper/vmlinuz append file=/cdrom/preseed/custom.seed boot=casper only-ubiquity initrd=/casper/initrd.gz quiet splash -- # Сделать строку меню не активной # menu disable label check menu label Проверить диск на ошибки kernel /casper/vmlinuz append boot=casper integrity-check initrd=/casper/initrd.gz quiet splash -- label memtest menu label Проверить память kernel /install/memtest append - label hd menu label Загрузиться с первого жесткого диска\ localboot 0x80
Кодировка файла isolinux.cfg должна быть обязательно CP 866. Можно сохранять и редактировать в Cooledit (текстовый редактор Midnight Commandera), в OpenOffice и др. Взять мой отредактированный файл isolinux.cfg можно здесь.
Кроме этого нужно положить в папку isolinux шрифты поддерживающие русский язык. Взять можно отсюда.
В папке должно получится следующее:
Проверьте права доступа файлов должно быть следующее для всех 5 файлов:
Теперь все приготовления закончены. Запускаем Remastersys:
Нажимаем кнопку Distiso. Процесс пересборки образа пойдет намного быстрее, всего 1 — 5 минут, потому что основные файлы системы пересобираться не будут. На выходе будут те же файлы образа и контрольной суммы, но уже с Вашим неповторимым красивым меню.
5. ОЧИСТКА СБОРКИ ОТ «ЛИШНЕГО»
Прежде всего уточню, что речь пойдет не об удалении приложений из сборки, а об удалении временных файлов из кэша, коих великое множество на сотни мегабайт.
Перед очисткой системы установите пакет ubiquity-frontend-gtk.
В первую очередь воспользуемся стандартными инструментами очистки системы. Открываем терминал и пишем:
sudo apt-get autoremove sudo apt-get clean
Первая команда автоматически удалит все неиспользуемые пакеты.
Вторая команда удалит скачанные файлы пакетов в архиве.
Теперь воспользуемся программой Synaptic и удалим все ненужные настройки, оставшиеся после удаленных пакетов. Открываем Synaptic. В открывшемся окне внизу выбираем группу фильтров «Состояние».
Выбираем фильтр «Не установленные (остались файлы настроек)», выделяем все пакеты, попавшие в этот фильтр. Правой клавишей мыши на выделенном выбираем в меню «отметить для полного удаления» и жмем «Применить».
Здесь же в этой группе фильтров удалите пакеты под фильтром «Установленные (авто удаляемые)«
Если фильтры «Не установленные (остались файлы настроек)» и «Установленные (авто удаляемые)» отсутствуют, значит система уже прошла чистку и под данные фильтры ничего не попадает.
Следующий инструмент очистки — программа BleachBit из стандартного репозитория. Интерфейс программы на русском языке, очень доступен для понятия, что Вы будете делать. Также перед очисткой есть кнопка «Предпросмотр», которая покажет, что будет удаляться, и позволяет сделать изменения до удаления. Программа очень эффективно чистит систему от ненужных файлов , а также умеет удалять неиспользуемые языковые файлы. В моей сборке программа удалила около 300 МБ.
После удаления языковых файлов рекомендую переустановить пакет locales, иначе возникнут проблемы при установке языковых пакетов в сборке. Переустановка вернет лишь настройки локалей с возможностью установки других языков. Никаких языковых пакетов скачиваться не будет.
Следующим этапом будет очистка кэша программ. В корне системы есть папка /var. В ней программы оставляют свои временные файлы, нужные до поры до времени. Дальше я перечислю папки, в которых можно удалить все файлы, не причинив вреда системе, и тем самым уменьшить размер сборки.
С версии 3.06 и выше временные файлы удаляются автоматически
/var/backups
/var/cache/apt/ — не удалять папку archives
/var/cache/apt/archives — не удалять папку partial и файл lock
/var/cache/apt-xapian-index
/var/cache/flashplugin-installer
/var/crash
/var/lib/apt/lists — не удалять папку partial и файл lock
/var/lib/update-notifer/ — не удалять папки package-data-downloads и user.d
/var/lib/update-notifer/package-data-downloads — не удалять папку partial и файл lock
/var/lib/update-notifer/user.d — удалять все файлы обязательно, иначе выдает окно ошибки
/var/tmp
Remastersys в начале установки копирует содержимое папки /var в свою временную папку /home/remastersys/remastersys/dummysys/var, откуда потом и включает в сборку файлы. Учитывая, что после копирования Remastersys проводит еще подготовительные операции, у нас есть примерно 5 минут удалить лишнее из папки /home/remastersys/remastersys/dummysys/var. Тем более, что даже, если мы удалили из папки /var/cache/apt файлы, они всё-равно создаются и копируются в папку /home/remastersys/remastersys/dummysys/var/cache/apt , утяжеляя сборку.
В эти же 5 минут у Вас есть возможность почистить папку /root. В ней оставляйте только те файлы, которые есть в папке /etc/skel и папку Desktop.
6. СОВЕТЫ И РЕКОМЕНДАЦИИ
В этой главе описаны советы и рекомендации по созданию своей сборки, которые сложились у меня, как правила, после многочисленных опытов. Надеюсь, они Вам пригодятся в создании своих сборок.
-
Настройки новых пользователей хранятся в папке /etc/skel. Если Вы хотите, чтобы все пользователи имели какие-то одинаковые настройки отличные от по-умолчанию(дефолтных), то копируйте нужные файлы из своей папки /home/[ваш логин входа в систему] в эту папку, не забывая менять права со своих на права root. Всё подряд копировать туда не нужно, это может привести к определенным конфликтам. Обычно для каждой программы это 2-3 файла настроек. Помните, чем меньше вы туда скопируете, тем профессиональнее будет сборка и меньше проблем у пользователей.
-
Программы запуска для всех пользователей отредактировать, добавить, удалить лучше в папке /etc/xdg/autostart, не засоряя папку /etc/skel
-
Если Вы хотите сделать сборку с рабочим столом отличным от имеющегося в дистрибутиве, то лучше воспользоваться минимальной сборкой без графического окружения, включающей в себя ядро и самый минимум пакетов, который позволяет запускает систему в режиме консоли. И уже поверх этой системы доустанавить нужные пакеты и проводить нужные настройки. Такой метод имеет меньше ошибок, чем если брать готовую полную сборку и пытаться выпилить из нее ненужное.
Здесь все возможные mini.iso для Ubuntu от релиза 12.04 до 16.04 https://help.ubuntu.com/community/Installation/MinimalCD
Удачи! И пусть мир узнает Ваши творения!
Ссылки
В современном мире нас окружает огромное количество электронных устройств различной степени сложности. Если устройство более или менее сложное, например, телевизор, маршрутизатор, смартфон, то с большой долей вероятности оно работает под управлением операционной системы Linuх, и эта мысль не даёт мне покоя.
Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.
Такие разные устройства, а операционная система, работающая на них, собрана из одного и того же исходного кода! Это утверждение, конечно, верно лишь отчасти, так как фактически ядро обычно расширено и модифицировано разработчиками конкретных дистрибутивов Linux, а также разработчиками конкретных устройств, но общего исходного кода достаточно много.
Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Она не позволит использовать все возможности вашего компьютера, но будет иметь главное – интерфейс командной строки. Поверьте мне, получив работающий интерфейс командной строки Linux на вашем реальном компьютере, вы испытаете неповторимые ощущения.
Вы удивитесь, но минимальный набор, необходимый для получения командной строки Linux содержит всего два файла: файл ядра Linux и файл начального образа корневой файловой системы. Естественно, необходим загрузчик, который загрузит эти два файла и инициирует выполнение ядра, передав ему образ начальной корневой файловой системы и другие параметры, если они необходимы.
Чтобы вы как-то смогли работать с операционной системой, вам нужны четыре составляющие: загрузчик, ядро, начальная корневая файловая система и набор утилит, являющийся интерфейсом к ядру операционной системы.
Загрузчик — это специальная программа, которая позволяет процессору начать выполнение машинных инструкций, находящихся в файле ядра операционной системы.
Ядро — это программный код, который содержит:
- aбстракции для различных физических устройств ввода-вывода, с которыми может работать процессор (драйвера устройств),
- aбстракции структур данных для хранения (файловые системы),
- aбстракции для разделения во времени выполнения программных инструкций (процессы, потоки),
- другие абстракции.
Именно благодаря ядру разработчику прикладных программ часто вообще нет разницы, какая видеокарта, клавиатура или жёсткий диск установлены на компьютере. Он просто пишет код, который работает с устройствами ввода-вывода, процессами, файлами, сокетами и др.
Начальная корневая файловая система нужна для того, чтобы ядро выполнило начальную загрузку файлов, необходимую для дальнейшей загрузки операционной системы. Самыми важными являются модули ядра Linux, не вошедшие в состав файла ядра, но нужные для дальнейшей загрузки, и файл, на основании которого будет создан самый первый процесс при загрузке операционной системы (init).
Набор утилит позволяет вам работать с абстракциями, находящимися в ядре операционной системы. В зависимости от сложности и назначения устройства, на котором будет работать операционная система, этот набор может различаться. Утилиты определяют функциональность и интерфейс взаимодействия с пользователем. Например, для роутера они будут одни, для телефона другие, а для персонального компьютера третьи.
▍ Загрузка операционной системы Linux
Загрузка операционной системы Linux может отличаться на различных архитектурах и компьютерах, но для архитектуры x86 загрузка выглядит в большинстве случаев так:
- Происходит включение компьютера.
- BIOS или UEFI находит на компьютере загрузчик операционной системы и передаёт управление ему.
- Загрузчик операционной системы загружает в оперативную память файл ядра Linux и файл образа начальной файловой системы (файл initrd).
- Загрузчик операционной системы передаёт управление ядру операционной системы Linux.
- Ядро операционной системы проводит начальную инициализацию.
- Ядро операционной системы получает доступ к файлам, которые находятся в образе начальной файловой системы (монтирует образ).
- Ядро ищет файл init в начальной файловой системе и запускает самый первый процесс пользователя на его основе.
- Процесс init монтирует уже постоянную файловую систему, продолжает инициализацию операционной системы и переносит корень файловой системы Linux на смонтированную файловую систему и запускает другие процессы, которые необходимы для инициализации.
▍ Дистрибутивы Linux
Дистрибутив – это ядро Linux, набор библиотек, утилит и программ, который устанавливается на компьютер или устройство.
На данный момент количество различных дистрибутивов огромно. Их перечень вы можете посмотреть на сайте DistroWatch.
Современные дистрибутивы Linux обычно распространяются в виде образов ISO и позволяют устанавливать обновления и дополнительные программы (пакеты), но мы делаем минимальный дистрибутив, поэтому, естественно, у нас такой возможности не будет.
Одна из самых полных инструкций, как собрать дистрибутив Linux с нуля, находится здесь. Сборка дистрибутива Linux — процесс интересный и позволит вам узнать много нового, но уж очень он долгий, а значит вам необходима огромная сила воли, чтобы выполнить его от начала до конца.
Когда ты получаешь такой огромный массив информации, не сильно разбираясь в теме, есть вероятность, что ты часть вещей выполнишь, не сильно вникая в суть.
Поэтому я стремился упростить создание дистрибутива до минимума: мы не будем монтировать постоянную файловую систему, а в качестве файла init будем использовать файл скрипта, который выполнит минимальную инициализацию и запустит оболочку sh.
▍ Загрузка операционной системы
За долгие годы своего существования Linux был портирован на множество аппаратных платформ. Загрузка Linux для каждой платформы отличается.
Для x86 загрузка может отличаться следующим:
- Будет ли использоваться для загрузки BIOS или UEFI.
- На каком носителе (жёсткий диск, флеш-накопитель, оптический диск, компьютерная сеть) BIOS или UEFI будет искать загрузчик.
- Как размечен жёсткий диск или флеш-накопитель (MBR или GPT).
- На каком носителе и в какой файловой системе (FAT, NTFS, EXT, CDFS и др.) будут располагаться файл ядра и файл с образом начальной корневой файловой системы, называющийся initrd.
▍ Структура начальной корневой файловой системы
Начальная корневая файловая система содержит минимальное количество файлов и директорий, необходимых для дальнейшей работы Linux. В нашем случае это директории bin, dev, proc, sys. В директории bin cодержатся утилиты для работы с ядром Linux.
▍ Наборы утилит
Минимальный Linux — это ядро и набор утилит командной строки. Ядро и утилиты командной строки разрабатываются разными командами программистов.
Наиболее распространёнными наборами являются:
- GNU Core Utils;
- BusyBox.
Из-за того, что BusyBox отличается простотой и занимает немного места на диске, его часто используют на встраиваемых устройствах. Мы же будем его использовать из-за простоты.
▍ Создание среды для сборки Linux
Как бы это парадоксально ни звучало, но Linux обычно собирают в Linux. Для этого вам необходима операционная система Linux, в которой присутствуют программы, позволяющие собрать ядро Linux и набор утилит для сборки.
Например, на Ubuntu 22.10 нам необходимо установить следующие пакеты: make, build-essential, bc, bison, flex, libssl-dev, libelf-dev, wget, cpio, fdisk, extlinux, dosfstools, qemu-system-x86. Для других систем набор пакетов может отличаться.
▍ Создание минимальной Linux в Ubuntu 22.10
1. Устанавливаем необходимые пакеты для сборки.
$ cd ~
$ mkdir -p simple-linux/build/sources
$ mkdir -p simple-linux/build/downloads
$ mkdir -p simple-linux/build/out
$ mkdir -p simple-linux/linux
$ sudo apt update
$ sudo apt install --yes make build-essential bc bison flex libssl-dev libelf-dev wget cpio fdisk extlinux dosfstools qemu-system-x86
2. Загружаем из интернета исходный код для ядра Linux и BusyBox.
$ cd simple-linux/build
$ wget -P downloads https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.79.tar.xz
$ wget -P downloads https://busybox.net/downloads/busybox-1.35.0.tar.bz2
3. Распаковываем архивы с исходным кодом.
$ tar -xvf downloads/linux-5.15.79.tar.xz -C sources
$ tar -xjvf downloads/busybox-1.35.0.tar.bz2 -C sources
4. Собираем бинарные файлы BusyBox и для ядра Linux. Этот процесс займёт достаточно много времени, порядка 10 минут и даже больше, поэтому не пугайтесь.
$ cd sources/busybox-1.35.0
$ make defconfig
$ make LDFLAGS=-static
$ cp busybox ../../out/
$ cd ../linux-5.15.79
$ make defconfig
$ make -j8 || exit
$ cp arch/x86_64/boot/bzImage ~/simple-linux/linux/vmlinuz-5.15.79
5. Создаём файл init.
$ mkdir -p ~/simple-linux/build/initrd
$ cd ~/simple-linux/build/initrd
$ vi init
Вместо редактора vim (команда vi) вы можете использовать другой текстовый редактор, например gedit.
Файл init
#! /bin/sh
mount -t sysfs sysfs /sys
mount -t proc proc /proc
mount -t devtmpfs udev /dev
sysctl -w kernel.printk="2 4 1 7"
/bin/sh
poweroff -f
6. Cоздаём структуру директорий и файлов.
$ chmod 777 init
$ mkdir -p bin dev proc sys
$ cd bin
$ cp ~/simple-linux/build/out/busybox ./
$ for prog in $(./busybox --list); do ln -s /bin/busybox $prog; done
7. Помещаем структуру в файл initrd, который у нас является cpio-архивом.
$ cd ..
$ find . | cpio -o -H newc > ~/simple-linux/linux/initrd-busybox-1.35.0.img
8. Запускаем собранный образ в эмуляторе qemu.
$ cd ~/simple-linux/linux
$ qemu-system-x86_64 -kernel vmlinuz-5.15.79 -initrd initrd-busybox-1.35.0.img -nographic -append 'console=ttyS0'
9. Попробуем ввести известные вам команды Linux. Выходим из эмулируемой Linux, набрав команду exit.
▍ Создание загрузочного образа для флеш-накопителя
Если мы хотим запустить наш Linux на реальном железе, то, наверное, самый простой способ — это создать образ для размещения на загрузочном накопителе и записать его. Создание такого образа и загрузка с накопителя, с моей точки зрения, самый сложный процесс и требует более продвинутых знаний от вас.
При создании образа нужно принять несколько решений:
- что будет инициировать загрузку (BIOS или UEFI),
- какой накопитель вы будете использовать (CDROM, флеш-накопитель, жёсткий диск),
- как вы разметите накопитель (MBR, GPT) и будете ли его размечать,
- какой загрузчик вы будете использовать,
- какая файловая система будет использоваться там, где будут располагаться файлы Linux и загрузчика.
Я использовал флеш-накопитель с MBR и установленным загрузчиком EXTLINUX, одним разделом FAT32, на котором располагаются файлы. Загрузку у меня инициировал BIOS (опция Legacy boot, если у вас на компьютере прошит UEFI BIOS).
Алгоритм создания образа загрузочного флеш-накопителя следующий:
1. Создаём файл образа.
$ dd if=/dev/zero of=boot-disk.img bs=1024K count=50
2. Создаём загрузочный раздел внутри файла образа.
$ echo "type=83,bootable" | sfdisk boot-disk.img
3. Настраиваем loopback-устройство на загрузочный раздел внутри файла boot-disk.img.
$ losetup -D
$ LOOP_DEVICE=$(losetup -f)
$ losetup -o $(expr 512 * 2048) ${LOOP_DEVICE} boot-disk.img
4. Создаём файловую систему на loopback-устройстве.
$ mkfs.vfat ${LOOP_DEVICE}
5. Монтируем loopback-устройство.
$ mkdir -p /mnt/os
$ mount -t auto ${LOOP_DEVICE} /mnt/os
6. Копируем файл ядра Linux и файл initrd на первый раздел внутри файла boot-disk.img.
$ cp vmlinuz-5.15.79 initrd-busybox-1.35.0.img /mnt/os
7. Выполняем установку загрузчика EXTLINUX внутри файла boot-disk.img.
$ mkdir -p /mnt/os/boot
$ extlinux --install /mnt/os/boot
8. Создаём файл конфигурации для загрузчика, в котором указываем, что именно грузить.
$ echo "DEFAULT linux" >> /mnt/os/boot/syslinux.cfg
$ echo " SAY Booting Simple Linux via SYSLINUX" >> /mnt/os/boot/syslinux.cfg
$ echo " LABEL linux" >> /mnt/os/boot/syslinux.cfg
$ echo " KERNEL /vmlinuz-5.15.79" >> /mnt/os/boot/syslinux.cfg
$ echo " APPEND initrd=/initrd-busybox-1.35.0.img nomodeset" >> /mnt/os/boot/syslinux.cfg
9. Размонтируем loopback-устройство.
$ umount /mnt/os
$ losetup -D
10. Выполняем установку загрузчика MBR в начало диска внутри файла boot-disk.im.
$ dd if=/usr/lib/syslinux/mbr/mbr.bin of=boot-disk.img bs=440 count=1 conv=notrunc
Файл boot-disk.img будет содержать загрузочный образ флеш-накопителя
▍ Использование Docker для сборки Linux
Описанные выше алгоритмы содержат много команд и параметров, в них достаточно просто ошибиться при наборе. Команды можно объединить в bash-скрипты, а чтобы можно было собрать Linux в операционной системе Windows 10 или 11, рационально использовать Docker Desktop.
Суть Docker в следующем:
- В файле Dockerfile вы описываете структуру окружения для вашей программы или скрипта.
- При помощи утилиты docker на основании Dockerfile вы создаёте образ этого окружения в определённом формате.
- При помощи этой же утилиты вы можете запустить на основе образа экземпляр вашей программы или скрипта, работающий в изолированном окружении и называемый Docker-контейнер в терминологии Docker.
- Созданные вами образы можно хранить в репозитории и повторно использовать.
Docker-контейнеры, созданные на основании одного и того же образа, будут идентично выполняться на всех компьютерах, способных его выполнить. - Dockerfile удобно читать и изучать, также его удобно распространять.
На GitHub у меня есть проект, содержащий исходный код среды для сборки Linux на основе технологии Docker-контейнеров.
Ниже приведу содержимое Dockerfile:
FROM ubuntu:22.10
RUN apt update && apt install --yes make build-essential bc bison flex libssl-dev libelf-dev wget
RUN apt install --yes cpio fdisk extlinux dosfstools qemu-system-x86
RUN apt install --yes vim
ARG APP=/app
ARG LINUX_DIR=$APP/linux
ARG FILES_DIR=$APP/files
ARG SCRIPTS_DIR=$APP/scripts
ENV BUILD_DIR=$APP/build
ENV LINUX_DIR=$LINUX_DIR
ENV FILES_DIR=$FILES_DIR
ENV LINUX_VER=5.15.79
ENV BUSYBOX_VER=1.35.0
ENV BASH_ENV="$SCRIPTS_DIR/bash-env/env"
COPY ./scripts $APP/scripts
COPY ./files $APP/files
RUN mkdir -p $LINUX_DIR
RUN ln -s $APP/scripts/start-linux.sh /usr/bin/start &&
ln -s $APP/scripts/build-linux.sh /usr/bin/build &&
ln -s $APP/scripts/build-image.sh /usr/bin/image
WORKDIR $APP/scripts
CMD build
Команда FROM является самой важной в нём, она указывает, на основании какого образа файловой системы будет строиться наш образ для сборки Linux. В данном случае это ubuntu:22.10.
Команда RUN запускает команды внутри создаваемого нами образа. Т. е. команды, которые следуют после RUN, будут выполнены так, как было бы, если бы вы работали в Ubuntu 22.10 и выполнили их в командной строке. В результате работы команды образ файловой системы у вас изменится, так как эти команды изменяют файловую систему внутри него.
Команда COPY копирует файлы из файловой системы нашей операционной системы внутрь создаваемого образа. Как и RUN, она изменяет файловую систему внутри образа.
Команды ARG и ENV вызывают путаницу. Не знаю, проясню я вам или нет, но ARG – это создание переменных, которые используются при создании образа, а ENV – это создание переменных, которые используются, когда уже на основании этого образа создан контейнер, и эти переменные будут видны внутри него.
Команда WORKDIR указывает, какая директория будет рабочей при запуске контейнера, созданного на базе нашего образа.
Команда CMD указывает, какая команда будет выполнена по умолчанию внутри контейнера при его запуске.
▍ Запуск и сборка минимальной Linux при помощи Docker
Вы можете поэкспериментировать с моим проектом. В Windows лучше всего запускать Docker в PowerShell.
1. Создание Docker-образа:
$ git clone https://github.com/artyomsoft/simple-linux.git
$ cd simple-linux
$ docker build --build-arg APP -t simple-linux .
2. Запуск минимальной Linux:
$ mkdir linux
$ cd linux
$ docker run -v ${pwd}:/app/linux --rm -it simple-linux build
В созданной вами директории linux будет находиться собранный файл ядра Linux и файл образа начальной корневой системы.
3. Создание загрузочного образа для флеш-накопителя.
Обратите внимание, что нужно использовать опцию —privileged в docker, так как скрипт image использует loopback-устройство.
$ docker run -v ${pwd}:/app/linux –-privileged --rm -it simple-linux image
Если вы будете использовать Docker Desktop for Linux, Docker придётся запускать, используя sudo и вместо ${pwd} нужно будет использовать $(pwd).
▍ Запись загрузочного образа для флеш-накопителя на носитель
Созданный файл образа для флеш-накопителя (linux-5.15.79-busybox-1.35.0-disk.img) вы можете записать на флеш-накопитель при помощи утилиты Win32DiskImager. Следует заметить, что при записи вы потеряете все данные, хранящиеся на флеш-накопителе, поэтому лучше использовать накопитель, на котором нет никаких файлов.
После записи образа на флеш-накопитель перезагрузите компьютер и выберите загрузку с USB-HDD, т. е. c созданного вами флеш-накопителя. Скорее всего, перед этим вам будет нужно выбрать Legacy Boot и отключить Secure Boot в BIOS.
▍ Выводы
Если вы дочитали эту статью до конца, то у меня для вас есть небольшой -==BONUS==-
Имея установленный Docker Desktop для Windows, посмотреть, как всё работает, и запустить сборку моей минимальной ОС Linux можно одной командой в PowerShell.
docker run -v ${pwd}:/app/linux --rm -it artyomsoft/simple-linux build
У вас появится командная строка моей минимальной Linux, а при выходе из неё вы увидите в текущей директории файл ядра Linux и initrd-файл.
В этой статье я привёл подробную инструкцию, как можно получить работающую систему Linux из исходного кода.
Кому-то эта статья может показаться сильно простой и не заслуживающей внимания. Но я, чтобы не отпугнуть вас подробностями, не углублялся в такие темы, как BIOS, UEFI, файловые системы, загрузчики, библиотека glibc, подробный процесс загрузки операционной системы, различные спецификации, динамическая и статическая линковка, модули ядра Linux… Я только привёл минимальное количество теории, которая позволит понять, что же, собственно, вы делали, и разобраться в теме гораздо быстрее меня, не собирая всю информацию по крупицам.
Полученную операционную систему вы вряд ли будете использовать в дальнейшем, но я надеюсь, что абстрактные знания о Linux у вас превратятся в понимание и умение.
Когда много Дистрибутивы Linux Существующие, возможно, вам интересно, почему кто-то хочет создать свой собственный, а не иметь готовый дистрибутив, в котором так много опций. Пока это Готовый дистрибутив В большинстве случаев это хорошо, но если вы хотите иметь дистрибутив, который на сто процентов соответствует вашим потребностям (или потребностям вашей мамы или папы), вам, возможно, придется создать его самостоятельно.
Используя правильные инструменты, создавая Дистрибутив Linux Ваш собственный трюк так же сложен, как кажется, хотя он, безусловно, требует времени. Для этой цели существует множество инструментов — некоторые универсальные, некоторые — специфичные для дистрибутива. Вот их восемь.
Респины Linux Это новая версия, которая заменяет снятую с производства Remastersys. Много лет назад Remastersys был одним из самых популярных инструментов для создания собственного дистрибутива Linux и / или Резервное копирование операционной системы ваш. Linux Respin Destiny не предлагает столько возможностей, как Remastersys, но он все равно отлично справляется, если вы используете доступные ему дистрибутивы. Linux Respin доступен только для Debian, Mint и Trisquel, что ограничивает его популярность. Что мне не нравится в этом инструменте, так это его почти полное отсутствие документации.
2. Живой комплект Linux
Живой комплект Linux Это еще один инструмент, который вы можете использовать для создания собственного дистрибутива или создания резервной копии вашей системы. Этот инструмент предпочтителен для Debian, но, к счастью, может работать и в других дистрибутивах, при условии, что он поддерживает ядра aufs и squashfs. В Linux Live Kit есть очень красивый короткий мастер по созданию дистрибутива — просто следуйте инструкциям, и все готово.
3. Имидж-сканер Ubuntu
Убунту имиджер Это хороший инструмент для создания собственного дистрибутива на основе Ubuntu. Это не единственный инструмент для Ubuntu, но, поскольку это такой хороший инструмент, я решил упомянуть его в этом списке. Я не буду рассматривать его подробно, но с различными инструкциями по установке и эксплуатации вы можете легко установить его, если хотите поиграть.
4. Linux с нуля
Если вы хотите полностью контролировать то, что включено в ваш дистрибутив, и иметь много свободного времени, вы можете взглянуть на проект Linux с нуля. LFS имеет очень обширную документацию и является отличным образовательным ресурсом о Linux в целом, а не только о том, как создать свой собственный дистрибутив. Linux from Scratch позволяет вам создать свой собственный дистрибутив Linux полностью из исходного кода. LFS — не совсем инструмент, как остальные в этом списке, но вы все равно можете использовать его для той же цели — для создания собственного дистрибутива Linux (и много узнать о Linux в целом).
5. Инструмент «Модули Slax»
Если вы ищете простой в использовании инструмент и любите Slax — легкий дистрибутив, построенный на основе Slackware, вам повезло, потому что в нем есть Онлайн-инструмент Вы можете использовать его, чтобы выбрать, какие модули вы хотите включить в свой дистрибутив. Я использовал этот инструмент в прошлом несколько раз, когда хотел сделать легкий живой дистрибутив для своих друзей, и он отлично работает. просматривать Категории программного обеспечения И выберите нужные приложения. Добавьте его в свою версию. Не волнуйтесь, если вы что-то пропустите, вы всегда можете добавить больше приложений после того, как создадите и запустите их.
6. Живая магия
Живая магия Это дополнительный инструмент Debian для создания дистрибутива. Он может создавать CD, USB и образы сетевой загрузки. Его гораздо проще использовать, чем некоторые другие приложения в этом списке, например Remastersys, но оно не использует вашу операционную систему для создания образа. Либо следуйте указаниям мастера установки и выберите параметры конфигурации. Программа извлечет пакеты из ваших репозиториев и установит их в ваш образ.
Live Magic — еще один инструмент Debian для создания собственного дистрибутива. Он может создавать компакт-диски, USB-накопители и сетевую загрузку. Он намного проще, чем некоторые другие инструменты из этого списка, например Remastersys, но он не использует вашу операционную систему для создания образа. Вместо этого следуйте указаниям мастера и выбирайте параметры конфигурации по мере выполнения показанных в нем шагов. Программа извлечет пакеты из репозиториев дистрибутива и установит их в ваш образ.
7. Инсталинукс
Действительно интересная вещь о Инсталинукс Дело в том, что они позволяют создавать ISO-образ онлайн. На веб-сайте вы можете выбрать дистрибутив, на котором он основан (например, CentOS, Debian, Fedora, Mint, OpenSUSE, Scientific, Ubuntu), версию выбранного дистрибутива, а также пакеты. Instalinux создает небольшой загрузочный файл ISO (около 30 МБ), который при загрузке запускает процесс установки и загружает другие пакеты из Интернета. Это, пожалуй, самый универсальный инструмент из списка, а веб-интерфейс делает его очень простым в использовании. Однако он не предоставит вам полноценную среду рабочего стола в реальном времени.
8. Студия SUSE
Для пользователей SUSE лучший выбор — SUSE Studio. Немного похоже на Instalinux, SUSE Studio позволяет использовать веб-интерфейс для создания собственного дистрибутива или платформы. Он возглавляет список поддерживаемых носителей, включая вывод для CD, DVD, USB-накопителей, жестких дисков, VMware, VirtualBox и Xen. Чтобы использовать его, вам нужно открыть учетную запись — это просто, потому что они используют систему единого входа, и вы можете быстро войти в систему с помощью своего Google, Facebook и т. Д. Вы можете выбрать, какую версию SUSE использовать в качестве базовой, хотите ли вы версию сервера или нет, и какую среду рабочего стола включить в сборку.
Заключение
Я надеюсь, что эти инструменты помогут вам создать собственный дистрибутив Linux. Их уровень сложности (и мощности) варьируется, но мы постарались включить как простые в использовании инструменты, так и приложения, дающие вам больше возможностей. Помимо этих инструментов, многие Распределения У него есть свои собственные инструменты, которые упомянуты здесь, поэтому, если вы используете другой дистрибутив, лучше сначала проверить доступные для него инструменты, а затем, если вас не устраивает то, что вы найдете, попробуйте эти универсальные.