আমি কীভাবে ভিএমলিনজকে ভিএমলিনাক্স থেকে সঙ্কুচিত করব?


20

আমি ইতিমধ্যে আনপ্রেস, জিজিপ এবং গুগলের ফলাফল হিসাবে উপস্থিত সমস্ত অন্যান্য সমাধানগুলি চেষ্টা করেছি এবং এগুলি আমার পক্ষে কার্যকর হয়নি।

জিজেড স্বাক্ষরের জন্য কেবল চিত্র সন্ধান করতে - 1f 8b 08 00

> od -A d -t x1 vmlinuz | grep '1f 8b 08 00'
0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45

সুতরাং ইমেজ শুরু হয় 24576+8 => 24584। তারপরে কেবল বিন্দু থেকে চিত্রটি অনুলিপি করুন এবং এটি সংক্ষেপিত করুন -

> dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux
1450414+0 records in
1450414+0 records out
1450414 bytes (1.5 MB) copied, 6.78127 s, 214 kB/s

অনলাইনে ফোরাম থেকে এই নির্দেশাবলী পেয়েছেন: http://www.codeguru.com/forum/showthread.php?t=415186

এই প্রক্রিয়াটি আমার পক্ষে কাজ করে না এবং ত্রুটিগুলি দিয়ে শেষ করে যা ফাইলগুলি 0024576 এবং পরবর্তী সমস্ত নম্বর খুঁজে পাওয়া যায় নি।

আমি কীভাবে ভিএমলিনজ থেকে ভিএমলিনাক্স আহরণ করতে এগিয়ে যেতে পারি?

ধন্যবাদ.

সম্পাদিত: এটি বিপরীত প্রকৌশল প্রশ্ন। কোনও আরপিএম ইনস্টল করতে বা পুনরায় সংযোগ করতে আমার ডিস্ট্রোতে অ্যাক্সেস নেই। আমি ভিএমলিনুজ ছাড়া আর কিছুই শুরু করি না।


2
আপনি কেন এটা করতে চান?
ঝাঁকুনি

এটি আসলে এমন এক বন্ধুর জন্য যাঁর সাথে এটির কিছু করতে হয়েছিল। প্রশ্নটি আকর্ষণীয় বলে মনে হয়েছিল এবং আমি আমার একাডেমিক আগ্রহের জন্য এটি অনুসরণ করেছি। এর বিকল্প হ'ল কার্নেল তৈরি করা: - /

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

উত্তর:


30

হতে পারে আপনি ভুল বোঝেন যে এই পোস্টটির লেখক মানে কি।

  1. vmlinuzফাইল যাতে আপনি যেখানে gzipped বিষয়বস্তু শুরু জানতে প্রয়োজন, gzipped বিষয়বস্তু ব্যতীত অন্যান্য বিষয়ের ধারণ করে। এটি করতে, ব্যবহার করুন:

    od -A d -t x1 vmlinuz | grep '1f 8b 08 00'
    

    এটি যা করে তা হ'ল সেই ফাইলটিতে আপনি gzip শিরোনামটি খুঁজে পেতে পারেন show আউটপুটটি দেখে মনে হচ্ছে:

    0024576 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45
    

    এর অর্থ এই যে 0024576(অন্ততপক্ষে পোস্টের লেখকের জন্য, আপনার কোনও কোনওরকম সম্পূর্ণ আলাদা হতে পারে) vmlinuz, আপনি বাইনারি মানগুলি খুঁজে পাবেন " 24 26 27 00 ae 21 16 00 1f 8b 08 00 7f 2f 6b 45"। আপনি খুঁজছেন 1f 8b 08 00, যা 9 টি অক্ষর থেকে পাওয়া যাবে বা এর পরে 0024576 + 8(0 থেকে গণনা শুরু করুন) = 24584

  2. এখন আপনি যখন জানলেন যে গিজিপযুক্ত সামগ্রীটি কোথা থেকে শুরু হয় (অবস্থানে 24584) আপনি ddসেই জিজেডযুক্ত সামগ্রীটি বের করতে এবং এটি থেকে আনজিপ করতে পারেন। এটি করতে, ব্যবহার করুন:

    dd if=vmlinuz bs=1 skip=24584 | zcat > vmlinux
    

    প্রথম কমান্ড সেই অবস্থানটি সন্ধান করবে এবং স্টাডআউটে সমস্ত কিছু অনুলিপি করবে। zcatতারপরে এটি স্টিডিন থেকে প্রাপ্ত সমস্ত কিছুই সঙ্কুচিত করবে এবং সঙ্কুচিত স্ট্রিংটিকে স্টডআউটে আউটপুট দেবে। তারপরে উইলটির আউটপুটটিকে নতুন নামের একটি ফাইলে >পুনর্নির্দেশ করবে ।zcatvmlinux


ধন্যবাদ! এখন তা বোধগম্য হয়। যাইহোক, '1f 8b 0800' কয়েক সেকেন্ডের মৃত্যুর পরে আমার কার্নেলের জন্য কিছুই ফিরিয়ে আনেনি। স্পষ্টতই কোডটি পরিবর্তন হয়েছে। ম্যাজিক নম্বরগুলির নতুন সেট কীভাবে পাবেন সে সম্পর্কে কোনও পরামর্শ?

@ লর্ড লোহ: দুটি সম্ভাবনা: ১) যাদুবিদ্যার সংখ্যাটি odআউটপুটে সীমারেখা অতিক্রম করে । অনুসন্ধানের জন্য বিগ্রিপ ব্যবহার করুন 1f8b0800। 2) কার্নেলটি পৃথক পৃথক অ্যালগরিদম ব্যবহার করে সংকুচিত হয়। ব্যবহার করে দেখুন fd377a585a00জন্য ভাবে XZ লস বা 425a6839জন্য Bzip2
user1686

@ মাধ্যাকর্ষণ - উত্তরের জন্য আপনাকে ধন্যবাদ। আমি চেষ্টা করেছিলাম। 1f8b0800, fd377a585a00 বা 425a6839 কোনও ফলাফলই ফেরেনি। তাই আমি বাইট দ্বারা যাদু স্ট্রিং বাইট নিচে চপ পর্যন্ত আমি কিছু ফলাফল পেয়েছিলাম শুরু, এবং তারা ম্যাচ শত শত ছিল :-( তাই আমি সাফল্য ছাড়া এখনো আছি।
প্রভু Loh।

এলএমজেএমএ মিনিমডিং . com/… অনুযায়ী "5 ডি 00 00 80" । তবুও আমার পক্ষে কাজ হয়নি।
স্যাম ব্রাইটম্যান

27

1
এটি কি উবুন্টু 14.04 এ উপলব্ধ? আমি এটি গিট রেপোতে দেখেছি, কী উবুন্টু প্যাকেজটি এটি খুঁজে পেতে পারি? - আপনাকে ধন্যবাদ :-)
লর্ড লোহ

@ লর্ডলহ apt-file search extract-vmlinuxবেশ কয়েকটি লিনাক্স কার্নেল শিরোনাম প্যাকেজ দেয় এবং locate extract-vmlinuxএটি আমার স্থানীয় উবুন্টু 18.04 মেশিনে কয়েকটি হিট দেয়: /usr/src/linux-headers-4.15.0-33/scripts/extract-vmlinuxযদিও এতে কিছুই PATHমনে হয় না।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

এআরএম জন্য এটি সঙ্গে ব্যর্থ "নির্যাস-চিহ্নিত কার্নেলের vmlinux: চিহ্নিত কার্নেলের vmlinux খুঁজে পাওয়া যাচ্ছে না": unix.stackexchange.com/questions/352215/...
সিরো Santilli新疆改造中心法轮功六四事件

7

প্রকৃতপক্ষে, vmlinuzফাইল তৈরির আগে , বেশিরভাগ চিহ্নগুলি ছিনিয়ে নেওয়া হয়। সুতরাং আপনি কোনও সত্য vmlinuxথেকে পুনর্নির্মাণ করতে পারবেন না vmlinuz, ফাইলটি ডিবাগ করার জন্য তেমন কার্যকর হবে না।


2

আমি সাধারণ সমস্যায় পড়েছি - ক্র্যাশের জন্য ভিএমলিনাক্সের সঠিক সংস্করণটি খুঁজছি। পরিবর্তে ভিএমলিনজকে ভিএমলিনাক্সে সংক্ষেপিত করার চেষ্টা করুন।

আরও ভাল সমাধানটি হ'ল: RPM ইনস্টল করুন kernel-debuginfo:, RPM- এ যথাযথ vmlinux ফাইল রয়েছে contains

আরপিএম নামের দিকে মনোযোগ দিন, একাধিক অনুরূপ (বিভ্রান্তিকর) নাম রয়েছে। অতি হতে:kernel-debuginfo-$(version).rpm


1

আধুনিক কার্নেলগুলি সর্বদা (বাস্তবে, সাধারণত নয়) জিজিপ সংকোচিত হয় না। তারা bzip2 বা LZMA ব্যবহার করতে পারে। একটি দ্রুত ওয়েব অনুসন্ধান আমাকে সেই সংকোচনের পদ্ধতিগুলির জন্য যাদু স্ট্রিংগুলি সন্ধান করতে সহায়তা করে না - ডিকম্প্রেশন কোড সহ অন্তর্মুখী শিরোলেখ খুঁজে পাওয়ার জন্য আপনি বেশ কয়েকটি কার্নেল চিত্র পরীক্ষা করে দেখতে পারেন।


1

উপরের ডিকম্প্রেশন লাইনগুলি আমার জন্য কাজ করেছিল এবং অবশ্যই, কার্নেলটি ছিনিয়ে নেওয়া হয়েছিল। সুতরাং সেখানে কোন ভাল তথ্য।

আপনার যদি আপনার পুরানো কার্নেলটিতে পরিবর্তন করতে হয়, যেমন এটি ডিবাগ-এ রাখার মতো হয়, uname -rআপনার কার্নেলটি পুনর্বিবেচনা পেতে এবং এর উত্স পেতে ব্যবহার করুন:

sudo apt-get source linux-image-\`uname -r\`

উত্স /usr/src/linux... cdউত্স গাছের মধ্যে থাকবে এবং:

make oldconfig
make

এটি বর্তমানে চলমান কার্নেলের জন্য কনফিগারযুক্ত ফাইলটি সন্ধান করার চেষ্টা করবে - সাধারণত

/boot/config-\`uname -r\` 

এবং চলমান কার্নেলটি পুনরায় তৈরি করে এই বিল্ডের জন্য এটি ব্যবহার করুন।

আপনি যেভাবে চান এটি তৈরি করুন; প্রয়োজন অনুসারে আনস্ট্র্রিপড কার্নেলের অ্যাক্সেস পান।

উপরের শেলগুলি সম্ভবত ব্যবধানের কারণে gzip ম্যাজিক নম্বরটি পাবেন না। হ্যাঁ তারা এখনও একইভাবে সংকুচিত, যদিও আমি মূল আলোচনার এক বছর পরে লিখছি। আউটপুট এ প্রেরণ করুন lessএবং অনুসন্ধান করুন 1f 8bবা এমনকি 1f। একটি ম্যাচ নির্ধারণ করতে এবং আপনার প্রথম নজির আছে কিনা তা যাচাই করতে ম্যানুয়ালি বাকি বাইটগুলি পরীক্ষা করুন। এটি অফসেটের স্মরণে অফসেট ব্যবহার করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.