
我按照本教學的說明進行操作如何:從 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
很好,所有命令仍然失敗。你必須把它們全部複製一遍。