जब मैं 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निर्देशिका नहीं है । सुनिश्चित करें कि आप इसे उस स्थान पर इंगित करते हैं जहाँ (या अन्य शेल का) निष्पादन योग्य है ।bashchroot
अगर आपने /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/bashlibc, 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