В этом руководстве мы пройдем через процесс создания собственного дистрибутива на базе Arch Linux. Arch предоставляет отличную основу для создания минималистичного и полностью настраиваемого дистрибутива.
# Установка базовых инструментов
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. Мы будем использовать его как основу.
# Переход в рабочую директорию
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
Добавьте нужные пакеты в 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-системы.
# Создание директории репозитория
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
Совет: Создайте метапакет для группировки всех ваших кастомных пакетов.
# Установка 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/
# Создание ISO
cd ~/archdistro/work
mkarchiso -v -w /tmp/archiso-tmp -o ~/archdistro/out .
Примечание: Процесс создания ISO может занять значительное время, зависящее от конфигурации системы и количества включенных пакетов.
# Создание контрольных сумм
cd ~/archdistro/out
sha256sum *.iso > sha256sums.txt
# Тестирование в QEMU
qemu-system-x86_64 -boot d -cdrom mydistro-*.iso -m 2048
Внимание: Обязательно проведите тестирование на реальном оборудовании перед выпуском.
# Создание архива с исходным кодом
cd ~/archdistro
git init
git add .
git commit -m "Initial release"
git archive --format=tar.gz --output=mydistro-source-1.0.tar.gz master