Вполне вероятно, что Linux позаимствовал этот сценарий из ранее существовавшего Unix.
Самая ранняя версия этого скрипта, которую мне удалось разыскать, называется /dev/MAKE
для BSD 4 и, как мне кажется, датируется примерно 1980 годом. образом, потому что он делает файлы устройства. Верхний регистр имени, возможно, должен отличать его от самих файлов устройства, но это предположение.
До этого файлы устройств, по-видимому, создавались с помощью реального Makefile.
как на снимке Bell Labs Research V7 (1979), а до этого я не уверен, что иерархия /dev
вообще существовала.
В BSD 4.1 (1982) этот скрипт по-прежнему назывался /dev/MAKE
, но в BSD 4.1c_2 (1983) , по-видимому, существовал / dev/MAKEDEV.local
скрипт с некоторым описанием. Неясно, существовал ли когда-либо вместе с ним скрипт /dev/MAKEDEV
.
В выпуске BSD 4.4 Lite2 (1995 год согласно репозиторию, но временная метка SCCS в самом файле говорит 8.1 (Berkeley) 09.06.93
) мы видим скрипт с его окончательным названием /dev/MAKEDEV
вместе с парой системных скриптов MAKEDEV
. К этому времени скрипт с таким же именем уже существует на стороне Linux (, как упоминал Стивен Китт).
Судя по обсуждению в чате , двоичные файлы оболочки присутствуют на диске, но не могут быть выполнены. Для вас это выглядит очень плохой новостью, поскольку это признак отсутствия библиотеки, возможно, libc. ssh
будет бесполезен, поскольку каким бы то ни было образом выполнение команды требует функциональной оболочки .
Если у вас возникла проблема с libc, локальный вход в систему (то есть физический доступ) также завершится ошибкой, но вы можете исправить ситуацию с помощью оболочки, встроенной в ваш образ initrd
(вероятно, busybox
) или с живым Linux на USB-накопителе.
Раньше вы все еще могли попытаться исправить свой сервер удаленно, скопировав недостающую библиотеку с помощью sftp
. Это может сработать, если вам повезет, но вам также может потребоваться выполнить ldconfig
, и это можно сделать только локально.
Наконец, когда все будет в порядке, вы можете установить пакет bash-static
, чтобы ваша оболочка больше не зависела от внешней библиотеки.
[update] Идея, которая может позволить вам подключиться к вашему серверу с помощью ssh
: через sftp
вы можете скопировать оболочку из пакета bash-static
( / bin / bash-static
) в / bin
на удаленном сервере. Затем вы можете изменить удаленный / etc / passwd
, чтобы изменить оболочку root
на / bin / bash-static
, а затем подключиться к ssh
.Вы также можете сделать то же самое с / bin / busybox
из пакета busybox-static
и использовать некоторые базовые инструменты ( mv
, cp
] и т. д.), чтобы исправить положение.