🛠️ Как восстановить сломанный Arch Linux в прежнее рабочее состояние

Мануал

Это краткое руководство описывает, как восстановить сломанную Arch Linux и ее разновидности, такие как EndeavourOS, Manjaro Linux, в прежнее рабочее состояние.

На днях я выполнил полное обновление системы с помощью команды “sudo pacman -Syu”, и в итоге получил сломанную систему Arch Linux.

Мой Arch Linux отказался загружаться в графическом режиме и продолжал выдавать сообщения об ошибках: “dependency failed multi-user system” и “dependency failed for graphical interface”.

Единственный вариант, который у меня был, это войти в однопользовательский режим и попытаться откатить обновленные пакеты до их предыдущих версий.

В однопользовательском режиме я попробовал следующее:

  • Я попытался установить пакеты из официальных репозиториев, но не смог. Потому что моя сетевая карта не распознается в режиме одного пользователя, поэтому Интернет не работал.
  • Команда “downgrade” не работает. Я понятия не имею, почему. Поэтому я не смог обновить ни один пакет до предыдущей версии. Просто появилось сообщение об ошибке “sudo pacman command is not found”.
  • Поэтому я снова попытался понизить версию всех пакетов до определенной даты. Это тоже не помогло. Я получил ту же ошибку, что и выше, т.е. “sudo pacman command is not found”.

Если вы оказались в подобной ситуации, это руководство может помочь вам восстановить ваш сломанный Arch Linux до прежнего рабочего состояния.

Восстановление работоспособности Arch Linux

1. Сначала войдите в систему в режиме одного пользователя.

Для этого введите “e” при появлении меню Grub.

2. Затем найдите строку, которая начинается со слова linux:

linux          /boot/vmlinuz-linux  root-UUID=d474f2-e6a2-4cc3-9899-aa98af13  rw  quiet
В конце вышеуказанной строки введите следующую строку:

init=/bin/bash

Для справки посмотрите следующий снимок экрана.

 

3. Затем нажмите F10 или CTRL+X, чтобы продолжить. Через несколько секунд вы перейдете в однопользовательский режим.

4. Введите следующую команду для монтирования корневой (/) файловой системы в режиме чтения/записи.

mount -n -o remount,rw /

5. Теперь вам нужно найти, когда вы выполнили полное обновление системы.

Вы можете легко найти это, просмотрев файл pacman.log.

В этом файле сохраняются все записи pacman, которые вы делали в прошлом.

tail -n 200 /var/log/pacman.log | less

Здесь -n 200 отобразит последние 200 строк в вашем файле pacman.log.

Потому что в моем файле pacman.log очень много записей.

Как вы, возможно, знаете, команда tail отображает только последние 10 записей.

Поэтому замените 200 на свое собственное число, чтобы просмотреть файл pacman.log.

Я передал вывод команды “tail” команде “less”, чтобы отобразить результаты постранично.

6. Просмотрев файл pacman.log, я обнаружил точное время полного обновления системы.

7. Поскольку я не могу использовать команду “downgrade” и понизить все пакеты до определенной даты, у меня не было выбора, кроме как понизить все обновленные пакеты по одному с помощью команды “pacman -U” из кэша.

Как вы уже знаете, pacman сохраняет все загруженные пакеты в папке /var/cache/pacman/pkgs/.

8. Я отметил все обновленные пакеты на скриншоте и понизил их один за другим до более ранней версии из кэша, как показано ниже.

pacman -U /var/cache/pacman/pkg/qt5-base-5.9.1-3-x86_64.pkg.tar.xz

Приведенная выше команда установит пакет qt5-base из папки cache.

У меня ушло почти полчаса на понижение версии всех пакетов.

9. Если вы уже очистили папку cache, у вас нет выбора.

Переустановка может быть единственным вариантом.

Поэтому я рекомендую вам сохранить в кэше по крайней мере две старые версии, чтобы вы могли восстановить их, если возникнут проблемы с новыми пакетами.

10. После обновления всех пакетов введите следующую команду, чтобы применить изменения и запустить Arch Linux в нормальном режиме.

exec /sbin/init

11. Теперь я могу войти на свой Arch Linux без каких-либо проблем.

Думаю, мне стоит подождать пару дней, а затем попробовать обновить систему снова, когда все будет исправлено.

Если у вас есть время и терпение, понизите один пакет и запустите “exec /sbin/init” для загрузки системы в нормальный режим и проверьте, решит ли это проблему.

Если нет, попробуйте другой пакет.

Повторяйте это до тех пор, пока не найдете проблемный пакет. Затем просто оставьте проблемный пакет и обновите все остальные пакеты.

Некоторые из вас могут посчитать этот метод не очень эффективным и сложным. Но именно так я восстановил свою сломанную систему Arch Linux.

Возможно, вы знаете какие-то другие простые способы, кроме этого метода. Если вы знаете такие простые способы, пожалуйста, сообщите мне об этом в разделе комментариев ниже. Я проверю и обновлю руководство соответствующим образом.

Добавить комментарий