Сквозная схема файловой системы хоста tom_1 и конструктора ISO
Директория ~/custom_iso/ не входит внутрь файла airootfs.sfs и не подключается к нему напрямую. Она выполняет роль внешнего «контейнера» (конструктора), внутри которого этот файл создается и хранится.
Если сопоставить обе схемы, то папка ~/custom_iso/ находится на самом верхнем уровне и в момент финальной сборки через утилиту xorriso превращается в корень загрузочного ISO-образа.
Вот схема, показывающая точное местоположение airootfs.sfs внутри конструктора ~/custom_iso/:
/ (Корень системы, раздел /dev/sda3, тип Ext4) │ ├── boot/ # Точка монтирования реального UEFI (ESP) раздела хоста │ ├── vmlinuz-linux ──────────────────┐ (копирование) # Родное исполняемое ядро Arch Linux │ ├── initramfs-linux.img ────────────┼───┐ (копирование) # Основной образ системы ранней загрузки │ ├── initramfs-linux-fallback.img │ │ # Резервный образ загрузки (включает ├── EFI/ │ │ полный набор драйверов) │ └── BOOT/ │ │ │ ├── BOOTX64.EFI ────────────────┼───┼───┐ (копирование UEFI-загрузчика) │ └── fbx64.efi │ │ │ # (Опционально) Файл Fallback- │ │ │ │ загрузчика для восстановления │ │ │ │ ├── etc/ │ │ │ # Системные конфигурационные файлы │ ├── fstab │ │ │ # [ВАЖНО] Очищен (0 байт) перед запаковкой! │ ├── passwd │ │ │ # База пользователей (используется api/users.php) │ ├── group │ │ │ # База групп (используется api/groups.php) │ ├── shadow │ │ │ # Хэши паролей (модифицируется веб-интерфейсом) │ ├── sudoers │ │ │ # Настроен беспарольный доступ пользователя http │ │ │ │ │ │ ├── nginx/ │ │ │ │ │ └── nginx.conf │ │ │ # Веб-сервер Nginx настроен на порт 5000 │ │ │ │ │ │ ├── systemd/ │ │ │ │ │ ├── network/ │ │ │ │ │ │ └── 20-wired.network │ │ │ # Сетевой конфиг (статический IP 192.168.1.150) │ │ └── system/ │ │ │ │ │ │ │ │ # Включена автозагрузка служб: nginx, php-fpm, │ │ │ │ │ systemd-networkd, systemd-resolved, smb │ └── samba/ │ │ │ │ └── smb.conf │ │ │ # Файловый сервер для Windows-разработки │ │ │ │ ├── var/cache/pacman/pkg/ │ │ │ # Кэш менеджера пакетов │ └── [*.pkg.tar.zst] │ │ │ # Загруженные из интернета пакеты (nginx, │ │ │ │ php-fpm, samba...) ├── usr │ │ │ │ ├──bin/ │ │ │ # Системные исполняемые файлы │ │ └── pacman │ │ │ # Менеджер пакетов хоста (утилита управления) │ │ │ │ │ │ └── share/ │ │ │ │ └── nginx/ │ │ │ │ └── html/ │ │ │ # Исходный код Веб-Инсталлятора (права 775/664, │ │ │ │ │ http:http) │ ├── index.html │ │ │ # Интерфейс панели управления │ ├── css/ │ │ │ │ │ └── style.css │ │ │ # Стили оформления панели │ ├── js/ │ │ │ │ │ └── app.js │ │ │ # Клиентские скрипты логики │ └── api/ │ │ │ │ ├── users.php │ │ │ # Серверный обработчик пользователей │ └── groups.php │ │ │ # Серверный обработчик групп │ │ │ │ └── home/ │ │ │ └── eva/ │ │ │ # Домашний каталог текущего пользователя хоста │ │ │ │ └── ~/custom_iso/ │ │ │ # [ВХОДНАЯ ТОЧКА] Папка проекта-конструктора │ │ │ │ будущей флешки │ │ │ │ # (Содержимое этой папки утилита xorriso │ │ │ │ превратит в ISO) ├── archlinux-x86_64.iso │ │ │ # ISO-образа Arch Linux, скачанного из интернета │ │ │ │ ├── EFI/ │ │ │ │ └── BOOT/ │ │ │ │ └── BOOTX64.EFI ◄───┼───┼───┘ (Скопирован из /boot/EFI/BOOT/BOOTX64.EFI) │ │ │ ├── loader/ │ │ [ГЕНЕРАЦИЯ ИЗ ТЕРМИНАЛА ХОСТА] │ ├── loader.conf ◄───────┼───┼────────── Команда: cat << 'EOF' > ~/custom_iso/ │ │ │ │ loader/loader.conf │ │ │ │ Содержит: таймаут меню и выбор │ │ │ │ записи по умолчанию │ └── entries/ │ │ │ │ │ │ [ГЕНЕРАЦИЯ ИЗ ТЕРМИНАЛА ХОСТА] │ └── 01-archiso-linux.conf ◄──────── Команда: cat << 'EOF' > ~/custom_iso/ │ │ │ loader/entries/01-archiso-linux.conf └── arch/ │ │ Содержит: параметры ядра, COM-порта ├── boot/ │ │ и метку ARCH_202605 │ └── x86_64/ ▼ │ │ ├── vmlinuz-linux ▼ (Скопирован из /boot/vmlinuz-linux) │ └── initramfs-linux.img (Скопирован из /boot/initramfs-linux.img) │ └── x86_64/ └── airootfs.sfs # [ФИНАЛЬНЫЙ СЛЕПОК] Сюда команда │ # mksquashfs запакует весь корень '/', │ # исключая виртуальные ФС и сам custom_iso │ │ # (Опционально) Файл Fallback-загрузчика │ для восстановления │ # При загрузке сервера ядро монтирует этот файл в Live-ОЗУ как корень '/': ├── etc/ (passwd, shadow, nginx.conf, 20-wired.network) ├── usr/share/nginx/html/ (код вашего веб-инсталлятора) └── ...
При сборке слепка командой sudo mksquashfs / … напрямую исключаются виртуальные, временные и резервные папки хоста, так как они генерируются ядром автоматически при загрузке в ОЗУ:
/boot/ # Точка монтирования реального UEFI (ESP) раздела хоста ├── vmlinuz-linux # Родное исполняемое ядро Arch Linux (сжатый бинарник) ├── initramfs-linux.img # Основной образ файловой системы ранней загрузки (ОЗУ-диск) ├── initramfs-linux-fallback.img # Резервный образ загрузки (включает полный набор драйверов) └── EFI/ └── BOOT/ ├── BOOTX64.EFI # Основной бинарный файл загрузчика UEFI (в данном проекте systemd-boot) └── fbx64.efi # (Опционально) Файл Fallback-загрузчика для восстановления
На основе стандартных рекомендаций по установке оригинального Arch Linux в режиме UEFI (включая требования из руководства по созданию ISO), ниже представлена схема разбивки физического диска (например, /dev/sda или /dev/nvme0n1).
Схема содержит обязательный системный раздел FAT32 (для загрузчика), основной раздел Ext4 (корень системы) и раздел подкачки Swap:
Физический диск (Разметка таблицы разделов: GPT)
┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ Номер раздела │ Файловая система │ Название / Назначение │ Точка монтирования │ ├───────────────┼──────────────────┼───────────────────────────┼──────────────────────────┤ │ /dev/sda1 │ FAT32 │ EFI System Partition (ESP)│ /boot │ │ │ │ Размер: 512 МБ - 1 ГБ │ │ ├───────────────┼──────────────────┼───────────────────────────┼──────────────────────────┤ │ /dev/sda2 │ linux-swap │ Swap Partition (Подкачка) │ [SWAP] │ │ │ │ Размер: равен ОЗУ или выше│ │ ├───────────────┼──────────────────┼───────────────────────────┼──────────────────────────┤ │ /dev/sda3 │ Ext4 │ Root Partition (Корень) │ /(Сюда ставится система) │ │ │ │ Размер: Всё оставшееся │ │ └─────────────────────────────────────────────────────────────────────────────────────────┘
| Точка монтирования в установленной системе | Раздел | Тип раздела | Рекомендуемый размер |
|---|---|---|---|
| /boot1 | /dev/системный_раздел_efi | Системный раздел EFI | 1 ГиБ |
| [SWAP] | /dev/раздел_подкачки | Linux swap | Не менее 4 ГиБ |
| / | /dev/корневой_раздел | Linux x86-64 root (/) | Остаток, минимум 23–32 ГиБ |
Папка веб-сервера nginx_html находится по пути /usr/share/nginx/html/ и имеет следующую структуру файлов бэкенда (PHP) и фронтенда (JS/CSS):
/usr/share/nginx/html/ # Корневая директория веб-сервера Nginx
├── index.html # Главный интерфейс панели (вкладки, таблицы, модальные окна)
├── css/
│ └── style.css # Стили оформления интерфейса панели управления
├── js/
│ └── app.js # Клиентская логика (асинхронные Fetch-запросы к API, фильтры)
└── api/
├── users.php # Серверный обработчик для системных пользователей (/etc/passwd)
└── groups.php # Серверный обработчик для системных групп (/etc/group)