Руководство по созданию linux

image

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

Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.

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

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

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

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

▍ Минимальная операционная система Linux

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

Загрузчик — это специальная программа, которая позволяет процессору начать выполнение машинных инструкций, находящихся в файле ядра операционной системы.

Ядро — это программный код, который содержит:

  • aбстракции для различных физических устройств ввода-вывода, с которыми может работать процессор (драйвера устройств),
  • aбстракции структур данных для хранения (файловые системы),
  • aбстракции для разделения во времени выполнения программных инструкций (процессы, потоки),
  • другие абстракции.

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

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

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

▍ Загрузка операционной системы Linux

Загрузка операционной системы Linux может отличаться на различных архитектурах и компьютерах, но для архитектуры x86 загрузка выглядит в большинстве случаев так:

  1. Происходит включение компьютера.
  2. BIOS или UEFI находит на компьютере загрузчик операционной системы и передаёт управление ему.
  3. Загрузчик операционной системы загружает в оперативную память файл ядра Linux и файл образа начальной файловой системы (файл initrd).
  4. Загрузчик операционной системы передаёт управление ядру операционной системы Linux.
  5. Ядро операционной системы проводит начальную инициализацию.
  6. Ядро операционной системы получает доступ к файлам, которые находятся в образе начальной файловой системы (монтирует образ).
  7. Ядро ищет файл init в начальной файловой системе и запускает самый первый процесс пользователя на его основе.
  8. Процесс init монтирует уже постоянную файловую систему, продолжает инициализацию операционной системы и переносит корень файловой системы Linux на смонтированную файловую систему и запускает другие процессы, которые необходимы для инициализации.

▍ Дистрибутивы Linux

Дистрибутив – это ядро Linux, набор библиотек, утилит и программ, который устанавливается на компьютер или устройство.

На данный момент количество различных дистрибутивов огромно. Их перечень вы можете посмотреть на сайте DistroWatch.

Современные дистрибутивы Linux обычно распространяются в виде образов ISO и позволяют устанавливать обновления и дополнительные программы (пакеты), но мы делаем минимальный дистрибутив, поэтому, естественно, у нас такой возможности не будет.

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

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

Поэтому я стремился упростить создание дистрибутива до минимума: мы не будем монтировать постоянную файловую систему, а в качестве файла init будем использовать файл скрипта, который выполнит минимальную инициализацию и запустит оболочку sh.

▍ Загрузка операционной системы

За долгие годы своего существования Linux был портирован на множество аппаратных платформ. Загрузка Linux для каждой платформы отличается.

Для x86 загрузка может отличаться следующим:

  1. Будет ли использоваться для загрузки BIOS или UEFI.
  2. На каком носителе (жёсткий диск, флеш-накопитель, оптический диск, компьютерная сеть) BIOS или UEFI будет искать загрузчик.
  3. Как размечен жёсткий диск или флеш-накопитель (MBR или GPT).
  4. На каком носителе и в какой файловой системе (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 в следующем:

  1. В файле Dockerfile вы описываете структуру окружения для вашей программы или скрипта.
  2. При помощи утилиты docker на основании Dockerfile вы создаёте образ этого окружения в определённом формате.
  3. При помощи этой же утилиты вы можете запустить на основе образа экземпляр вашей программы или скрипта, работающий в изолированном окружении и называемый Docker-контейнер в терминологии Docker.
  4. Созданные вами образы можно хранить в репозитории и повторно использовать.
    Docker-контейнеры, созданные на основании одного и того же образа, будут идентично выполняться на всех компьютерах, способных его выполнить.
  5. 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 у вас превратятся в понимание и умение.

Играй в наш скролл-шутер прямо в Telegram и получай призы! 🕹️🎁

Linux для себя

lx4u

Lx4U или “Linux для себя” — подробное руководство по созданию Linux-системы, используя исходные тексты необходимого программного обеспечения.

Это руководство — самостоятельное ответвление от проекта Linux From Scratch.

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

Но главная идея остаётся — вы в центре всего, и вы решаете, какой должна быть Ваша собственная система. А мы просто протягиваем Вам руку помощи.

Начните собственное путешествие в мир Linux прямо сейчас!

Чтобы изучить руководство локально

Требования

  • python3 для работы генератора документации и сервера;
  • pip3 для установки зависимостей.

Установка зависимостей

pip install mkdocs-material mkdocs
pip install git+https://github.com/RedisLabs/mkdocs-include.git

Сборка в Linux

mkdocs build # Сборка
mkdocs serve # Запуск

Сборка в Windows

Могут возникнуть проблемы со сборкой в Windows из-за кодировки.
Чтобы исправить эту проблему, можно выставить переменную окружения PYTHONUTF8 со значением 1

Например

python -m mkdocs build # Сборка
python -m mkdocs serve # Запуск

В результате будет сгенерирован каталог site. Руководство будет доступно по адресу http://127.0.0.1:8000/mkdocs/.


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. Image titled Build Your Own Linux Distribution Step 1

    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. Image titled Build Your Own Linux Distribution Step 2

    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. Image titled Build Your Own Linux Distribution Step 3

    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]
  4. Image titled Build Your Own Linux Distribution Step 4

    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. Image titled Build Your Own Linux Distribution Step 5

    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.

  6. Advertisement

  1. Image titled Build Your Own Linux Distribution Step 6

    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. Image titled Build Your Own Linux Distribution Step 7

    2

    Select Open with. It’s near the middle of the drop-down menu. This prompts a pop-out menu to appear.

  3. Image titled Build Your Own Linux Distribution Step 8

    3

    Click WinRAR archiver. You’ll see it in the pop-out menu. The ISO file will open in WinRAR.

  4. Image titled Build Your Own Linux Distribution Step 9

    4

    Select the «slax» folder. Click once the «slax» folder near the top of WinRAR.

  5. Image titled Build Your Own Linux Distribution Step 10

    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. Image titled Build Your Own Linux Distribution Step 11

    6

    Select your flash drive’s name. You’ll find this option in the pop-up window.

  7. Image titled Build Your Own Linux Distribution Step 12

    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.

  8. Advertisement

  1. 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. 2

  3. 3

    Select a category. Click any one of the categories (e.g., artwork) to view a list of its included modules.

  4. 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. 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. 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. 7

    Copy the module files. Click and drag your mouse to select all of your downloaded module files, then press Ctrl+C.

  8. 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. 9

    Open the «slax» folder. Double-click the «slax» folder at the top of your flash drive’s window.

  10. 10

    Open the «modules» folder. Double-click the «modules» folder near the top of the window.

  11. 11

    Paste in the module files. Once the empty «modules» folder is open, press Ctrl+V to paste the module files into it.

  12. Advertisement

  1. Image titled Build Your Own Linux Distribution Step 24

    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. Image titled Build Your Own Linux Distribution Step 25

    2

    Open the «slax» folder. It should be the only folder on your flash drive.

  3. Image titled Build Your Own Linux Distribution Step 26

    3

    Open the «boot» folder. This folder is near the top of the flash drive’s window.

  4. Image titled Build Your Own Linux Distribution Step 27

    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. Image titled Build Your Own Linux Distribution Step 28

    5

    Press any key when prompted. Doing so signifies that your USB flash drive is now bootable.

  6. Image titled Build Your Own Linux Distribution Step 29

    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. Image titled Build Your Own Linux Distribution Step 30

    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. Image titled Build Your Own Linux Distribution Step 31

    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. Image titled Build Your Own Linux Distribution Step 32

    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. Image titled Build Your Own Linux Distribution Step 33

    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.
  11. Advertisement

Add New Question

  • Question

    Is there any way that I can make it by coding?

    Community Answer

    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?

    Community Answer

    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?

    Community Answer

    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 169,490 times.

Is this article up to date?

This article was written by Tom Meyers, a DevOps engineer at iDalko.

There’s a lot you can do when it comes to open-source software thanks to its in-built flexibility, scalability, and adaptability. You can even decide to make a new product based on your specific requirements. In this blog post, I will walk you through the journey I took to build my own Linux distribution called TOS.

Before we get started, let’s sketch the landscape.

Here’s what I’m going to cover in this blog post:

  • The World of Operating Systems
  • What is Linux?
  • My Adventure to Building my own Linux Distribution

The World of Operating Systems

We all use computers on a daily basis. Most of you know about Microsoft Windows and Apple’s macOS. However, did you also know about GNU/Linux also referred to as Linux? This world is dominated by Windows with macOS being in second place, and far down the charts, we see Linux.

Microsoft Windows takes up to about 80% of the market and macOS around 16%. This leaves almost no space for Linux. But don’t stop reading just yet. It is used more than you think as these numbers only reflect desktop usage. Did you know that Android runs on Linux? When you are using Facebook, Instagram, or Google, you are also using Linux. It is the most used server operating system by a fair margin.

What Exactly is an Operating System?

An operating system is a piece of software that sits in between the hardware that you interact with and the software that you wish to run. When you are typing on a keyboard or looking at your screen, you are touching the hardware. When you start your web browser you are using software, the web browser is executing code on your CPU (Central Processing Unit).

However, it doesn’t do this directly. It talks with your Operating System, which then talks with your hardware. In essence, it translates and manages hardware so that software can use it. (See below)

how operating systems work

What is Linux?Operating systems booting sequence

A Misconception about Linux

One common misconception is that Linux is an operating system (OS). This is factually incorrect and it is rather that piece of software that directly communicates with the hardware. An OS is much more than that, it includes software libraries, runtimes, and usually a default set of executables.

Most Linux distributions use GNU as the operating system (including TOS). GNU is the child of Richard Stallman and was designed to be Free (As in Freedom) and Open Source. This ranges from a compiler to system libraries as well as commonly used system programs.

In the Linux world, we often say GNU + Linux otherwise referred to as GNU/Linux, because the Operating System is a combination of those 2 projects. Other versions of Linux also exist, for example, the busybox project. These Linux distributions are often more lightweight and can be found in embedded systems.

Understanding a few Linux commands would give you a view of how to use Linux distro efficiently.

Free Software vs. Open-source Software

The Linux kernel is known to be open-source software. This means that the source code is openly available. Everybody can read the code and modify it to their heart’s content.

It means we, as a community, can find bugs and fix them or add extra features. This is a very powerful feature and enables collaboration to improve the software, fix bugs, and increase the security. Open-source software is usually free (not to be confused with free as in freedom). Examples of such software are VLC, MediaWiki (Wikipedia), and Firefox. The open-source development model has led to a vast and interesting ecosystem.

Then we also have free software (free as in freedom), which is even more open than open-source software. It not only allows you to look at the source code and modify it, but it also lets you resell the software for money and make a business out of it. The free software foundation describes it as “the users have the freedom to run, copy, distribute, study, change and improve the software”.

Software like Microsoft Windows is known as proprietary software. This software is not owned by the user, so they are only allowed to use it. The users are not allowed to look at the code, reverse engineer, modify, or redistribute it.

In other words, you have the freedom to do what you want with free and open-source software, but not with proprietary software. This is a key consideration in the Linux world.

My Adventure to Building my own Linux DistributionTOS Linux Open Source

The Birth of TOS Linux

This brings us to the story of how I started to work on TOS GNU/Linux. First I used an OS known as Ubuntu (the most widely used Linux distribution). This gave me a well-established basis on how to use Linux, it was stable and supported my needs of software.

However, when time grew, so did my curiosity. I began exploring the vast landscape of Linux distributions. This drove me to test different distributions. In order, I experimented with:

  1. Ubuntu
  2. Kubuntu
  3. Fedora
  4. Manjaro
  5. Arch Linux
  6. TOS (My Own Distribution)

Each distro had its own features and reason why to use it. But the story really begins with Arch Linux. It is known as a Do It Yourself (DIY) distribution. This means you actually had to completely do everything yourself. From installing all drivers to choosing the Desktop Environment (DE) and applications you want to use. Nothing is done for you and everything must be done by yourself.

This distro gave me insight into how Linux works on a lower level. Because it was so low level it meant you have to make sure everything is installed and configured correctly. For example, if you forgot to install a wifi driver and network manager, then you couldn’t use the internet and thus couldn’t fix the problem.

Soon after installing Arch Linux on my laptop, I wanted to install it on my desktop. This took a lot of setup work. Which meant I created a shell script that automatically installed Arch Linux with all my dependencies and favorite applications. Which, in essence, was my very first “installer”.

This resulted in installations of 15 minutes instead of 1 to 2 days of manual work. I soon began to modify and fix bugs in the installation script. Each time I wanted a new feature, I added it to that script.

You can imagine that over time it began growing and growing more massive. Eventually, the script was no longer, instead I made several components that each interacts with one another, and that in the end became TOS GNU/Linux.

The TOS Linux Installer

TOS Linux has a graphical installer that is responsible for installing the operating system on your hardware. It does a number of things. Mainly the following:

  1. Partition the hard drive/SSD
  2. Creating users and groups
  3. Installing all required packages (from the TOS repository)
  4. Configuring the OS (keyboard layout, permissions, repository mirrors, etc)
  5. Setting up the boot process
  6. Preparing and validating the environment

Each section above has its own respective configuration.

For example, people can decide how to partition their environment, which filesystem to use, and if they want to encrypt their data or not. The installer is fully featured and easy to use.

It is based on the calamares installer framework.

TOS Linux Installer

Package Management and Repository

A major part of a distribution is its package management and the repositories. TOS uses the “PacMan” (package manager). It is responsible for keeping the system up-to-date along with all the applications.

A naive approach to package management is how windows does it. There you have to go to a website and download the executable. This is obviously unsafe as you can download a malicious executable.

TOS has what is called a repository. It contains a list of packages that are known to be safe and get updated daily. This guarantees up-to-date and secure packages. Packages get built by the TOS developers and are verified to come from reputable sources.

To prevent Man In the Middle attacks, TOS uses what is called package signing. In short, each package gets built and compressed (much like a zip file, instead it uses zstd) after it is compressed it will be signed with a private key. The resulting signature will be provided in the repository with the package.

The basic installation includes the public key on their computer. When they download a package, they also download the signature and verify if the package is signed by the matching private key.

The TOS repository and security topic is vast and should have their own blog post. At this moment, you can install over 80,000 packages from the repository.

TOS Desktop Environment

Outside maintaining packages, kernels, configurations, installers, repositories, and more, TOS also provides its own desktop environment.

Before continuing TOS can also use other desktop environments such as GNOME, KDE, Deepin, Cinnamon, Mate, and more, they are all provided in the official repository.

The default desktop environment is called TDE (TOS Desktop Environment).

TOS Desktop Environment

A desktop environment sits on top of the Operating System and provides a Graphical User Interface that helps you maintain your daily life. Here is a list of what a desktop environment does:

  1. Managing applications/windows
  2. Giving a default set of applications (text editor, file manager, settings, etc)
  3. Managing the state (WiFi, Bluetooth, display settings, keyboard layout, etc)
  4. Managing privileges (asks for password or fingerprint when needed)
  5. Managing look and feel, icons, themes, folders, mouse pointer, wallpaper, and more
  6. Login management

And much more.

To keep it simple, it does everything that you can visually see except for applications that you install manually.

For macOS and Windows, the desktop environment is baked into the operating system. On Linux, you are free to swap them.

If you wish to read more on TDE, read this guide.

TOS Linux Kernel

TOS wants to support as many computers and hardware as it can. Because of this, we have a modified version of the Linux kernel that supports the broadest set of hardware. By default, the vanilla kernel contains only a subset of what you can do.

In TOS, we extend this subset with more features and saner defaults for the ultimate desktop experience. The vanilla kernel contains configurations for servers, whilst the TOS kernel is designed for graphical use and support for most hardware.

You can take a look at the TOS kernel source code.

Booting up

To be able to use TOS GNU/Linux we have to start it up, usually called the bootup sequence.

The TOS Linux bootloader supports multiple operating systems. It can boot any version of Linux, BSD, macOS, and Windows. So you can run TOS Linux side by side with, for example, windows.

linux open source boot sequence

The above image (from GoLinuxCloud) demonstrates the boot sequence. In TOS we both support MBR and GPT(UEFI) systems to boot up. The bootloader used is Grand Unified Bootloader (GRUB) Which will launch an initial ramdisk (initrd) that will be loaded into RAM (it contains everything needed to start all applications). It is responsible for mounting the hard drives, running the kernel, starting the init process, etc.

The initialization process is responsible for launching every program. It, for example, starts all required drivers, starts the GUI, and all background processes. In the case of TOS, this is systemd.

TOS GNU Bootloader

Once everything is booted up, you will be presented with a login screen.

TOS login screen

Wiki

TOS provides an excellent wiki that should help you in case you have questions or are having issues.

The wiki covers topics about how to use TOS, how to install it, and what you can do as a developer. It also covers other topics such as how to configure certain software. The wiki can be found under the link wiki.odex.be.

Here are some example pages you can find in the wiki:

  • Developer coding style guide
  • TDE – basic usage
  • Updating packages
  • System repair
  • Setup NVIDIA as a graphical driver
  • Configuring open VPN
  • PostgreSQL

At the moment, the wiki has over 2400 pages/tutorials which will cover most of the daily issues that users might run into.

Conclusion

TOS GNU/Linux was started as a project so that I had a machine that was totally under my control. It contains a huge number of packages in the repository and provides the needed control for the user. It allows you to completely modify and alter your system. And it comes along with an extensible wiki that covers most (if not all) of your problems.

I would also like to thank the work that Allen McRae and the other developers did on Arch Linux as they founded the basis that later became TOS.

Some people might want to take a look at TOS and for that reason, I will leave here a list of useful links

  • Download TOS
  • Setup Guide
  • TOS homepage
  • Wiki homepage
  • The TOS source code

Recommended Reads: 

  • Open-Source Software: An Introduction
  • The Benefits of Open Source Software for Small Businesses

Содержание

ВВЕДЕНИЕ

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

Для начала Вы должны либо в 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

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

Ссылки

Понравилась статья? Поделить с друзьями:
  • Сбер технологии руководство
  • Graco lovin hug инструкция по сборке на русском
  • Орципол вм 500мг инструкция по применению
  • Внутренний фактор стиль руководства
  • Каптоприл инструкция по применению при каком давлении можно принимать дозировка