LINUX.ORG.RU

Fedora. Failed to start Switch Root

 , , ,


0

1

Всем привет. После попытки настроить docker на Fedore 31 она перестала запускаться. При запуске показывает ошибку Failed to start Switch Root. При проверке journalctl нашел следующее:

Soecified switch root path ‘/sysroot’ does not seem to by adn OS tree, os-release file is missing

Нашел в интернете такое решение:
в emergency mode прописать следующее:

mount -o remount,rw /sysroot
rm -rf /sysroot/etc/os-release (папка sysroot и так была пустая)
cp /usr/lib/os-release /sysroot/etc exit

После ребута папка sysroot опять становится пустой (без ребута тоже не запускается хоть файл копируется)

На этом же ПК установлен вин10, он работает. Так же есть usb с федорой. Подскажите, можно ли что-то сделать без переустановки системы? Спасибо

Надо не «прописывать» команды, а понимать что они делают.

Команда mount -o remount,rw /sysroot должна примонтировать файловую систему федоры в /sysroot. Если после её выполнения sysroot пустой, то либо монтирование не сработало, и тогда надо прочитать сообщение об ошибке, либо сработало но смонтировало что-то не то, либо ты в предыдущих итерациях умудрился сломать систему.

Запусти mount без параметров, или blkid и посмотри какие вообще фс у тебя есть и доступны.

alpha ★★★★★ ()
Ответ на: комментарий от alpha

после mount -o remount,rw /sysroot выдает следующее:

mount: /sysroot: mount point not mounted or bad option

blkid показывает список разделов от /dev/sda1 до /dev/sda8 (и там дальнейшая информация о них, UUID, LABEL, TYPE, PARTLABEL. Если какие-то из этих пунктов нужны - я перепишу). Федора стоит на sda6

maksym6 ()
Ответ на: комментарий от maksym6

mount: /sysroot: mount point not mounted or bad option

Когда копипастишь команды из интернета, не надо их просто набирать не читая. Уж когда она ошибку пишет прямо вот тут же тебе в терминал, надо остановаиться и разобраться. Иначе можно очень много всего сломать, вплоть до удаления рабочей системы.

Выполни

mount -o remount,rw /dev/sda6 /sysroot

Монтируем что (/dev/sda6) куда(/sysroot).

Проверь что примонтировалось. В /sysroot должно быть дерево системы: etc, bin, usr, home и т.п.

Проверь, есть ли файл /sysroot/etc/os-release и что в нём.

Если его нет, то скопируй:

cp /usr/lib/os-release /sysroot/etc

Но стоит заметить что os-release файл так просто случайно пропасть не может. Вряд ли ты его прямо специально удалял. Поэтому велика вероятность что просто восстановив его, ты ничего не починишь, потому что проблема не тольков нём.

alpha ★★★★★ ()
Ответ на: комментарий от alpha

После mount -o remount,rw /dev/sda6 /sysroot таже ошибка, mount: /sysroot: mount point not mounted or bad option

Попробовал выполнить mount -o rw /dev/sda6 /sysroot

EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null)

После чего в sysroot появилось дерево. Файл os-release тоже был. В нем id, name , version, …, в конце DRACUT_VERSION. Написал exit после чего система загрузилась. Но после перезагрузки опять такая-же проблема, опять sysroot пустой и приходится проделывать тоже самое

maksym6 ()
Ответ на: комментарий от maksym6

Так, погоди, значит с файлом всё ок. Ты ничего не менял, и после emergency mode система загрузилась?

Тогда давай-ка вспоминай как именно ты «настраивал докер», наверное редактировал загрузчик?

Скорее всего ты что-то в нём некорректно вписал в параметры загрузки, поэтому теперь когда ты грузишься стандартным образом загрузка крашится, а когда через emergency mode - проходит.

Что ты редактировал? /etc/default/grub ?

alpha ★★★★★ ()
Ответ на: комментарий от alpha

в grub вписал GRUB_CMDLINE_LINUX= ‘systemd.unified_cgroup_hierarchy=0’. Но потом удалил, это не помогло. Сейчас груб выглядит так:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=«$(sed ‘s, release .*$,,g’ /etc/system-release)»
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=«console»
GRUB_CMDLINE_LINUX=«resume=UUID=22f576f7-76f2-4c1e-a9ad-e14676b3962f rhgb quiet rd.driver.blacklist=nouveau»
GRUB_DISABLE_RECOVERY=«true»
GRUB_ENABLE_BLSCFG=true

Не совсем понял что ты имеешь ввиду под загружаюсь стандартным образом. Ну да, сама загрузка не менялась, просто при загрузке федоры выдает ошибку ту, что я описывал выше. Оно сразу бросает меня в emergency mode. Просто sysroot пустой пока не выполню

mount -o rw /dev/sda6 /sysroot

maksym6 ()
Ответ на: комментарий от maksym6

Ок, всё что выше надо забыть и начать сначала. Ошибка на которую ты вначале указываешь - это не ошибка.

Значит был конфиг /etc/default/grub, ты его отредактировал, добавил параметр в GRUB_CMDLINE_LINUX.

После этого запустил grub2-mkconfig?

После этого система перестала грузиться?

После этого ты параметр удалил как?

alpha ★★★★★ ()
Ответ на: комментарий от alpha

Да, добавил параметр после чего запустил sudo grub2-mkconfig > /boot/efi/EFI/fedora/grub.cfg Но выдало ошибку отказано в доступе. После перезагрузки федора уже не запускалась. Я загрузился с лайв-юсб и удалил строку GRUB_CMDLINE_LINUX, но это не помогло

maksym6 ()
Ответ на: комментарий от maksym6

Команда

sudo grub2-mkconfig > /boot/efi/EFI/fedora/grub.cfg

не сделала ничего. Поскольку sudo распространяется только на команду (grub2-mkconfig), но не на перенаправление (> /boot/efi/EFI/fedora/grub.cfg)

То есть ты с правами рута выполнил grub2-mkconfig, эта команда выложила результат в виде текста, и потом ты с правами пользователя попытался этот текст записать в системный файл - не получилось, потому что у пользователя нет таких прав. Так что влияния на загрузку у неё никакого.

Где-то ты ещё нахимичил перед этим.

Запусти в emergency mode

journalctl -xb

Посмотри какие ещё ошибки пишет.

alpha ★★★★★ ()
Ответ на: комментарий от alpha

переписал всё, что красным

ENERGY_PERF_BIAS: Set to ‘normal’, was ‘perfomance’

pmd_set_huge: Cannot satisfy mem with a huge-page mapping due to MTRR override

ASPM: current common clock configuration is broken, reconfiguring

i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp

ata2.00: failed to resume link (SControl 0) ata1.01: failed to resume link (SControl 0) ata2.01: failed to resume link (SControl 0)

initrd-switch-root.service: Failed with result ‘exit-code’. Failed to start Switch Root

И ещё, если запустить sudo grub2-mkconfig выдает ошибку:

/usr/bin/grub2-editenv: error: invalid environment block.

может в этом где-о проблема

maksym6 ()
Ответ на: комментарий от alpha

а, и ещё перед тем как вписывать вручную опцию GRUB_CMDLINE_LINUX я запустил sudo grubby –update-kernel=ALL –args=«systemd.unified_cgroup_hierarchy=0»

Но выдало ошибку grub2-editenv: ошибка: неправильный блок окружения. 5 раз подряд. После этого я уже вписал руками

maksym6 ()
Ответ на: комментарий от maksym6

Лучше бы ты сразу спрашивал, когда ошибку увидел :)

c grubenv у тебя действительно что-то не то.

У тебя должен быть файл /boot/efi/EFI/fedora/grubenv и симлинк /boot/grub2/grubenv к нему:

$ sudo ls -l /boot/grub2/grubenv
lrwxrwxrwx. 1 root root 25 Jan 13 18:02 /boot/grub2/grubenv -> 
../efi/EFI/fedora/grubenv

Можешь глянуть что там?

В принципе этот файл можно пересоздать.

  1. Примонтировать систему в sysroot

    mount -o rw /dev/sda6 /sysroot
    
  2. Переключиться туда

    chroot /sysroot
    

    У тебя будет доступ к системе как обычно, с /etc /boot и прочими каталогами на верхнем уровне.

  3. Сохранить grubenv куда-то на всякий случай:

    cp /boot/efi/EFI/fedora/grubenv /boot/efi/EFI/fedora/grubenv.back
    
  4. Cгенерить заново пустой блок:

    grub2-editenv create
    
  5. Сгенерить конфиг

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
alpha ★★★★★ ()