Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Всё сломалось после обновления: алгоритм первой помощи

Обновил систему, и теперь Arch не грузится, или звук пропал, или половина программ падает с ошибками? Не беги переустанавливать систему: около 95% поломок после pacman -Syu лечатся от 10 до 30 минут по строгому алгоритму. Ниже: чек-лист из 7 шагов: иди по порядку, от самого простого к самому тяжёлому, и почти наверняка остановишься где-то на пятом. Подробный разбор инструментов отката в статье «Сломалось после обновления: единый гайд по откату», а здесь именно порядок действий.

Шаг 1. Что делать в первую минуту?

Главное правило: не паникуй и не переустанавливай систему сразу. Переустановка: крайняя мера, а не первая реакция. В Arch старые версии пакетов лежат в кэше /var/cache/pacman/pkg, история обновлений, в /var/log/pacman.log, а прошлая загрузка целиком доступна через journalctl. Всё, что нужно для восстановления, уже на диске.

Второе правило: не удаляй и не перезаписывай ничего, пока не понял причину. Не запускай «починку» наугад: случайные команды в ужасе ломают больше, чем само обновление.

Третье правило: зафиксируй симптомы. Что именно перестало работать, загрузка, графика, сеть, звук, одна программа? Запиши ошибку слово в слово. Понятный симптом в начале экономит час в конце.

Шаг 2. Система вообще работает?

Определи, на каком уровне ты находишься. Восемьдесят процентов поломок оказываются не такими страшными, как кажутся.

Работает ли графическое окружение? Если да, почти любая проблема решается прямо в терминале, без спешки.

Есть ли рабочий TTY? Нажми Ctrl+Alt+F3 (или F2–F6). Если командная строка отзывается, у тебя полный набор инструментов: логи, кэш пакетов, сеть.

Грузится ли система вообще? Если после GRUB появляется чёрный экран или ошибки initramfs, шаги с 3 по 6 пока недоступны, сразу переход к шагу 7. Но сначала попробуй выбрать в GRUB предыдущее ядро (шаг 6): часто этого жеста хватает.

Дойди до работающей командной строки, и только потом иди дальше по чек-листу.

Шаг 3. Где посмотреть, что упало?

Логи: главный свидетель. Начни с ошибок текущей загрузки:

journalctl -b -p err

Флаг -b ограничивает вывод текущей загрузкой, -p err, только ошибками и выше. Список покажет, какой сервис или демон падает.

Если система дошла до рабочего стола не с первого раза, загляни в лог прошлой попытки:

journalctl -b -1

Там будет стоп-запись того, на чём всё зависло. Дополнительно помогает dmesg: он показывает, какие модули ядра не поднялись и какие устройства не определились. Разбор флагов и формата вывода в статье «Читаем journalctl -b: логи первой загрузки».

Составь из логов рабочую гипотезу: упал звуковой сервер, не стартовал display manager, крашится конкретная библиотека. Именно с этой гипотезой иди к следующему шагу.

Шаг 4. Что именно обновилось?

Теперь нужен список подозреваемых. pacman ведёт полный журнал установок и обновлений:

tail -100 /var/log/pacman.log

Найди последний блок upgraded перед моментом, когда всё сломалось. Обычно виноваты два-три пакета из одной записи: библиотека вместе с приложением, ядро вместе с модулями, или пакет, у которого поплыли зависимости.

Полезный приём: вспомни, какая программа сломалась, и найди её имя в этом списке. Если строка есть, подозреваемый номер один.

Дополнительно можно выявить осиротевшие зависимости:

pacman -Qtd

Это не обязательный шаг, но список лишних пакетов иногда подсказывает, что обновление зацепило больше, чем ожидалось. Куда копать дальше и как искать нужную точку отката, подробно описано в статье «Читаем логи обновлений: pacman.log».

Шаг 5. Сломался один пакет: как его откатить?

Классический сценарий: после обновления не запускается Firefox, пропал звук в PulseAudio, вылетает конкретная утилита. Лечится откатом одного пакета.

Смотри, какая версия есть в кэше:

ls /var/cache/pacman/pkg/ | grep <имя-пакета>

И ставь старую напрямую:

sudo pacman -U /var/cache/pacman/pkg/<пакет>-<старая-версия>.pkg.tar.zst

Если нужного файла в кэше нет, поможет downgrade из AUR или Arch Linux Archive: pacman умеет ставить пакеты из любого хранилища по прямой ссылке. Вместе с пакетом часто приходится откатывать и его зависимости: pacman сам перечислит несовпадения.

После отката перезапусти сломанную программу и проверь, ушёл ли симптом. Если да, шаг 6 тебе не понадобится.

Шаг 6. Всё посыпалось: как вернуть старое ядро?

Симптомы массовые: не стартует X, не поднимаются модули, сеть пропала после обновления ядра. Самый быстрый спасительный ход, загрузиться на прошлой версии ядра.

Перезагрузись и в меню GRUB выбери «Advanced options for Arch Linux». Там будет список установленных ядер: текущее и предыдущее. Выбирай предыдущее: оно осталось в /boot вместе с образом initramfs.

Если старого ядра нет, подойдёт любое LTS-ядро: поставь linux-lts заранее или откати текущее из кэша. Ядро и модули должны быть одной версии, иначе initramfs не соберётся.

Работает? Отлично: теперь спокойно откатывай виновные пакеты из шага 5, пока система не станет стабильной. Механика отката ядра и типичные зависания после обновления разобраны в статье «Зависание после обновления ядра».

Шаг 7. Не грузится вообще: chroot с live USB

Крайний, но рутинный случай. Берёшь загрузочную флешку Arch, грузишься с неё и работаешь через chroot, «вход» в уже установленную систему.

Сначала смонтируй разделы (пример для одного диска; подставь свои):

mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot

Затем войди внутрь:

arch-chroot /mnt

Ты внутри своей системы. Дальше стандартный набор проверок:

mkinitcpio -P          # пересобрать initramfs
grub-install /dev/sda  # переставить загрузчик при необходимости
grub-mkconfig -o /boot/grub/grub.cfg
cat /etc/fstab         # проверить UUID разделов
mount -a               # или просто убедиться, что записи корректны

mkinitcpio -P спасает, когда после обновления ядра initramfs собрался криво. Проверка fstab нужна на случай, если после обновления поплыли UUID дисков. Если GRUB не показывает меню, переставь его по инструкции выше, внутри chroot.

Выйди командой exit, размонтируй umount -R /mnt и перезагрузись. Подробное описание процедуры в ArchWiki, раздел chroot.

Частые вопросы

Сколько времени занимает весь алгоритм?

Обычно от 10 до 30 минут. Шаги 1–4 это пара минут чтения логов. Откат одного пакета (шаг 5), ещё пять. Даже chroot (шаг 7) при готовой флешке отрабатывает за четверть часа. Полдня на переустановку экономится всегда.

Что, если старых версий нет ни в кэше, ни в логах?

Бери Arch Linux Archive: там лежат все релизы пакетов, и pacman умеет ставить из него по прямой ссылке. Второй вариант: откатить всё обновление целиком, сверяясь с pacman.log построчно. Третий: восстановить из снапшота btrfs, если ты их делаешь (см. гайд по откату в начале статьи).

Как защититься от этого в будущем?

Читай [testing] и [core] перед обновлением, подпишись на arch-announce, делай снапшот перед крупными обновлениями и держи в системе linux-lts как запасной вариант. Профилактика дешевле любого отката.

Полезные ресурсы

  • ArchWiki: System maintenance: официальные рекомендации по обновлениям и восстановлению.

Заключение

Запомни главную вещь: после pacman -Syu почти ничего не ломается насовсем. Сначала: не паниковать и оценить уровень (шаг 2), потом, логи (шаг 3), потом, список обновлённого (шаг 4), и только потом действия: откат пакета, старое ядро или chroot. Семь шагов, четверть часа, и система снова работает. Переустановка остаётся крайней мерой, которую ты выберешь только тогда, когда все остальные варианты исчерпаны.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max