Portál AbcLinuxu, 10. května 2025 11:15
Ahoj,
velmi divně se mi chová chroot. Chrootuji do složky /chroot/bartacekp
lopuch # ls /chroot/bartacekp
bin data etc home lib usr
lopuch #
ls /chroot/bartacekp/bin/
bash cp ls mkdir mv ping pwd rm rmdir sh
Pokud se pokusím do této složky chrootnout tak :
lopuch #
chroot /chroot/bartacekp/ /bin/bash
chroot: cannot run command `/bin/bash': No such file or directory
Přitom je /chroot/bartacekp/bin/bash normálně spustitelný soubor
lopuch # ldd /chroot/bartacekp/bin/bash linux-vdso.so.1 => (0x00007fffbb3ff000) libncurses.so.5 => /lib/libncurses.so.5 (0x00007f5a101f8000) libdl.so.2 => /lib/libdl.so.2 (0x00007f5a0fff4000) libc.so.6 => /lib/libc.so.6 (0x00007f5a0fc9f000) /lib64/ld-linux-x86-64.so.2 (0x00007f5a10457000)
Díky za nápady
Čo vypíše strace -f toho chrootu?
/home/bartacekp/lib
taky?
Mas tam chybu:
chroot /chroot/bartacekp/ /chroot/bartacekp/bin/bash
NN
ldd
nic nedokazuje, to linky resolvuje:
bash# ldd /bin/sh linux-vdso.so.1 => (0x00007fff7d63e000) libncurses.so.5 => /lib/libncurses.so.5 (0x00007f47e5d32000) libdl.so.2 => /lib/libdl.so.2 (0x00007f47e5b2e000) libc.so.6 => /lib/libc.so.6 (0x00007f47e57e6000) /lib64/ld-linux-x86-64.so.2 (0x00007f47e5f8f000) bash# ls -ld /bin/sh lrwxrwxrwx 1 root root 4 Jan 5 2009 /bin/sh -> bash
Děkuji za všechn nápady, ale o link se nejedná
lopuchl # ls -al /chroot/bartacekp/bin/
celkem 5784
drwxr-xr-x 2 bartacekp backup 4096 27. srp 11.33 .
drwxr-xr-x 9 root root 4096 27. srp 13.40 ..
-rwxr-xr-x 1 bartacekp backup 768024 26. srp 11.07 bash
-rwxr-xr-x 1 bartacekp backup 101208 26. srp 11.07 cp
-rwxr-xr-x 1 bartacekp backup 109704 26. srp 11.07 ls
-rwxr-xr-x 1 bartacekp backup 43400 26. srp 11.07 mkdir
-rwxr-xr-x 1 bartacekp backup 92992 26. srp 11.07 mv
-rwx--x--x 1 bartacekp backup 35544 26. srp 11.07 ping
-rwxr-xr-x 1 bartacekp backup 39288 26. srp 11.07 pwd
-rwxr-xr-x 1 bartacekp backup 59928 26. srp 11.07 rm
-rwxr-xr-x 1 bartacekp backup 35112 26. srp 11.07 rmdir
-rwxr-xr-x 1 bartacekp backup 768024 26. srp 11.07 sh
A zmíněná knihovna je jak v chrootu, tak v systému
lopuchl # ls -al /chroot/bartacekp/lib/ celkem 2204 drwxr-xr-x 2 bartacekp backup 4096 28. srp 11.03 . drwxr-xr-x 9 root root 4096 27. srp 13.40 .. -rwxr-xr-x 1 bartacekp backup 121292 28. srp 11.03 ld-linux.so.2 -rwxr-xr-x 1 bartacekp backup 35280 26. srp 11.08 libacl.so.1 -rwxr-xr-x 1 bartacekp backup 18656 26. srp 11.08 libattr.so.1 -rwxr-xr-x 1 bartacekp backup 1383600 28. srp 11.04 libc.so.6 -rwxr-xr-x 1 bartacekp backup 14512 28. srp 11.04 libdl.so.2 -rwxr-xr-x 1 bartacekp backup 383920 28. srp 11.04 libncurses.so.5 -rwxr-xr-x 1 bartacekp backup 137030 26. srp 11.08 libpthread.so.0 -rwxr-xr-x 1 bartacekp backup 84624 26. srp 11.08 libresolv.so.2 -rwxr-xr-x 1 bartacekp backup 35656 26. srp 11.08 librt.so.1
/lib64/ld-linux-x86-64.so.2
Nakpíroval jsem tedy i 64bit knihovnu do složky lib
cp /lib64/ld-linux.so.2 /chroot/bartacekp/lib/ld-linux-x86-64.so.2
Takže stávající stav je takový :
lopuch # ls -al /chroot/bartacekp/lib/ celkem 2328 drwxr-xr-x 2 bartacekp backup 4096 28. srp 12.40 . drwxr-xr-x 9 root root 4096 27. srp 13.40 .. -rwxr-xr-x 1 bartacekp backup 121292 28. srp 11.03 ld-linux.so.2 -rwxr-xr-x 1 bartacekp backup 121292 28. srp 12.40 ld-linux-x86-64.so.2 -rwxr-xr-x 1 bartacekp backup 35280 26. srp 11.08 libacl.so.1 -rwxr-xr-x 1 bartacekp backup 18656 26. srp 11.08 libattr.so.1 -rwxr-xr-x 1 bartacekp backup 1383600 28. srp 11.04 libc.so.6 -rwxr-xr-x 1 bartacekp backup 14512 28. srp 11.04 libdl.so.2 -rwxr-xr-x 1 bartacekp backup 383920 28. srp 11.04 libncurses.so.5 -rwxr-xr-x 1 bartacekp backup 137030 26. srp 11.08 libpthread.so.0 -rwxr-xr-x 1 bartacekp backup 84624 26. srp 11.08 libresolv.so.2 -rwxr-xr-x 1 bartacekp backup 35656 26. srp 11.08 librt.so.1
Ale bezeměny...
Myslel jsem že je to jedno, vytvořil jsem i složku lib64 a nic...
Ne
lopuch # ls -al /chroot/bartacekp/lib celkem 2328 drwxr-xr-x 2 bartacekp backup 4096 28. srp 12.40 . drwxr-xr-x 10 root root 4096 28. srp 13.34 .. -rwxr-xr-x 1 bartacekp backup 121292 28. srp 11.03 ld-linux.so.2 -rwxr-xr-x 1 bartacekp backup 121292 28. srp 12.40 ld-linux-x86-64.so.2 -rwxr-xr-x 1 bartacekp backup 35280 26. srp 11.08 libacl.so.1 -rwxr-xr-x 1 bartacekp backup 18656 26. srp 11.08 libattr.so.1 -rwxr-xr-x 1 bartacekp backup 1383600 28. srp 11.04 libc.so.6 -rwxr-xr-x 1 bartacekp backup 14512 28. srp 11.04 libdl.so.2 -rwxr-xr-x 1 bartacekp backup 383920 28. srp 11.04 libncurses.so.5 -rwxr-xr-x 1 bartacekp backup 137030 26. srp 11.08 libpthread.so.0 -rwxr-xr-x 1 bartacekp backup 84624 26. srp 11.08 libresolv.so.2 -rwxr-xr-x 1 bartacekp backup 35656 26. srp 11.08 librt.so.1 lopuch # ls -al /chroot/bartacekp/lib64/ celkem 132 drwxr-xr-x 2 bartacekp backup 4096 28. srp 13.34 . drwxr-xr-x 10 root root 4096 28. srp 13.34 .. -rwxr-xr-x 1 bartacekp backup 121292 28. srp 13.34 ld-linux.so.2
Je ta knihovna ld-linux.so.2 v chroot /lib64 opravdu 64bitova? ma podezrele stejnou velikost jako ta 32bitova.
Zajímavá otázka, jak ale posoudit její šedesátičtyřbitovost ?
[root@host lib]# file ld-2.5.so
ld-2.5.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
[root@host lib64]# file ld-2.5.so
ld-2.5.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
Díky za nakopnutí, toto jsou originály v systému.
Není zvláštní že 64bit knihovna linkuje na knihovnu ve složce lib32 a ta následně na nějakou která je 64bit ?
lopuch # file /lib64/ld-linux.so.2 /lib64/ld-linux.so.2: symbolic link to `../lib32/ld-linux.so.2'
lopuch # file /lib32/ld-linux.so.2 /lib32/ld-linux.so.2: symbolic link to `ld-2.9.so' lopuch # file /lib/ld-2.9.so /lib/ld-2.9.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), stripped
Teď jak z toho ven ? Podotýkám že se jená o 64bit gentoo
lopuch # ldd /chroot/bartacekp/bin/bash linux-vdso.so.1 => (0x00007fffbb3ff000) libncurses.so.5 => /lib/libncurses.so.5 (0x00007f5a101f8000) libdl.so.2 => /lib/libdl.so.2 (0x00007f5a0fff4000) libc.so.6 => /lib/libc.so.6 (0x00007f5a0fc9f000) /lib64/ld-linux-x86-64.so.2 (0x00007f5a10457000)A nakopírujte do adresáře
/chroot/bartacekp/lib64
soubor ld-linux-x86-64.so.2
, tedy žádný ld-linux.so.2
jak tady někdo plašil. Možná se ještě předtím mrkněte jestli máte v orig. systému symlink /lib na /lib64, předpokládám že ano, pak by stačilo adresář lib v chrootu pojmenovat lib64, dát tam tu knihovnu (už tam snad je) a udělat na něj link (porstě aby to bylo stejně jako v původním systému).
cp /lib64/ld-linux.so.2 /chroot/bartacekp/lib/ld-linux-x86-64.so.2
ale
cp /lib64/ld-linux-x86-64.so.2 /chroot/bartacekp/lib/ld-linux-x86-64.so.2
Omlouvám se za tak dlouhou odezvu, byl jsem mimo. To tvoje doporučení zabralo, chtělo to nakopírovat ještě nějaký knihovny. Je stejně zavádející že hlásil že /bin/bash neexistuje...
Děkuji vám všem :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.