Эх, жизнь моя жестянка!
От: B0FEE664  
Дата: 14.12.12 11:42
Оценка: -2
  Скрытый текст
/lib # ls -l
total 786
-rwxrwxrwx    1 root     root         21200 Oct  5  2012 ld-uClibc-0.9.31.so
lrwxrwxrwx    1 root     root            19 Oct  5  2012 ld-uClibc.so.0 -> ld-uClibc-0.9.31.so
lrwxrwxrwx    1 root     root            21 Dec 31  1969 libc.so.0 -> libuClibc-0.9.31.u.so
lrwxrwxrwx    1 root     root            21 Dec 31 17:08 libc.so.0.u -> libuClibc-0.9.31.u.so
lrwxrwxrwx    1 root     root            19 Oct  5  2012 libc.so.0~ -> libuClibc-0.9.31.so
-rwxrwxrwx    1 root     root         12992 Oct  5  2012 libcrypt-0.9.31.so
lrwxrwxrwx    1 root     root            18 Oct  5  2012 libcrypt.so.0 -> libcrypt-0.9.31.so
-rwxrwxrwx    1 root     root          9048 Oct  5  2012 libdl-0.9.31.so
lrwxrwxrwx    1 root     root            15 Oct  5  2012 libdl.so.0 -> libdl-0.9.31.so
lrwxrwxrwx    1 root     root            13 Oct  5  2012 libgcc_s.so -> libgcc_s.so.1
-rwxrwxrwx    1 root     root         42988 Oct  5  2012 libgcc_s.so.1
-rwxrwxrwx    1 root     root         62192 Oct  5  2012 libm-0.9.31.so
lrwxrwxrwx    1 root     root            14 Oct  5  2012 libm.so.0 -> libm-0.9.31.so
-rwxrwxrwx    1 root     root          4736 Oct  5  2012 libnsl-0.9.31.so
lrwxrwxrwx    1 root     root            16 Oct  5  2012 libnsl.so.0 -> libnsl-0.9.31.so
-rwxrwxrwx    1 root     root         63488 Oct  5  2012 libpthread-0.9.31.so
lrwxrwxrwx    1 root     root            20 Oct  5  2012 libpthread.so.0 -> libpthread-0.9.31.so
-rwxrwxrwx    1 root     root          4736 Oct  5  2012 libresolv-0.9.31.so
lrwxrwxrwx    1 root     root            19 Oct  5  2012 libresolv.so.0 -> libresolv-0.9.31.so
-rwxrwxrwx    1 root     root          4756 Oct  5  2012 librt-0.9.31.so
lrwxrwxrwx    1 root     root            15 Oct  5  2012 librt.so.0 -> librt-0.9.31.so
-rwxrwxrwx    1 root     root        232164 Oct  5  2012 libuClibc-0.9.31.so
-rwxrwxrwx    1 root     root        332435 Dec 31 17:05 libuClibc-0.9.31.u.so
-rwxrwxrwx    1 root     root          4752 Oct  5  2012 libutil-0.9.31.so
lrwxrwxrwx    1 root     root            17 Oct  5  2012 libutil.so.0 -> libutil-0.9.31.so
drwxrwxrwx    3 root     root             0 Oct  5  2012 modules

/lib # ln -s libuClibc-0.9.31.so libc.so.0
ln: libc.so.0: File exists
/lib # rm libc.so.0
/lib # ln -s libuClibc-0.9.31.so libc.so.0
ln: can't load library 'libc.so.0'
/lib # cp libc.so.0~ libc.so.0
cp: can't load library 'libc.so.0'
/lib # ls -l
ls: can't load library 'libc.so.0'
/lib # 
/lib # ln  libuClibc-0.9.31.so libc.so.0
ln: can't load library 'libc.so.0'
/lib # echo test
test
/lib # mv libc.so.0~ libc.so.0
mv: can't load library 'libc.so.0'
/lib # unrm
/bin/sh: unrm: not found
/lib # help
/bin/sh: help: not found



19.12.12 01:17: Перенесено модератором из 'Коллеги, улыбнитесь' — Кодт
И каждый день — без права на ошибку...
Re: Эх, жизнь моя жестянка!
От: andrey.desman  
Дата: 14.12.12 15:06
Оценка:
Здравствуйте, B0FEE664, Вы писали:

Бывает, чо.
ln -s -f
Re[2]: Эх, жизнь моя жестянка!
От: B0FEE664  
Дата: 14.12.12 17:06
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Бывает, чо.

AD>
AD>ln -s -f
AD>

Вот чо:
ln: can't load library 'libc.so.0'
И каждый день — без права на ошибку...
Re: Эх, жизнь моя жестянка!
От: LuciferSingapore Россия  
Дата: 14.12.12 17:54
Оценка:
Здравствуйте, B0FEE664, Вы писали:

если дело происходит через SSH, залей туда busybox (путем вывода байтов в файл через встроенную команду echo, генератор командных строк пишется за 20 минут на чем угодно)
busybox статически слинкован со всеми утилитами, что надо и работать будет везде
Re[2]: Эх, жизнь моя жестянка!
От: Cyberax Марс  
Дата: 14.12.12 17:55
Оценка: 1 (1)
Здравствуйте, LuciferSingapore, Вы писали:

LS>busybox статически слинкован со всеми утилитами, что надо и работать будет везде

uClibc намекает, что это и так уже Busybox. Который тоже от неё зависит.
Sapienti sat!
Re[3]: Эх, жизнь моя жестянка!
От: LuciferSingapore Россия  
Дата: 14.12.12 18:00
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, LuciferSingapore, Вы писали:


LS>>busybox статически слинкован со всеми утилитами, что надо и работать будет везде

C>uClibc намекает, что это и так уже Busybox. Который тоже от неё зависит.

емнип есть вариант busybox со статически прилинкованным libc, для работы нужно только ядро
Re[3]: Эх, жизнь моя жестянка!
От: andrey.desman  
Дата: 15.12.12 16:00
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Вот чо:

BFE>ln: can't load library 'libc.so.0'

Теперь то понятно. -f надо было до.
Re[3]: Эх, жизнь моя жестянка!
От: andrey.desman  
Дата: 15.12.12 16:03
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Вот чо:

BFE>ln: can't load library 'libc.so.0'

А еще работающие процессы по идее сохранили маппинг. Надо им только суметь сказать, чтобы переименовали файл
л безфорка.
Re: Эх, жизнь моя жестянка!
От: /aka/ СССР  
Дата: 15.12.12 21:54
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>/lib # rm libc.so.0


Молодец, удалил libc. Уже запущенные процессы не упадут. Но ничего нового, динамически с ней слинкованного, не запустится. Зачем ты это сделал?


BFE>/lib # ln -s libuClibc-0.9.31.so libc.so.0

BFE>ln: can't load library 'libc.so.0'

Значит, ln берется не из бизибокса, ln это отдельный бинарник. Динамически слинкованный с libc. Без libc не запустится. Непонятно, откуда у людей вообще появилась мысль о бизибоксе.


BFE>/lib # cp libc.so.0~ libc.so.0

BFE>cp: can't load library 'libc.so.0'
BFE>/lib # ls -l
BFE>ls: can't load library 'libc.so.0'

И 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 просто нет.

Нормальные разборки чайника с азами линуксостроения. При чем здесь КУ?
Re: Эх, жизнь моя жестянка!
От: maykie Россия  
Дата: 16.12.12 08:02
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>[cut]


BFE>/lib # ln libuClibc-0.9.31.so libc.so.0

BFE>ln: can't load library 'libc.so.0'
BFE>/lib # echo test
BFE>test
BFE>/lib # mv libc.so.0~ libc.so.0
BFE>mv: can't load library 'libc.so.0'
BFE>/lib # unrm
BFE>/bin/sh: unrm: not found
BFE>/lib # help
BFE>/bin/sh: help: not found
BFE>[/code]

echo -n $(<libuClibc-0.9.31.so) >libc.so.0

Re[2]: Эх, жизнь моя жестянка!
От: maykie Россия  
Дата: 16.12.12 08:17
Оценка:
Здравствуйте, maykie, Вы писали:

BFE>>/bin/sh: help: not found

BFE>>[/code]

M>echo -n $(<libuClibc-0.9.31.so) >libc.so.0


По-моему я забыл кавычки. Но проверять лень.
Re[2]: Эх, жизнь моя жестянка!
От: andrey.desman  
Дата: 17.12.12 07:19
Оценка:
Здравствуйте, /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 линкуется.
Re[3]: Эх, жизнь моя жестянка!
От: /aka/ СССР  
Дата: 17.12.12 08:27
Оценка:
Здравствуйте, 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.
Re[4]: Эх, жизнь моя жестянка!
От: andrey.desman  
Дата: 17.12.12 08:59
Оценка:
Здравствуйте, /aka/, Вы писали:

A>Любой исполнимый бинарник (кроме различных экспериментов для внутреннего использования) линкуется с libc. И ln, ls, cp, mv тоже с libc линкуются, если сделаны отдельными бинарниками, а не вкомпилированы в бизибокс. Линковаться можно динамически, тогда для запуска бинарника libc должна присутствовать, как у топикстартера, или статически, тогда для запуска бинарника libc не нужна. В качестве libc может выступать glibc, uClibc как у топикстартера и прочие *libc.


я про то, что бизибокс тоже прилинкован к сошке, а потому отдельным бинарником идет cp, ln, rm или нет — не важно. Никогда не видел статически слинкованный с libc бизибокс. В этом есть смысл только если места дофига, или кроме бизибокса ничего нет.
Re[5]: Эх, жизнь моя жестянка!
От: /aka/ СССР  
Дата: 17.12.12 09:14
Оценка:
Здравствуйте, 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 бизибокс. В этом есть смысл только если места дофига, или кроме бизибокса ничего нет.


Вполне вероятная ситуация в каком-нибудь простом роутере или на стартовом/установочном/восстановительном образе. В бизибоксе сейчас много всего, этого может быть вполне достаточно.
Re[6]: Эх, жизнь моя жестянка!
От: andrey.desman  
Дата: 17.12.12 09:46
Оценка:
Здравствуйте, /aka/, Вы писали:

A>Очень даже важно. Если бы у топикстартера был запущен не отдельный шелл, а шелл из бизибокса, и cp, ln, rm были не отдельными бинарниками, а были вкомпилены в этот бизибокс, то они бы выполнялись после удаления libc. Так же, как у него выполняется echo. Потому что для выполнения в этом случае не загружается отдельный бинарник, а вызывается функция из уже загруженного.


echo — это sheel built-in и он действительно выполняется из текущего процесса. Вызов cp — это все тот же fork, хотя и бинаря busybox. Нет разницы, пришел cp из core-utils или busybox.
Re[7]: Эх, жизнь моя жестянка!
От: /aka/ СССР  
Дата: 17.12.12 11:31
Оценка:
Здравствуйте, andrey.desman, Вы писали:

A>>Очень даже важно. Если бы у топикстартера был запущен не отдельный шелл, а шелл из бизибокса, и cp, ln, rm были не отдельными бинарниками, а были вкомпилены в этот бизибокс, то они бы выполнялись после удаления libc. Так же, как у него выполняется echo. Потому что для выполнения в этом случае не загружается отдельный бинарник, а вызывается функция из уже загруженного.

AD>echo — это sheel built-in и он действительно выполняется из текущего процесса. Вызов cp — это все тот же fork, хотя и бинаря busybox. Нет разницы, пришел cp из core-utils или busybox.



Но для этого надо при сборке бизибокса указать, чтобы не делало лишних fork/exec. По умолчанию будет как ты написал
Re[3]: Эх, жизнь моя жестянка!
От: B0FEE664  
Дата: 21.12.12 14:16
Оценка:
Здравствуйте, maykie, Вы писали:

BFE>>>/bin/sh: help: not found

BFE>>>[/code]
M>>echo -n $(<libuClibc-0.9.31.so) >libc.so.0
M>По-моему я забыл кавычки. Но проверять лень.

Сегодня я, таки, восстановил систему залив новый image.
Проверил этот метод. Он не работает — просто создаётся новый пустой файл, к тому же без прав на выполнение.
И каждый день — без права на ошибку...
Re: Эх, жизнь моя жестянка!
От: dilmah США  
Дата: 21.12.12 14:38
Оценка:
В базовой системе netbsd есть директория /rescue с кучей хардлинков на один 4-5 мбайтный статически слинкованный бинарник
Re[5]: Эх, жизнь моя жестянка!
От: ДимДимыч Украина http://klug.org.ua
Дата: 22.12.12 01:53
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Никогда не видел статически слинкованный с libc бизибокс. В этом есть смысл только если места дофига, или кроме бизибокса ничего нет.


В embedded зачасту кроме busybox и стороннего приложения ничего и нет. Так что статически слинкованный busybox — довольно распространенное явление.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.