Forum: PC Hard- und Software chroot: failed to run command ‘/mnt/bin/bash’: No such file or directory


von Daniel A. (daniel-a)


Angehängte Dateien:

Lesenswert?

Ich möchte ein Debian stretch installieren, aber ohne Installations-CD 
und nicht auf eine Platte sondern in ein Unterverzeichnis. Ich will es 
danach mit libvirt und LXC starten. Meine Idee ist es wie bei der Gentoo 
Installation ein chroot zu machen und mit apt dann alle Packete zu 
installieren (bitte hier nicht über Sinn und Unsinn davon streiten).

Folgendes habe ich bisher gemacht:
1
root@panther:/vm/tor# mkdir proc sys dev mnt
2
root@panther:/vm/tor# mount -t proc proc proc
3
root@panther:/vm/tor# mount --rbind /sys sys/
4
root@panther:/vm/tor# mount --make-rslave sys/
5
root@panther:/vm/tor# mount --rbind /dev dev/
6
root@panther:/vm/tor# mount --make-rslave dev/
7
root@panther:/vm/tor# mount --rbind / mnt/
8
root@panther:/vm/tor# chroot /vm/tor/ /mnt/bin/bash 
9
chroot: failed to run command ‘/mnt/bin/bash’: No such file or directory
10
root@panther:/vm/tor# stat mnt/bin/bash
11
  Datei: 'mnt/bin/bash'
12
  Größe: 1037440     Blöcke: 2032       EA Block: 4096   reguläre Datei
13
Gerät: 802h/2050d  Inode: 4718680     Verknüpfungen: 1
14
Zugriff: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
15
Zugriff    : 2016-03-04 21:44:47.388600480 +0100
16
Modifiziert: 2015-12-02 10:34:19.000000000 +0100
17
Geändert   : 2016-02-04 21:54:24.696797378 +0100
18
 Geburt    : -

Wie man sieht behauptet 'chroot' das '/mnt/bin/bash' im chroot nicht 
Existiert, aber wie man mit stat sieht ist diese eindeutig vorhanden. 
Was könnte das sein? Im Anhang ist die Ausgabe von 'strace', 'mount', 
'df' und 'ls */' zu finden.

Auch interessant:
1
root@panther:/vm/tor# chroot /vm/tor/ /mnt/bi
2
chroot: failed to run command ‘/mnt/bi’: No such file or directory
3
root@panther:/vm/tor# chroot /vm/tor/ /mnt/bin/
4
chroot: failed to run command ‘/mnt/bin/’: Permission denied
5
root@panther:/vm/tor#

Das zeigt, dass '/mnt/bin/' im chroot vorhanden, und somit '/mnt/' im 
chroot gemountet ist.

Warum wird '/mnt/bin/bash' von 'chroot' nicht gefunden, obwohl es da 
sein müsste? Wie kann ich das Problem beheben?

von Thorsten (Gast)


Lesenswert?

Kannst Du nicht debootstrap verwenden?

von Daniel A. (daniel-a)


Lesenswert?

@Thorsten (Gast)

Danke! Das Kommando kannte ich noch nicht. Jetzt geht das chroot. Das 
Problem entsteht scheinbar wenn die /lib* Verzeichnisse nicht da sind, 
aber warum hat strace mir das nicht angezeigt?

von strace (Gast)


Lesenswert?

strace ist dein Freund

von knollo (Gast)


Lesenswert?

Hallo !
Ich würde mal sagen wenn Du mit chroot nach /vm/tor wechselst, ist 
dieses dann Dein Wurzelverzeichnis. Also muß sich die Shell nun unter 
/vm/tor/mnt/bin/bash befinden, da alles was weiter oben nicht mehr 
sichtbar ist. Bei der Gentoo-Installation werden vor dem chrooten die 
wichtigsten Dateien in die neue Umgebung kopiert. Dann läuft auch die 
Shell MfG

von Daniel A. (daniel-a)


Lesenswert?

strace schrieb:
> strace ist dein Freund

Na scheinbar eben nicht, oder findest du im angehängten 'strace' 
irgendetwas das auf den versuch, eine Library im chroot zu laden 
hindeutet?

knollo schrieb:
> Hallo !
> Ich würde mal sagen wenn Du mit chroot nach /vm/tor wechselst, ist
> dieses dann Dein Wurzelverzeichnis. Also muß sich die Shell nun unter
> /vm/tor/mnt/bin/bash befinden

Das ist Sie, steht übrigens auch im 1. Beitrag oben:
1
root@panther:/vm/tor# stat mnt/bin/bash
2
  Datei: 'mnt/bin/bash'
3
  Größe: 1037440     Blöcke: 2032       EA Block: 4096   reguläre Datei
4
...

knollo schrieb:
> Bei der Gentoo-Installation werden vor dem chrooten die
> wichtigsten Dateien in die neue Umgebung kopiert. Dann läuft auch die
> Shell MfG

Ja, dass habe ich auch schonmal gemacht.

: Bearbeitet durch User
von Thorsten (Gast)


Lesenswert?

Btw. kennst Du schroot schon?
Das nimmt Dir einen Großteil der Arbeit beim Umgang mit chroots ab, die 
sonst manuell anfallen würde.

von Ralf D. (doeblitz)


Lesenswert?

Daniel A. schrieb:
> @Thorsten (Gast)
>
> Danke! Das Kommando kannte ich noch nicht. Jetzt geht das chroot. Das
> Problem entsteht scheinbar wenn die /lib* Verzeichnisse nicht da sind,
> aber warum hat strace mir das nicht angezeigt?

Weil das Problem vorher auftritt: dir fehlt vor allem der dynamische 
Lader, der vor dem Start des Programms (also der bash) die dynamischen 
Referenzen auflöst. Und dessen Funktion wird AFAIK von strace noch nicht 
erfaßt.

Mit einer rein statisch gelinkten bash (so etwas hat man früher gerne 
für Notfälle zur Systemreparatur bereitgehalten) wäre dieses Problem 
nicht aufgetreten.

von Daniel A. (daniel-a)


Lesenswert?

@Ralf Döblitz (doeblitz)

Danke, damit ist mir nun alles klar.


Thorsten schrieb:
> Btw. kennst Du schroot schon?

Nein, das kannte ich noch nicht, scheint aber wirklich praktisch zu 
sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.