在 chroot 嘗試期間,我收到此錯誤:“chroot:無法運行命令 '/bin/bash':Exec 格式錯誤”

在 chroot 嘗試期間,我收到此錯誤:“chroot:無法運行命令 '/bin/bash':Exec 格式錯誤”

我按照本教學的說明進行操作如何:從 Live CD 清除並重新安裝 Grub 2,當我在步驟 1 中啟動命令時遇到錯誤時

sudo chroot /mnt/temp

錯誤如下:

chroot: failed to run command `/bin/bash': Exec format error

這是從哪裡來的?我怎樣才能通過?

答案1

驗證您使用的 Live CD 是否正確。例如,驗證您使用的不是 32 位元 CD,而是 64 位元 CD。您需要 64 位元核心才能運行 64 位元程式碼,因此請檢查您的體系結構。

假設您安裝了要 chroot 的系統/媒體/sda1,要確定架構,您可以:

ls /media/sda1/*

如果您在輸出中看到 lib64,則它可能是 64 位元系統

答案2

我在為armhf arch製作圖像時遇到了同樣的問題。我必須安裝qemu-user-static然後將其複製到 chroot bin 資料夾。

sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin

你可能需要跑

systemctl restart systemd-binfmt.service

那你應該能夠 chroot 進入環境

答案3

這個錯誤表示您的監獄 ( /mnt/temp) 不包含 bash shell,或不包含執行 bash shell 所需的函式庫。

如果您使用以下內容創建了監獄:

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

您可能打算這樣做:

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

但是,作為問題的技術答案,請嘗試:

cp -r /bin /lib /mnt/temp

這應該允許您成功 chroot,此時您可以做其他事情。

但這樣做會帶來大約一百萬個錯誤,幾乎可以肯定你不想這樣做。創建監獄時使用 minbase,或在空白目標(例如虛擬機器)上安裝 ubuntu 並創建整個系統的 tar 存檔,然後將其解壓縮為/mnt/temp.

答案4

確實這是64位32位的不相容。

雖然與

cp /bin/bash /mount/temp/tmp

(將 32 位元 exec 複製到tmp目錄中的新根目錄

chroot /mount/temp /tmp/bash

chroot很好,所有命令仍然失敗。你必須把它們全部複製一遍。

相關內容