Переименован /usr/bin – теперь ничего нельзя выполнить

Вопрос или проблема

Я хотел перенести /usr на Raspberry (Bullseye Linux) на подключенный SSD, как я уже успешно сделал с /home.
Я скопировал /usr с помощью rsync на /media/ssd, затем переименовал /usr в /usr-bak, чтобы иметь резервную копию на случай, если что-то пойдет не так.

Теперь я осознаю, что больше ничего не могу сделать. Все бинарные файлы больше не исполняемы.
Они должны сейчас находиться в /usr-bak/bin, так как я только переименовал /usr, а не удалил его.
Я вижу, что они все еще там, набрав /usr-bak/bin/ <TAB><TAB>, что автозаполняет все, что может понадобиться.

К сожалению, я не могу запустить ls и что-либо другое, особенно mv, чтобы вернуть название обратно и подумать о другом, более разумном способе продолжения.
Вызов /usr-bak/bin/mv говорит мне: Нет такого файла или каталога
То же самое и для . /usr-bak/bin/mv, входя в bin и просто вызывая . mv и все, что пришло мне в голову.
Я также не могу запустить ничего из /media/sdd/usr/bin, где опять же все существует, но не исполняется.

Что здесь происходит? Потеряли ли бинарные файлы свои исполняемые права из-за изменения имени?

Что я мог бы попробовать перед тем, как вынести Raspberry оттуда и подключить его к монитору и клавиатуре?

Кстати, я видел много подобных вопросов здесь, но ответы на них не работают для меня, так как они основываются на том, чтобы как-то выполнить что-то полезное. busybox, chmod и прочее… все это теперь недоступно для меня.
Например, смотрите После случайного переименования /usr, как мне вернуть его обратно?, как упоминалось в комментариях. Я нашел это и попробовал, но у меня нет sudo в $PATH, я также не могу запустить busybox или su или что-либо еще.
Вот что я получаю

user@#pi:/ $ /usr-bak/bin/busybox
-bash: /usr-bak/bin/busybox: Нет такого файла или каталога
user@pi:/ $ . /usr-bak/bin/busybox
-bash: .: /usr-bak/bin/busybox: невозможно выполнить бинарный файл

Бинарные файлы — это не просто бинарные файлы. Они обычно создаются с использованием и зависят от общих библиотек, которые обычно находятся в /usr/lib64 (или /usr/lib/x86_64-linux-gnu/ на производных от Debian) на 2024 год.

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

Если busybox недоступен, вы можете загрузиться с любого Live-дистрибутива или со своего собственного дистрибутива, если у него есть live-режим.

Ответ или решение

Ваше описание проблемы указывает на то, что при переименовании каталога /usr в /usr-bak вы потеряли доступ к исполняемым файлам и другим важным утилитам, так как перемещение может повлиять на переменные среды, особенно на PATH, где хранятся пути к исполняемым приложениям.

Что произошло?

Когда вы переименовали каталог /usr, системы Unix/Linux сразу теряют доступ к большому количеству утилит и библиотек, находящихся в этом каталоге. Это означает, что shell не может найти команды, такие как ls, mv, chmod, и другие. Вы также можете столкнуться с проблемами из-за того, что многие бинарные файлы зависят от динамических библиотек, находящихся в /usr/lib или /usr/lib64.

Возможные решения

  1. Перемещение к каталогу /media/ssd/usr/bin:

    • Для начала, попробуйте выполнить команду для переключения на другой каталог, где вы знаете, что есть утилиты. Если вы можете получить доступ к /media/ssd/usr/bin, попробуйте выполнить cd /media/ssd/usr/bin и затем запустите команды оттуда.
    • Если вы хотите вернуть все как было, попробуйте (/media/ssd/usr/bin/mv /usr-bak /usr).
  2. Поиск статики busybox:

    • Если на вашей системе установлен busybox, он может запускаться как статическая бинарная программа, и это даст возможность выполнять простые команды. Попробуйте выполнить:
      /usr-bak/bin/busybox ls
    • Если busybox не запускается, возможно, он не был собран статически.
  3. Использование режима восстановления:

    • Если у вас есть доступ к HDMI, подключите Raspberry Pi к монитору и клавиатуре.
    • Вопреки вашим ожиданиям, вы сможете загрузиться в режиме восстановления (recovery mode) и попробовать выполнить те же команды, которые вы пытались использовать из терминала.
  4. Загрузочное Live-окружение:

    • Если ни одно из предыдущих решений не сработало, рекомендуется использовать загрузочное Live-дистрибутив. Например, вы можете использовать Raspberry Pi OS или любой другой Linux-дистрибутив.
    • Подключите SD-карту в рабочий компьютер, и загрузившись с Live USB, вы сможете монтировать файловую систему и вручную вернуть все на свои места.

Дополнительные шаги по предотвращению подобных ошибок:

  1. Создание резервных копий:

    • Прежде чем вносить изменения в важные системные каталоги, всегда создавайте резервные копии.
  2. Тестирование на виртуальной машине:

    • Если вы планируете проводить эксперименты с файловой системой, рассмотрите возможность использования виртуальной машины или контейнера, чтобы избежать проблем на реальных системах.
  3. Чтение документации и подготовка к восстановлению.

    • Ознакомьтесь с документацией по вашей системе, чтобы лучше понимать, как различные компоненты работают вместе, и как восстанавливать информацию в случае ошибок.

Следуя предложенным шагам, вы сможете восстановить функциональность вашей системы. Удачи!

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

Капча загружается...