30.05.2026
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| 30.05.2026 [2026/05/31 01:12] – [Этап 5. Выбор варианта Генерация UEFI-образа, SquashFS и сборка ISO для через xorriso] VladPolskiy | 30.05.2026 [2026/06/03 07:31] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 7: | Строка 7: | ||
| ==== 1.1 Создание рабочих директорий ==== | ==== 1.1 Создание рабочих директорий ==== | ||
| + | Схема создаваемой структуры: | ||
| + | < | ||
| + | /home | ||
| + | └── eva | ||
| + | ├── new_iso | ||
| + | │ ├── boot | ||
| + | │ └── etc | ||
| + | │ | ||
| + | └── original_iso_image | ||
| + | └── archlinux-x86_64.iso | ||
| + | </ | ||
| + | |||
| <code bash #bash> | <code bash #bash> | ||
| - | mkdir -p ~/ | + | # original_iso_image - для оригинального образа iso |
| + | mkdir -p ~/ | ||
| + | # new_iso - рабочай директория, | ||
| + | mkdir -p ~/new_iso/ | ||
| </ | </ | ||
| + | Как это работает | ||
| + | * mkdir имя_папки — создает новую директорию. | ||
| + | |||
| + | |||
| + | Проаерка создания | ||
| + | <code bash #bash> | ||
| + | # original_iso_image - для оригинального образа iso | ||
| + | ls -ld ~/ | ||
| + | # new_iso - рабочай директория, | ||
| + | ls -ld ~/new_iso/ | ||
| + | </ | ||
| + | Как это работает | ||
| + | * ls -ld имя_папки — выводит информацию о конкретной папке и её правах без показа содержимого. | ||
| ==== 1.2 Разметка виртуального диска sdb (будущий arch-flash) ==== | ==== 1.2 Разметка виртуального диска sdb (будущий arch-flash) ==== | ||
| + | |||
| + | ===Просмотр списка дисков и разделов=== | ||
| + | Самый наглядный способ увидеть все подключенные накопители, | ||
| + | |||
| + | <code bash #bash> | ||
| + | lsblk | ||
| + | </ | ||
| скрипт создаст правильную структуру для UEFI + BIOS: | скрипт создаст правильную структуру для UEFI + BIOS: | ||
| Строка 48: | Строка 83: | ||
| EOF | EOF | ||
| </ | </ | ||
| + | |||
| + | |||
| 1.2.2 Использование утилиты sfdisk | 1.2.2 Использование утилиты sfdisk | ||
| Строка 62: | Строка 99: | ||
| </ | </ | ||
| + | Поверим | ||
| + | <code bash #bash> | ||
| + | lsblk | ||
| + | </ | ||
| ==== 1.3 Форматирование разделов с метками (LABEL) ==== | ==== 1.3 Форматирование разделов с метками (LABEL) ==== | ||
| Строка 78: | Строка 119: | ||
| // | // | ||
| + | 1.3.3. Проверка | ||
| + | Показывает структуру, | ||
| + | <code bash #bash> | ||
| + | lsblk -f | ||
| + | </ | ||
| - | + | 1.3.4 Проверка текущего монтирования | |
| - | 1.3.4 Проверка текущего монтированияЧтобы загрузчик установился корректно, | + | \\ |
| разделы должны быть смонтированы внутри вашей среды arch-chroot. | разделы должны быть смонтированы внутри вашей среды arch-chroot. | ||
| Обычная структура выглядит так: | Обычная структура выглядит так: | ||
| + | < | ||
| + | NAME | ||
| + | sda | ||
| + | ├─sda1 vfat | ||
| + | └─sda2 btrfs 53b73831-4cdb-4783-8dd1-e2342ec6c2bf | ||
| + | / | ||
| + | /home | ||
| + | / | ||
| + | sdb | ||
| + | ├─sdb1 | ||
| + | ├─sdb2 vfat FAT32 ARCH_BOOT AAD6-B042 | ||
| + | └─sdb3 btrfs ARCH_ROOT cb7b1794-2e34-456c-b4c6-b470a4d3df26 | ||
| + | zram0 swap | ||
| + | </ | ||
| + | |||
| + | ==Структура разделов на диске sdb== | ||
| + | Для универсальной загрузки (и на старых компьютерах с BIOS, и на современных с UEFI) | ||
| + | диск размечается в таблице GPT на три раздела: | ||
| <note blue> | <note blue> | ||
| - | /mnt — ваш корень BTRFS (sdb3) | + | |Раздел|Назначение|Размер|Файловая система|Метка (LABEL)| |
| - | /mnt/boot — ваш boot-раздел FAT32 (sdb2) | + | |/ |
| + | |/dev/sdb2|Системный | ||
| + | |/ | ||
| </ | </ | ||
| + | ===Монтирование корневого раздела диска в домашнюю папку.=== | ||
| - | Выполните команду для проверки текущего дерева монтирования: | ||
| <code bash #bash> | <code bash #bash> | ||
| - | lsblk -f | + | sudo mount /dev/sdb3 ~/new_iso |
| </ | </ | ||
| + | Разбор команды: | ||
| + | * sudo: запускает команду с правами администратора (root). | ||
| + | * mount: команда для подключения файловой системы устройства к дереву папок. | ||
| + | * /dev/sdb3: третий раздел на втором жестком диске (sdb). | ||
| + | * ~/new_iso: целевая папка (точка монтирования) внутри вашей домашней директории. | ||
| + | Результат: | ||
| + | * содержимое раздела /dev/sdb3 станет доступно для чтения и записи внутри папки ~/new_iso. | ||
| - | Что искать в выводе: | + | === Проверка монтирования |
| - | Убедитесь, что у / | + | Найти все активные монтирования, связанные с |
| - | Убедитесь, что у /dev/sdb2 указан /boot (или / | + | <code bash #bash> |
| - | Раздел sdb1 (bios boot) должен оставаться пустым | + | mount | grep ~/new_iso |
| + | </ | ||
| + | Разбор команды: | ||
| + | * mount: без параметров выводит список всех вообще примонтированных устройств в системе. | ||
| + | * | (конвейер): | ||
| + | * grep : фильтрует строки, | ||
| + | Результат: | ||
| + | * вы увидите, | ||
| + | === Создать папку etc внутри точки монтирования. === | ||
| + | <code bash #bash> | ||
| + | sudo mkdir -p ~/ | ||
| + | </ | ||
| - | 1.3.6 Автоматическая генерация fstab | + | Разбор команды: |
| + | * mkdir: команда создания директорий. | ||
| + | * -p (parents): полезный флаг. Он создаст | ||
| + | Результат: | ||
| + | * создается каталог etc. Если перед этим вы успешно выполнили первую команду (mount), то эта папка создастся прямо внутри раздела /dev/sdb3. | ||
| - | Важно: Эту команду нужно выполнять снаружи chroot-окружения (внутри установочной флешки), | + | === Проверка создания папки /etc === |
| - | когда все ваши разделы уже смонтированы в папку /mnt. | + | |
| - | Выполните команду: | + | |
| - | <code bash #bash> | + | |
| - | genfstab -U /mnt >> /mnt/etc/fstab | + | |
| - | </ | + | |
| - | //(Флаг -U указывает утилите использовать уникальные UUID разделов вместо имен вроде / | + | <code bash #bash> |
| - | Это гарантирует, | + | tree ~/new_iso |
| + | </code> | ||
| - | Проверка результата | + | //(Команда tree ~/new_iso выведет структуру |
| - | Зайдите внутрь установленной | + | |
| + | 1.3.6 Автоматическая генерация fstab | ||
| + | Команда ls -ld ~/ | ||
| + | <code bash #bash> | ||
| + | ls -ld ~/ | ||
| + | </ | ||
| + | Важно: Эту команду нужно выполнять снаружи chroot-окружения (внутри установочной | ||
| + | когда все ваши разделы уже смонтированы в папку . | ||
| + | \\ | ||
| + | Выполните команду: | ||
| <code bash #bash> | <code bash #bash> | ||
| - | arch-chroot | + | sudo genfstab |
| </ | </ | ||
| + | //( | ||
| + | * Флаг -U указывает утилите использовать уникальные UUID разделов вместо имен вроде / | ||
| + | Это гарантирует, | ||
| + | * Команда sudo tee запускает саму утилиту записи с правами администратора (root). Это позволяет успешно сохранить сгенерированную таблицу разделов в файл fstab | ||
| + | * Флаг -a (сокращение от append — добавить) переключает утилиту в режим добавления. Новый текст дописывается в самый конец файла, а старые данные не удаляются | ||
| + | )// | ||
| + | ===Проверка результата=== | ||
| - | И откройте файл для проверки: | + | Откройте файл для проверки: |
| <code bash #bash> | <code bash #bash> | ||
| - | cat /etc/fstab | + | cat ~/new_iso/etc/fstab |
| </ | </ | ||
| Строка 133: | Строка 233: | ||
| Если вы ставили систему без подтомов (прямо в корень BTRFS), | Если вы ставили систему без подтомов (прямо в корень BTRFS), | ||
| ваш файл должен выглядеть примерно так:text | ваш файл должен выглядеть примерно так:text | ||
| - | < | + | < |
| - | # / | + | [eva@tom1 ~]$ cat ~/ |
| - | UUID=1234abcd-5678-efgh-ijkl-90abcdef1234 | + | # / |
| - | + | UUID=cb7b1794-2e34-456c-b4c6-b470a4d3df26 | |
| - | # /dev/sdb2 (Boot-раздел FAT32) | + | [eva@tom1 ~]$ |
| - | UUID=A1B2-C3D4 | + | |
| </ | </ | ||
| Строка 150: | Строка 249: | ||
| compress=zstd — включает прозрачное сжатие данных (сильно экономит место и продлевает жизнь SSD). | compress=zstd — включает прозрачное сжатие данных (сильно экономит место и продлевает жизнь SSD). | ||
| </ | </ | ||
| + | |||
| + | === Редактирование файла fstab=== | ||
| + | <code bash #bash> | ||
| + | sudo nano ~/ | ||
| + | </ | ||
| + | |||
| Пример оптимизированной строки: | Пример оптимизированной строки: | ||
| + | <code bash fstab> | ||
| + | # /dev/sdb3 LABEL=ARCH_ROOT | ||
| + | UUID=cb7b1794-2e34-456c-b4c6-b470a4d3df26 | ||
| + | </ | ||
| + | // | ||
| + | |||
| + | ===Проверить, | ||
| + | |||
| <code bash #bash> | <code bash #bash> | ||
| - | UUID=... | + | cat ~/new_iso/ |
| </ | </ | ||
| + | |||
| + | Посчитайте количество элементов в строке с UUID (разделенных пробелами). Их должно быть ровно 6: | ||
| + | - UUID=... | ||
| + | - / | ||
| + | - btrfs | ||
| + | - rw, | ||
| + | - 0 | ||
| + | - 0 | ||
| + | |||
| + | === Отключение диска sdb3 от системы === | ||
| + | Команда sudo umount -l /dev/sdb3 выполняет «ленивое» (lazy) размонтирование раздела диска. | ||
| + | |||
| + | <code bash #bash> | ||
| + | sudo umount -l /dev/sdb3 | ||
| + | </ | ||
| + | |||
| + | Разбор параметров команды | ||
| + | * sudo: запускает операцию с правами администратора. | ||
| + | * umount: стандартная системная команда для отключения файловой системы. | ||
| + | * -l (lazy): ключевой флаг, который активирует режим «ленивого» (или отложенного) отключения. | ||
| + | * /dev/sdb3: целевой раздел диска, который нужно отключить. | ||
| ===== Этап 2. Сборка RootFS внутри нового образа (~/ | ===== Этап 2. Сборка RootFS внутри нового образа (~/ | ||
| + | ===🗺️ Визуальная схема структуры монтирования.=== | ||
| + | В процессе сборки (Этап 2.1) создается иерархическая структура, | ||
| + | где один раздел накопителя-донора монтируется внутрь другого: | ||
| + | < | ||
| + | / (Корень хоста tom_1) | ||
| + | ├── boot/ < | ||
| + | ├── [BIOS Boot] < | ||
| + | └── home/ | ||
| + | └── eva/ | ||
| + | └── new_iso/ | ||
| + | └── boot/ < | ||
| + | </ | ||
| + | Выполните команду для проверки текущего дерева монтирования: | ||
| + | <code bash #bash> | ||
| + | lsblk -f | ||
| + | </ | ||
| - | Формируем структуру будущего ISO-образа без использования утилиты archiso. | + | Как выглядит идеальный |
| - | ==== 2.1 Монтирование нового диска | + | |
| <code bash #bash> | <code bash #bash> | ||
| - | mkdir -p ~/new_iso | + | NAME |
| + | sda | ||
| + | ├─sda1 vfat | ||
| + | └─sda2 btrfs 53b73831-4cdb-4783-8dd1-e2342ec6c2bf | ||
| + | / | ||
| + | /home | ||
| + | / | ||
| + | sdb | ||
| + | ├─sdb1 | ||
| + | ├─sdb2 vfat FAT32 ARCH_BOOT AAD6-B042 | ||
| + | └─sdb3 btrfs ARCH_ROOT cb7b1794-2e34-456c-b4c6-b470a4d3df26 | ||
| + | zram0 swap | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | Вот список из 4 ключевых вещей, которые вам нужно проверить в терминале: | ||
| + | - 1. Колонка **FSTYPE** (Тип файловой системы) | ||
| + | Убедитесь, | ||
| + | - Для / | ||
| + | - Для / | ||
| + | - Если там пусто, значит раздел еще не отформатирован. | ||
| + | - 2. Колонка **LABEL** (Метка диска) | ||
| + | Проверьте, | ||
| + | - У загрузочного раздела должно стоять **ARCH_BOOT**. | ||
| + | - У корневого раздела должно стоять **ARCH_ROOT**. | ||
| + | - Метки помогают визуально не перепутать разделы местами. | ||
| + | - 3. Колонка **UUID** (Уникальный идентификатор) | ||
| + | Это длинная строка из букв, цифр и дефисов. Именно её вы записывали в файл fstab. | ||
| + | - Убедитесь, | ||
| + | - 4. Колонка **MOUNTPOINTS** (Точки монтирования) | ||
| + | - В этой колонке напротив строк **sdb2** и **sdb3** должно быть абсолютно **пусто**. | ||
| + | |||
| + | ==== 2.1 Монтирование новых дисов для загрузки системы ==== | ||
| + | |||
| + | Монтируются два раздела диска sdb в рабочую папку сборки (~/ | ||
| + | <note blue> | ||
| + | * **sdb1** (BIOS Boot) — **не монтируется** (нужен просто как «маяк» для старого BIOS). | ||
| + | * **sdb2** (FAT32, метка ARCH_BOOT) — монтируется в папку **~/ | ||
| + | * **sdb3** (Btrfs, метка ARCH_ROOT) — монтируется в корень сборки **~/ | ||
| + | </ | ||
| + | //////////////////////////////////////////////////////////////////// | ||
| + | <code bash #bash> | ||
| + | # mkdir -p ~/ | ||
| sudo mount /dev/sdb3 ~/ | sudo mount /dev/sdb3 ~/ | ||
| sudo mkdir -p ~/ | sudo mkdir -p ~/ | ||
| Строка 168: | Строка 360: | ||
| </ | </ | ||
| + | ==1. /dev/sdb1 (BIOS Boot) — НЕ МОНТИРУЕТСЯ== | ||
| + | Этот раздел действительно **остается несмонтированным** на протяжении всего процесса. | ||
| + | * В инструкции на Этапе 1.3.4 прямо указано: | ||
| + | * Зачем он нужен: Этот раздел имеет крошечный размер (всего 1 МБ). Он нужен только для разметки GPT, чтобы старые материнские платы (BIOS/ | ||
| + | ==3. /dev/sdb3 (Корень Btrfs) — МОНТИРУЕТСЯ== | ||
| + | Этот раздел монтируется в первую очередь. | ||
| + | * В инструкции на Этапе 2.1 выполняется команда: | ||
| + | * Зачем: Это самый большой раздел, | ||
| + | ==2. /dev/sdb2 (папка boot) — МОНТИРУЕТСЯ== | ||
| + | Этот раздел действительно **остается несмонтированным** на протяжении всего процесса. | ||
| + | * В инструкции на Этапе 1.3.4 прямо указано: | ||
| + | * Зачем он нужен: Этот раздел имеет крошечный размер (всего 1 МБ). Он нужен только для разметки GPT, чтобы старые материнские платы (BIOS/ | ||
| + | <code bash #bash> | ||
| + | lsblk -f | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | [eva@tom1 ~]$ lsblk -f | ||
| + | NAME | ||
| + | sda | ||
| + | ├─sda1 vfat | ||
| + | └─sda2 btrfs 53b73831-4cdb-4783-8dd1-e2342ec6c2bf | ||
| + | / | ||
| + | /home | ||
| + | / | ||
| + | sdb | ||
| + | ├─sdb1 | ||
| + | ├─sdb2 vfat FAT32 ARCH_BOOT AAD6-B042 | ||
| + | └─sdb3 btrfs ARCH_ROOT cb7b1794-2e34-456c-b4c6-b470a4d3df26 | ||
| + | zram0 swap | ||
| + | |||
| + | </ | ||
| + | |||
| + | Итоговая схема п.2.1 | ||
| + | < | ||
| + | [eva@tom1 ~]$ tree /home | ||
| + | /home | ||
| + | └── eva | ||
| + | └── new_iso | ||
| + | ├── boot | ||
| + | └── etc | ||
| + | └── fstab | ||
| + | |||
| + | 5 directories, | ||
| + | </ | ||
| ==== 2.2 копируем корень tom_1, исключая виртуальные и временные папки. ==== | ==== 2.2 копируем корень tom_1, исключая виртуальные и временные папки. ==== | ||
| <code bash #bash> | <code bash #bash> | ||
| - | sudo rsync -aAXv --exclude={"/ | + | sudo rsync -aAXv --exclude={"/ |
| </ | </ | ||
| + | |||
| + | ===Проверим выполнение с вложенностью 3 уровня=== | ||
| + | Выведем только интересующие нас папку /boot и файл /etc/fstab | ||
| + | <code bash #bash> | ||
| + | sudo find / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | └── home | ||
| + | └── eva | ||
| + | └── new_iso | ||
| + | ├── boot | ||
| + | └── etc | ||
| + | └── fstab | ||
| + | |||
| + | 5 directories, | ||
| + | </ | ||
| + | === Проверка файла /etc/fstab === | ||
| + | Проверим, | ||
| + | выведем его содержимое на экран с помощью команды cat. | ||
| + | |||
| + | <code bash #bash> | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | # /dev/sdb3 LABEL=ARCH_ROOT | ||
| + | UUID=85f23d27-9469-4c60-89d5-79242d2e1e17 | ||
| + | </ | ||
| + | |||
| ===== Этап 3. Настройка системы через Chroot (chroot ~/new_iso/) ===== | ===== Этап 3. Настройка системы через Chroot (chroot ~/new_iso/) ===== | ||
| Строка 180: | Строка 447: | ||
| <code bash #bash> | <code bash #bash> | ||
| sudo arch-chroot ~/new_iso/ | sudo arch-chroot ~/new_iso/ | ||
| + | </ | ||
| + | < | ||
| + | [eva@tom1 ~]$ sudo arch-chroot ~/new_iso/ | ||
| + | [root@tom1 /]# | ||
| </ | </ | ||
| ==== 3.2 Время и Офлайн-режим ==== | ==== 3.2 Время и Офлайн-режим ==== | ||
| - | 3.2.1 Настройка времени (Универсальное UTC + запрет синхронизации): | + | Во время установки Arch Linux с помощью скрипта archinstall или официального образа служба |
| + | синхронизации времени включается автоматически. По умолчанию за это отвечает служба systemd-timesyncd | ||
| + | |||
| + | |||
| + | ===3.2.1 Настройка времени (Универсальное UTC + запрет синхронизации): | ||
| + | Эти команды используются для настройки системного времени и управления синхронизацией часов в Linux. | ||
| + | \\ | ||
| + | Обычно такой набор команд применяется в изолированных окружениях, | ||
| + | кастомных ISO-образов, | ||
| + | фоновые сетевые службы времени. | ||
| + | == 1. Устанавливаем часовой пояс UTC / Europe/ | ||
| <code bash #bash> | <code bash #bash> | ||
| ln -sf / | ln -sf / | ||
| + | </ | ||
| + | или< | ||
| + | ln -sf / | ||
| + | </ | ||
| + | |||
| + | Установка системного часового пояса в UTC / Europe/ | ||
| + | * ln: утилита для создания ссылок между файлами. | ||
| + | * -s (symbolic): создает символическую ссылку (ярлык), | ||
| + | * -f (force): принудительно перезаписывает старую ссылку / | ||
| + | Как это работает: | ||
| + | * файл / | ||
| + | Эта команда привязывает вашу систему к эталонному всемирному времени UTC (Zero timezone). | ||
| + | Все логи и системные часы теперь будут работать без смещения на зимнее/ | ||
| + | |||
| + | == Проверка часового пояса (UTC / Europe/ | ||
| + | Выполните команду ls -l для файла / | ||
| + | является символической ссылкой, | ||
| + | <code bash #bash> | ||
| + | ls -l / | ||
| + | </ | ||
| + | Идеальный вывод: | ||
| + | < | ||
| + | # UTC | ||
| + | lrwxrwxrwx 1 root root 23 May 31 19:08 / | ||
| + | # Europe/ | ||
| + | lrwxrwxrwx 1 root root 33 May 31 22:35 / | ||
| + | </ | ||
| + | Также можно запустить команду date -u — она покажет текущее системное время в формате UTC / Europe/ | ||
| + | |||
| + | == 2. Переносим системное время в аппаратное == | ||
| + | |||
| + | <code bash #bash> | ||
| hwclock --systohc | hwclock --systohc | ||
| - | systemctl disable systemd-timesyncd | ||
| - | systemctl mask systemd-timesyncd | ||
| </ | </ | ||
| + | |||
| + | Запись текущего системного времени в аппаратные часы материнской платы. | ||
| + | * hwclock: утилита для работы с аппаратными часами (RTC — Real Time Clock), | ||
| + | которые питаются от батарейки на материнской плате вашего компьютера. | ||
| + | * --systohc (System to Hardware Clock): берет точное время из операционной памяти | ||
| + | (которое настроено в Linux) и принудительно записывает его в чип BIOS/UEFI. | ||
| + | Зачем это нужно: | ||
| + | * чтобы при следующей перезагрузке компьютера материнская плата сразу передала ядру | ||
| + | Linux правильное время, даже если не будет интернета. | ||
| + | |||
| + | == Проверка переноса времени в аппаратное == | ||
| + | Чтобы убедиться, | ||
| + | <code bash #bash> | ||
| + | hwclock --show | ||
| + | </ | ||
| + | Идеальный вывод: | ||
| + | < | ||
| + | 2026-05-31 19: | ||
| + | </ | ||
| + | Идеальный вывод: Команда должна вывести актуальную дату и точное время | ||
| + | (обычно с припиской .000000+00: | ||
| + | |||
| + | == 3. Ручной " | ||
| + | <code bash #bash> | ||
| + | ln -sf /dev/null / | ||
| + | </ | ||
| + | |||
| + | Полная блокировка («замораживание») службы синхронизации времени. | ||
| + | * mask: это самая сильная форма отключения сервиса в Systemd. Она связывает файл службы с пустой директорией /dev/null. | ||
| + | Результат: | ||
| + | * службу systemd-timesyncd теперь невозможно запустить вообще никак — ни автоматически, | ||
| + | ни вручную, | ||
| + | её вызовет ошибку. Это гарантирует, | ||
| + | случайно не изменит зафиксированное вами время. | ||
| + | |||
| + | ==Как это сработает на конечной машине? | ||
| + | Когда ваш кастомный образ загрузится на компьютере без интернета, | ||
| + | systemd попытается прочитать конфигурацию службы systemd-timesyncd.service, | ||
| + | наткнется на пустышку /dev/null и просто проигнорирует её запуск, | ||
| + | вообще не тратя системные ресурсы. | ||
| + | |||
| + | == Проверка ручной блокировки службы (mask) == | ||
| + | Проверьте, | ||
| + | <code bash #bash> | ||
| + | ls -l / | ||
| + | </ | ||
| + | Идеальный вывод: | ||
| + | < | ||
| + | lrwxrwxrwx 1 root root 9 May 31 19:44 / | ||
| + | </ | ||
| + | Идеальный вывод: systemd-timesyncd.service -> /dev/null | ||
| ==== 3.3 Настройка статического офлайн-репозитория ==== | ==== 3.3 Настройка статического офлайн-репозитория ==== | ||
| + | |||
| + | Для настройки статического офлайн-репозитория на Arch Linux скачайте | ||
| + | нужные .pkg.tar.zst пакеты и их зависимости, | ||
| + | папку (например, | ||
| + | а затем добавьте полученный путь в конфигурационный файл / | ||
| + | перед официальными репозиториями. | ||
| + | |||
| 3.3.1 Создаем локальный репозиторий внутри образа из кэша tom_1, | 3.3.1 Создаем локальный репозиторий внутри образа из кэша tom_1, | ||
| База пакетов уже скопирована вместе с / | База пакетов уже скопирована вместе с / | ||
| - | Создаем локальную БД: | + | |
| + | \\ Перейдем | ||
| <code bash #bash> | <code bash #bash> | ||
| cd / | cd / | ||
| + | </ | ||
| + | |||
| + | вывод | ||
| + | < | ||
| + | [root@tom1 /]# cd / | ||
| + | [root@tom1 pkg]# | ||
| + | </ | ||
| + | |||
| + | Создаем локальную БД: | ||
| + | <code bash #bash> | ||
| repo-add custom.db.tar.gz *.pkg.tar.zst | repo-add custom.db.tar.gz *.pkg.tar.zst | ||
| </ | </ | ||
| + | вывод | ||
| + | < | ||
| + | [root@tom1 pkg]# repo-add custom.db.tar.gz *.pkg.tar.zst | ||
| + | |||
| + | -> Computing checksums... | ||
| + | -> Creating ' | ||
| + | -> Creating ' | ||
| + | ==> Creating updated database file ' | ||
| + | [root@tom1 pkg]# | ||
| + | |||
| + | </ | ||
| 3.3.2 Настройка секции [custom] в pacman.conf для полной изоляции | 3.3.2 Настройка секции [custom] в pacman.conf для полной изоляции | ||
| Строка 237: | Строка 628: | ||
| </ | </ | ||
| + | После правки | ||
| + | < | ||
| + | #[core] | ||
| + | #Include = / | ||
| + | # | ||
| + | #Include = / | ||
| + | |||
| + | #[extra] | ||
| + | #Include = / | ||
| - | 3.3.5 Проверка внутри Chroot ==== | + | # Добавляем изолированный локальный репозиторий |
| + | [custom] | ||
| + | SigLevel = Optional TrustAll | ||
| + | Server = file:/// | ||
| + | </ | ||
| + | // | ||
| + | затем Enter для подтверждения записи файла, | ||
| + | и наконец Ctrl + X для выхода)// | ||
| + | |||
| + | ==== 3.3.5 Проверка внутри Chroot ==== | ||
| После сохранения файла обязательно обнови локальную базу данных, | После сохранения файла обязательно обнови локальную базу данных, | ||
| чтобы проверить работу: | чтобы проверить работу: | ||
| Строка 246: | Строка 655: | ||
| </ | </ | ||
| + | вывод | ||
| + | < | ||
| + | [root@tom1 pkg]# pacman -Sy | ||
| + | :: Synchronizing package databases... | ||
| + | | ||
| + | [root@tom1 pkg]# | ||
| + | </ | ||
| // | // | ||
| Строка 251: | Строка 667: | ||
| ==== 3.4 Настройка сети (Статический IP флешки в ОЗУ) ==== | ==== 3.4 Настройка сети (Статический IP флешки в ОЗУ) ==== | ||
| - | Прописываем параметры для работы в ОЗУ (IP: 192.168.1.150). | + | ===Прописываем параметры для работы в ОЗУ (IP: 192.168.1.150).=== |
| - | Создаем профиль systemd-networkd: | + | Т.к. файл профиля systemd-networkd |
| + | tom_1 и имеет IP: | ||
| <code bash #bash> | <code bash #bash> | ||
| - | rm -f / | ||
| nano / | nano / | ||
| </ | </ | ||
| - | Содержимое: | + | Изменим |
| <code bash 20-wired.network> | <code bash 20-wired.network> | ||
| [Match] | [Match] | ||
| Строка 271: | Строка 687: | ||
| </ | </ | ||
| + | !!!!!!!!!!!!!!!!!!!!!Я ТУТ!!!!!!!!!!!!!!!!!!!!!!!!!\\ | ||
| + | !!!!!!!!!!!!!!!!!!!!!Я ТУТ!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| ==== 3.5 Включение сервисов (Nginx порт 7000 + SSH) ==== | ==== 3.5 Включение сервисов (Nginx порт 7000 + SSH) ==== | ||
| + | |||
| + | ===Настройка SSH=== | ||
| + | Убедитесь, | ||
| + | <code bash #bash> | ||
| + | systemctl enable sshd | ||
| + | </ | ||
| + | |||
| + | |||
| + | По умолчанию Nginx слушает 80-й порт. Чтобы изменить его на 7000: | ||
| + | Откройте конфигурационный файл в текстовом редакторе (например, | ||
| + | |||
| 3.5.1 Правим порт Nginx: | 3.5.1 Правим порт Nginx: | ||
| <code bash #bash> | <code bash #bash> | ||
| Строка 278: | Строка 706: | ||
| </ | </ | ||
| + | Найдите блок server { ... } и проверьте/ | ||
| <code bash nginx.conf> | <code bash nginx.conf> | ||
| Строка 283: | Строка 712: | ||
| server_name | server_name | ||
| </ | </ | ||
| + | |||
| + | // | ||
| + | \\ | ||
| + | Включите службу Nginx | ||
| + | |||
| + | <code bash #bash> | ||
| + | systemctl enable nginx | ||
| + | </ | ||
| + | |||
| + | ==1. systemd-networkd== | ||
| + | Это системный демон для управления сетевыми интерфейсами и подключениями | ||
| + | |||
| + | |||
| + | ==2. systemd-resolved== | ||
| + | Это локальный кэширующий DNS-клиент (распознаватель) | ||
| + | |||
| + | |||
| + | ==Как они работают вместе: | ||
| + | systemd-networkd поднимает соединение и получает от | ||
| + | провайдера IP-адрес и адреса DNS-серверов. Затем он передает эти DNS-адреса | ||
| + | службе systemd-resolved, | ||
| + | ваших приложений (например, | ||
| + | |||
| 3.5.2 Активируем автозапуск: | 3.5.2 Активируем автозапуск: | ||
| <code bash #bash> | <code bash #bash> | ||
| - | systemctl enable systemd-networkd systemd-resolved | + | systemctl enable systemd-networkd systemd-resolved |
| </ | </ | ||
| + | |||
| + | Вывод: | ||
| + | < | ||
| + | [root@tom1 ~]# systemctl enable systemd-networkd systemd-resolved sshd nginx | ||
| + | Created symlink '/ | ||
| + | Created symlink '/ | ||
| + | Created symlink '/ | ||
| + | Created symlink '/ | ||
| + | [root@tom1 ~]# | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===Проверка автозапуска служб=== | ||
| + | В среде chroot команда systemctl status | ||
| + | может работать некорректно из-за отсутствия запущенного менеджера | ||
| + | инициализации (systemd). Чтобы гарантировать, | ||
| + | в автозагрузку, | ||
| + | |||
| + | <code bash #bash> | ||
| + | systemctl is-enabled sshd | ||
| + | systemctl is-enabled nginx | ||
| + | systemctl is-enabled systemd-networkd | ||
| + | systemctl is-enabled systemd-resolved | ||
| + | </ | ||
| + | |||
| + | Если службы добавлены в автозагрузку, | ||
| + | \\ | ||
| + | |||
| + | Вывод: | ||
| + | < | ||
| + | [root@tom1 ~]# systemctl is-enabled sshd | ||
| + | enabled | ||
| + | [root@tom1 ~]# systemctl is-enabled nginx | ||
| + | enabled | ||
| + | [root@tom1 ~]# systemctl is-enabled systemd-networkd | ||
| + | enabled | ||
| + | [root@tom1 ~]# systemctl is-enabled systemd-resolved | ||
| + | enabled | ||
| + | [root@tom1 ~]# | ||
| + | </ | ||
| + | |||
| ==== 3.6 Настройка Swap в ОЗУ (zram-generator) ==== | ==== 3.6 Настройка Swap в ОЗУ (zram-generator) ==== | ||
| Строка 318: | Строка 811: | ||
| cat <<EOF > /etc/fstab | cat <<EOF > /etc/fstab | ||
| LABEL=ARCH_ROOT | LABEL=ARCH_ROOT | ||
| - | LABEL=ARCH_BOOT | + | LABEL=ARCH_BOOT |
| EOF | EOF | ||
| </ | </ | ||
| ) | ) | ||
| + | |||
| + | nano /etc/fstab | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| ==== 3.8 Установка и обновление EFI-загрузчика ==== | ==== 3.8 Установка и обновление EFI-загрузчика ==== | ||
| + | |||
| + | Перемонтируйте раздел повторно | ||
| + | Теперь примените новые параметры монтирования | ||
| + | из обновленного fstab: | ||
| + | |||
| + | mount -o remount /boot | ||
| + | |||
| + | Смонтируйте вручную с правильными правами | ||
| + | |||
| + | mount -t vfat -o fmask=0077, | ||
| + | |||
| + | |||
| <code bash #bash> | <code bash #bash> | ||
| bootctl install | bootctl install | ||
| Строка 773: | Строка 1285: | ||
| ==== 6.3 Монтирование нового ISO-образа в CD-привод Hyper-V (для tom_2) ==== | ==== 6.3 Монтирование нового ISO-образа в CD-привод Hyper-V (для tom_2) ==== | ||
| - | Открой Диспетчер Hyper-V. | + | * Открой Диспетчер Hyper-V. |
| - | Выбери изолированную виртуальную машину tom_2. | + | |
| - | Нажми Параметры (Settings) -> vIDE-контроллер или SCSI-контроллер (в зависимости от поколения ВМ Gen1/ | + | |
| - | Выбери Накопитель DVD (DVD Drive). | + | |
| - | Установи переключатель в положение Файл образа (ISO) (Image file). | + | |
| - | Нажми Обзор (Browse) и укажи путь к скачанному файлу C: | + | |
| - | Нажми Применить (Apply) и запусти ВМ tom_2. | + | |
30.05.2026.1780179136.txt.gz · Последнее изменение: — VladPolskiy
