जब मैं chroot
कमांड चलाता हूं तो एक त्रुटि दी जाती है:
failed to run command ‘/bin/bash’: No such file or directory
जब मैं chroot
कमांड चलाता हूं तो एक त्रुटि दी जाती है:
failed to run command ‘/bin/bash’: No such file or directory
जवाबों:
इस त्रुटि का मतलब है कि चेरोट के अंदर कोई /bin/bash
निर्देशिका नहीं है । सुनिश्चित करें कि आप इसे उस स्थान पर इंगित करते हैं जहाँ (या अन्य शेल का) निष्पादन योग्य है ।bash
chroot
अगर आपने /mnt/somedir/usr/bin/bash
अमल किया हैchroot /mnt/somedir /usr/bin/bash
/root/.bashrc
या /root/.bash_profile
में कुछ असफल कमांड / लाइन के कारण हो सकता है chroot
। क्या आप अस्थायी रूप से इन फ़ाइलों का नाम बदल सकते हैं? आप यह भी सुनिश्चित कर सकते हैं कि bash
निष्पादन योग्य ( chmod +x /chroot/bin/bash
) है?
मैं /bin/bash
अंदर निर्देशिका को काट दिया था , लेकिन मेरे पास / lib और / lib64 इसके अंदर नहीं था। चेरोट का संदेश अधिक वर्णनात्मक हो सकता है। "ऐसी कोई फ़ाइल या निर्देशिका नहीं" वास्तव में इसका मतलब है "मैं इसे नहीं चला सकता ..."।
/bin/bash
libc, ld-linux, libdl आदि पर निश्चित रूप से निर्भर करता है, आप ldd /bin/bash
यह देखने के लिए उपयोग कर सकते हैं कि इसे किन पुस्तकालयों की आवश्यकता है।
1) आप mount -o bind
चेरोट 2 के तहत इन निर्देशिकाओं को कर सकते हैं) या आप इन पुस्तकालयों को चेरोट में कॉपी कर सकते हैं, यदि आप चिरोट एनव पर भरोसा नहीं करते हैं तो उन्हें भ्रष्ट न करें, जैसे:
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
$SHELL
डिफ़ॉल्ट रूप से आपके पर्यावरण चर में सेट किए गए शेल को शुरू करने की कोशिश करता है , लेकिन यह आपके नए रूट डायर में इसे ढूंढता है, जिसमें ऐसा नहीं लगता है /bin/bash
, इसलिए यह शुरू नहीं हो सकता है।
आप एक रूट के रूप में बस इसे जोड़कर नए रूट के अंदर एक और प्रोग्राम शुरू करने के लिए चिरोट को बता सकते हैं:
chroot /your/new/root /bin/foo --options...
ध्यान दें कि कमांड का पथ आपके नए रूट के अंदर व्याख्यायित होता है , इसलिए इस उदाहरण में वास्तव में बुलाया गया प्रोग्राम है/your/new/root/bin/foo
मुझे एक ही त्रुटि मिल रही थी जब एक दूरस्थ सर्वर पर एक काटे गए खाते में ssh करने की कोशिश कर रहा था। मेरे मामले में, मुझे दूरस्थ lib64 निर्देशिका में निम्न फ़ाइल याद आ रही थी। सर्वर Centos6.9 है
ld-linux-x86-64.so.2
यह निम्नलिखित को निष्पादित करके तय किया गया था:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jail
यह तय है, मैं दोनों lib और lib64 से कुछ की जरूरत है, और मैं वास्तव में क्या पता करने के लिए परेशान नहीं किया। (शायद इसलिए कि मैंने मल्टीकार सक्षम किया था)
यदि आप एक क्यूर संकलन कर रहे हैं तो आपको qemu सिम्युलेटर का उपयोग करने की आवश्यकता है जो कि qemu-arm-static (मैं armhf के लिए यह कर रहा हूँ) को mnt / somedir / usr में कॉपी / mnt / somedir / bin / bash चला सकता हूँ। / बिन तुम चूर चूर कर सकोगे।
अधिक जानकारी के लिए इसे देखें: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html