Создание собственного дистрибутива на базе Arch Linux

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

Содержание

1. Предварительные требования

Системные требования

Необходимые знания

2. Подготовка рабочей среды

Установка необходимых инструментов

# Установка базовых инструментов
sudo pacman -S archiso arch-install-scripts mkinitcpio squashfs-tools git base-devel

Создание рабочей директории

# Создание директории проекта
mkdir -p ~/archdistro
cd ~/archdistro

# Копирование профиля releng
cp -r /usr/share/archiso/configs/releng/ work/

Примечание: Профиль releng - это стандартный профиль для создания установочного образа Arch Linux. Мы будем использовать его как основу.

3. Создание базовой системы

Настройка базовой конфигурации

# Переход в рабочую директорию
cd ~/archdistro/work

# Редактирование списка пакетов
nano packages.x86_64

Базовые пакеты, которые рекомендуется включить:

# Базовая система
base
base-devel
linux
linux-firmware

# Сетевые утилиты
networkmanager
network-manager-applet
wireless_tools
wpa_supplicant

# Системные утилиты
sudo
nano
vim
git
wget
curl

# Графический интерфейс
xorg
xorg-server
xorg-xinit

Настройка установщика

# Создание кастомного установщика
mkdir -p ~/archdistro/work/airootfs/root/
cat > ~/archdistro/work/airootfs/root/customize_airootfs.sh << 'EOF'
#!/bin/bash

# Установка часового пояса
ln -sf /usr/share/zoneinfo/UTC /etc/localtime

# Настройка локали
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf

# Настройка hostname
echo "mydistro" > /etc/hostname

# Настройка hosts
echo "127.0.0.1 localhost" > /etc/hosts
echo "::1       localhost" >> /etc/hosts
echo "127.0.1.1 mydistro.localdomain mydistro" >> /etc/hosts

# Создание пользователя
useradd -m -g users -G wheel -s /bin/bash liveuser
echo "liveuser:liveuser" | chpasswd
echo "root:root" | chpasswd

# Настройка sudo
echo "%wheel ALL=(ALL) ALL" > /etc/sudoers.d/wheel

# Включение необходимых сервисов
systemctl enable NetworkManager
systemctl enable sddm # если используете KDE
EOF

chmod +x ~/archdistro/work/airootfs/root/customize_airootfs.sh

4. Настройка и кастомизация

Установка рабочего окружения

Добавьте нужные пакеты в packages.x86_64:

# KDE Plasma
plasma
plasma-desktop
plasma-wayland-session
kde-applications

# или XFCE
xfce4
xfce4-goodies
lightdm
lightdm-gtk-greeter

# или GNOME
gnome
gnome-extra
gdm

Настройка автологина

# Для SDDM (KDE)
mkdir -p ~/archdistro/work/airootfs/etc/sddm.conf.d/
cat > ~/archdistro/work/airootfs/etc/sddm.conf.d/autologin.conf << EOF
[Autologin]
User=liveuser
Session=plasma
EOF

Внимание: Автологин следует использовать только для live-системы.

5. Управление пакетами

Создание собственного репозитория

# Создание директории репозитория
mkdir -p ~/archdistro/repo
cd ~/archdistro/repo

# Создание базы данных репозитория
repo-add custom.db.tar.gz

Сборка пакетов

# Клонирование PKGBUILD
git clone https://aur.archlinux.org/package-name.git
cd package-name

# Сборка пакета
makepkg -s

# Добавление в репозиторий
repo-add ../custom.db.tar.gz *.pkg.tar.zst

Совет: Создайте метапакет для группировки всех ваших кастомных пакетов.

6. Брендинг

Создание темы Plymouth

# Установка Plymouth
pacman -S plymouth

# Создание темы
mkdir -p ~/archdistro/work/airootfs/usr/share/plymouth/themes/mydistro
cd ~/archdistro/work/airootfs/usr/share/plymouth/themes/mydistro

# Создание конфигурации темы
cat > mydistro.plymouth << EOF
[Plymouth Theme]
Name=MyDistro
Description=Custom theme for MyDistro
ModuleName=script

[script]
ImageDir=/usr/share/plymouth/themes/mydistro
ScriptFile=/usr/share/plymouth/themes/mydistro/mydistro.script
EOF

Настройка обоев рабочего стола

# Создание директории для обоев
mkdir -p ~/archdistro/work/airootfs/usr/share/backgrounds/mydistro

# Копирование обоев
cp wallpaper.jpg ~/archdistro/work/airootfs/usr/share/backgrounds/mydistro/

7. Создание ISO-образа

# Создание ISO
cd ~/archdistro/work
mkarchiso -v -w /tmp/archiso-tmp -o ~/archdistro/out .

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

8. Тестирование

Проверка ISO

# Создание контрольных сумм
cd ~/archdistro/out
sha256sum *.iso > sha256sums.txt

# Тестирование в QEMU
qemu-system-x86_64 -boot d -cdrom mydistro-*.iso -m 2048

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

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

Подготовка к релизу

# Создание архива с исходным кодом
cd ~/archdistro
git init
git add .
git commit -m "Initial release"
git archive --format=tar.gz --output=mydistro-source-1.0.tar.gz master