| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| software:linux_server:arch_linux:arch_linux_circuit [2026/05/25 13:54] – VladPolskiy | software:linux_server:arch_linux:arch_linux_circuit [2026/05/25 17:35] (текущий) – [1.9.1 Примеры схем] VladPolskiy |
|---|
| * Процесс клонирования ядра: Команды cp /boot/... ~/custom_iso/... берут текущие рабочие загрузочные файлы хоста tom_1 и переносят их во вложенную структуру конструктора, чтобы будущий образ гарантированно загрузился на том же ядре. | * Процесс клонирования ядра: Команды cp /boot/... ~/custom_iso/... берут текущие рабочие загрузочные файлы хоста tom_1 и переносят их во вложенную структуру конструктора, чтобы будущий образ гарантированно загрузился на том же ядре. |
| * Рекурсивное исключение при запаковке: Когда утилита mksquashfs сканирует корень / для генерации файла airootfs.sfs, она упаковывает все файлы etc, usr/share/nginx/html и т.д., но в параметрах запуска обязательно пропускает папку ~/custom_iso (и архивы *.iso), чтобы избежать бесконечного цикла (упаковки архива внутрь самого себя). | * Рекурсивное исключение при запаковке: Когда утилита mksquashfs сканирует корень / для генерации файла airootfs.sfs, она упаковывает все файлы etc, usr/share/nginx/html и т.д., но в параметрах запуска обязательно пропускает папку ~/custom_iso (и архивы *.iso), чтобы избежать бесконечного цикла (упаковки архива внутрь самого себя). |
| | |
| | Директория ~/custom_iso/ не входит внутрь файла airootfs.sfs и не подключается к нему напрямую. Она выполняет роль внешнего «контейнера» (конструктора), внутри которого этот файл создается и хранится. |
| | \\ |
| | Если сопоставить обе схемы, то папка ~/custom_iso/ находится на самом верхнем уровне и в момент финальной сборки через утилиту xorriso превращается в корень загрузочного ISO-образа. |
| | \\ |
| | Вот схема, показывающая точное местоположение airootfs.sfs внутри конструктора ~/custom_iso/: |
| <code bash circuit> | <code bash circuit> |
| / (Корень системы, раздел /dev/sda3, тип Ext4) | / (Корень системы, раздел /dev/sda3, тип Ext4) |
| * Загруженные пакеты (/var/cache/pacman/pkg/):Когда на Шаге 2.2 выполняется команда sudo pacman -S nginx php-fpm ..., пакеты сначала скачиваются из интернета в этот системный кэш, а затем устанавливаются в систему. Если перед сборкой образов не вызвать очистку кэша (pacman -Sc), все эти скачанные .tar.zst файлы тоже будут запакованы внутрь airootfs.sfs, что увеличит размер финального ISO-образа. | * Загруженные пакеты (/var/cache/pacman/pkg/):Когда на Шаге 2.2 выполняется команда sudo pacman -S nginx php-fpm ..., пакеты сначала скачиваются из интернета в этот системный кэш, а затем устанавливаются в систему. Если перед сборкой образов не вызвать очистку кэша (pacman -Sc), все эти скачанные .tar.zst файлы тоже будут запакованы внутрь airootfs.sfs, что увеличит размер финального ISO-образа. |
| * Скачанный оригинальный ISO-образ (~/archlinux-x86_64.iso):В данном руководстве автор реализует метод сборки на основе слепка живой системы (Host Snapshot), а не классический метод через утилиту archiso. Поэтому оригинальный ISO-образ Arch Linux автора не интересует — из него ничего не монтируется и не копируется.В тексте руководства он упоминается ровно один раз на Шаге 4.2 в качестве флага исключения:... -e /proc /sys ... ~/archlinux-x86_64.iso ~/custom_iso ...Это сделано исключительно для того, чтобы архиватор mksquashfs случайно не стал упаковывать этот огромный скачанный файл весом в 1 ГБ внутрь создаваемого слепка. | * Скачанный оригинальный ISO-образ (~/archlinux-x86_64.iso):В данном руководстве автор реализует метод сборки на основе слепка живой системы (Host Snapshot), а не классический метод через утилиту archiso. Поэтому оригинальный ISO-образ Arch Linux автора не интересует — из него ничего не монтируется и не копируется.В тексте руководства он упоминается ровно один раз на Шаге 4.2 в качестве флага исключения:... -e /proc /sys ... ~/archlinux-x86_64.iso ~/custom_iso ...Это сделано исключительно для того, чтобы архиватор mksquashfs случайно не стал упаковывать этот огромный скачанный файл весом в 1 ГБ внутрь создаваемого слепка. |
| | === Исключенные директории (Флаг -e в mksquashfs)=== |
| | При сборке слепка командой sudo mksquashfs / ... напрямую исключаются виртуальные, временные и резервные папки хоста, так как они генерируются ядром автоматически при загрузке в ОЗУ: |
| | * /proc и /sys — виртуальные ФС ядра. |
| | * /dev — файлы устройств (заполняются службой udev). |
| | * /run — динамические runtime-данные (сюда при старте создается сокет /run/php-fpm/php-fpm.sock). |
| | * /tmp — временные файлы. |
| | * /mnt и /media — точки монтирования внешних дисков. |
| |
| <code bash circuit> | <code bash circuit> |
| │ │ │ Размер: Всё оставшееся │ │ | │ │ │ Размер: Всё оставшееся │ │ |
| └─────────────────────────────────────────────────────────────────────────────────────────┘ | └─────────────────────────────────────────────────────────────────────────────────────────┘ |
| | </code> |
| | |
| | ===Важные технические особенности:=== |
| | * Почему FAT32 обязателен? Материнские платы с UEFI «из коробки» не умеют читать файловые системы Linux (такие как Ext4, Btrfs или SquashFS). Они понимают только FAT32. Поэтому папка /boot выносится на отдельный FAT32-раздел, чтобы плата могла запустить загрузчик BOOTX64.EFI и считать ядро. |
| | * Флаг загрузки: При создании раздела /dev/sda1 утилитами fdisk или gdisk ему обязательно выставляется тип EFI System (код ef00 в gdisk), а форматируется он строго командой mkfs.vfat -F 32 /dev/sda1. |
| | * Использование в ISO: При сборке вашего кастомного ISO-образа утилита xorriso имитирует эту структуру прямо внутри одного ISO-файла, создавая скрытый FAT-образ для совместимости с UEFI-загрузкой целевых серверов. |
| | |
| | =====1.9.1 Примеры схем===== |
| | [[https://wiki.archlinux.org/title/Installation_guide_(Русский)|UEFI с GPT]] |
| | {{tablelayout?colwidth="200px,,,230px"}} |
| | ^Точка монтирования в установленной системе^Раздел^Тип раздела^Рекомендуемый размер^ |
| | |/boot1|/dev/системный_раздел_efi|Системный раздел EFI |1 ГиБ| |
| | |[SWAP]|/dev/раздел_подкачки|Linux swap|Не менее 4 ГиБ| |
| | |/|/dev/корневой_раздел|Linux x86-64 root (/)|Остаток, минимум 23–32 ГиБ| |
| | |
| | ====Схема веб-панели управления в основной системе (tom_1)==== |
| | Папка веб-сервера nginx_html находится по пути /usr/share/nginx/html/ и имеет следующую структуру файлов бэкенда (PHP) и фронтенда (JS/CSS): |
| | <code> |
| | /usr/share/nginx/html/ # Корневая директория веб-сервера Nginx |
| | ├── index.html # Главный интерфейс панели (вкладки, таблицы, модальные окна) |
| | ├── css/ |
| | │ └── style.css # Стили оформления интерфейса панели управления |
| | ├── js/ |
| | │ └── app.js # Клиентская логика (асинхронные Fetch-запросы к API, фильтры) |
| | └── api/ |
| | ├── users.php # Серверный обработчик для системных пользователей (/etc/passwd) |
| | └── groups.php # Серверный обработчик для системных групп (/etc/group) |
| </code> | </code> |