আমি কীভাবে একটি ইন-ট্রি-কার্নেল মডিউল তৈরি করব?


37

লিনাক্স-উত্স -... -র একটি মডিউল রয়েছে যা কনফিগারেশন / বুট / কনফিগ -3.4-trunk-686-pae এ অক্ষম করা হয়েছে যাতে এটি লিনাক্স-চিত্র -... এর অংশ না হয় (এটি ডেবিয়ানে রয়েছে, তবে উবুন্টুর জন্য সমাধানটি একই হওয়া উচিত, বা?), যেমন

# CONFIG_CAN_PEAK_USB is not set

কেউ কীভাবে কেবল সেই কার্নেল মডিউলটি সংকলন করবে, যাতে এটি বিতরণ করা কার্নেলের সাথে ব্যবহার করা যায়?

সম্পর্কিত লিনাক্স-উত্স -... প্যাকেজটি ইতিমধ্যে ইনস্টল করা হয়েছে, সঙ্কুচিত হয়েছে এবং / usr / src / linux এর সাথে লিঙ্ক রয়েছে। /boot/config-3.4-trunk-686-pae /usr/src/linux/.config এ অনুলিপি করা হয়েছে এবং এর মাধ্যমে সংশোধিত হয়েছে

CONFIG_CAN_PEAK_USB=m

সঙ্গে

make
make modules

কার্নেল এবং সমস্ত মডিউল সংকলন করা সম্ভব। তবে কীভাবে কেবলমাত্র সেই নির্দিষ্ট একক মডিউলটি সংকলন করা যায়?

(দ্রষ্টব্য: এছাড়াও কার্নেলটি পূর্বে সংকলন করা দরকার, অন্যথায় আপনি নিম্নলিখিত ত্রুটিটি পান no symbol version for module_layout:)


দয়া করে 14627 এর সদৃশ হিসাবে বন্ধ করুন user ব্যবহারকারী 'রাদু সি' এর উত্তর প্রশ্নের উত্তর দেয়।
mab

আপনি কি depmod -aআগে চেষ্টা করেছিলেন modbrobe?
নাদিয়া

1
নিম্নলিখিত নিবন্ধটিও বিবেচনা করুন: স্ট্যাকওভারফ্লো
ওলেগ কোকরিন

উত্তর:


38

আমারও একই সমস্যা ছিল। আমি ধরে নিলাম আপনার কেবল। কনফিগ অনুলিপি করার জন্য নয়, মডিউল.সাইমভারগুলিও দরকার

ft1000 মডিউলটি সংকলনের জন্য আমার পদক্ষেপগুলি (দেবিয়ান হুইজ 7.1.0 চালানো; কার্নেল 3.2.0-4-686-pae):

aptitude install linux-headers-3.2.0-4-686-pae
aptitude install linux-source-3.2
cd /usr/src/
tar xjf linux-source-3.2.tar.bz2
cd /usr/src/linux-source-3.2
cp ../linux-headers-3.2.0-4-686-pae/Module.symvers .
make oldconfig # it copies .config to ./
vi .config # enable ft1000 module: CONFIG_FT1000=m
make prepare # setup FT1000 as module
make modules_prepare
make SUBDIRS=scripts/mod
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules
cp drivers/staging/ft1000/ft1000-usb/ft1000.ko /lib/modules/3.2.0-4-686-pae/kernel
/drivers/staging/
depmod
modprobe ft1000

4
আমি নিশ্চিত না যে সাবডিরস এখনও ঠিক আছে কিনা। এটা আমার জন্য উপেক্ষা করা হয়েছিল। Kernel.org/doc/Docamentation/kbuild/modules.txt পড়ার পরে আমি ব্যবহার করে চেষ্টা করেছি make M=/path/to/moduleযা দেখে মনে হচ্ছে এটি কাজ করে।
ক্ষতিকারক

আইএম একটি পৃথক মডিউল (কেবলমাত্র একটি বিদ্যমান আইডিওটিতে একটি ইউএসবি আইডি যুক্ত করা হচ্ছে) সংশোধন করার চেষ্টা করছে যখন আমি এটি সংকলন করি তখন আমি কোনও ত্রুটি পাই না তবে আমি এটি sertোকানোর সময় কেন আমি অবৈধ মডিউল ফর্ম্যাট পেতে পারি ?!
জিব্রি

14

শীর্ষ-স্তরের উত্স ডিরেক্টরিতে, কেবল মডিউল নাম বা মডিউল ডিরেক্টরিতে পথ তৈরি করুন, যেমন:

make drivers/net/can/usb/peak_usb/

বা আরও সহজ উদাহরণের জন্য (ইন্টেল ই 1000 ইথারনেট ড্রাইভার):

make drivers/net/ethernet/intel/e1000/e1000.ko

কেবল করছে: make drivers/net/can/usb/peak_usb/pcan_usb.koকেবলমাত্র প্যাকেন_ ইউএসবি.ও তৈরি করেছে। এরকম make drivers/net/can/usb/peak_usb/ && make drivers/net/can/usb/peak_usb/pcan_usb.koপ্রনয়ন এটা কিন্তু insmod অভিযোগ Error: could not insert module drivers/net/can/usb/peak_usb/peak_usb.ko: Invalid module format। dmesg:peak_usb: no symbol version for module_layout
mab

আপনি কি সেই নির্দিষ্ট কার্নেলটি চালাচ্ছেন এবং আপনি ইতিমধ্যে একবার কার্নেলটি কম্পাইল করেছেন? দয়া করে চেষ্টা করুন modprobe
ইশ

আমি প্যাকেজড কার্নেলটি চালাচ্ছি। সম্পূর্ণ কার্নেল কাজ সংকলন। তবে আমি সম্পূর্ণ কার্নেলটি কেবল নির্দিষ্ট কার্নেল মডিউলটি সংকলন না করার চেষ্টা করছি। এমন কোনও মেক টার্গেট রয়েছে যা একটি একক মডিউল সংকলন 'প্রস্তুত' করে? modprobe একই ত্রুটি দেখায়।
mab

6
মতে Stackoverflow আপনি শুধু ব্যবহার করতে পারেন make modules SUBDIRS=drivers/net/can/usb/peak_usbবা অন্য কোন subdir। এটি এখানে কাজ করে।
ট্রেভিও

0

এতটা সহজ: (উদাহরণস্বরূপ, ft1000 ড্রাইভারকে চিত্রিত করুন, এটি যদি তাত্ক্ষণিক না হয় তবে কয়েক মিনিট সময় নিতে হবে)

cd /usr/src/kernel-sources
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules
# Enable the ft1000 module: CONFIG_FT1000=m  on the config with 
make xconfig # or "make menuconfig" then save
make prepare
make modules_prepare
make SUBDIRS=scripts/mod
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules
make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules_install

তারপর আপনার সাথে মডিউল লোড করতে পারেন modprobeপরেdepmod

দ্রষ্টব্য: মডিউল নির্ভরতার উপর নির্ভর করে আপনাকে সম্পূর্ণ কার্নেলটি পুনর্নির্মাণের প্রয়োজন হতে পারে

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