если дело происходит через SSH, залей туда busybox (путем вывода байтов в файл через встроенную команду echo, генератор командных строк пишется за 20 минут на чем угодно)
busybox статически слинкован со всеми утилитами, что надо и работать будет везде
Здравствуйте, LuciferSingapore, Вы писали:
LS>busybox статически слинкован со всеми утилитами, что надо и работать будет везде
uClibc намекает, что это и так уже Busybox. Который тоже от неё зависит.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, LuciferSingapore, Вы писали:
LS>>busybox статически слинкован со всеми утилитами, что надо и работать будет везде C>uClibc намекает, что это и так уже Busybox. Который тоже от неё зависит.
емнип есть вариант busybox со статически прилинкованным libc, для работы нужно только ядро
Значит, ln берется не из бизибокса, ln это отдельный бинарник. Динамически слинкованный с libc. Без libc не запустится. Непонятно, откуда у людей вообще появилась мысль о бизибоксе.
И cp, и ln тоже отдельные бинарники, и они не могут запуститься по той же причине.
BFE>/lib # echo test BFE>test
Значит echo не запускается отдельным бинарником, а встроено в сам шелл. Если бы шелл был не обычным шелом, а бизибоксом (не важно, статически или динамически слинкованным с libc), и команды ln, cp, ls и т.д были в него вкомпилированы — они бы тоже работали.
BFE>/lib # unrm BFE>/bin/sh: unrm: not found BFE>/lib # help BFE>/bin/sh: help: not found
А этих двух в области PATH просто нет.
Нормальные разборки чайника с азами линуксостроения. При чем здесь КУ?
Здравствуйте, /aka/, Вы писали:
BFE>>/lib # ln -s libuClibc-0.9.31.so libc.so.0 BFE>>ln: can't load library 'libc.so.0'
A>Значит, ln берется не из бизибокса, ln это отдельный бинарник. Динамически слинкованный с libc. Без libc не запустится. Непонятно, откуда у людей вообще появилась мысль о бизибоксе.
busybox вообще-то тоже с libc линкуется.
Здравствуйте, andrey.desman, Вы писали:
BFE>>>/lib # ln -s libuClibc-0.9.31.so libc.so.0 BFE>>>ln: can't load library 'libc.so.0' A>>Значит, ln берется не из бизибокса, ln это отдельный бинарник. Динамически слинкованный с libc. Без libc не запустится. Непонятно, откуда у людей вообще появилась мысль о бизибоксе. AD>busybox вообще-то тоже с libc линкуется.
Любой исполнимый бинарник (кроме различных экспериментов для внутреннего использования) линкуется с libc. И ln, ls, cp, mv тоже с libc линкуются, если сделаны отдельными бинарниками, а не вкомпилированы в бизибокс. Линковаться можно динамически, тогда для запуска бинарника libc должна присутствовать, как у топикстартера, или статически, тогда для запуска бинарника libc не нужна. В качестве libc может выступать glibc, uClibc как у топикстартера и прочие *libc.
Здравствуйте, /aka/, Вы писали:
A>Любой исполнимый бинарник (кроме различных экспериментов для внутреннего использования) линкуется с libc. И ln, ls, cp, mv тоже с libc линкуются, если сделаны отдельными бинарниками, а не вкомпилированы в бизибокс. Линковаться можно динамически, тогда для запуска бинарника libc должна присутствовать, как у топикстартера, или статически, тогда для запуска бинарника libc не нужна. В качестве libc может выступать glibc, uClibc как у топикстартера и прочие *libc.
я про то, что бизибокс тоже прилинкован к сошке, а потому отдельным бинарником идет cp, ln, rm или нет — не важно. Никогда не видел статически слинкованный с libc бизибокс. В этом есть смысл только если места дофига, или кроме бизибокса ничего нет.
Здравствуйте, andrey.desman, Вы писали:
A>>Любой исполнимый бинарник (кроме различных экспериментов для внутреннего использования) линкуется с libc. И ln, ls, cp, mv тоже с libc линкуются, если сделаны отдельными бинарниками, а не вкомпилированы в бизибокс. Линковаться можно динамически, тогда для запуска бинарника libc должна присутствовать, как у топикстартера, или статически, тогда для запуска бинарника libc не нужна. В качестве libc может выступать glibc, uClibc как у топикстартера и прочие *libc. AD> я про то, что бизибокс тоже прилинкован к сошке, а потому отдельным бинарником идет cp, ln, rm или нет — не важно.
Очень даже важно. Если бы у топикстартера был запущен не отдельный шелл, а шелл из бизибокса, и cp, ln, rm были не отдельными бинарниками, а были вкомпилены в этот бизибокс, то они бы выполнялись после удаления libc. Так же, как у него выполняется echo. Потому что для выполнения в этом случае не загружается отдельный бинарник, а вызывается функция из уже загруженного.
AD> Никогда не видел статически слинкованный с libc бизибокс. В этом есть смысл только если места дофига, или кроме бизибокса ничего нет.
Вполне вероятная ситуация в каком-нибудь простом роутере или на стартовом/установочном/восстановительном образе. В бизибоксе сейчас много всего, этого может быть вполне достаточно.
Здравствуйте, /aka/, Вы писали:
A>Очень даже важно. Если бы у топикстартера был запущен не отдельный шелл, а шелл из бизибокса, и cp, ln, rm были не отдельными бинарниками, а были вкомпилены в этот бизибокс, то они бы выполнялись после удаления libc. Так же, как у него выполняется echo. Потому что для выполнения в этом случае не загружается отдельный бинарник, а вызывается функция из уже загруженного.
echo — это sheel built-in и он действительно выполняется из текущего процесса. Вызов cp — это все тот же fork, хотя и бинаря busybox. Нет разницы, пришел cp из core-utils или busybox.
Здравствуйте, andrey.desman, Вы писали:
A>>Очень даже важно. Если бы у топикстартера был запущен не отдельный шелл, а шелл из бизибокса, и cp, ln, rm были не отдельными бинарниками, а были вкомпилены в этот бизибокс, то они бы выполнялись после удаления libc. Так же, как у него выполняется echo. Потому что для выполнения в этом случае не загружается отдельный бинарник, а вызывается функция из уже загруженного. AD>echo — это sheel built-in и он действительно выполняется из текущего процесса. Вызов cp — это все тот же fork, хотя и бинаря busybox. Нет разницы, пришел cp из core-utils или busybox.
Но для этого надо при сборке бизибокса указать, чтобы не делало лишних fork/exec. По умолчанию будет как ты написал
Здравствуйте, maykie, Вы писали:
BFE>>>/bin/sh: help: not found BFE>>>[/code] M>>echo -n $(<libuClibc-0.9.31.so) >libc.so.0 M>По-моему я забыл кавычки. Но проверять лень.
Сегодня я, таки, восстановил систему залив новый image.
Проверил этот метод. Он не работает — просто создаётся новый пустой файл, к тому же без прав на выполнение.
Здравствуйте, andrey.desman, Вы писали:
AD>Никогда не видел статически слинкованный с libc бизибокс. В этом есть смысл только если места дофига, или кроме бизибокса ничего нет.
В embedded зачасту кроме busybox и стороннего приложения ничего и нет. Так что статически слинкованный busybox — довольно распространенное явление.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)