Installation von Debian mittels debootstrap funktioniert nicht

h3rx00

Neuer User
Mitglied seit
27 Jan 2014
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Hallo liebes Forum :)

Ich habe Probleme bei der Installation von Debian mittels debootstrap auf die Fritz.Box.

Ich habe es nach diesem http://freetz.org/wiki/packages/debootstrap und diesem http://www.wehavemorefun.de/fritzbox/Debootstrap How-To probiert.

Das Problem ist reproduzierbar und tritt in freetz stable 2.0 wie auch in der Revision 11589 auf.

Hier mal ein wenig zu meiner Fritz.Box:
Fritz.Box 7270 v2
Flash Speicher: 16MB
RAM: 64 MB
Firmware-Version 54.05.53

Hier das genaue vorgehen:

1.) svn co http://svn.freetz.org/trunk freetz-devel
Ausgecheckt, Revision 11589.

2.) make menuconfig
hardware type -> 7270 v2
Packages -> Debug helpers -> strace
-> ldd

Packages -> Debootstrap
-> OpenSSH -> Build OpenSSH server

Exit -> Save configuration

3.) make

4.) Image fertig
-rw-r--r-- 1 user user 14755328 Jan 27 19:14 7270_v2_05.53-freetz-devel-11589.de_20140127-191444.image

5.) Mit SSH verbinden

6.) USB-Stick gemountent (/dev/sda1 ext3, /dev/sda2 swap)

Code:
root@fritz:/var/mod/root# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /var type tmpfs (rw,relatime)
dev on /dev type tmpfs (rw,nosuid,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock5 on /data type jffs2 (rw,relatime)
/dev/loop0 on /var/media/ftp type ext2 (rw,relatime)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda1 on /var/media/ftp/uStor01 type ext3 (rw,noatime,nodiratime,errors=continue,user_xattr,data=writeback)

Code:
root@fritz:/var/mod/root# cat /proc/swaps 
Filename				Type		Size	Used	Priority
/dev/ramzswap0                          partition	8184	0	-1
/dev/sda2                               partition	449812	0	-2

7.) Bootstrap (http://www.wehavemorefun.de/fritzbox/Debootstrap)
Code:
root@fritz:/var/mod/root# cat /proc/cpuinfo 
system type		: TI UR8 (7270)
processor		: 0
cpu model		: MIPS 4KEc V6.8
BogoMIPS		: 359.62
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 16
extra interrupt vector	: yes
hardware watchpoint	: no
ASEs implemented	:
shadow register sets	: 1
core			: 0
VCED exceptions		: not available
VCEI exceptions		: not available

Also nehme ich mipsel:

Code:
root@fritz:/# debootstrap --foreign --arch=mipsel etch /var/media/ftp/uStor01/debian http://archive.debian.org/debian/
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Checking component main on http://archive.debian.org/debian...
I: Retrieving libacl1
I: Validating libacl1
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt-utils
I: Validating apt-utils
I: Retrieving apt
I: Validating apt
I: Retrieving aptitude
I: Retrieving libattr1
I: Validating libattr1
I: Retrieving bsdmainutils
I: Validating bsdmainutils
I: Retrieving libbz2-1.0
I: Validating libbz2-1.0
I: Retrieving libconsole
I: Validating libconsole
I: Retrieving coreutils
I: Retrieving base-files
I: Validating base-files
I: Retrieving base-passwd
I: Validating base-passwd
I: Retrieving bash
I: Validating bash
I: Retrieving coreutils
I: Validating coreutils
I: Retrieving cpio
I: Validating cpio
I: Retrieving cron
I: Validating cron
I: Retrieving libsasl2-2
I: Validating libsasl2-2
I: Retrieving libsasl2
I: Validating libsasl2
I: Retrieving libdb4.2
I: Validating libdb4.2
I: Retrieving libdb4.3
I: Validating libdb4.3
I: Retrieving libdb4.4
I: Validating libdb4.4
I: Retrieving debconf-i18n
I: Validating debconf-i18n
I: Retrieving debconf
I: Validating debconf
I: Retrieving debian-archive-keyring
I: Validating debian-archive-keyring
I: Retrieving debianutils
I: Validating debianutils
I: Retrieving libdevmapper1.02
I: Validating libdevmapper1.02
I: Retrieving dhcp3-client
I: Validating dhcp3-client
I: Retrieving dhcp3-common
I: Validating dhcp3-common
I: Retrieving diff
I: Validating diff
I: Retrieving dpkg
I: Validating dpkg
I: Retrieving dselect
I: Validating dselect
I: Retrieving e2fslibs
I: Validating e2fslibs
I: Retrieving e2fsprogs
I: Validating e2fsprogs
I: Retrieving libblkid1
I: Validating libblkid1
I: Retrieving libcomerr2
I: Validating libcomerr2
I: Retrieving libss2
I: Validating libss2
I: Retrieving libuuid1
I: Validating libuuid1
I: Retrieving ed
I: Validating ed
I: Retrieving findutils
I: Validating findutils
I: Retrieving gcc-4.1-base
I: Validating gcc-4.1-base
I: Retrieving libgcc1
I: Validating libgcc1
I: Retrieving libstdc++6
I: Validating libstdc++6
I: Retrieving libgdbm3
I: Validating libgdbm3
I: Retrieving libc6
I: Validating libc6
I: Retrieving gnupg
I: Validating gnupg
I: Retrieving gpgv
I: Validating gpgv
I: Retrieving libgnutls13
I: Validating libgnutls13
I: Retrieving grep
I: Validating grep
I: Retrieving groff-base
I: Validating groff-base
I: Retrieving gzip
I: Validating gzip
I: Retrieving hostname
I: Validating hostname
I: Retrieving ifupdown
I: Validating ifupdown
I: Retrieving iptables
I: Validating iptables
I: Retrieving iputils-ping
I: Validating iputils-ping
I: Retrieving laptop-detect
I: Validating laptop-detect
I: Retrieving logrotate
I: Validating logrotate
I: Retrieving lsb-base
I: Validating lsb-base
I: Retrieving liblzo1
I: Validating liblzo1
I: Retrieving libcap1
I: Validating libcap1
I: Retrieving libgcrypt11
I: Validating libgcrypt11
I: Retrieving libgpg-error0
I: Validating libgpg-error0
I: Retrieving liblocale-gettext-perl
I: Validating liblocale-gettext-perl
I: Retrieving libselinux1
I: Validating libselinux1
I: Retrieving libsepol1
I: Validating libsepol1
I: Retrieving libsigc++-2.0-0c2a
I: Validating libsigc++-2.0-0c2a
I: Retrieving libtasn1-3
I: Validating libtasn1-3
I: Retrieving libtext-charwidth-perl
I: Validating libtext-charwidth-perl
I: Retrieving libtext-iconv-perl
I: Validating libtext-iconv-perl
I: Retrieving libtext-wrapi18n-perl
I: Validating libtext-wrapi18n-perl
I: Retrieving libusb-0.1-4
I: Validating libusb-0.1-4
I: Retrieving makedev
I: Validating makedev
I: Retrieving man-db
I: Validating man-db
I: Retrieving manpages
I: Validating manpages
I: Retrieving mawk
I: Validating mawk
I: Retrieving mktemp
I: Validating mktemp
I: Retrieving module-init-tools
I: Validating module-init-tools
I: Retrieving nano
I: Validating nano
I: Retrieving libncurses5
I: Validating libncurses5
I: Retrieving libncursesw5
I: Validating libncursesw5
I: Retrieving ncurses-base
I: Validating ncurses-base
I: Retrieving ncurses-bin
I: Validating ncurses-bin
I: Retrieving net-tools
I: Validating net-tools
I: Retrieving netbase
I: Validating netbase
I: Retrieving netcat
I: Validating netcat
I: Retrieving libnewt0.52
I: Validating libnewt0.52
I: Retrieving libopencdk8
I: Validating libopencdk8
I: Retrieving libldap2
I: Validating libldap2
I: Retrieving libssl0.9.8
I: Validating libssl0.9.8
I: Retrieving libpam-modules
I: Validating libpam-modules
I: Retrieving libpam-runtime
I: Validating libpam-runtime
I: Retrieving libpam0g
I: Validating libpam0g
I: Retrieving libpopt0
I: Validating libpopt0
I: Retrieving libreadline5
I: Validating libreadline5
I: Retrieving login
I: Validating login
I: Retrieving libslang2
I: Validating libslang2
I: Retrieving klogd
I: Validating klogd
I: Retrieving initscripts
I: Validating initscripts
I: Retrieving libwrap0
I: Validating libwrap0
I: Retrieving info
I: Validating info
I: Retrieving bsdutils
I: Validating bsdutils
I: Retrieving mount
I: Validating mount
I: Retrieving whiptail
I: Validating whiptail
I: Retrieving openbsd-inetd
I: Validating openbsd-inetd
I: Retrieving perl-base
I: Validating perl-base
I: Retrieving procps
I: Validating procps
I: Retrieving readline-common
I: Validating readline-common
I: Retrieving sed
I: Validating sed
I: Retrieving passwd
I: Validating passwd
I: Retrieving sysklogd
I: Validating sysklogd
I: Retrieving sysv-rc
I: Validating sysv-rc
I: Retrieving sysvinit-utils
I: Validating sysvinit-utils
I: Retrieving sysvinit
I: Validating sysvinit
I: Retrieving tar
I: Validating tar
I: Retrieving tasksel-data
I: Validating tasksel-data
I: Retrieving tasksel
I: Validating tasksel
I: Retrieving tcpd
I: Validating tcpd
I: Retrieving traceroute
I: Validating traceroute
I: Retrieving tzdata
I: Validating tzdata
I: Retrieving update-inetd
I: Validating update-inetd
I: Retrieving util-linux
I: Validating util-linux
I: Retrieving vim-common
I: Validating vim-common
I: Retrieving vim-tiny
I: Validating vim-tiny
I: Retrieving wget
I: Validating wget
I: Retrieving zlib1g
I: Validating zlib1g
I: Chosen extractor for .deb packages: ar
I: Extracting libacl1...
I: Extracting libattr1...
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
I: Extracting coreutils...
I: Extracting libdb4.3...
I: Extracting debconf-i18n...
I: Extracting debconf...
I: Extracting debianutils...
I: Extracting libdevmapper1.02...
I: Extracting diff...
I: Extracting dpkg...
I: Extracting dselect...
I: Extracting e2fslibs...
I: Extracting e2fsprogs...
I: Extracting libblkid1...
I: Extracting libcomerr2...
I: Extracting libss2...
I: Extracting libuuid1...
I: Extracting findutils...
I: Extracting gcc-4.1-base...
I: Extracting libgcc1...
I: Extracting libstdc++6...
I: Extracting libc6...
I: Extracting grep...
I: Extracting gzip...
I: Extracting hostname...
I: Extracting lsb-base...
I: Extracting libcap1...
I: Extracting liblocale-gettext-perl...
I: Extracting libselinux1...
I: Extracting libsepol1...
I: Extracting libtext-charwidth-perl...
I: Extracting libtext-iconv-perl...
I: Extracting libtext-wrapi18n-perl...
I: Extracting makedev...
I: Extracting mawk...
I: Extracting mktemp...
I: Extracting libncurses5...
I: Extracting ncurses-base...
I: Extracting ncurses-bin...
I: Extracting libpam-modules...
I: Extracting libpam-runtime...
I: Extracting libpam0g...
I: Extracting login...
I: Extracting libslang2...
I: Extracting initscripts...
I: Extracting bsdutils...
I: Extracting mount...
I: Extracting perl-base...
I: Extracting procps...
I: Extracting sed...
I: Extracting passwd...
I: Extracting sysv-rc...
I: Extracting sysvinit-utils...
I: Extracting sysvinit...
I: Extracting tar...
I: Extracting tzdata...
I: Extracting util-linux...
I: Extracting zlib1g...

8.)
chroot /var/media/ftp/uStor01/debian /debootstrap/debootstrap --second-stage

Ab hier bleibt es hängen, der process bleibt ohne ausgabe an stdout mit hoher CPU last hängen. Auch nach mehreren Stunden warten ist nichts mehr passiert

Code:
Mem: 48444K used, 10856K free, 0K shrd, 6472K buff, 17128K cached
CPU:  18% usr  81% sys   0% nic   0% idle   0% io   0% irq   0% sirq
Load average: 1.34 1.65 0.93 2/78 6341
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
 6301  3393 root     R     1140   2%  94% {debootstrap} /bin/sh -e /debootstrap/debootstrap --second-stage
 6340  6307 root     R     1212   2%   6% {busybox} top
  677     1 root     S    12468  21%   0% /usr/bin/avm/ctlmgr
  760   759 root     S    12468  21%   0% /usr/bin/avm/ctlmgr
  759   677 root     S    12468  21%   0% /usr/bin/avm/ctlmgr
  761   759 root     S    12468  21%   0% /usr/bin/avm/ctlmgr
  681     1 root     S     5808  10%   0% upnpd
 1510   681 root     S     5808  10%   0% upnpd
 1512  1510 root     S     5808  10%   0% upnpd
 1511  1510 root     S     5808  10%   0% upnpd
 1455     1 root     S <   5432   9%   0% voipd
 1422     1 root     S     5396   9%   0% telefon a127.0.0.1
 1437  1422 root     S     5396   9%   0% telefon a127.0.0.1
 1438  1437 root     S     5396   9%   0% telefon a127.0.0.1
 3391  2752 root     S     5312   9%   0% sshd: root@pts/0
 6305  2752 root     S     5312   9%   0% sshd: root@pts/1
 1388  1386 root     S     4028   7%   0% pbd
 1389  1386 root     S     4028   7%   0% pbd
 1384     1 root     S     4028   7%   0% pbd
 1386  1384 root     S     4028   7%   0% pbd

9.) Debug:
Code:
root@fritz:/# strace chroot /var/media/ftp/uStor01/debian /debootstrap/debootstrap --second-stage
execve("/usr/sbin/chroot", ["chroot", "/var/media/ftp/uStor01/debian", "/debootstrap/debootstrap", "--second-stage"], [/* 249 vars */]) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaad000
open("/usr/lib/freetz/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/mod/usr/lib/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=422800, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0000\261\0\0004\0\0\0"..., 4096) = 4096
mmap(NULL, 512000, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabe000
mmap(0x2aabe000, 415324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabe000
mmap(0x2ab33000, 8064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x65000) = 0x2ab33000
mmap(0x2ab35000, 21744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab35000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=21528, ...}) = 0
mprotect(0x2ab33000, 4096, PROT_READ)   = 0
mprotect(0x2aabc000, 4096, PROT_READ)   = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
getuid()                                = 0
chroot("/var/media/ftp/uStor01/debian") = 0
chdir("/")                              = 0
execve("/debootstrap/debootstrap", ["/debootstrap/debootstrap", "--second-stage"], [/* 249 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x52b000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

Für jede hilfe dankbar.
 
Hallo,

ich habe auch vor kurzem festgestellt, dass sich mein Debian (Lenny) bei mir genau so verhält, und zwar erst nach Update auf 54.05.53 (FB 7270)
 
Hi,

danke für die Antwort. Ein Downgrade der FW der Fritz.Box wurde also theoretisch helfen? Kann ich dazu einfach eine bestimmte SVN Revision des Freetz auschecken der mir noch die alte FW erstellt?
 
Also ich bin noch etwas weiter gekommen. kA ob das was ich da mache überhaupt Sinn ergibt, aber man kann es ja probieren =)

Ich hab mir einfach mit ldd die Bibliotheken für /bin/sh /usr/sbin/strace /usr/bin/ldd ausgesucht

Code:
root@fritz:/var/media/ftp/uStor01# ldd /bin/sh
	libc.so.0 => /lib/libc.so.0 (0x2aabe000)
	ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
root@fritz:/var/media/ftp/uStor01# ldd /usr/sbin/strace 
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aabe000)
	libc.so.0 => /lib/libc.so.0 (0x2aadc000)
	ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
root@fritz:/var/media/ftp/uStor01# ldd /usr/bin/ldd
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aabe000)
	libc.so.0 => /lib/libc.so.0 (0x2aadc000)
	ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)

und alles unter /var/media/ftp/uStor01/debian/bin reinkoppiert.

danach ist es zumindest möglich in das Verzeichniss reinzuchrooten:

Code:
root@fritz:/var/media/ftp/uStor01# chroot debian /bin/sh


BusyBox v1.22.1 (2014-01-27 19:12:52 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

@fritz:/#

auch debootstrap lässt sich nun ausführen:

Code:
@fritz:/# ./debootstrap/debootstrap
I: usage: [OPTION]... <suite> <target> [<mirror> [<script>]]
I: Try `debootstrap --help' for more information.
E: You must specify a suite and a target.

bei @fritz:/# ./debootstrap/debootstrap --second-stage bleibt es jedoch wieder hängen

pstree verrät jedoch das er jetzt bei grep hängt:
Code:
root@fritz:/var/media/ftp/uStor01/debian/bin# pstree 
init-+-aha---aha---3*[aha]
     |-2*[busybox]
     |-configd
     |-ctlmgr---ctlmgr---2*[ctlmgr]
     |-dsl_monitor---dsl_monitor---2*[dsl_monitor]
     |-dsld
     |-ftpd
     |-init
     |-multid
     |-pbd---pbd---2*[pbd]
     |-run_clock
     |-sshd-+-sshd---sh---sh---debootstrap---grep
     |      `-sshd---sh---busybox
     |-telefon---telefon---telefon
     |-udevd---2*[udevd]
     |-upnpd---upnpd---2*[upnpd]
     |-upnpdevd---upnpdevd
     `-voipd

also mal grep testen:
Code:
@fritz:/# strace grep
execve("/bin/grep", ["grep"], [/* 249 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x461000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

Hier bleib ich wieder hängen. Egal welche der binaries aus Debian ich teste, es gibt immer das selbe Ergebniss :( kA wieso.

Die Datei /etc/ld.so.nohwcap sollte nicht das Problem sein:
/etc/ld.so.nohwcap (http://www.mail-archive.com/[email protected]/msg298627.html)

Eventuell liegt das Problem bei /etc/ld.so.preload, muss noch kucken ob ich mehr herausfinde. Eventuell hat auch jemand noch weitere Ideen bzw debugging Tipps? =)
 
btw folgendes hab ich auch noch versucht:

Code:
@fritz:/# ${LD_LIBRARY_PATH}
/bin/sh: /mod/lib:/mod/usr/lib: not found
@fritz:/# 
@fritz:/# export LD_LIBRARY_PATH=/lib:${LD_LIBRARY_PATH}
@fritz:/# 
@fritz:/# ${LD_LIBRARY_PATH}
/bin/sh: /lib:/mod/lib:/mod/usr/lib: not found
@fritz:/# 
@fritz:/# strace grep
execve("/bin/grep", ["grep"], [/* 249 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x461000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

Wie man sieht bring es aber nichts =P Ich hab noch versuch das grep durch eine busybox version zu ersetzen (heruntergeladen, http://www.busybox.net/downloads/binaries/1.16.1/, ln -s busybox-mipsel /bin/grep) und dann kam er sogar zum mount befehl. Es ist also so, dass sämtliche binaries von Debian nicht ausgeführt werden können.

Was noch auffällt, ist dass quasi kein Benutzer angemeldet ist:

Code:
@fritz:/#

es sollte natürlich so aussehen:

Code:
root@fritz:/#

kA ob das eine Rolle spielt.
 
Das Problem liegt vermutlich am dynamischen Linker vom Debian. Auf einem PC Linux sieht der Start eines Programms so aus:
Code:
brk(0)                                  = 0x1e9a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f41d914c000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=121019, ...}) = 0
mmap(NULL, 121019, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f41d912e000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3

Was passiert mit diesen Befehlen?
Code:
strace chroot /var/media/ftp/uStor01/debian /bin/echo
strace env -i chroot /var/media/ftp/uStor01/debian /bin/echo
 
Code:
root@fritz:/var/media/ftp/uStor01# strace chroot debian /bin/echo 
execve("/usr/sbin/chroot", ["chroot", "debian", "/bin/echo"], [/* 249 vars */]) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaad000
open("/usr/lib/freetz/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/mod/usr/lib/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=422800, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0000\261\0\0004\0\0\0"..., 4096) = 4096
mmap(NULL, 512000, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabe000
mmap(0x2aabe000, 415324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabe000
mmap(0x2ab33000, 8064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x65000) = 0x2ab33000
mmap(0x2ab35000, 21744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab35000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=21528, ...}) = 0
mprotect(0x2ab33000, 4096, PROT_READ)   = 0
mprotect(0x2aabc000, 4096, PROT_READ)   = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
getuid()                                = 0
chroot("debian")                        = 0
chdir("/")                              = 0
execve("/bin/echo", ["/bin/echo"], [/* 249 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x445000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

Code:
root@fritz:/var/media/ftp/uStor01# strace env -i chroot debian /bin/echo 
execve("/usr/bin/env", ["env", "-i", "chroot", "debian", "/bin/echo"], [/* 249 vars */]) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaad000
open("/usr/lib/freetz/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/mod/usr/lib/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=422800, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0000\261\0\0004\0\0\0"..., 4096) = 4096
mmap(NULL, 512000, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabe000
mmap(0x2aabe000, 415324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabe000
mmap(0x2ab33000, 8064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x65000) = 0x2ab33000
mmap(0x2ab35000, 21744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab35000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=21528, ...}) = 0
mprotect(0x2ab33000, 4096, PROT_READ)   = 0
mprotect(0x2aabc000, 4096, PROT_READ)   = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
getuid()                                = 0
execve("/bin/busybox", ["chroot", "debian", "/bin/echo"], [/* 0 vars */]) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaad000
open("/usr/lib/freetz/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=422800, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0000\261\0\0004\0\0\0"..., 4096) = 4096
mmap(NULL, 512000, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabe000
mmap(0x2aabe000, 415324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabe000
mmap(0x2ab33000, 8064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x65000) = 0x2ab33000
mmap(0x2ab35000, 21744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab35000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=21528, ...}) = 0
mprotect(0x2ab33000, 4096, PROT_READ)   = 0
mprotect(0x2aabc000, 4096, PROT_READ)   = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
getuid()                                = 0
chroot("debian")                        = 0
chdir("/")                              = 0
execve("/bin/echo", ["/bin/echo"], [/* 0 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x445000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
 
Wenn man die /etc/ld.so.preload zumindest leer anlegt, kommt der auch schon mal weiter...

Code:
@fritz:/# strace grep
execve("/bin/grep", ["grep"], [/* 249 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x461000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
^CProcess 3893 detached

Nach dem anlege:
@fritz:/# touch /etc/ld.so.preload

Code:
@fritz:/# strace grep
execve("/bin/grep", ["grep"], [/* 249 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x461000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = 0
open("/etc/ld.so.preload", O_RDONLY)    = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
close(3)                                = 0
^CProcess 3900 detached
 
Ausgabe bleibt leer:
Code:
root@fritz:/var/media/ftp/uStor01# LD_DEBUG=all chroot /var/media/ftp/uStor01/debian /bin/echo

auch keine ausgabe:
Code:
root@fritz:/var/media/ftp/uStor01# export LD_DEBUG=all
root@fritz:/var/media/ftp/uStor01# chroot /var/media/ftp/uStor01/debian /bin/echo

mal mit strace:
Code:
root@fritz:/var/media/ftp/uStor01# export LD_DEBUG=all
root@fritz:/var/media/ftp/uStor01# strace chroot /var/media/ftp/uStor01/debian /bin/echo 
execve("/usr/sbin/chroot", ["chroot", "/var/media/ftp/uStor01/debian", "/bin/echo"], [/* 250 vars */]) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaad000
open("/usr/lib/freetz/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/mod/lib/libc.so.0", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/mod/usr/lib/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=422800, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x2aaae000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0000\261\0\0004\0\0\0"..., 4096) = 4096
mmap(NULL, 512000, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabe000
mmap(0x2aabe000, 415324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aabe000
mmap(0x2ab33000, 8064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x65000) = 0x2ab33000
mmap(0x2ab35000, 21744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ab35000
close(3)                                = 0
munmap(0x2aaae000, 4096)                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=21528, ...}) = 0
mprotect(0x2ab33000, 4096, PROT_READ)   = 0
mprotect(0x2aabc000, 4096, PROT_READ)   = 0
ioctl(0, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
getuid()                                = 0
chroot("/var/media/ftp/uStor01/debian") = 0
chdir("/")                              = 0
execve("/bin/echo", ["/bin/echo"], [/* 250 vars */]) = 0
uname({sys="Linux", node="fritz.fonwlan.box", ...}) = 0
brk(0)                                  = 0x445000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
 
Ich glaube nicht, dass er weiter kommt. Wenn die Datei existiert, wird sie gelesen, sonst nicht, aber das Problem ist in beiden Fällen später.

Schau mal, ob das LD_DEBUG=all von oben nützliche Informationen bringt.
 
Irgendwie funktioniert das mit dem LD_DEBUG nicht so wie erwartet (http://www.bnikolic.co.uk/blog/linux-ld-debug.html)

Code:
root@fritz:/var/media/ftp/uStor01# LD_DEBUG=all ls -al
drwxr-xr-x    6 root     root          4096 Jan  1 02:04 .
drwxr-xr-x    4 root     root          1024 Jan  1 01:00 ..
-rwxr-xr-x    1 root     root        997636 Jan  1 01:20 bash
drwxr-xr-x   16 root     root          4096 Jan  1 01:05 chroottest
drwxr-xr-x   17 root     root          4096 Jul  8  2006 debian
drwxr-xr-x   17 root     root          4096 Jul  8  2006 debian-min
-rwxrwxrwx    1 root     root             0 Jan  1 02:04 debug.log
drwx------    2 root     root         16384 Jan 27  2014 lost+found
root@fritz:/var/media/ftp/uStor01#

Sollte er mir da nicht die debugging informationen anzeigen? (Laut link oben)

Bei
Code:
root@fritz:/var/media/ftp/uStor01# LD_DEBUG=all chroot /var/media/ftp/uStor01/debian /bin/echo

Passiert gar nichts. Es bleibt wie immer hängen bis ich es mit strg+c abbreche
 
Dann mach mal ein chroot auf die funktionierende Shell und rufe dann echo direkt auf mit "LD_DEBUG=all /bin/echo". Normalerweise sollte da knapp 400 Zeilen an Ausgabe kommen. Wenn nichts kommt, ist entweder LD_DEBUG bei Debian nicht aktiv, oder das Problem ist schon vor der ersten Zeile der Ausgabe.
Code:
LD_DEBUG=all /bin/echo
/lib/ld-linux*
LD_DEBUG=all /lib/ld-linux* --list /bin/echo
 
Es gibt wieder keine ausgabe:
Code:
root@fritz:/var/media/ftp/uStor01# chroot debian /bin/sh


BusyBox v1.22.1 (2014-01-27 19:12:52 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

@fritz:/# LD_DEBUG=all /bin/echo

und unter /lib/ gibt es keine Dateien/Ordner mit den namen ld-linux:
Code:
root@fritz:/var/media/ftp/uStor01/debian/lib# ls -al | grep ld-linux
root@fritz:/var/media/ftp/uStor01/debian/lib#

Code:
root@fritz:/var/media/ftp/uStor01# chroot debian /bin/sh


BusyBox v1.22.1 (2014-01-27 19:12:52 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

@fritz:/# LD_DEBUG=all /lib/ld-linux* --list /bin/echo
/bin/sh: /lib/ld-linux*: not found
@fritz:/#
 
Wenn ich es richtig verstehe sollte das Problem an folgender Datei liegen:
Code:
@fritz:/lib# ./ld-2.3.6.so 
Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
You have invoked `ld.so', the helper program for shared library executables.
This program usually lives in the file `/lib/ld.so', and special directives
in executable files using ELF shared libraries tell the system's program
loader to load the helper program from this file.  This helper program loads
the shared libraries needed by the program executable, prepares the program
to run, and runs it.  You may invoke this helper program directly from the
command line to load and run an ELF executable file; this is like executing
that file itself, but always uses this helper program from the file you
specified, instead of the helper program file specified in the executable
file you run.  This is mostly of use for maintainers to test new versions
of this helper program; chances are you did not intend to run this program.

  --list                list all dependencies and how they are resolved
  --verify              verify that given object really is a dynamically linked
                        object we can handle
  --library-path PATH   use given PATH instead of content of the environment
                        variable LD_LIBRARY_PATH
  --inhibit-rpath LIST  ignore RUNPATH and RPATH information in object names
                        in LIST

So viel hab ich noch debugen können:
Code:
@fritz:/lib# LD_DEBUG=all ./ld-2.3.6.so --list /bin/echo
      4822:	file=/bin/echo [0];  generating link map
      4822:	  dynamic: 0x0040015c  base: 0x00000000   size: 0x000448a0
      4822:	    entry: 0x00400c00  phdr: 0x00400034  phnum:          7
      4822:

Ich denke das ist der passende equivalent zur dem Vorschlag
LD_DEBUG=all /lib/ld-linux* --list /bin/echo
 
Es ist auch interessant, dass sobald ich /bin/sh (welches ja direkt aus dem freetz system kopiert ist) durch die ld-2.3.6.so ausführe, es auch zum stillstand kommt.

Code:
@fritz:/lib# LD_DEBUG=files ./ld-2.3.6.so --list /bin/sh
      4893:	file=/bin/sh [0];  generating link map
      4893:	  dynamic: 0x00400148  base: 0x00000000   size: 0x0009ed48
      4893:	    entry: 0x00404ae0  phdr: 0x00400034  phnum:          8
      4893:

sonst funktioniert es ja:
Code:
@fritz:/lib# /bin/sh


BusyBox v1.22.1 (2014-01-27 19:12:52 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

@fritz:/lib#
 
Ja, das ist das passende. Bei meinem System ist /lib64/ld-linux-x86-64.so.2 ein Link auf ld-2.17.so, aber /lib64/ld-linux-x86-64.so.2 ist der Name, der in den Programmen steht (readelf -l /bin/echo). Anscheinend ist Debian da anders, aber offensichtlich wird der Name gefunden, sonst gäbe es andere Fehler. Wobei ld-2.3.6 vermutlich relativ alt ist. Ich habe noch ein System mit ld-2.3.4, und der ist von 2005.

Es sollte so weiter gehen:
Code:
     21624:     file=/bin/echo [0];  generating link map
     21624:       dynamic: 0x0000000000606dc8  base: 0x0000000000000000   size: 0x00000000002073c8
     21624:         entry: 0x0000000000401b04  phdr: 0x0000000000400040  phnum:                  9
     21624:
     21624:     
     21624:     file=libc.so.6 [0];  needed by /bin/echo [0]
     21624:     find library=libc.so.6 [0]; searching
     21624:      search cache=/etc/ld.so.cache
     21624:       trying file=/lib64/libc.so.6
Offensichtlich bleibt der Linker hängen, bevor er die Liste der benötigten Libraries findet, bzw. sogar, bevor er /etc/ld.so.cache öffnet.

Schau mal, ob DU irgendwo einen neueren Linker findest, bzw. besser noch einen aktuellen selbst übersetzen kannst.
 
Ich hab mir jetzt einfach zusätzlich noch wheezy debootstrapt:

Code:
root@fritz:/var/media/ftp/uStor01# debootstrap --foreign --arch=mipsel wheezy /var/media/ftp/uStor01/wheezy http://ftp.debian.org/debian/

in Wheezy ist die ld-2.13.so installiert:
Code:
@fritz:/lib/mipsel-linux-gnu# LD_DEBUG=all ./ld-2.13.so /bin/echo
      8374:	file=/bin/echo [0];  generating link map
      8374:	  dynamic: 0x004001e0  base: 0x00000000   size: 0x000152b0
      8374:	    entry: 0x00401510  phdr: 0x00400034  phnum:         10
      8374:

Ich denke mal das es schneller ist es so zu testen als den linker neu zu übersetzen. Sollte ja von Ergebnis her das gleiche sein oder? Oder soll ich unbedingt den linker selbst compilieren??? Die /bin/sh hab ich natürlich wieder mit den zugehörigen libraries aus freetz in das wheezy reinkopiert.
 
Kostenlos!

Statistik des Forums

Themen
248,917
Beiträge
2,305,046
Mitglieder
378,638
Neuestes Mitglied
Patrick89