Очень кратко:
Записи в /sys
на самом деле не являются файлами. Это монтирование имеет тип sysfs
, и в ядре это соответствует API, где другие части ядра могут регистрироваться. Затем, когда «файлы» этой файловой системы читаются или записываются, sysfs перенаправляет эти действия зарегистрированным модулям.
Уровеньgpio
(ввода-вывода общего назначения )ядра снова является абстракцией, в которой могут регистрироваться другие драйверы. Обычно это драйверы микросхем или наборов микросхем, которые имеют регистры GPIO в самих микросхемах. То, как подключены контакты GPIO этих чипов, зависит от аппаратного обеспечения.
Немного больше информации можно найти в Documentation/gpio/gpio.txt
и т. д. в исходном коде ядра.
Что касается способов идентификации драйвера, один из способов ll gpio432
состоит в том, чтобы после создания узла gpio и просмотра символической ссылки; он укажет на устройство с чипом/чипсетом с регистрами GPIO. Затем найдите драйвер для этого устройства.
Другой способ — просмотреть dmesg
и посмотреть, выдает ли драйвер сообщения при регистрации GPIO.
Возможно, эта информация также может быть доступна через udevadm
.
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
).
Исправьте переменную PATH, чтобы она указывала только на существующие каталоги
PATH=/usr/bin:/usr/sbin
Затем заново создайте символические ссылки, как показано в ответе terdon.
Затем попробуйте войти с другого терминала.