কিভাবে Module.symvers জেনারেট করবেন?


14

আমি সম্প্রতি আনপ্যাকিং কার্নেল-উত্স আরপিএম অফ-সিস্টেমের (ওপেনসুস) দিয়েছি ? ; এবং এটি আমার মেশিনে 10 ঘন্টা সময় নিয়েছে, আমার আশ্চর্যরূপে কল্পনা করুন যে সেখানে বর্ণিত প্রক্রিয়াটি করার পরে, আমি Module.symversকোথাও খুঁজে পাচ্ছি না !

আমি যখন "Module.symvers উত্পন্ন" অনুসন্ধান করি তখন আমি এটি পাই:

দ্রষ্টব্য: "মডিউল_প্রেপার"
CONFIG_MODVERSIONS সেট করা থাকলেও মডিউল.সাইভার্স তৈরি করবে না ; অতএব,
মডিউল সংস্করণকরণের জন্য একটি সম্পূর্ণ কার্নেল বিল্ড সম্পাদন করা প্রয়োজন ।
( লিনাক্স কার্নেল ডকুমেন্টেশন :: কেবিল্ড: মডিউল.টেক্সট )

... তবে আমি সত্যিই এটি পাই না - পূর্ববর্তী ধাপে কার্নেলটি তৈরি হয়নি (উপরে বর্ণিত লিঙ্কে বর্ণিত? আমি নিশ্চিত জানি যে সিসি পুরো * .o এর গোছা তৈরি করতে 10 ঘন্টা লেগেছিল) ফাইলগুলি এবং এলডি তাদের লিঙ্ক করার জন্য, তাই কিছু অবশ্যই তৈরি করা উচিত But তবে যদি তাই হয় তবে কোথায় Module.symvers?

আরও স্পষ্ট ভাষায়, মডিউল.সেমবার্স উত্পন্ন করতে ঠিক কোন আদেশটি কল করতে হবে? আমি জানি যে make prepareকাজ করবে না - তবে আদেশটি কী করবে?


অবগতির জন্য, openSUSE থাকাকালীন আপনি পেতে পারেন Module.symversদ্বারা zypper install kernel-source, এবং অন্যান্য লিনাক্স ডিস্ট্রো অনুরূপ। ফাইলটি অবস্থিত lib/modules/xxx/build
সিরিটিস মেজর

উত্তর:


16

Module.symvers(পুনরায়) তৈরী যখন আপনি (পুনরায়) কম্পাইল মডিউল নয়। চালান make modules, এবং Module.symversকার্নেল গাছের গোড়ায় আপনার একটি ফাইল পাওয়া উচিত ।

মনে রাখবেন যে আপনি যদি কেবল দৌড়েছিলেন makeএবং না make modules, আপনি এখনও কোনও মডিউল তৈরি করেন নি। নিজেই কার্নেল থেকে প্রতীকগুলি ( vmlinuxবা একটি আর্কিটেকচার নির্ভর চিত্রের ফর্ম্যাটগুলির মধ্যে রয়েছে) System.map


এর জন্য অনেক ধন্যবাদ, @ গিলস - এর পরেও আমি উত্তর পেয়েছি : মডিউল.সাইমভার্স ফাইল ; এবং এটি make modulesসত্যই তৈরি করতে পারে তা নিশ্চিত করতে পারে Module.symvers। মধ্যে পার্থক্য সে বিষয়ে পরিষ্কারভাবে বর্ণনা জন্যও ধন্যবাদ makeএবং make modules, এবং সম্পর্ক System.map। চিয়ার্স!
sdaau

"মেক" মেশিনে অনুপলব্ধ থাকলে কী হবে?
bzupnick

3
@bzupnick এটি ইনস্টল করুন। লিনাক্স কার্নেল মডিউল তৈরির জন্য এটি অন্যতম প্রয়োজনীয় সরঞ্জাম। অনেকগুলি সফ্টওয়্যার তৈরি করতে প্রয়োজন।
গিলস 'অশুভ হওয়া বন্ধ করুন'

আমি অন্য একটি মেশিন থেকে একটি এলকেএম ক্রস-কম্পাইল করার চেষ্টা করছি। প্রথম বাক্সে জিনিসগুলি ইনস্টল করা সম্ভব নয়।
bzupnick

@bzupnick আপনার যাইহোক মডিউলটি তৈরি করতে হবে। এটি বিল্ড মেশিনে সব ঘটছে, টার্গেট মেশিন ছাড়া কিছুই করার নেই insmod
গিলস 'অশুভ হওয়া বন্ধ করুন'

4

ডেরেক মলয়ের নমুনা এলকেএম সংকলন করার সময় আপনি যে সতর্কতাটি পেয়েছেন তা গুগল করে এই প্রশ্নটি খুঁজে পেয়েছে এমন লোকদের জন্য: আপনি কেবল খালি দিয়ে এটি তৈরি করতে পারেন touch Modules.symvers। যদি আপনার কার্নেলটি রূপান্তরগুলি ব্যবহার করে না (অপারেটিং সিস্টেম দ্বারা ব্যবহৃত সিআরসিগুলি মডিউলগুলি কার্নেলের সাথে মেলে তা নিশ্চিত করতে সহায়তা করে) এবং আপনার মডিউলের অন্যান্য মডিউলে কোনও নির্ভরতা না রাখে, সতর্কতা দমন করার জন্য এটি যথেষ্ট ভাল।

WARNING: Symbol version dump ./Module.symvers
         is missing; modules will have no dependencies and modversions.

খালি ফাইলটি 0x00000000জিসিসি দ্বারা উত্পন্ন উত্স হিসাবে ঠিক যেমন কোনও রূপান্তর ছাড়াই একটি সিস্টেমে একই সিআরসি মান সহ সমস্ত চিহ্ন রয়েছে।


1

সেন্টোস এবং অন্যান্য রেডহ্যাট রূপগুলিতে কেবল আপনার চলমান কার্নেলের জন্য সংশ্লিষ্ট ফাইলটি বের করুন:

zcat /boot/symvers-$(uname -r).gz > ./Module.symvers

উবুন্টু এবং অন্যান্য ডিবিয়ান রূপগুলিতে, ফাইলগুলি স্বয়ংক্রিয়ভাবে সন্ধান করতে পারে। তবে আপনার যদি এটির প্রয়োজন হয় তবে ফাইলটি এখানে রয়েছে:

/usr/src/linux-headers-$(uname -r)/Module.symvers

আমি linux-headers-$(uname -r)ফোল্ডারটি খুঁজে পাচ্ছি না
কিং স্টোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.