Podczas próby wykonania chroot wystąpił błąd: „chroot: nie można uruchomić polecenia„ / bin / bash ”: błąd formatu wykonania”


Odpowiedzi:


22

Sprawdź, czy używasz właściwej płyty Live CD. Na przykład sprawdź, czy nie używasz 32-bitowej płyty CD zamiast 64-bitowej płyty CD. Do uruchomienia 64-bitowego kodu potrzebujesz jądra 64-bitowego, więc sprawdź swoją architekturę.

Zakładając, że zamontowałeś system do chrootowania w / media / sda1 , aby określić architekturę, którą możesz:

ls /media/sda1/*

jeśli zobaczysz lib64 na wyjściu, prawdopodobnie jest to system 64-bitowy


Jest, ale nadal nie może chroot
Starx

2

Miałem ten sam problem podczas tworzenia obrazu łuku armhf. Musiałem zainstalować, qemu-user-statica następnie skopiować go do folderu bin chroot.

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin

1

Błąd oznacza, że ​​twoja jail ( /mnt/temp) nie zawiera powłoki bash lub nie zawiera bibliotek wymaganych do uruchomienia powłoki bash.

Jeśli utworzyłeś więzienie za pomocą czegoś takiego:

debootstrap --variant=buildd --arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

Prawdopodobnie chciałeś to zrobić zamiast tego:

debootstrap --variant=minbase --arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

Jednak jako techniczną odpowiedź na problem spróbuj:

cp -r /bin /lib /mnt/temp

Powinno to pozwolić ci pomyślnie wykonać chroot, w którym to momencie możesz robić inne rzeczy.

Jest jednak około miliona rzeczy złych w tym działaniu i prawie na pewno nie chcesz tego robić. Użyj minbase podczas tworzenia więzienia lub zainstaluj ubuntu na pustym celu (np. Maszynie wirtualnej) i utwórz archiwum tar całego systemu, do którego następnie rozpakujesz /mnt/temp.


0

Rzeczywiście jest to 64-bitowa 32-bitowa niezgodność.

Chociaż z

cp /bin/bash /mount/temp/tmp

(kopiuje 32-bitowe exec do nowego katalogu głównego w tmpkatalogu

chroot /mount/temp /tmp/bash

chrootjest w porządku, wszystkie polecenia wciąż zawodzą. Będziesz musiał skopiować je wszystkie.


-1

W moim przypadku próbowałem chrootować do 64-bitowej wersji Linuksa, ale mój obecny Linux był 32-bitowy.

Zamontowałem obraz dysku (obraz główny, do replikacji na wielu komputerach).


Ta sama odpowiedź jak powyżej @ GrandOxymore.
Karl Richter

@KarlRichter Podobne, ale nie takie same. Uruchamianie programu 32-bitowego w 64-bitowym systemie operacyjnym nie jest tym samym, co uruchamianie programu 32-bitowego w 64-bitowym środowisku wirtualnym (lub systemie operacyjnym). Mógłbym uruchomić 32-bitowy system operacyjny gościa i działałoby dobrze.
azuer88

-2

Myślę, że w to BŁĄD.

`/ bin / bash '

ale nie

„bin / bash”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.