Boot.img कैसे निकाले?


15

मैं boot.imgAndroid छवि की फ़ाइल में सामग्री देखने का प्रयास कर रहा हूं ।

मैं googled और इस लेख को निकालने के लिए मिला system.img, लेकिन यह काम नहीं करता है boot.img। जब यह करने की कोशिश की जा रही है, तो यह boot.imgनिम्नलिखित दिखा रहा है:

Invalid sparse file format at header magi
Failed to read sparse file

है simg2imgकेवल निकालने के लिए इस्तेमाल किया system.img?

  1. यदि हां, तो निकालने के लिए कोई अन्य विधि है boot.img?
  2. यदि नहीं, तो निकालने के लिए क्या समस्या है boot.img?

कृपया विशिष्ट लिनक्स वितरण और कर्नेल संस्करण की पहचान करें।
mdpc

जवाबों:


19

boot.img एक छोटी (ish) फ़ाइल है जिसमें दो मुख्य भाग होते हैं।

          * kernel(important for android)
          * ramdisk( a core set of instruction & binaries)

बूट करें। अनपैक करें:

इसमें निम्नलिखित चरण शामिल हैं:

  1. उपकरण का उपयोग कर डाउनलोड करें wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. फ़ाइल का उपयोग कर निकालें tar xvzf android_bootimg_tools.tar.gz

    इसमें twoबायनेरिज़ शामिल हैं :

           * unpackbootimg
           * mkbootimg
    

3. फिर निष्पादित ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk

हम निम्नलिखित कमांड का उपयोग करके भी रैमडिस्क निकाल सकते हैं

gunzip -c boot.img-ramdisk.gz | cpio -i

फ़ाइलों को बदलने के बाद, हम फिर से उन फ़ाइलों को boot.img के रूप में पैक कर सकते हैं mkbootimg

मज़े करो!


1
मुझे तीसरे चरण में त्रुटि हो रही है कृपया मेरी मदद करें ... टर्मिनल का कहना है कि unpackbootimg कमांड नहीं मिली
राहुल मैट

1
यहां मिंट 17 पर चरण 3 के लिए एक ही त्रुटि हो रही है। उन्हें सुडो द्वारा चलाने की कोशिश की और कोई फायदा नहीं हुआ।
निस

चरण 3 में, सुनिश्चित करें कि output_pathपहले से मौजूद है, अन्यथा unpackbootimgसीगफॉल्ट होगा।
अल्दावीवा

2
उपकरण के लिए लिंक मर चुका है।
Addison Crump

1
इसके लिए ठीक करें: "unpackbootimg कमांड नहीं मिला", आप 64 बिट मशीन पर 32 बिट निर्भरता के बिना 32 बिट बाइनरी चला रहे हैं। उन्हें "apt-get install gcc-multilib" के साथ स्थापित करें
WHOL

6

boot.imgएक संकुचित फ़ाइल सिस्टम छवि नहीं है system.img। यह बूटलोडर द्वारा पढ़ा जाता है, और इसमें कर्नेल छवि और रैमडिस्क छवि की तुलना में थोड़ा अधिक होता है।

कुछ बाइनरी वितरण कर्नेल और रैमडिस्क छवियों को अलग से शिप करते हैं। उस मामले में आपको कुछ भी करने की आवश्यकता नहीं है boot.img, बस एक नए के साथ पुन: उत्पन्न करें mkbootimg

यदि आप एक से निकालने के बारे में जानकारी की जरूरत है boot.img, की कोशिश split_bootimg(द्वारा विलियम एंक , के माध्यम से एंड्रॉयड विकि )।


अब लिंक split_bootimgमान्य नहीं है।
नाथन उस्मान

@NathanOsman विलियम एनक के पेज पर प्रतिलिपि के लिए एक लिंक द्वारा प्रतिस्थापित।
गिल्स एसओ- बुराई को रोकें '

4

मैं ओपनसेप का उपयोग करता हूं। मैंने abootimg इंस्टॉल किया है। यदि आप निकालना चाहते हैं (बूट | रिकवरी) .img ऐसे चलाएं:

abootimg -x (boot|recovery).img

फिर आपको अगली फाइलें मिलती हैं: bootimg.cgf, zImage और initrd.img अगर आप अपनी पसंद की चीजें पैक करना चाहते हैं

abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img

फिर आपको (बूट | रिकवरी) मिलेगा ।img

का आनंद लें


1

आप Android बूट छवि को निकालने और फिर से पैक करने के लिए निम्नलिखित टूल का उपयोग कर सकते हैं

$ git clone https://github.com/cfig/Android_boot_image_editor.git

क्लोन किए गए गिट रिपॉजिटरी में अपने boot.img को कॉपी करें। Daud:

$ ./gradlew unpack

पहली बार चलाने के लिए इंटरनेट से आवश्यक कामों को डाउनलोड करना होगा, धैर्य रखें। आप इस तरह से "बिल्ड / अनज़िप_बूट /" सामग्री प्राप्त कर सकते हैं:

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root

यह उत्तर है, क्योंकि यह कोड और परियोजना वर्तमान और रखरखाव है।
गेब्रियल मेला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.