Bug 54517 - Не находит установленную и запущенную с флешки систему
Summary: Не находит установленную и запущенную с флешки систему
Status: CLOSED NOTABUG
Alias: None
Product: Branch p11
Classification: Unclassified
Component: system-backup (show other bugs)
Version: unspecified
Hardware: x86_64 Linux
: P5 normal
Assignee: Leonid Krivoshein
QA Contact: qa-p11@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-05-28 14:14 MSK by Artem Varaksa
Modified: 2025-05-29 13:46 MSK (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2025-05-28 14:14:16 MSK
Шаги
====

1. Записать образ ALT Server 11.0 RC5 x86_64 на обычную флешку.

2. Подключить тестовую флешку >= 32 GB и загрузиться с установочной флешки.

3. Установить систему на флешку. При предупреждении о нехватке места можно выбрать вариант разбивки "Вручную", создать на флешке EFI System Partition или BIOS Boot Partition (FAT32, 512 MB) и, на оставшемся месте, сделать Linux filesystem (ext4). Убрать все возможные компоненты, т. к. нужна только базовая система без графики.

4. Отключить загрузочную флешку. Загрузиться с флешки, на которую установлена система.

5. Для удобства настроить подключение по SSH и подключиться:

# control sshd-permit-root-login enabled && systemctl restart sshd && hostname -i

6. Обновить систему до актуального репозитория:

# apt-get update && apt-get dist-upgrade -y && update-kernel -y && reboot

7. Установить пакет:

# apt-get install -y system-backup

8. Удалить Linux-разделы со встроенного на реальном стенде диска, если они там есть. Создать пустой раздел с типом Linux filesystem. Можно использовать, например:

# lsblk -f
# cfdisk /dev/nvme0n1

9. Создать файловую систему на встроенном диске и примонтировать её, например:

# export PARTITION="/dev/nvme0n1p1" BACKUP_DIR="/home/test/backup_test" && \
    mkfs.ext4 "$PARTITION" && \
    mkdir -p "$BACKUP_DIR" && \
    mount "$PARTITION" "$BACKUP_DIR"

10. Попробовать сделать резервную копию без указания параметра -r/--removable (согласно https://bugzilla.altlinux.org/show_bug.cgi?id=54497#c4, указывать явно цель не нужно):

# [[ "$BACKUP_DIR" != "" ]] && rm -rfv $BACKUP_DIR/** && \
    system-backup -b "$BACKUP_DIR" -v

Затем с указанием параметра:

# [[ "$BACKUP_DIR" != "" ]] && rm -rfv $BACKUP_DIR/** && \
    system-backup -b "$BACKUP_DIR" -v -r

Фактический результат
=====================

Как без указания -r, так и с его указанием, резервная копия не выполняется:

> system-backup СБОЙ: Корневой раздел Linux не найден!

Подробнее:

> # inxi -v 8 -z --filter-uuid --filter-label
> ...
>   Device-1: 2-4:2 info: Transcend Information JetFlash type: mass storage driver: usb-storage
>     interfaces: 1 rev: 3.1 speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen-1x1 power: 304mA
>     chip-ID: 8564:1000 class-ID: 0806 serial: <filter>

> # cat /sys/block/sda/removable
> 1

> # lsblk
> NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
> sda           8:0    1  28,5G  0 disk
> ├─sda1        8:1    1   255M  0 part /boot/efi
> └─sda2        8:2    1  28,2G  0 part /
> nvme0n1     259:0    0 238,5G  0 disk
> └─nvme0n1p1 259:1    0 238,5G  0 part /home/test/backup_test

> # lsblk -f
> NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
> sda
> ├─sda1      vfat   FAT32       D372-2B8D                               244M     3% /boot/efi
> └─sda2      ext4   1.0         b87ae8e9-06f8-41bf-a9b0-2ba5fbc7d604   24,3G     7% /
> nvme0n1
> └─nvme0n1p1 ext4   1.0         c644f791-7865-4659-a27b-246aa6939405  221,7G     0% /home/test/backup_test

> # system-backup -b "$BACKUP_DIR" -r -v
> Checking backup conditions...
>
> BLKID cache:
> /dev/nvme0n1p1: UUID="c644f791-7865-4659-a27b-246aa6939405" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID=> "9899bd97-d408-4f22-bc2a-87227b291450"
> /dev/sda2: UUID="b87ae8e9-06f8-41bf-a9b0-2ba5fbc7d604" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID=> "650f7595-0348-d445-9615-abf896e6c0ab"
> /dev/sda1: UUID="D372-2B8D" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="c8bd85bf-10ee-7c45-809c-c688f63e14ff"
>
> Devices MAP:
> 259:0	nvme0n1
> 259:1	nvme0n1p1
> 8:0	sda
> 8:1	sda1
> 8:2	sda2
>
> Skip volumes:    LABEL=alt-autorun
>
> Protect devices: sda2 sda nvme0n1p1 nvme0n1
>
> Auto-detecting targets...
>   - /dev/nvme0n1 protected directly
>   - /dev/nvme0n1p1 protected directly
>   - /dev/sda protected directly
>   - /dev/sda2 protected directly
> Loading kernel modules...
>   - ext4
>   - jfs
>   - xfs
>   - btrfs
>   - vfat
>
> Current time:    2025-05-28 13:10:55
> Exec arguments:  -b /home/test/backup_test -r -v
> Work directory:  /tmp/.private/root/system-backup-zEkycZ29.tmp
> Backup base:     /home/test/backup_test
> Backup name:     2025-05-28
> Kernel version:  6.12.27-6.12-alt1 x86_64 GNU/Linux
> System version:  ALT Server 11.0 (Mendelevium)
> Script run mode: NORMAL
> Removable disks: ENABLED
> Write to NVRAM:  ENABLED
> Cleanup first:   DISABLED
> RootFS number:   <NOT DEFINED>
> Checksum types:  sha256
> Target devices:  sda1
> TGT detection:   auto
>
> Search Linux root partitions...
>   - skipping device /dev/sda1 (vfat)...
> system-backup СБОЙ: Корневой раздел Linux не найден!

Ожидаемый результат
===================

Успешное выполнение резервной копии.

Дополнительно
=============

При указании -C или -U <UUID> разделы находятся и успешно выполняется резервное копирование.

Воспроизводимость
=================

Воспроизводится на реальной машине:

[p11+384293] ALT Server 11.0 RC5 x86_64
system-backup-0.1.4-alt1

[p11] ALT Server 11.0 RC5 x86_64
system-backup-0.1.1-alt3

В sisyphus не проверялось, но system-backup в p11+384293 эквивалентен.
Comment 1 Leonid Krivoshein 2025-05-29 03:19:35 MSK
Из лога следует, что ошибки нет:

> Protect devices: sda2 sda nvme0n1p1 nvme0n1
> Auto-detecting targets...
>   - /dev/nvme0n1 protected directly
>   - /dev/nvme0n1p1 protected directly
>   - /dev/sda protected directly
>   - /dev/sda2 protected directly

"protected directly" означает, что устройство было исключено из сканирования, потому что оно защищено непосредственно.

- nvme0n1p1 сюда смонтирован /home/test/backup_test
- nvme0n1 на нём находится nvme0n1p1
- sda2 с него загрузились
- sda на нём находится sda2

Для данного кейса должен использоваться -C (--current/--self). Иного способа забэкапить систему, с которой загрузились, не предусмотрено. С монтируемыми томами такой системы приходится работать иначе.
Comment 2 Artem Varaksa 2025-05-29 10:46:41 MSK
Понял, но тогда возникает вопрос, в каком случае вообще нужен --removable? Т. е. в каком случае он влияет на что-либо.

Получается, нужно загрузиться, например, со встроенного диска, и попробовать (без указания явной цели -C/-U/...) сделать резервную копию, и в таком случае без --removable не будет выполнена никакая копия, а с --removable будет выполнена копия флешки?

Изначально не проверял такой вариант, предполагая что system-backup предпочтёт в таком случае встроенный диск, даже если с него запущена система. Но из того что вы написали, получается что диск, с которого загрузились, всегда "защищается", если явно не указать цель. И это действительно не противоречит другим проверкам, которые выполнялись всегда с указанием цели.
Comment 3 Leonid Krivoshein 2025-05-29 13:46:31 MSK
(In reply to Artem Varaksa from comment #2)
> Понял, но тогда возникает вопрос, в каком случае вообще нужен --removable?
> Т. е. в каком случае он влияет на что-либо.
Когда нет явного указания, что бэкапить. Искать можно с учётом съёмных дисков и без их учёта.

> Получается, нужно загрузиться, например, со встроенного диска, и попробовать
> (без указания явной цели -C/-U/...) сделать резервную копию, и в таком
> случае без --removable не будет выполнена никакая копия, а с --removable
> будет выполнена копия флешки?
Верно, только не так важно, с чего загружаться. Просто, в некоторых машинах может не быть ничего, кроме внешних дисков, например, в одноплатниках, параметр нужен для них. Для большинства же случаев он не нужен.