ในระหว่างความพยายาม chroot ฉันได้รับข้อผิดพลาดนี้:“ chroot: ล้มเหลวในการเรียกใช้คำสั่ง '/ bin / bash': ข้อผิดพลาดการจัดรูปแบบ Exec”


20

ฉันทำตามคำแนะนำของบทช่วยสอนนี้HOWTO: ล้างข้อมูลและติดตั้ง Grub 2 ใหม่จาก Live CDเมื่อฉันพบข้อผิดพลาดในขั้นตอนที่ 1 เมื่อฉันเปิดใช้งานคำสั่ง

sudo chroot /mnt/temp

ข้อผิดพลาดดังต่อไปนี้:

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

สิ่งนั้นมาจากไหน ฉันจะผ่านได้อย่างไร

คำตอบ:


22

ตรวจสอบว่าคุณใช้ Live CD ที่ถูกต้อง ตัวอย่างเช่นตรวจสอบว่าคุณไม่ได้ใช้ซีดี 32 บิตแทนที่จะเป็นซีดี 64 บิต คุณต้องใช้เคอร์เนล 64 บิตเพื่อเรียกใช้รหัส 64 บิตดังนั้นให้ตรวจสอบสถาปัตยกรรมของคุณ

สมมติว่าคุณติดตั้งระบบของคุณเพื่อ chrooted ใน/ media / sda1เพื่อพิจารณาสถาปัตยกรรมที่คุณสามารถ:

ls /media/sda1/*

ถ้าคุณเห็น lib64 ในผลลัพธ์มันอาจเป็นระบบ 64 บิต


มันเป็น แต่ก็ยังไม่สามารถ chroot
Starx

2

ฉันมีปัญหาเดียวกันเมื่อสร้างภาพสำหรับ armhf arch ฉันต้องติดตั้งqemu-user-staticแล้วคัดลอกไปยังโฟลเดอร์ chroot bin

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

1

ข้อผิดพลาดหมายความว่าคุกของคุณ ( /mnt/temp) ไม่มีเปลือก bash หรือไม่มีไลบรารีที่จำเป็นในการเรียกใช้ 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 เมื่อคุณสร้างคุกหรือติดตั้งอูบุนตูเป้าหมายที่ว่างเปล่า (เช่น. เครื่องเสมือน) และสร้างเก็บ tar /mnt/tempของระบบทั้งหมดซึ่งคุณขยายเข้าไปใน


0

อันที่จริงนี่เป็นความเข้ากันไม่ได้ 64- บิต 32- บิต

ถึงแม้ว่าจะมี

cp /bin/bash /mount/temp/tmp

(คัดลอก exec แบบ 32 บิตไปยังรูทใหม่ในtmpไดเรกทอรี

chroot /mount/temp /tmp/bash

chrootไม่เป็นไรคำสั่งทั้งหมดยังคงล้มเหลว คุณจะต้องคัดลอกพวกเขาทั้งหมด


-1

ในกรณีของฉันฉันพยายาม chroot เป็น Linux เวอร์ชัน 64 บิต แต่ Linux ปัจจุบันของฉันคือ 32 บิต

ฉันติดตั้งดิสก์อิมเมจ (อิมเมจต้นแบบสำหรับการจำลองบนเครื่องหลายเครื่อง)


คำตอบเดียวกับข้างบน @ GrandOxymore
Karl Richter

@KarlRichter คล้ายกัน แต่ไม่เหมือนกัน การรันโปรแกรม 32 บิตในระบบปฏิบัติการ 64 บิตนั้นไม่เหมือนกับการรันโปรแกรม 32 บิตในสภาพแวดล้อมเสมือน 64 บิต (หรือ OS) ฉันสามารถใช้ระบบปฏิบัติการ 32 บิตสำหรับแขกและมันก็จะทำงานได้ดี
azuer88

-2

ฉันคิดว่าเป็นข้อบกพร่อง

`/ bin / ทุบตี'

แต่ไม่

'bin / ทุบตี'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.