LFS Chroot Fehlermeldung: "chroot: failed to run command '/usr/bin/env': No such file or directory"

ComputerMilo

Ensign
Registriert
Apr. 2018
Beiträge
162
Moin an alle,

bin gerade dabei, mir mit Linux from Scratch eine eigene Distro zu bauen. Meine Buchversion ist 12.1 Stable.

Nun bin ich bei Kapitel 7.4 und möchte in die chroot-Umgebung, stoße allerdings, wenn ich den Befehl eingebe, auf folgende Fehlermeldung:
chroot: failed to run command '/usr/bin/env': No such file or directory

Der genutze Befehl ist der folgende:
chroot "$LFS" /usr/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='(lfs chroot) \u:\w\$ ' \
PATH=/usr/bin:/usr/sbin \
MAKEFLAGS="-j$(nproc)" \
TESTSUITEFLAGS="-j$(nproc)" \
/bin/bash --login

Natürlich wie im Buch geschrieben mit sudo ausgeführt.

Die Datei "env" ist in auf meiner LFS-Paritition im Verzeichnis /usr/bin/ vorhanden, also kann "No such file or directory" ja eigentlich nicht stimmen. Warum erkennt er die Datei denn nicht?

Ist der Befehl überhaupt so richtig, wie er dort oben steht (habe ihn so von der Seite kopiert)? Das $LFS steht dort in Anführungstrichen und ist getrennt vom restlichen Pfad. Müssten die nicht eigentlich zusammenhängen?

Ich hoffe, jemand kann mir helfen.
 
Mach doch einfach mal chroot "$LFS". Und prüf dann, ob du /usr/bin/env findest.
 
oicfar schrieb:
Habe ich schon gelesen, aber das hilft mir leider nicht wirklich weiter. Das ist noch eine ältere Version des Buches und wie ich festgestellt habe, wurde das Buch in der neueren Version 12.1 im Vergleich zu älteren Versionen in seiner Struktur und dem, was gemacht werden muss, verändert. Dort wird auch auf Symlinks zu den 64-Bit Libraries und lib64 verwiesen, welche ich aber nicht habe, da in meiner Version des Buches von diesen abgeraten wurde. In meinem Buch steht, ich soll sicherstellen, dass das Verzeichnis lib64 nicht existiert.
Ergänzung ()

blablub1212 schrieb:
Wie hast du denn ”$LFS“ definiert? Die Syntax für chroot ist:
Meine Definition für $LFS ist: /mnt/lfs/
Ich hoffe, das ist gemeint
 
Nach dem, was du bisher so geschrieben hast, müsstest du außerhalb des chroot die Datei in /mnt/lfs/usr/bin/env finden. Das solltest du erst mal nachprüfen.
 
up.whatever schrieb:
Und diese Partition ist in "$LFS" gemountet?
Ja, alles gemountet
Ergänzung ()

Pummeluff schrieb:
Mach doch einfach mal chroot "$LFS"
Folgende Fehlermeldung:
chroot: failed to run command '/bin/bash': No such file or directory
Ergänzung ()

Pummeluff schrieb:
Nach dem, was du bisher so geschrieben hast, müsstest du außerhalb des chroot die Datei in /mnt/lfs/usr/bin/env finden. Das solltest du erst mal nachprüfen.
Habe ich geprüft. Die Datei ist vorhanden. Bin auch noch gar nicht im chroot drin gewesen. Wenn ich da rein will, bekomme ich immer die in der Frage stehende Fehlermeldung.
Ergänzung ()

Wenn ich den Pfad selbst im Terminal eingebe, bekomme ich folgende Ausgabe:

/mnt/lfs/usr/bin/env: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /mnt/lfs/usr/bin/env)

Hilft das eventuell weiter?

Habe mit glibc 2.39 gearbeitet und das ist innerhalb der Partition auch installiert. Muss ich da vielleicht die 2.38 installieren? Vielleicht geht es dann
 
Zuletzt bearbeitet:
Eigentlich solltest du ja nur prüfen, ob /mnt/lfs/usr/bin/env vorhanden ist. Allen Anschein nach ist es das, sonst würde die Fehlermeldung nicht kommen, dass die Glibc nicht gefunden wird.

Die müsste dann logischerweise als /mnt/lfs/lib/x86_64-linux-gnu/libc.so.6 zu finden sein, was aber wiederum nur im chroot gültig ist.

Und dann sollte natürlich auch noch die Version 2.38 im chroot vorhanden sein, da /usr/bin/env offensichtlich gegen diese Version gelinkt ist.

Bist du Dir noch immer sicher, dass du LFS willst?
 
Mit 'echo $LFS' prüfen, ob die Variable gesetzt ist.
Was sagt 'ldd /usr/bin/env' und ist der Pfad zu 'ld-linux*' korrekt?
 
  • Gefällt mir
Reaktionen: Topinambur
Uridium schrieb:
Mit 'echo $LFS' prüfen, ob die Variable gesetzt ist.
Ja, ist gesetzt.
Uridium schrieb:
Was sagt 'ldd /usr/bin/env'
Bekomme da folgende Ausgabe:
linux-vdso.so.1 (0x00007ffe91bd6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000732013000000)
/lib64/ld-linux-x86-64.so.2 (0x00007320133e1000)

Uridium schrieb:
ist der Pfad zu 'ld-linux*' korrekt
Wie kann ich mir den anzeigen lassen?
 
Pummeluff schrieb:
Bist du Dir noch immer sicher, dass du LFS willst?
Die Frage finde ich gar nicht so unberechtigt. :-)
Ich mein, die Fehlermeldung sind ja da und unser Threadersteller ist offenbar damit überfordert sie zu lesen/verstehen.

Generell hab ich durchaus Sympathien dafür, wenn jemand "the hard way" geht. Es bringt nur nicht so viel, wenn einfach nur blind eine Anleitung abgetippt wird ohne im Ansatz zu verstehen, was da passiert und bei jedem kleinen Problemchen, wo die Anleitung nicht funktioniert dann total hilflos ist.
"The hard way" bedingt auch, das man sich zumindest ein bisschen damit auseinander setzt, warum Dinge in der Anleitung stehen und was da genau passiert.
 
  • Gefällt mir
Reaktionen: up.whatever
ComputerMilo schrieb:
/mnt/lfs/usr/bin/env: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /mnt/lfs/usr/bin/env)
Das bringt so nichts. Da musst do schon den LD_LIBRARY_PATH auf /lib/... in deinem zukünftigen chroot setzen.

Meine Empfehlung gegen Probleme solcher Art ist ja statisch linken :P
 
Zurück
Oben