Инструменты пользователя

Инструменты сайта


30.05.2026

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
30.05.2026 [2026/05/31 01:24] – [6.3 Монтирование нового ISO-образа в CD-привод Hyper-V (для tom_2)] VladPolskiy30.05.2026 [2026/06/03 07:31] (текущий) – внешнее изменение 127.0.0.1
Строка 7: Строка 7:
  
 ==== 1.1 Создание рабочих директорий ==== ==== 1.1 Создание рабочих директорий ====
 +Схема создаваемой структуры:
 +<code>
 +/home
 +└── eva
 +    ├── new_iso
 +    │   ├── boot
 +    │   └── etc
 +    │       └── fstab
 +    └── original_iso_image
 +        └── archlinux-x86_64.iso
 +</code>
 +
 <code bash #bash> <code bash #bash>
-mkdir -p ~/original_iso_image/ ~/new_iso/+# original_iso_image - для оригинального образа iso 
 +mkdir -p ~/original_iso_image/ 
 +# new_iso - рабочай директория, где будем собирать новый образа iso 
 +mkdir -p ~/new_iso/
 </code> </code>
 +Как это работает
 +  * mkdir имя_папки — создает новую директорию.
 +
 +
 +Проаерка создания
 +<code bash #bash>
 +# original_iso_image - для оригинального образа iso
 +ls -ld ~/original_iso_image/
 +# new_iso - рабочай директория, где будем собирать новый образа iso
 +ls -ld ~/new_iso/
 +</code>
 +Как это работает
 +  * ls -ld имя_папки — выводит информацию о конкретной папке и её правах без показа содержимого.
  
 ==== 1.2 Разметка виртуального диска sdb (будущий arch-flash) ==== ==== 1.2 Разметка виртуального диска sdb (будущий arch-flash) ====
 +
 +===Просмотр списка дисков и разделов===
 +Самый наглядный способ увидеть все подключенные накопители, их размер и структуру:
 +
 +<code bash #bash>
 +lsblk
 +</code>
  
 скрипт создаст правильную структуру для UEFI + BIOS: скрипт создаст правильную структуру для UEFI + BIOS:
Строка 48: Строка 83:
 EOF EOF
 </code> </code>
 +
 +
  
 1.2.2 Использование утилиты sfdisk 1.2.2 Использование утилиты sfdisk
Строка 62: Строка 99:
 </code> </code>
  
 +Поверим
 +<code bash #bash>
 +lsblk
 +</code>
  
 ==== 1.3 Форматирование разделов с метками (LABEL) ==== ==== 1.3 Форматирование разделов с метками (LABEL) ====
Строка 78: Строка 119:
 //(Утилита isohybrid из пакета syslinux сама запишет туда MBR-загрузчик на этапе сборки ISO).// //(Утилита isohybrid из пакета syslinux сама запишет туда MBR-загрузчик на этапе сборки ISO).//
  
 +1.3.3. Проверка
 +Показывает структуру, тип файловой системы (FSTYPE) и метку (LABEL):
 +<code bash #bash>
 +lsblk -f
 +</code>
  
- +1.3.4 Проверка текущего монтирования 
-1.3.4 Проверка текущего монтированияЧтобы загрузчик установился корректно, +\\  Чтобы загрузчик установился корректно, 
 разделы должны быть смонтированы внутри вашей среды arch-chroot.  разделы должны быть смонтированы внутри вашей среды arch-chroot. 
 Обычная структура выглядит так: Обычная структура выглядит так:
  
 +<code>
 +NAME   FSTYPE FSVER LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
 +sda
 +├─sda1 vfat   FAT32           64D4-DC3F                             977.5M     4% /boot
 +└─sda2 btrfs                  53b73831-4cdb-4783-8dd1-e2342ec6c2bf   42.1G    13% /var/log
 +                                                                                  /var/cache/pacman/pkg
 +                                                                                  /home
 +                                                                                  /
 +sdb
 +├─sdb1
 +├─sdb2 vfat   FAT32 ARCH_BOOT AAD6-B042
 +└─sdb3 btrfs        ARCH_ROOT cb7b1794-2e34-456c-b4c6-b470a4d3df26
 +zram0  swap       zram0     2fad77bf-318e-45ee-8f60-87fee0c1c882                [SWAP]
  
 +</code>
 +
 +==Структура разделов на диске sdb==
 +Для универсальной загрузки (и на старых компьютерах с BIOS, и на современных с UEFI) 
 +диск размечается в таблице GPT на три раздела:
  
 <note blue> <note blue>
-/mnt — ваш корень BTRFS (sdb3+|Раздел|Назначение|Размер|Файловая система|Метка (LABEL)| 
-/mnt/boot — ваш boot-раздел FAT32 (sdb2)+|/dev/sdb1|Загрузчик BIOS Boot (нужен для Syslinux/GRUB на старом железе)|1 МБ|Нет (пустой)|Нет| 
 +|/dev/sdb2|Системный раздел EFI (EFI System Partition) для UEFI|1 ГБFAT32|ARCH_BOOT| 
 +|/dev/sdb3|Корневой раздел системы (RootFS)|Всё оставшееся|BTRFS|ARCH_ROOT|
 </note> </note>
  
 +===Монтирование корневого раздела диска в домашнюю папку.===
  
-Выполните команду для проверки текущего дерева монтирования: 
 <code bash #bash> <code bash #bash>
-lsblk -f+sudo mount /dev/sdb3 ~/new_iso
 </code>  </code> 
  
 +Разбор команды:
 +  * sudo: запускает команду с правами администратора (root).
 +  * mount: команда для подключения файловой системы устройства к дереву папок.
 +  * /dev/sdb3: третий раздел на втором жестком диске (sdb).
 +  * ~/new_iso: целевая папка (точка монтирования) внутри вашей домашней директории.
 +Результат: 
 +  * содержимое раздела /dev/sdb3 станет доступно для чтения и записи внутри папки ~/new_iso.
  
-Что искать в выводе: +=== Проверка монтирования корневого раздела. === 
-Убедитесь, что у /dev/sdb3 в колонке MOUNTPOINTS указан / (или /mnt, если вы ещё снаружи chroot)+Найти все активные монтирования, связанные с  
-Убедитесь, что у /dev/sdb2 указан /boot (или /mnt/boot). +<code bash #bash> 
-Раздел sdb1 (bios boot) должен оставаться пустым и не смонтированным.+mount | grep ~/new_iso 
 +</code> 
  
 +Разбор команды:
 +  * mount: без параметров выводит список всех вообще примонтированных устройств в системе.
 +  * | (конвейер): передает этот огромный список на вход следующей команде.
 +  * grep : фильтрует строки, оставляя только те, где встречается текст .
 +Результат: 
 +  * вы увидите, примонтировано ли что-то в ~/new_iso или системный , а также узнаете параметры этого подключения (например, rw — чтение/запись, или ro — только чтение).
  
 +=== Создать папку etc внутри точки монтирования. ===
 +<code bash #bash>
 +sudo mkdir -p ~/new_iso/etc
 +</code> 
  
-1.3.6 Автоматическая генерация fstab+Разбор команды: 
 +  * mkdir: команда создания директорий. 
 +  * -p (parents): полезный флагОн создаст всю цепочку папок (~/new_iso/, ~/new_iso/ и etc), если какого-то из этих промежуточных каталогов еще не существует. Также этот флаг защищает от ошибок, если папка уже создана. 
 +Результат:  
 +  * создается каталог etc. Если перед этим вы успешно выполнили первую команду (mount), то эта папка создастся прямо внутри раздела /dev/sdb3.
  
-Важно: Эту команду нужно выполнять снаружи chroot-окружения (внутри установочной флешки),  +=== Проверка создания папки /etc ===
-когда все ваши разделы уже смонтированы в папку /mnt. +
-Выполните команду: +
-<code bash #bash> +
-genfstab -U /mnt >> /mnt/etc/fstab +
-</code>+
  
  
-//(Флаг -U указывает утилите использовать уникальные UUID разделов вместо имен вроде /dev/sdb3.  +<code bash #bash> 
-Это гарантирует, что система загрузится, даже если вы вставите диск в другой ПК или другой SATA-разъем.)//+tree ~/new_iso 
 +</code> 
  
-Проверка результата +//(Команда tree ~/new_iso выведет структуру каталогов и файлов внутри этой папки в виде наглядного дерева.)// 
-Зайдите внутрь установленной системы (если выходили):+ 
 +1.3.6 Автоматическая генерация fstab 
 +Команда ls -ld ~/new_iso/etc/ выводит подробную информацию о самой папке etc, а не о файлах внутри неё. 
 +<code bash #bash> 
 +ls -ld ~/new_iso/etc/ 
 +</code> 
 +Важно: Эту команду нужно выполнять снаружи chroot-окружения (внутри установочной флешки),  
 +когда все ваши разделы уже смонтированы в папку . 
 +\\   
 +Выполните команду:
 <code bash #bash> <code bash #bash>
-arch-chroot /mnt+sudo genfstab -U ~/new_iso | sudo tee -a ~/new_iso/etc/fstab
 </code> </code>
 +//(
 +  * Флаг -U указывает утилите использовать уникальные UUID разделов вместо имен вроде /dev/sdb3. 
 +Это гарантирует, что система загрузится, даже если вы вставите диск в другой ПК или другой SATA-разъем.
 +  * Команда sudo tee запускает саму утилиту записи с правами администратора (root). Это позволяет успешно сохранить сгенерированную таблицу разделов в файл fstab
 +  * Флаг -a (сокращение от append — добавить) переключает утилиту в режим добавления. Новый текст дописывается в самый конец файла, а старые данные не удаляются
 +)//
  
 +===Проверка результата===
  
-И откройте файл для проверки:+Откройте файл для проверки:
 <code bash #bash> <code bash #bash>
-cat /etc/fstab+cat ~/new_iso/etc/fstab
 </code> </code>
  
Строка 133: Строка 233:
 Если вы ставили систему без подтомов (прямо в корень BTRFS),  Если вы ставили систему без подтомов (прямо в корень BTRFS), 
 ваш файл должен выглядеть примерно так:text ваш файл должен выглядеть примерно так:text
-<code bash #bash+<code> 
-# /dev/sdb3 (Root-раздел BTRFS) +[eva@tom1 ~]$ cat ~/new_iso/etc/fstab 
-UUID=1234abcd-5678-efgh-ijkl-90abcdef1234             btrfs       rw,relatime,space_cache=v2,subvolid=5   0 0 +# /dev/sdb3 LABEL=ARCH_ROOT 
- +UUID=cb7b1794-2e34-456c-b4c6-b470a4d3df26 / btrfs rw,noatime,space_cache=v2,compress=zstd,ssd 0 0 
-# /dev/sdb2 (Boot-раздел FAT32) +[eva@tom1 ~]$
-UUID=A1B2-C3D4                              /boot       vfat        rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2+
 </code> </code>
  
Строка 150: Строка 249:
 compress=zstd — включает прозрачное сжатие данных (сильно экономит место и продлевает жизнь SSD). compress=zstd — включает прозрачное сжатие данных (сильно экономит место и продлевает жизнь SSD).
 </note> </note>
 +
 +=== Редактирование файла fstab===
 +<code bash #bash>
 +sudo nano ~/new_iso/etc/fstab
 +</code>
 +
  
 Пример оптимизированной строки: Пример оптимизированной строки:
 +<code bash fstab>
 +# /dev/sdb3 LABEL=ARCH_ROOT
 +UUID=cb7b1794-2e34-456c-b4c6-b470a4d3df26   /   btrfs   rw,noatime,discard=async,space_cache=v2,compress=zstd,ssd   0 0
 +</code>
 +//(Сохраните файл (Ctrl + O, Enter) и выйдете из nano (Ctrl + X).//
 +
 +===Проверить, что вы всё сделали правильно ===
 +
 <code bash #bash> <code bash #bash>
-UUID=...     btrfs   rw,noatime,compress=zstd,ssd,space_cache=v2   0 0+cat ~/new_iso/etc/fstab
 </code> </code>
 +
 +Посчитайте количество элементов в строке с UUID (разделенных пробелами). Их должно быть ровно 6:
 +  - UUID=...
 +  - /
 +  - btrfs
 +  - rw,noatime,discard=async,space_cache=v2,compress=zstd,ssd
 +  - 0
 +  - 0
 +
 +=== Отключение диска sdb3 от системы ===
 +Команда sudo umount -l /dev/sdb3 выполняет «ленивое» (lazy) размонтирование раздела диска.
 +
 +<code bash #bash>
 +sudo umount -l /dev/sdb3
 +</code> 
 +
 +Разбор параметров команды
 +  * sudo: запускает операцию с правами администратора.
 +  * umount: стандартная системная команда для отключения файловой системы.
 +  * -l (lazy): ключевой флаг, который активирует режим «ленивого» (или отложенного) отключения.
 +  * /dev/sdb3: целевой раздел диска, который нужно отключить.
  
  
 ===== Этап 2. Сборка RootFS внутри нового образа (~/new_iso/) ===== ===== Этап 2. Сборка RootFS внутри нового образа (~/new_iso/) =====
 +===🗺️ Визуальная схема структуры монтирования.===
 +В процессе сборки (Этап 2.1) создается иерархическая структура, 
 +где один раздел накопителя-донора монтируется внутрь другого:
 +<code>
 +/ (Корень хоста tom_1)         <─── раздел sda2
 +├── boot/                      <─── загрузочный раздел хоста (/dev/sda1)
 +├── [BIOS Boot]                <─── X (НЕ смонтирован / раздел /dev/sdb1)
 +└── home/
 +    └── eva/
 +        └── new_iso/           <─── сюда монтируется /dev/sdb3 (ARCH_ROOT)
 +            └── boot/          <─── сюда монтируется /dev/sdb2 (ARCH_BOOT)
 +</code>
 +Выполните команду для проверки текущего дерева монтирования:
 +<code bash #bash>
 +lsblk -f
 +</code> 
  
-Формируем структуру будущего ISO-образа без использования утилиты archiso. +Как выглядит идеальный результат для вашего диска:
-==== 2.1 Монтирование нового диска для заливки системы ====+
 <code bash #bash> <code bash #bash>
-mkdir -p ~/new_iso+NAME   FSTYPE FSVER LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINTS 
 +sda 
 +├─sda1 vfat   FAT32           64D4-DC3F                             977.5M     4% /boot 
 +└─sda2 btrfs                  53b73831-4cdb-4783-8dd1-e2342ec6c2bf   42.1G    13% /var/log 
 +                                                                                  /var/cache/pacman/pkg 
 +                                                                                  /home 
 +                                                                                  / 
 +sdb 
 +├─sdb1 
 +├─sdb2 vfat   FAT32 ARCH_BOOT AAD6-B042 
 +└─sdb3 btrfs        ARCH_ROOT cb7b1794-2e34-456c-b4c6-b470a4d3df26 
 +zram0  swap       zram0     2fad77bf-318e-45ee-8f60-87fee0c1c882                [SWAP] 
 + 
 +</code> 
 + 
 + 
 +Вот список из 4 ключевых вещей, которые вам нужно проверить в терминале: 
 +  - 1. Колонка **FSTYPE** (Тип файловой системы) 
 +Убедитесь, что система правильно видит форматирование ваших разделов: 
 +    - Для /dev/**sdb2** (загрузочный) там должно быть строго **vfat** (или fat32). 
 +    - Для /dev/**sdb3** (корневой) там должно быть написано **btrfs**. 
 +    - Если там пусто, значит раздел еще не отформатирован. 
 +  - 2. Колонка **LABEL** (Метка диска) 
 +Проверьте, соответствуют ли имена вашему плану: 
 +    - У загрузочного раздела должно стоять **ARCH_BOOT**. 
 +    - У корневого раздела должно стоять **ARCH_ROOT**. 
 +    - Метки помогают визуально не перепутать разделы местами. 
 +  - 3. Колонка **UUID** (Уникальный идентификатор) 
 +Это длинная строка из букв, цифр и дефисов. Именно её вы записывали в файл fstab. 
 +    - Убедитесь, что **UUID** для /dev/**sdb3** в выводе команды символ в символ совпадает с тем **UUID**, который вы оставили в файле **~/new_iso/etc/fstab**. Если они отличаются, система выдаст ошибку при загрузке. 
 +  - 4. Колонка **MOUNTPOINTS** (Точки монтирования) 
 +    - В этой колонке напротив строк **sdb2** и **sdb3** должно быть абсолютно **пусто**. 
 + 
 +==== 2.1 Монтирование новых дисов для загрузки системы ==== 
 + 
 +Монтируются два раздела диска sdb в рабочую папку сборки (~/new_iso): 
 +<note blue> 
 +  * **sdb1** (BIOS Boot) — **не монтируется** (нужен просто как «маяк» для старого BIOS). 
 +  * **sdb2** (FAT32, метка ARCH_BOOT) — монтируется в папку **~/new_iso/boot**. Нужен для размещения файлов EFI-загрузчика (systemd-boot), ядра Linux (vmlinuz-linux) и загрузочного образа initramfs 
 +  * **sdb3** (Btrfs, метка ARCH_ROOT) — монтируется в корень сборки **~/new_iso**. Сюда через утилиту rsync копируется вся основная корневая файловая система (RootFS) с текущего рабочего хоста tom_1. 
 +</note> 
 +//////////////////////////////////////////////////////////////////// 
 +<code bash #bash> 
 +mkdir -p ~/new_iso - создана в Этап1 раздел 1.1 Создание рабочих директорий
 sudo mount /dev/sdb3 ~/new_iso       # Корень BTRFS монтируем в корень сборки sudo mount /dev/sdb3 ~/new_iso       # Корень BTRFS монтируем в корень сборки
 sudo mkdir -p ~/new_iso/boot sudo mkdir -p ~/new_iso/boot
Строка 168: Строка 360:
 </code> </code>
  
 +==1. /dev/sdb1 (BIOS Boot) — НЕ МОНТИРУЕТСЯ==
 +Этот раздел действительно **остается несмонтированным** на протяжении всего процесса.
 +  * В инструкции на Этапе 1.3.4 прямо указано: «Раздел sdb1 (bios boot) должен оставаться пустым и не смонтированным».
 +  * Зачем он нужен: Этот раздел имеет крошечный размер (всего 1 МБ). Он нужен только для разметки GPT, чтобы старые материнские платы (BIOS/Legacy) могли найти загрузочный код утилиты Syslinux. Файловая система на нем не создается, файлы туда не копируются, и монтировать его в папки Linux нельзя.
 +==3. /dev/sdb3 (Корень Btrfs) — МОНТИРУЕТСЯ==
 +Этот раздел монтируется в первую очередь.
 +  * В инструкции на Этапе 2.1 выполняется команда: sudo mount /dev/sdb3 ~/new_iso.
 +  * Зачем: Это самый большой раздел, куда копируется вся операционная система (папки /etc, /usr, /var и т.д.). Папка ~/new_iso становится отображением этого диска.
 +==2. /dev/sdb2 (папка boot) — МОНТИРУЕТСЯ==
 +Этот раздел действительно **остается несмонтированным** на протяжении всего процесса.
 +  * В инструкции на Этапе 1.3.4 прямо указано: «Раздел sdb1 (bios boot) должен оставаться пустым и не смонтированным».
 +  * Зачем он нужен: Этот раздел имеет крошечный размер (всего 1 МБ). Он нужен только для разметки GPT, чтобы старые материнские платы (BIOS/Legacy) могли найти загрузочный код утилиты Syslinux. Файловая система на нем не создается, файлы туда не копируются, и монтировать его в папки Linux нельзя.
  
 +<code bash #bash>
 +lsblk -f
 +</code>
 +
 +<code>
 +[eva@tom1 ~]$ lsblk -f
 +NAME   FSTYPE FSVER LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
 +sda
 +├─sda1 vfat   FAT32           64D4-DC3F                             977.5M     4% /boot
 +└─sda2 btrfs                  53b73831-4cdb-4783-8dd1-e2342ec6c2bf   42.1G    13% /var/log
 +                                                                                  /var/cache/pacman/pkg
 +                                                                                  /home
 +                                                                                  /
 +sdb
 +├─sdb1
 +├─sdb2 vfat   FAT32 ARCH_BOOT AAD6-B042                              1022M     0% /home/eva/new_iso/boot
 +└─sdb3 btrfs        ARCH_ROOT cb7b1794-2e34-456c-b4c6-b470a4d3df26   25.5G     0% /home/eva/new_iso
 +zram0  swap       zram0     2fad77bf-318e-45ee-8f60-87fee0c1c882                [SWAP]
 +
 +</code>
 +
 +Итоговая схема п.2.1
 +<code>
 +[eva@tom1 ~]$ tree /home
 +/home
 +└── eva
 +    └── new_iso
 +        ├── boot
 +        └── etc
 +            └── fstab
 +
 +5 directories, 1 file
 +</code>
 ==== 2.2 копируем корень tom_1, исключая виртуальные и временные папки. ==== ==== 2.2 копируем корень tom_1, исключая виртуальные и временные папки. ====
 <code bash #bash> <code bash #bash>
-sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*/.cache/*","~/new_iso/*","~/original_iso_image/*"} / ~/new_iso/+sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*/.cache/*","/home/eva/new_iso/*","/home/eva/original_iso_image/*","/etc/fstab"} / /home/eva/new_iso/
 </code> </code>
 +
 +===Проверим выполнение с вложенностью 3 уровня===
 +Выведем только интересующие нас папку /boot и файл /etc/fstab
 +<code bash #bash>
 +sudo find /home/eva/new_iso -maxdepth 2 \( -path "*/boot" -o -path "*/etc" -o -path "*/etc/fstab" \) | tree --fromfile
 +</code>
 +
 +<code>
 +└── home
 +    └── eva
 +        └── new_iso
 +            ├── boot
 +            └── etc
 +                └── fstab
 +
 +5 directories, 2 files
 +</code>
 +=== Проверка файла /etc/fstab ===
 +Проверим, что файл /home/eva/new_iso/etc/fstab существует, не затерт и содержит правильные данные — 
 +выведем его содержимое на экран с помощью команды cat.
 +
 +<code bash #bash>
 +cat /home/eva/new_iso/etc/fstab
 +</code>
 +
 +<code>
 +# /dev/sdb3 LABEL=ARCH_ROOT
 +UUID=85f23d27-9469-4c60-89d5-79242d2e1e17       /               btrfs           rw,noatime,discard=async,space_cache=v2,compress=zstd,ssd        0 0
 +</code>
 +
  
 ===== Этап 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/
 +</code>
 +<code>
 +[eva@tom1 ~]$ sudo arch-chroot ~/new_iso/
 +[root@tom1 /]#
 </code> </code>
  
  
 ==== 3.2 Время и Офлайн-режим ==== ==== 3.2 Время и Офлайн-режим ====
-3.2.1 Настройка времени (Универсальное UTC + запрет синхронизации):+Во время установки Arch Linux с помощью скрипта archinstall или официального образа служба  
 +синхронизации времени включается автоматически. По умолчанию за это отвечает служба systemd-timesyncd 
 + 
 + 
 +===3.2.1 Настройка времени (Универсальное UTC + запрет синхронизации):=== 
 +Эти команды используются для настройки системного времени и управления синхронизацией часов в Linux. 
 +\\   
 +Обычно такой набор команд применяется в изолированных окружениях, контейнерах или при сборке  
 +кастомных ISO-образов, где нужно жестко зафиксировать всемирное время (UTC) и отключить  
 +фоновые сетевые службы времени. 
 +== 1. Устанавливаем часовой пояс UTC / Europe/Moscow внутри chroot ==
 <code bash #bash> <code bash #bash>
 ln -sf /usr/share/zoneinfo/UTC /etc/localtime ln -sf /usr/share/zoneinfo/UTC /etc/localtime
 +</code>
 +или<code bash #bash>
 +ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
 +</code>
 +
 +Установка системного часового пояса в UTC / Europe/Moscow.
 +  * ln: утилита для создания ссылок между файлами.
 +  * -s (symbolic): создает символическую ссылку (ярлык), а не жесткую копию.
 +  * -f (force): принудительно перезаписывает старую ссылку /etc/localtime, если она уже существовала.
 +Как это работает: 
 +  * файл /etc/localtime указывает операционной системе, какое локальное время отображать. 
 +Эта команда привязывает вашу систему к эталонному всемирному времени UTC (Zero timezone). 
 +Все логи и системные часы теперь будут работать без смещения на зимнее/летнее время или региональные пояса.
 +
 +== Проверка часового пояса (UTC / Europe/Moscow) ==
 +Выполните команду ls -l для файла /etc/localtime. Она должна показать, что этот файл 
 +является символической ссылкой, указывающей именно на файл UTC / Europe/Moscow:
 +<code bash #bash>
 +ls -l /etc/localtime
 +</code>
 +Идеальный вывод:
 +<code>
 +# UTC
 +lrwxrwxrwx 1 root root 23 May 31 19:08 /etc/localtime -> /usr/share/zoneinfo/UTC
 +# Europe/Moscow
 +lrwxrwxrwx 1 root root 33 May 31 22:35 /etc/localtime -> /usr/share/zoneinfo/Europe/Moscow
 +</code>
 +Также можно запустить команду date -u — она покажет текущее системное время в формате UTC / Europe/Moscow.
 +
 +== 2. Переносим системное время в аппаратное ==
 +
 +<code bash #bash>
 hwclock --systohc hwclock --systohc
-systemctl disable systemd-timesyncd 
-systemctl mask systemd-timesyncd 
 </code> </code>
 +
 +Запись текущего системного времени в аппаратные часы материнской платы.
 +  * hwclock: утилита для работы с аппаратными часами (RTC — Real Time Clock), 
 +которые питаются от батарейки на материнской плате вашего компьютера.
 +  * --systohc (System to Hardware Clock): берет точное время из операционной памяти 
 +(которое настроено в Linux) и принудительно записывает его в чип BIOS/UEFI.
 +Зачем это нужно: 
 +  * чтобы при следующей перезагрузке компьютера материнская плата сразу передала ядру 
 +Linux правильное время, даже если не будет интернета.
 +
 +== Проверка переноса времени в аппаратное ==
 +Чтобы убедиться, что время успешно записалось в аппаратную часть, просто вызовите утилиту чтения часов без флагов:
 +<code bash #bash>
 +hwclock --show
 +</code>
 +Идеальный вывод:
 +<code>
 +2026-05-31 19:49:22.992460+00:00
 +</code>
 +Идеальный вывод: Команда должна вывести актуальную дату и точное время 
 +(обычно с припиской .000000+00:00), не выдавая ошибок доступа к устройству /dev/rtc.
 +
 +== 3. Ручной "mask" службы — связываем её с /dev/null ==
 +<code bash #bash>
 +ln -sf /dev/null /etc/systemd/system/systemd-timesyncd.service
 +</code>
 +
 +Полная блокировка («замораживание») службы синхронизации времени.
 +  * mask: это самая сильная форма отключения сервиса в Systemd. Она связывает файл службы с пустой директорией /dev/null.
 +Результат: 
 +  * службу systemd-timesyncd теперь невозможно запустить вообще никак — ни автоматически, 
 +ни вручную, ни в качестве зависимости для других программ. Любая попытка включить 
 +её вызовет ошибку. Это гарантирует, что интернет-соединение во время работы системы 
 +случайно не изменит зафиксированное вами время.
 +
 +==Как это сработает на конечной машине?==
 +Когда ваш кастомный образ загрузится на компьютере без интернета, 
 +systemd попытается прочитать конфигурацию службы systemd-timesyncd.service, 
 +наткнется на пустышку /dev/null и просто проигнорирует её запуск, 
 +вообще не тратя системные ресурсы.
 +
 +== Проверка ручной блокировки службы (mask) ==
 +Проверьте, куда указывает созданный ярлык службы. Для этого выведите информацию о файле сервиса:
 +<code bash #bash>
 +ls -l /etc/systemd/system/systemd-timesyncd.service
 +</code>
 +Идеальный вывод:
 +<code>
 +lrwxrwxrwx 1 root root 9 May 31 19:44 /etc/systemd/system/systemd-timesyncd.service -> /dev/null
 +</code>
 +Идеальный вывод: systemd-timesyncd.service -> /dev/null
  
  
 ==== 3.3 Настройка статического офлайн-репозитория ==== ==== 3.3 Настройка статического офлайн-репозитория ====
 +
 +Для настройки статического офлайн-репозитория на Arch Linux скачайте 
 +нужные .pkg.tar.zst пакеты и их зависимости, поместите их в отдельную 
 +папку (например, /var/local/repo), создайте базу данных утилитой repo-add, 
 +а затем добавьте полученный путь в конфигурационный файл /etc/pacman.conf 
 +перед официальными репозиториями.
 +
 3.3.1 Создаем локальный репозиторий внутри образа из кэша tom_1, 3.3.1 Создаем локальный репозиторий внутри образа из кэша tom_1,
 База пакетов уже скопирована вместе с /var/cache/pacman/pkg/ База пакетов уже скопирована вместе с /var/cache/pacman/pkg/
-Создаем локальную БД:+ 
 +\\  Перейдем в папку /var/cache/pacman/pkg/
 <code bash #bash> <code bash #bash>
 cd /var/cache/pacman/pkg/ cd /var/cache/pacman/pkg/
 +</code>
 +
 +вывод
 +<code>
 +[root@tom1 /]# cd /var/cache/pacman/pkg/
 +[root@tom1 pkg]#
 +</code>
 +
 +Создаем локальную БД:
 +<code bash #bash>
 repo-add custom.db.tar.gz *.pkg.tar.zst repo-add custom.db.tar.gz *.pkg.tar.zst
 </code> </code>
  
 +вывод
 +<code>
 +[root@tom1 pkg]# repo-add custom.db.tar.gz *.pkg.tar.zst
 +
 +  -> Computing checksums...
 +  -> Creating 'desc' db entry...
 +  -> Creating 'files' db entry...
 +==> Creating updated database file 'custom.db.tar.gz'
 +[root@tom1 pkg]#
 +
 +</code>
  
 3.3.2 Настройка секции [custom] в pacman.conf для полной изоляции 3.3.2 Настройка секции [custom] в pacman.conf для полной изоляции
Строка 237: Строка 628:
 </code> </code>
  
 +После правки
 +<code>
 +#[core]
 +#Include = /etc/pacman.d/mirrorlist
  
 +#[extra-testing]
 +#Include = /etc/pacman.d/mirrorlist
 + 
 +#[extra]
 +#Include = /etc/pacman.d/mirrorlist
  
-3.3.5 Проверка внутри Chroot ====+# Добавляем изолированный локальный репозиторий 
 +[custom] 
 +SigLevel = Optional TrustAll 
 +Server = file:///var/cache/pacman/pkg 
 +</code> 
 +//(Нажмите сочетание клавиш Ctrl + O,  
 +затем Enter для подтверждения записи файла,  
 +и наконец Ctrl + X для выхода)// 
 + 
 +==== 3.3.5 Проверка внутри Chroot ====
 После сохранения файла обязательно обнови локальную базу данных,  После сохранения файла обязательно обнови локальную базу данных, 
 чтобы проверить работу: чтобы проверить работу:
Строка 246: Строка 655:
 </code> </code>
  
 +вывод
 +<code>
 +[root@tom1 pkg]# pacman -Sy
 +:: Synchronizing package databases...
 + custom                                 148.1 KiB   145 MiB/s 00:00 [######################################] 100%
 +[root@tom1 pkg]#
 +</code>
  
 //(Результат: Система должна моментально считать базу данных  //(Результат: Система должна моментально считать базу данных 
Строка 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:192.168.1.72, то откроем его для редактирования:
 <code bash #bash> <code bash #bash>
-rm -f /etc/systemd/network/* 
 nano /etc/systemd/network/20-wired.network nano /etc/systemd/network/20-wired.network
 </code> </code>
  
  
-Содержимое:+Изменим одержимое:
 <code bash 20-wired.network> <code bash 20-wired.network>
 [Match] [Match]
Строка 271: Строка 687:
 </code> </code>
  
 +!!!!!!!!!!!!!!!!!!!!!Я ТУТ!!!!!!!!!!!!!!!!!!!!!!!!!\\   
 +!!!!!!!!!!!!!!!!!!!!!Я ТУТ!!!!!!!!!!!!!!!!!!!!!!!!!
 ==== 3.5 Включение сервисов (Nginx порт 7000 + SSH) ==== ==== 3.5 Включение сервисов (Nginx порт 7000 + SSH) ====
 +
 +===Настройка SSH===
 +Убедитесь, что служба OpenSSH включена, чтобы иметь возможность удаленного подключения:
 +<code bash #bash>
 +systemctl enable sshd
 +</code>
 +
 +
 +По умолчанию Nginx слушает 80-й порт. Чтобы изменить его на 7000:
 +Откройте конфигурационный файл в текстовом редакторе (например, nano):
 +
 3.5.1 Правим порт Nginx:  3.5.1 Правим порт Nginx: 
 <code bash #bash> <code bash #bash>
Строка 278: Строка 706:
 </code> </code>
  
 +Найдите блок server { ... } и проверьте/ измените директиву listen:
  
 <code bash nginx.conf> <code bash nginx.conf>
Строка 283: Строка 712:
 server_name  localhost; server_name  localhost;
 </code> </code>
 +
 +//Сохраните изменения (в nano: нажмите Ctrl + O, затем Enter, для выхода — Ctrl + X).//
 +\\  
 +Включите службу Nginx
 +
 +<code bash #bash>
 +systemctl enable nginx
 +</code>
 +
 +==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 sshd nginx+systemctl enable systemd-networkd systemd-resolved
 </code> </code>
 +
 +Вывод:
 +<code>
 +[root@tom1 ~]# systemctl enable systemd-networkd systemd-resolved sshd nginx
 +Created symlink '/etc/systemd/system/dbus-org.freedesktop.resolve1.service' → '/usr/lib/systemd/system/systemd-resolved.service'.
 +Created symlink '/etc/systemd/system/sysinit.target.wants/systemd-resolved.service' → '/usr/lib/systemd/system/systemd-resolved.service'.
 +Created symlink '/etc/systemd/system/sockets.target.wants/systemd-resolved-varlink.socket' → '/usr/lib/systemd/system/systemd-resolved-varlink.socket'.
 +Created symlink '/etc/systemd/system/sockets.target.wants/systemd-resolved-monitor.socket' → '/usr/lib/systemd/system/systemd-resolved-monitor.socket'.
 +[root@tom1 ~]# 
 +</code>
 +
 +
 +===Проверка автозапуска служб===
 +В среде 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
 +</code>
 +
 +Если службы добавлены в автозагрузку, все команды вернут ответ enabled.
 +\\  
 +
 +Вывод:
 +<code>
 +[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 ~]#
 +</code>
 +
  
 ==== 3.6 Настройка Swap в ОЗУ (zram-generator) ==== ==== 3.6 Настройка Swap в ОЗУ (zram-generator) ====
Строка 318: Строка 811:
 cat <<EOF > /etc/fstab cat <<EOF > /etc/fstab
 LABEL=ARCH_ROOT    /        btrfs    defaults,noatime,compress=zstd    0 0 LABEL=ARCH_ROOT    /        btrfs    defaults,noatime,compress=zstd    0 0
-LABEL=ARCH_BOOT    /boot    vfat     defaults,noatime                  0 2+LABEL=ARCH_BOOT    /boot  vfat  defaults,fmask=0077,dmask=0077   2
 EOF EOF
 </code> </code>
 ) )
 +
 +nano /etc/fstab
 +
 +
 +
 +
 +
  
 ==== 3.8 Установка и обновление EFI-загрузчика ==== ==== 3.8 Установка и обновление EFI-загрузчика ====
 +
 +Перемонтируйте раздел повторно
 +Теперь примените новые параметры монтирования 
 +из обновленного fstab:
 +
 +mount -o remount /boot
 +
 +Смонтируйте вручную с правильными правами
 +
 +mount -t vfat -o fmask=0077,dmask=0077 /dev/disk/by-label/ARCH_BOOT /boot
 +
 +
 <code bash #bash> <code bash #bash>
 bootctl install bootctl install
30.05.2026.1780179870.txt.gz · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki