Случайно запустил sudo rm / *в моей установке Arch Linux

Очень кратко:

Записи в /sysна самом деле не являются файлами. Это монтирование имеет тип sysfs, и в ядре это соответствует API, где другие части ядра могут регистрироваться. Затем, когда «файлы» этой файловой системы читаются или записываются, sysfs перенаправляет эти действия зарегистрированным модулям.

Уровеньgpio(ввода-вывода общего назначения )ядра снова является абстракцией, в которой могут регистрироваться другие драйверы. Обычно это драйверы микросхем или наборов микросхем, которые имеют регистры GPIO в самих микросхемах. То, как подключены контакты GPIO этих чипов, зависит от аппаратного обеспечения.

Немного больше информации можно найти в Documentation/gpio/gpio.txtи т. д. в исходном коде ядра.

Что касается способов идентификации драйвера, один из способов ll gpio432состоит в том, чтобы после создания узла gpio и просмотра символической ссылки; он укажет на устройство с чипом/чипсетом с регистрами GPIO. Затем найдите драйвер для этого устройства.

Другой способ — просмотреть dmesgи посмотреть, выдает ли драйвер сообщения при регистрации GPIO.

Возможно, эта информация также может быть доступна через udevadm.

21
22.03.2021, 15:57
2 ответа

Arch Linux имеет четыре символические ссылки в/:

  • bin -> usr/bin
  • lib -> usr/lib
  • lib64 -> usr/lib
  • sbin -> usr/bin

Вы должны иметь возможность воссоздать их (, используя Live -USB или аварийную оболочку )или вызвав компоновщик (с привилегиями root и в /как рабочий каталог )напрямую:

/usr/lib/ld-linux-x86-64.so.2 /usr/bin/ln -s usr/lib lib64

Это должно восстановить основные функции вашей работающей системы. Тогда восстановление других символических ссылок должно быть легким.

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

Почему /usr/bin/lsи другие команды не работают?

Без символической ссылки /lib64динамически компонуемые программы не найдут динамический компоновщик/загрузчик, поскольку путь жестко запрограммирован на/lib64/ld-linux-x86-64.so.2(c.f.ldd /usr/bin/ln).

45
28.04.2021, 22:58

Исправьте переменную PATH, чтобы она указывала только на существующие каталоги

PATH=/usr/bin:/usr/sbin

Затем заново создайте символические ссылки, как показано в ответе terdon.

Затем попробуйте войти с другого терминала.

-8
28.04.2021, 22:58

Теги

Похожие вопросы