EXT4: ls, file, ldd súbor pozná, ale "./a.out" vyhlási file not found

Re:EXT4: ls, file, ldd súbor pozná, ale "./a.out" vyhlási file not found
« Odpověď #15 kdy: 28. 05. 2021, 07:27:43 »
Ale oni tam tie súbory sú
...
pre /usr/bin/bash mám overené, že na blok sedí veľkosť, podľa screenshotu z času, keď to fungovalo..
Má suse něco jako debsums, že to zkontroluje checksumy nainstalovaných souborů? Velikost nic neznamená, jenom že to správně obnovilo metadata - ale v těch blocích můžou být libovolné nesmysly.


jasne, file a ldd overí len magic bytes/magic block. readelf mi  možno dá niečo podrobnejšie a ani to nemusí bzť dostatočné.


Re:EXT4: ls, file, ldd súbor pozná, ale "./a.out" vyhlási file not found
« Odpověď #16 kdy: 31. 05. 2021, 17:05:44 »
Tak to, ze nesel bin/sh ani /init, nesouvisi s tim, zda mas usr ci nikoliv. Jsem nedavno delal jedno harakiri (nfsboot a prenastaveni site za behu, ze ktereho to bezi) a stacilo zkopirovat   /bin /lib64 /sbin do tmpfs (ramdisku) a slo do toho udelat chroot.

Tvuj problem bych videl na to, ze nejde namountovat rootfs = nemas pak /bin/sh ani /sbin/init.

initrd zbehne OK. problem nastane pri  prepnuti  na "real root" a hned po nom,

Ono to vyzera  "len na" padnuty ld.so.cache. Lenze  bez  chrootu  som ho neobnoval (volanim  ldconfig).  este skusim niekde  splasit staticky linkovany bash alebo  busybox sh


[root@sysrescue ~]# ls -la suse/bin/sh
-rwxr-xr-x 1 root root 1152112 May 27 10:00 suse/bin/sh
[root@sysrescue ~]# chroot suse /bin/sh
chroot: failed to run command ‘/bin/sh’: No such file or directory
[root@sysrescue ~]# suse/bin/sh
suse/bin/sh: /usr/lib/libreadline.so.8: no version information available (required by suse/bin/sh)
sh-5.1#
exit
[root@sysrescue ~]# find suse -iname libreadline.so*
suse/usr/lib/libreadline.so.8.1
suse/usr/lib/debug/usr/lib/libreadline.so.8.1-8.1-2.1.i386.debug
suse/usr/lib/debug/usr/lib64/libreadline.so.8.1-8.1-2.1.x86_64.debug
suse/usr/lib/libreadline.so.8
suse/usr/lib64/libreadline.so
suse/usr/lib64/libreadline.so.8
suse/usr/lib64/libreadline.so.8.1
suse/lib64/libreadline.so.5
suse/lib64/libreadline.so.6.3
suse/lib64/libreadline.so.6
suse/lib64/libreadline.so.5.2
suse/lib/libreadline.so.5
suse/lib/libreadline.so.6.3
suse/lib/libreadline.so.6
suse/lib/libreadline.so.5.2



_Jenda

  • *****
  • 901
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:EXT4: ls, file, ldd súbor pozná, ale "./a.out" vyhlási file not found
« Odpověď #17 kdy: 31. 05. 2021, 21:34:54 »
Nevím, co víc ti na to říct.
[root@sysrescue ~]# chroot suse /bin/sh
chroot: failed to run command ‘/bin/sh’: No such file or directory
Ano, to víme, možná někde chybí ld, měl ses tam chrootnout s busyboxem a zkusit ldd a ld zevnitř. Nebo pustit ld chrootem.

[root@sysrescue ~]# suse/bin/sh
suse/bin/sh: /usr/lib/libreadline.so.8: no version information available (required by suse/bin/sh)
sh-5.1#
exit
[root@sysrescue ~]# find suse -iname libreadline.so*
suse/usr/lib/libreadline.so.8.1
To už taky víme. Jak má ld v sysresccd vědět, že má knihovny hledat v suse/usr/lib/? Cesty ke knihovnám jsou defaultně absolutní a systémové. Když už, možná by mu to šlo napovědět přes LD_LIBRARY_PATH.