আরআরডি.আইএমজি পুনঃস্থাপন কিভাবে করবেন?


8

আসল / বুট / ইনটর্ড.আইএমজি- কার্নেল_ভারেbinwalk এই কাঠামোটি দেখায়:

এখানে চিত্র বর্ণনা লিখুন

থেকে 0 থেকে 22528 বাইট cpio সংরক্ষণাগারে নির্দিষ্ট ফোল্ডারের অনুক্রমের শুধুমাত্র GenuineIntel.bin ফার্মওয়্যার রয়েছে নেই। 22528 বাইট
থেকে gzip আর্কিওয়ে উপযুক্ত ফাইল সিস্টেম রয়েছে এবং এই জিজিপটি সিপিআইওতে সংরক্ষণাগারভুক্ত রয়েছে

আনপ্যাকিং এবং সংশোধন করার পরে আমি কীভাবে একইভাবে (একই ফোল্ডারের স্তরক্রমের সাথে) আরআরআরডি.আইএমজি সংকুচিত করতে পারি? এই মূল কাঠামোর মতো:

এখানে চিত্র বর্ণনা লিখুন

মন্তব্য থেকে পরামর্শ পরে:

find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz

binwalk :

এখানে চিত্র বর্ণনা লিখুন

এটি সম্পূর্ণ ভিন্ন কাঠামো।


আপনি চালিত ডিরেক্টরিতে initrd.img নিষ্কাশন করুন। আপনি আপনার জেনুইনআইএনটেল.বিন ফার্মওয়্যারটিকে নির্দিষ্ট ফোল্ডারের শ্রেণিবিন্যাসে ওয়ার্কিং ডিরেক্টরিতে যুক্ত করুন। তারপরে আপনি সংরক্ষণাগারটি পুনরায় তৈরি করুন find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lzযদি সেই পদ্ধতিটি কাজ না করে তবে আপনি কোন আদেশটি দৌড়েছিলেন এবং কী কাজ করছে না তা স্পষ্ট করে বলুন।
প্যান্থার

আপনার সম্পাদনা, একটি ছবি সহ, আপনার সমস্যা সম্পর্কে আমার বোঝার কিছুই যোগ করেনি। আপনাকে জেনুইনআইএনটেল.বিন ফার্মওয়্যারের উপযুক্ত ফাইল কাঠামো এবং অবস্থান সহ একটি নতুন .img এ পুনরায় প্যাকেজ যুক্ত ফাইলটি আপনার কোডে যুক্ত করতে হবে।
প্যান্থার

@ বোদ্ধি.জাজেন যেমন বলেছিলাম এটি আলাদা ফাইল করেছে ...
এডিডি

@ বোধি.জাজেন আপনি কি শেষ পর্যন্ত বুঝতে পারছেন?
এডিডি

1
দেখে মনে হচ্ছে যে initramfs ফাইলটি CPIO সংরক্ষণাগারগুলির একত্রিতকরণ। প্রতিটি সিপিআইও সংরক্ষণাগার সংকুচিত (gzip, xz ইত্যাদি) বা সঙ্কুচিত হতে পারে। আপনার ইনপুট ফাইলটি অফসেট 0 এ একটি সঙ্কোচিত ফাইলের সাথে শুরু হয়, তারপরে এটি 22528 অফসেটে সংক্ষেপিত একটির সাথে অবিরত থাকে Unfortunately দুর্ভাগ্যক্রমে আমি এমন একটি স্ট্যান্ডার্ড সরঞ্জাম সম্পর্কে জানি না যা সম্ভবত সংকুচিত সিপিআইও সংরক্ষণাগারগুলির একটি কাঠামো বের করতে পারে।
pts

উত্তর:


3

আপনি সঙ্গে repackage

cd your_working_directory_with_modifications
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz

দ্বিতীয় কমান্ডটি আরআরডিটির নাম পরিবর্তন করে, আপনি গ্রাব বুট করার সময় যে আরআরডিটি ব্যবহার করবেন তা নির্দিষ্ট করে দিন।

আমি প্রস্তাব দিচ্ছি যে আপনি কাস্টম আরআরডিটি স্থানান্তরিত বা নাম পরিবর্তন করার আগে এটি পরীক্ষা করুন (বুট করুন)।

মন্তব্যে আলোচনা থেকে অতিরিক্ত তথ্য:

প্রথমে আমি মনে করি না আপনি সিপিও / টারের ভূমিকা বুঝতে পেরেছেন। সিপিও এবং টার উভয়ই বেশ কয়েকটি ফাইল এবং / অথবা ডিরেক্টরিগুলি নিয়ে যায় এবং সেগুলি একটি ফাইল বা সংরক্ষণাগারভুক্ত করে।

দ্বিতীয় আমি মনে করি না আপনি সংকোচনের ভূমিকা বুঝতে পেরেছেন, সংক্ষেপণ কেবল ফলস্বরূপ সংরক্ষণাগারটিকে ছোট করে তোলে। সংক্ষেপণের জন্য আপনি যে কোনও সরঞ্জাম ব্যবহার করতে পারেন।

দেখা

https://wiki.ubuntu.com/CustomizeLiveInitrd

https://wiki.gentoo.org/wiki/Initramfs/Guide

তৃতীয়ত, লিনাক্স কার্নেল সিপো ব্যবহার করে পরিবর্তে তারপরে ব্যবহার করে।

দেখা

https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

"কেন তারার চেয়ে সিপিও?" অধ্যায়

সিপিও কেন তার চেয়ে বেশি?

এই সিদ্ধান্তটি ডিসেম্বর, 2001 এ ফিরে এসেছিল The আলোচনাটি এখানে শুরু হয়েছিল:

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html

এবং এখানে শুরু করে একটি দ্বিতীয় থ্রেড তৈরি করেছে (বিশেষত টার বনাম সিপিওতে)

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html

দ্রুত এবং নোংরা সংক্ষিপ্ত সংস্করণ (যা উপরের থ্রেডগুলি পড়ার বিকল্প নয়) হ'ল:

1) সিপিও একটি মান। এটি কয়েক দশক পুরাতন (এটিএন্ডটি দিন থেকে), এবং ইতিমধ্যে লিনাক্সে ব্যবহৃত হয়েছে (আরপিএমের মধ্যে, রেড হ্যাট এর ডিভাইস ড্রাইভার ডিস্ক)। 1996 সাল থেকে এটি সম্পর্কে একটি লিনাক্স জার্নাল নিবন্ধ:

  http://www.linuxjournal.com/article/1213

এটি টারের মতো জনপ্রিয় নয় কারণ cতিহ্যবাহী সিপিও কমান্ড লাইন সরঞ্জামগুলির জন্য _t অবশ্যই_hideous_ কমান্ড লাইন আর্গুমেন্ট প্রয়োজন। তবে এটি সংরক্ষণাগার বিন্যাস সম্পর্কে কোনওভাবেই কিছু বলেনি এবং বিকল্প সরঞ্জাম রয়েছে যেমন:

 http://freecode.com/projects/afio

২) কার্নেল দ্বারা নির্বাচিত সিপিও সংরক্ষণাগার বিন্যাসটি (আক্ষরিক কয়েক ডজন) বিভিন্ন টার আর্কাইভ ফর্ম্যাটের যে কোনওটির চেয়ে সহজ এবং ক্লিনার (এবং এভাবে তৈরি করা এবং পার্স করা সহজ)। সম্পূর্ণ initramfs সংরক্ষণাগার ফর্ম্যাটটি বাফার-ফর্ম্যাট.টেক্সট-এ ব্যাখ্যা করা হয়েছে, যা usr / gen_init_cpio.c- এ তৈরি করা হয়েছিল, এবং init / initramfs.c এ নিষ্ক্রিয়। তিনটিই একসাথে মানব পাঠযোগ্য পাঠ্যের মোট 26k এরও কম অংশে আসে।

3) জিআরইউ প্রকল্পটি টার্কের উপর প্রমিতকরণ উইন্ডোজ জিপকে মানক করার মতোই প্রাসঙ্গিক। লিনাক্স উভয়েরই অংশ নয়, এবং নিজস্ব প্রযুক্তিগত সিদ্ধান্ত নিতে স্বাধীন।

৪) যেহেতু এটি কার্নেলের অভ্যন্তরীণ ফর্ম্যাট, তাই এটি সহজেই
নতুন কিছু হতে পারে । যে কোনও উপায়ে এই ফর্ম্যাটটি তৈরি এবং নিষ্কাশন করতে কার্নেল তার নিজস্ব সরঞ্জাম সরবরাহ করে। একটি বিদ্যমান মান ব্যবহার করাই পছন্দনীয়, তবে প্রয়োজনীয় ছিল না।

৫) আল ভিরো এই সিদ্ধান্ত নিয়েছিলেন (উদ্ধৃতি: "ডারটি নরকের মতো কুৎসিত এবং কার্নেলের দিকে সমর্থন করা যায় না"):

  http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html

তার যুক্তি ব্যাখ্যা:

  http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html
  http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html

এবং, সর্বাধিক গুরুত্বপূর্ণভাবে, initramfs কোড ডিজাইন এবং প্রয়োগ করেছে।


এটি ফোল্ডার কাঠামো সংরক্ষণ করবে না। আমি আসল initrd.img হিসাবে একই কাঠামো চাই। অর্থ -> জেনুইনআইএনটেল.বিনটি কেবল কার্নেল / x86 / মাইক্রোকোড ফোল্ডারে সিপিও দিয়ে সংরক্ষণাগারভুক্ত নয় এবং লিজমা কেন আমি জিজিপ সম্পর্কে বলছি?
এডিডি 25'16

lzma একটি ছোট সংরক্ষণাগার দেয়। আপনি যদি চান gzip ব্যবহার করুন। আপনি কেন সংকোচনের বিষয়ে উদ্বিগ্ন তা আমি নিশ্চিত নই, সংকোচনের সাথে ঠিকঠাক কাজ করা উচিত এবং ডিস্কে একটি ছোট চিত্রের ফলস্বরূপ। আপনি যা পোস্ট করেছেন তা থেকে আপনি কী অর্জন করতে চাইছেন তা নিশ্চিত নয় Not
প্যানথার

মূলত এটি কীভাবে করা হয়েছিল তা জানতে চাই। সম্ভবত অ্যাক্সেসযোগ্যতার কারণে ইন্টেল ফার্মওয়্যার সংকুচিত হয়নি।
এডিডি

প্রায় অবশ্যই সংকুচিত হয়েছিল, আপনি সংরক্ষণাগারটি পরীক্ষা করতে পারেন। সংক্ষেপটি ডিফল্ট হিসাবে ব্যবহৃত হয় কারণ এটি লক্ষণীয়ভাবে পারফরম্যান্সকে প্রভাবিত করে না।
প্যান্থার

কম্প্রেশন সম্পর্কে সিপিও ম্যানুয়ালটিতে কিছুই নেই। গৃহীত উত্তর চেক করুন: superuser.com
প্রশ্নগুলি

3

ঠিক কীভাবে একই initrd.imgসংরক্ষণাগারটি তৈরি করা যায় তা আমি খুঁজে বের করেছি ।

বোধি জাজেন উত্তর সম্ভবত কাজ করবে কারণ এটি সাধারণভাবে পরিচিত সমাধান:

find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz

তবে প্রশ্নটি আলাদা ছিল। এই উত্তরটি ভাল হবে যদি সিপিও আর্কাইভে একটি জিপযুক্ত ফাইল সিস্টেম থাকে তবে এই পরিস্থিতিতে নির্দিষ্ট ফোল্ডার কাঠামোর মধ্যে ইন্টেল ফার্মওয়্যারও রয়েছে যা আমি রাখতে চাই।

একই ফোল্ডার ক্রমবিন্যাস রাখতে তিনটি ধাপ প্রয়োজন:

  1. করুন cpio ছাড়া সহজ -o বিকল্প ফাইল সিস্টেম সংরক্ষণাগার newc বিন্যাস যেমন ইতি পূর্বে সৃষ্টি করেছি হবে। বেস ফোল্ডার:

    find . | cpio -o | gzip -9 > ../base/file_system.gz

  2. কার্নেল / x86 / মাইক্রোকোড / জেনুইনআইএনটেল.বিনযুক্ত নিউক ফর্ম্যাট সহ সঠিক সংরক্ষণাগার তৈরি করুন :

    find kernel/ | cpio -o -H newc > new_initrd.img

  3. যথাযথ new_initrd.img এ জিজেপড ফাইল সিস্টেম সংরক্ষণাগার যুক্ত করুন:

    find base/ | cpio -o >> new_initrd.img


গ্রেট! ধন্যবাদ! +10! তবে আপনি কীভাবে আসল আরআরডিকে আনপ্যাক করবেন?
rth

এছাড়াও, আপনার সমাধানটি কিছুটা আলাদা কাঠামো তৈরি করে। আমি binwalk একেবারে একই tructure পেয়েছেন যখন আমি ধাপে (2) প্রথম করেনি এবং তারপরfind . | cpio -o | gzip -9 >> new_initrd.img
rth

1

আমি সম্প্রতি এই একই প্রশ্নে দৌড়েছি এবং আমার ওয়েব অনুসন্ধান আমাকে এই থ্রেডে নিয়ে গেছে, সুতরাং যদি এই পদক্ষেপগুলি অনুসরণ করে অন্যদের সহায়তা করে তবে এখানে একটি পুরানো প্রশ্নের 2018 সালের উত্তর ...

এটি "সাম্প্রতিক" কার্নেলগুলিতে মনে হয় initrd.img ফাইলটিতে একটি সংকোচিত সিপিও সংরক্ষণাগার থাকতে পারে (যেমন মাইক্রোকোড আপডেট রয়েছে) সাধারণ সংঘবদ্ধ ডিরেক্টরি ট্রিযুক্ত (সংকুচিত) সিপিও সংরক্ষণাগারটিতে প্রিপেন্ড করা থাকতে পারে।

এটি দেবিয়ান উইকির পৃষ্ঠায় সংক্ষেপে আলোচনা করা হয়েছে:
https://wiki.debian.org/initramfs#How_to_inspect_initramfs
, তবে এই ধরণের initrd.img ফাইলের মাধ্যমে পার্স করার জন্য আরও সুনির্দিষ্ট কোডটি পাওয়া যাবে কমান্ডের splitinitramfs()মধ্যে unmkinitramfsফাংশনটিতে পাওয়া যাবে initramfs-tools-coreপ্যাকেজ (যেমন https://git.launchpad.net/ubuntu/+s Source/initramfs- tools/ tree/ unmkinitramfs )।

আমি নিজে এই ধরণের আরআরআরডি.আইএমজি ফাইলটি পুনর্নির্মাণের চেষ্টা করি নি, তবে সেই উইকির পৃষ্ঠার উপর ভিত্তি করে মনে হয় যে ইনিমরাফ বুট স্ক্রিপ্টগুলি সম্পাদনা করতে পারে, তবে কেউ জেনুইনআইন্টেল সংরক্ষণাগারটিকে আনপ্যাক করতে চাইবে না। পরিবর্তে, আপনি যে সিপিও সংরক্ষণাগারটি অন্য কোথাও পৃথকভাবে সংরক্ষণ করতে পারবেন, তারপরে দ্বিতীয় (সংকুচিত) সংরক্ষণাগারটি আনপ্যাক করুন, ডিরেক্টরি ট্রিটি সংশোধন করুন এবং সংক্ষেপিত সিপিও সংরক্ষণাগারটি পুনর্নির্মাণ করুন, তারপরে সদ্য-উত্পন্ন একের সাথে সংরক্ষিত মাইক্রোকোড সংরক্ষণাগারটি সংযুক্ত করুন।

(কোডটি যা মূলত এই "প্রিপেন্ডড" সংরক্ষণাগারটি তৈরি করেছে সেটিতে এটি পাওয়া যায় /usr/share/initramfs-tools/hooks/intel_microcode))


0

উবুন্টুতে initrd.imgজিজিপে সংক্ষেপিত, আমি যখন এটি সম্পাদনা করি তখন এটি সংরক্ষণ করতে চাই। এই হল কিভাবে:

নির্যাস:

zcat /boot/initrd.img-3.19.0-80-generic | cpio --extract

কম্প্রেস:

find . 2>/dev/null | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/initrd.img-3.19.0-80-generic
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.