কার্নেলটি পুনরায় সংকলনের একটি সহজ উপায় কী?


41

আমি উবুন্টু 12.04 x86 64 বিটের অধীনে একটি নতুন কার্নেল সংকলন করতে আগ্রহী।

আমি এই উইকি পৃষ্ঠাটি পেয়েছি যা মূলত এই ব্লগের জন্য একটি আয়না এবং এখানে অনেকগুলি পদক্ষেপ ( গিট ইত্যাদি) রয়েছে যা আমার কাছে অকেজো বলে মনে হয়।

পূর্ববর্তী রিলিজ / ডিস্ট্রোস সহ, আমি একটি .configফাইল তৈরি করতে এবং Makefileপ্রয়োজনের প্রয়োজনে একটি সংশোধন করতাম, তবে কেবল চালান makeএবং এটি শেষ হয়ে যায়।

উবুন্টুর অধীনে এটি করার সহজ উপায় কি আছে?


1
মূল্যবান পরীক্ষা করা: উইকি.উবুন্টু
কলিন ইয়ান কিং

উত্তর:


39

1. apt-get sourceকার্নেলের উবুন্টু সংস্করণটি ডাউনলোড করতে ব্যবহার করুন

apt-get source linux-image-$(uname -r)

একটি ফোল্ডার দেয় যা উদাহরণস্বরূপ:

linux-3.2.0 linux_3.2.0-26.41.dsc
 linux_3.2.0-26.41.diff.gz   linux_3.2.0.orig.tar.gz

সাহসী ডিফের মধ্যে সমস্ত উবুন্টু / ডেবিয়ান কাস্টমাইজেশন রয়েছে।

২. নিজের সাথে একটি স্টক কার্নেল তৈরি .configকরতে, "পুরাতন ধাঁচের" ডেবিয়ান make-kpkgপদ্ধতিটি ব্যবহার করুন

এটিই উইকিতে বর্ণিত বিকল্প পুরাতন পদ্ধতি way

sudo apt-get install kernel-package

আপনি যদি প্রথমবার কার্নেলটি সংকলন করেন:

sudo apt-get build-dep linux-image-$(uname -r)

তারপরে cdউত্স ডিরেক্টরিতে (এখানে, linux-3.2.0), এবং হয় আপনার চলমান কার্নেলের কনফিগারেশন দিয়ে ফাইল make oldconfigতৈরি করতে দৌড়াও .config, বা .configএই ডিরেক্টরিতে তৃতীয় অংশটি অনুলিপি করুন ।

আপনি কোনও পাঠ্য বা গ্রাফিকাল কনফিগারেশন চান কিনা তার উপর নির্ভর করে ইনস্টল করুন:

(পাঠ্য)

sudo apt-get install libncurses5 libncurses5-dev

(গ্রাফিকাল)

sudo apt-get install qt3-dev-tools libqt3-mt-dev

এবং তারপরে চালান:

(পাঠ্য)

make menuconfig

(গ্রাফিকাল)

make xconfig

হয়ে গেলে, কেবল চালান:

fakeroot make-kpkg -j N --initrd --append-to-version=my-very-own-kernel kernel-image kernel-headers

যেখানে Nকত কাজ সমান্তরালভাবে (যদি সিপিইউ সাধারণত নম্বর) চালানোর জন্য, এবং my-very-own-kernelএই বিল্ড সনাক্ত করার জন্য একটি কাস্টম স্ট্রিং।

সম্পন্ন হলে, কার্নেল চিত্র এবং শিরোলেখ ফাইলগুলি পিতামাতার ডিরেক্টরিতে ডেব হিসাবে প্রস্তুত হবে; আপনি এগুলি ইনস্টল করতে পারেন sudo dpkg -i, যা GRUB এন্ট্রি ইত্যাদি যুক্ত করার ক্ষেত্রেও যত্ন নেবে


কেন তারা আপনাকে এই ভিন্নতা সম্পর্কে কিছুই বলবে না, আমার কাছে একটি ভিন্নতা কেবল একটি পৃথক, এতে সবকিছু থাকতে পারে।
ব্যবহারকারী 827992

আমি জানি না, আপনাকে তাদের জিজ্ঞাসা করতে হবে (ক্যানোনিকাল কার্নেল টিমের জন্য গুগল)। আমি কীভাবে এটি তৈরি করব তা আপনাকে কেবল বলেছি;)
ইশ

1
ঠিক আছে, শেষ প্রশ্ন, এই সংকীর্ণ ভিন্নটি কীভাবে প্রয়োগ করবেন? : ডিআই linux-3.2.0ডিরেক্টরীতে গিয়ে চালাতে হবে patch -p1 <../patch.diff?
ব্যবহারকারী 827992

1
আছে কোন প্রয়োজন পরিবর্তন প্রয়োগ করতে; apt-get source ...ইতিমধ্যে আপনার জন্য কি!
ইশ

2
-1 আপনি এটিকে "পুরানো ধাঁচে" বলে থাকেন, আমি একে পুরানো বলে আছি। fakeroot debian/rules editconfigs, fakeroot debian/rules clean, fakeroot debian/rules binaryসঠিক, সমস্যা-মুক্ত উপায়।
আলেকসান্দ্র ডাবিনস্কি

19

পদক্ষেপগুলি এখানে। এই পদ্ধতি উপর ভিত্তি করে তৈরি nixCraft 's কিভাবে: কম্পাইল লিনাক্স কার্নেল 2.6 --but যথেষ্ট আধুনিকীকরণ।

আপনি যে কার্নেলটি তৈরি করতে চান তার উত্স কোডটি ডাউনলোড করুন এবং এক্সট্রাক্ট করুন।

আপনি কার্নেল.আরজে আপস্ট্রিম কার্নেল উত্স কোড পেতে পারেন । সংস্করণ 3.16.1 (এই লেখার সর্বশেষ স্থিতিশীল কার্নেল) এখানে ব্যবহৃত হবে। সুতরাং আপনি যদি আলাদা সংস্করণ ব্যবহার করেন তবে আপনাকে এই আদেশগুলি সংশোধন করতে হবে to

কার্নেল উত্স কোডটি বর্তমানে সরবরাহ করা হয়েছে। আলকাতরাxz সংরক্ষণাগার, সুতরাং আপনি যে সংস্করণটি চান তার দ্বারা "tar.xz" লিঙ্কটি ক্লিক করুন:

ডাউনলোডের জন্য উপলব্ধ কার্নেল উত্স সংরক্ষণাগার দেখায় কার্নেল.আর্গ থেকে স্ক্রিনশট

cdআপনি সংরক্ষণাগারটি যে ডিরেক্টরিটিতে ডাউনলোড করেছেন সেই ডিরেক্টরিতে যুক্ত হওয়ার পরে আপনি এটি দিয়ে এটি বের করতে পারেন tar:

tar xf linux-3.16.1.tar.xz

প্রয়োজনীয় বিল্ড সরঞ্জামগুলি ইনস্টল করুন এবং কার্নেল কনফিগারেশন সম্পাদন করুন।

উবুন্টুর সরঞ্জামচেনটি পেতে gcc, ( makeএবং আরও অনেক কিছু) বিল্ড-অপরিহার্যবিল্ড-অপরিহার্য ইনস্টল করুন মেটাপ্যাকেজ ইনস্টল করুন :

sudo apt-get update
sudo apt-get install build-essential

আপনার কর্নেলের মধ্যে যা যায় তা কনফিগার করার দুটি যুক্তিসঙ্গতভাবে ব্যবহারকারী-বান্ধব উপায়গুলি makeলক্ষ্যগুলি xconfigএবং সরবরাহ করে menuconfig

xconfigএকটি গ্রাফিকাল কনফিগারেশন ইউটিলিটি চালায়, যখন menuconfigপাঠ্য-ভিত্তিক (যেমন, এটির ইন্টারফেসটি আপনার টার্মিনালের মধ্যে পুরোপুরি প্রদর্শিত হয়)। প্রত্যেকটির জন্য কিছু অতিরিক্ত সফ্টওয়্যার প্রয়োজন যা বিল্ড-অপরিহার্য দ্বারা সরবরাহ করা হয়নিবিল্ড-অপরিহার্য ইনস্টল করুন

গ্রাফিক্যালি কনফিগার করতে , libqt4-devLibqt4-dev ইনস্টল করুন এবং pkg-configPkg-config ইনস্টল করুন ইনস্টল করুনএবং রান করুনmake xconfig:

sudo apt-get install libqt4-dev pkg-config
make xconfig

টার্মিনালে কনফিগার করতে , ইনস্টল করুনlibncurses5-dev(এই তথ্যের জন্য হান্নুকে ধন্যবাদ) এবং চালানmake menuconfig:

sudo apt-get install libncurses5-dev
make menuconfig

কনফিগার করা কার্নেল তৈরি করুন।

কার্নেলটি সঙ্কলন করতে এবং তৈরি করতে প্রথমে এটি চালান vmlinuz:

make

vmlinuzহ'ল "কর্নেল"। বিশেষত, এটি কার্নেল চিত্র যা সঙ্কুচিত এবং GRUB দ্বারা স্মৃতিতে লোড করা হবে বা অন্য যে কোনও বুট-লোডার ব্যবহার করুন।

তারপরে লোডযোগ্যযোগ্য কার্নেল মডিউলগুলি তৈরি করুন :

make modules

আপনার নতুন নির্মিত কার্নেলটি ইনস্টল করুন।

এই makeকমান্ডগুলি সফলভাবে সমাপ্ত হয়েছে ধরে নিলে , নতুন কার্নেল ইনস্টল করার সময় এসেছে। প্রথমে মডিউলগুলি ইনস্টল করুন:

sudo make modules_install

তারপরে কার্নেলটি নিজেই ইনস্টল করুন :

sudo make install

এটি vmlinuz-3.16.1(একটি অনুলিপি vmlinuz), config-3.16.1(কার্নেল কনফিগারেশন প্যারামিটারগুলি সংরক্ষণ করে একটি পাঠ্য ফাইল), এবং System.map-3.16.1( কার্নেল প্রতীক অনুসন্ধান সারণী ) এতে রাখে /boot। আরও তথ্যের জন্য, হ্যাড্রন এবং এর এই comp.os.linux.misc পোস্টটি দেখুন man installkernel

চূড়ান্ত সেটআপ, যাতে কার্নেলটি শুরু হয়ে সিস্টেমটি বুট করা যায়:

এই বিভাগটি আংশিকভাবে কার্নেল / সংকলনের তথ্যের উপর ভিত্তি করে ।

কার্নেলের সাথে এখন যেখানে এটি হওয়া দরকার সেখানে এটির প্রয়োজন:

এর সাথে আপনার ইমেট্রামগুলি তৈরি করুনmkinitramfs :

cd /boot
sudo mkinitramfs -ko initrd.img-3.16.1 3.16.1

আপনি যখন GRUB2 বুট লোডারটির কনফিগারেশন আপডেট করেন - যা উবুন্টুতে ৯.১০ সাল থেকে পূর্বনির্ধারিত ছিল - স্বয়ংক্রিয়ভাবে নতুন কার্নেলটি সনাক্ত করা উচিত এবং এটি থেকে বুট করার জন্য একটি বিকল্প যুক্ত করা উচিত।

sudo update-grub

আপনার কর্নেল চেষ্টা করুন।

এখন আপনি আপনার নতুন কার্নেলটি পরীক্ষা করতে পুনরায় বুট করতে পারেন। GRUB বুট মেনু দেখতে আপনাকে বুট করার সময় চেপে ধরে রাখতে হবে Shiftবা চাপতে হবে Escযেখানে আপনি ইনস্টল হওয়া বিভিন্ন কার্নেলের মধ্যে নির্বাচন করতে পারেন।

আপনার কার্নেল (বা অন্য কোনও) কে ডিফল্ট করতে, দেখুন আমি GRUB বুট অর্ডারটি কীভাবে পরিবর্তন করব?


পদক্ষেপ 3, make menuconfigপ্রয়োজনapt get install libncurses5-dev
হান্নু

@ হান্নু আপনাকে ধন্যবাদ, আমি এটি উল্লেখ করতে পুরোপুরি ভুলে গেছি। -৪-বিট সিস্টেম ব্যবহারকারীদের "ia32-libs" প্রয়োজন 32-বিট প্রোগ্রামগুলি চালনার জন্যও প্রয়োজন হতে পারে।
শিক্ষানবিশ

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

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

1
-1 এটি একটি উবুন্টু কার্নেল উত্পাদন করে না । এটি .deb ফাইল তৈরি করে না। এটি সমস্যার একটি রেসিপি।
আলেকসান্দ্র ডাবিনস্কি

3

উবুন্টু কার্নেল (ভ্যানিলার বিপরীতে) তৈরির দ্রুত নির্দেশাবলী এখানে পাওয়া যাবে: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

আমি পুরো উইকিটি অনুলিপি করব না তবে উবুন্টু কার্নেলের যে সংস্করণটি আপনি বর্তমানে ইনস্টল করেছেন তা সংকলনের জন্য আমি সর্বনিম্ন পদক্ষেপগুলি তালিকাবদ্ধ করব। (অতি সাম্প্রতিক সংস্করণটি পেতে, আসন্ন উবুন্টু রিলিজের কার্নেল গিট সংগ্রহস্থলটি ক্লোন করুন)) উবুন্টু ১.0.০৪-তে পরীক্ষিত।

# Get source code
apt-get source linux-image-$(uname -r)

# Install dependencies
sudo apt-get build-dep linux-image-$(uname -r)

# Compile
cd linux-4.4.0
fakeroot debian/rules clean
fakeroot debian/rules binary

# Install (obviously the versions will be different)
cd ..
sudo dpkg -i linux-image-4.4.0-38-generic_4.4.0-38.57_amd64.deb linux-headers-4.4.0-38_4.4.0-38.57_all.deb linux-headers-4.4.0-38-generic_4.4.0-38.57_amd64.deb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.