السلام عليكم ورحمة الله وبركاته
بفضل الله ومنته عملت هذا المرجع البسيط لكيفية عمل compiling للكيرنل وبنائها من الحزمة المصدرية راجيا المولى عز وجل أن ينفع به إخواننا فى المنتدى وهذا الموضوع ما إﻻ تكملة لموضوع الأخ ابو محمد على هذا الرابط
وما حابب أضيف غير أشياء بسيطة على موضوع الأخ ابو محمد وخصوصا شرح كيفية عمل compiling يخص التوزيعات المبينة على Debian بشكل عام مثل ubuntu و kubuntu وكذلك باقى التوزيعات الأخرى
أول شىء بيكون معانا إن شاء الله هو أساسيات الموضوع او البرامج المطلوبة لكل يتم عمل compiling للكيرنل بشكل صحيح
1- وجود ال compiler gcc ويفضل آخر أصدار على ما أظن gcc 4.0.3
2- وجود هذه الحزم على التوزيعة kernel-package , libncurses5 , libncurses5-dev , libqt3-mt-dev , bin86
طبعا التوزيعات تختلف من واحدة لأخرى حسب وجود هذه الحزم عليها مثلا توزيعة ubuntu يتم تثبيت هذه الحزم بالشكل التالى
والأن نرجع لسطر الأوامر ونكتب الأمر التالى :
su
ثم ندخل باسورد الروت ومن ثم نقوم بكتابة التالى بالترتيب :
اما التوزيعات الأخرى فيرجى مراجعة ال packges الخاصة بيها لاختلافها عن الpackges الخاصة بubuntu
*ملحوظة مهمة : قد يواجه بعض الإخوة ممن يسخدمون كروت شاشة من نوع nvidia واثناء تثبيت التوزيعات الخاصة بهم احتاجوا إلى تثبيت modules خارجية لكروت الشاشة سوف يضطروا لعمل ذلك مرة أخرى
إن شاء الله نبدأ الموضوع أول شىء نروح على الشل أو الترمينال لكى نقوم بمعرفة الكيرنل التى نعمل عليها حاليا بالاضافة إلى ال structure الخاص بالprocessor ونقوم بكتابة الأمر التالى :
ثانى شىء نقوم بتنزل الكيرنل المراد عمل compilation لها من الموقع الرئيسى
ومن ثم نقوم بتحميل الاصدار المطلوب عندى مثلا قمت بتحميل الاصدار linux-2.6.18.tar.bz2
3- بعد الانتهاء من تحميل الكيرنل على الهارد الخاص بينا نروح على المسار اللى موجود عليه نسخة الكيرنل ولنفرض أنه ال Desktop ونقوم بنسخها إلى هذا المسار usr/src/ من خلال الأمرة التالى:
*ملحوظة مستخدمى ubuntu يطبقوا الاوامر كما هى أما مستخدمى باقى التوزيعات يطبقوا نفس الاوامر ولكن بدون استخدام الاداة sudo ولكن استبدالها بالدخول بحساب الروت من البداية .
cd Desktop :هذا المسار اللى عليه النسخة اللى حملناها
ثم نقوم بنسخ الكيرنل للجدية للمسار التالى :
4- فى هذه الخطوة نقوم بفك الضغط عن نسخة الكيرنل المحملة ونلاحظ شىء انا نزلت النسخة بضغط bz2 لذا سوف أستخدم الأمر التالى :
أما إذا كانت نسخة الكيرنل بامتداد gz فنقوم بعمل الأمر التالى :
5- بعد ذلك انتظر قليلا حتى يفرغ الشل من فك الغط بعد ذلك حينما ينتهى نقوم بعمل لينك من ال directory الرئيسى اللى هيكون اسمه linux-2.6.18 إلى فولدر آخر باسم linux ليكون الأمر بالشكل التالى :
6- إلى الآن كل شىء تمام وبسيط بدأنا ندخل فى الجد وياريت تركيز شوية طبعا بعد ما عملنا اللينك على نسخة الكيرنل هنبدأ فى تنفيد الأمر make أول شىء نروح على المسار ده :
7- بعد ذلك نقوم بنسخ ملف ال config القديم حق الكيرنل الحالى ووضعه فى المسار usr/src/linux/ حتى نقوم بعمل load للconfiguration الحالية للكيرنل باستخدام الامر التالى :
ملحوظة: يوجد مسافة مابين ال config-2.6.15-23-386 ومابين config. يرجى التركيز طبعا ملف الconfig عندى ممكن يختلف اسمه على حسب اصدار الكيرنل الحالى عند كل شخص ولمعرفة اسم الملف يتم كتابة الأمر التالى :
سيظهر اسم الملف ومن ثم يتم استبداله بالاسم اللى فوق لكى تتوافق اعدادات مستخدم مع الكيرنل الخاصة به
والحين نبدأ نختار طريقة من خمس كما تفضل الأخ ابو محمد فى شرحه السابق فى هذا الرابط
طيب الطرق اللى تم ذكرها للأخ أبو محمد عملها واحد ولكن أنا هشرح منهم طريقتين واحدة تخص ال text-based والأخرى تخص ال GUI-Based
8- ولنبدأ مع أول طريقة وهى make menuconfig بعد الدخول على المسار /usr/src/linux/ نكتب الأمر التالى :
لتظهر الصورة الافتتاحية بالشكل التالى :

9- طبعا بعد اختيار اعدادات الكيرنل وتضبط اللازم انزل بالسهم السلفى إلى أسفل واختار الخيار load an Alternate Configuration File واضغط على Enter هتظهر ليك شاشة كالتالى :

10- اضغط على enter مرة أخرى لكى يتم تأكيد اختيار الملف ثم بعد ذلك انزل بالسهم السفلى مرة أخرى واضغط على Save Configuration to an Alternate File
كما بالشكل التالى :

11- وبعد ذلك سوف تظهر الشاشة لتأكيد الحفظ على الملف config. لتكون بالشكل التالى :

12- ومن ثم اضغط على enter ثم بعد ذلك تحرك بالسهم right arrow للضغط على كلمة Exit
13- بعض الإرشادات نقلت من موضوع للأخ hackobacko فى استمعل ال menuconfig :
*ملاحظة : عند عمل اعدادات الكيرنل استعمل الاسهم الاربعة الاعلى والاسفل للانتقال بين الخيارات و انتر للدخول للخيارات الفرعية واستخدم اليمين واليسار للانتقال بين select help exit
exit: للخروج من القوائم الفرعية للقائمة الأساسية
عند الوقوف على اختيار ما واختيار help يعرض لك معلومات عنه .
عندما تريد اختيار خيار ما استعمل ال space bar او المسطرة وقد تجد هناك خيارين لبعض الاختيارات
بالضغط على مسطرة مرة تظهر * بمعنى انه تم الإختيار
اذا تم الضغط ثانية تظهر M التى تعنى module ولفهمها سأضرب مثالا
هناك بعض البرامج فى لينيكس لا تعمل سوى بأن تكون برامج أو libraries اخرى موجودة
اى ان البرنامج فى عمله يستدعى هذه ال libraries
اذا اخترت الاختيار* فيجب التأكد أن هذا الشىء ستحتاجه حتما فى الكيرنل لأنه سوف يصبح built in kernel
اختيارات كثيرة امامها * ولا تحتاجها يعنى زيادة فى حجم الكيرنل وبطء ادائه قليلا
اما اذا اخترت M فهذا يعنى modules اى انه سوف يتم بناء هذه الخيارات خارج الكيرنل نفسه ولكن اذا احتاجها فسوف يتم استدعائها مما يعنى صغر حجم الكيرنل وامكانية وضعه على bootable disk للطوارىء وكذلك اداء اعلى لصغر الحجم
وفى نفس الوقت اذا احتاج اى درايفر ولم يجده فى قلبه سوف يبحث عنه ضمن ال modules ويقوم بتحميله اذا وجده .
الحين بعد ما سوينا كل شىء نبدأ فى بناء الحزمة للكيرنل ( الخطوات الحين لمستخدمى ubuntu )
14- نقوم بعد ذلك بكتابة الأمر التالى :
15- ثم بعد ذلك نقوم بكتابة الأمر التالى :
*ملحوظة : يمكن استبدال كلمة custom بأى كلمة نريد اى شىء يخطر على بالك أو أقولك حط اسمك علشان تبقى عملت الكيرنل باسمك
16- طبعا العملية هتآخد وقت على حسب سرعة الجهاز ياعنى عندى تقريبا خدت ساعة بعد ما يخلص ويقف على سطر الأوامر تانى هنكتب الأمر ls هنجد إنه فيه حزمتين تانيين تم اضافتهم للمجلد linux تحت الأسم ده:
17- كل اللى فاضل الحين نقم بثبيت الحزمتين دول من خلال الأمرين دول :
وبكده يكون كل شىء جاهز وكل حاجة بقت تمام وكل اللى فاضل نعمل restart فقط للجهاز ونختار الكيرنل الجديدة طبعا الخطوات من أول رقم 10 كانت تخص توزيعة ubuntu وعائلتها الكريمة :D أو بالأحرى التوزيعات المبنية على توزيعة دبيان بشكل عام
*ملحوظة : نفس الخطوات التى تمت مع توزيعة ubuntu يمكن ان تتم مع أى توزيعة أخرى ولكن مع استبدال الأوامر الخاصة بالتوزيعة مثلا make kpkg اكيد يقابلها شىء بتوزيعات Suse و Fedora فليتكرم مستخدمى التوزيعات الأخرى بالمشاركة بهذا الموضوع لكل يكون موضوع إن شاء الله يصلح لكل التوزيعات باستخدام الطريقتين
بفضل الله ومنته عملت هذا المرجع البسيط لكيفية عمل compiling للكيرنل وبنائها من الحزمة المصدرية راجيا المولى عز وجل أن ينفع به إخواننا فى المنتدى وهذا الموضوع ما إﻻ تكملة لموضوع الأخ ابو محمد على هذا الرابط
وما حابب أضيف غير أشياء بسيطة على موضوع الأخ ابو محمد وخصوصا شرح كيفية عمل compiling يخص التوزيعات المبينة على Debian بشكل عام مثل ubuntu و kubuntu وكذلك باقى التوزيعات الأخرى
بسم الله
أول شىء بيكون معانا إن شاء الله هو أساسيات الموضوع او البرامج المطلوبة لكل يتم عمل compiling للكيرنل بشكل صحيح
1- وجود ال compiler gcc ويفضل آخر أصدار على ما أظن gcc 4.0.3
2- وجود هذه الحزم على التوزيعة kernel-package , libncurses5 , libncurses5-dev , libqt3-mt-dev , bin86
طبعا التوزيعات تختلف من واحدة لأخرى حسب وجود هذه الحزم عليها مثلا توزيعة ubuntu يتم تثبيت هذه الحزم بالشكل التالى
كود:
sudo apt-get update sudo apt-get install build-essential sudo apt-get install kernel-package sudo apt-get install gcc sudo apt-get install gcc-3.4 sudo apt-get install libncurses5 sudo apt-get install libncurses5-dev sudo apt-get install libqt3-mt-dev sudo apt-get install bin86 sudo passwd root ثم أدخل باسورد لحساب الروت لاننا سوف نحتاج ذلك إن شاء الله لاحقا
su
ثم ندخل باسورد الروت ومن ثم نقوم بكتابة التالى بالترتيب :
كود:
CC=gcc-3.4 export CC exit CC=gcc-3.4 export CC
*ملحوظة مهمة : قد يواجه بعض الإخوة ممن يسخدمون كروت شاشة من نوع nvidia واثناء تثبيت التوزيعات الخاصة بهم احتاجوا إلى تثبيت modules خارجية لكروت الشاشة سوف يضطروا لعمل ذلك مرة أخرى
إن شاء الله نبدأ الموضوع أول شىء نروح على الشل أو الترمينال لكى نقوم بمعرفة الكيرنل التى نعمل عليها حاليا بالاضافة إلى ال structure الخاص بالprocessor ونقوم بكتابة الأمر التالى :
كود:
uname -a
ومن ثم نقوم بتحميل الاصدار المطلوب عندى مثلا قمت بتحميل الاصدار linux-2.6.18.tar.bz2
3- بعد الانتهاء من تحميل الكيرنل على الهارد الخاص بينا نروح على المسار اللى موجود عليه نسخة الكيرنل ولنفرض أنه ال Desktop ونقوم بنسخها إلى هذا المسار usr/src/ من خلال الأمرة التالى:
*ملحوظة مستخدمى ubuntu يطبقوا الاوامر كما هى أما مستخدمى باقى التوزيعات يطبقوا نفس الاوامر ولكن بدون استخدام الاداة sudo ولكن استبدالها بالدخول بحساب الروت من البداية .
cd Desktop :هذا المسار اللى عليه النسخة اللى حملناها
ثم نقوم بنسخ الكيرنل للجدية للمسار التالى :
كود:
sudo cp linux-2.6.18.tar.bz2 /usr/src
كود:
sudo tar -jxf linux-2.6.18.tar.bz2
كود:
sudo tar -zxf linux-2.6.18.tar.gz
كود:
sudo ln -s /usr/src/linux-2.6.18 /usr/src/linux
كود:
cd /usr/src/linux
كود:
sudo cp /boot/boot/config-2.6.15-23-386 .config
كود:
ls -a /boot
والحين نبدأ نختار طريقة من خمس كما تفضل الأخ ابو محمد فى شرحه السابق فى هذا الرابط
طيب الطرق اللى تم ذكرها للأخ أبو محمد عملها واحد ولكن أنا هشرح منهم طريقتين واحدة تخص ال text-based والأخرى تخص ال GUI-Based
8- ولنبدأ مع أول طريقة وهى make menuconfig بعد الدخول على المسار /usr/src/linux/ نكتب الأمر التالى :
كود:
sudo make menuconfig

9- طبعا بعد اختيار اعدادات الكيرنل وتضبط اللازم انزل بالسهم السلفى إلى أسفل واختار الخيار load an Alternate Configuration File واضغط على Enter هتظهر ليك شاشة كالتالى :

10- اضغط على enter مرة أخرى لكى يتم تأكيد اختيار الملف ثم بعد ذلك انزل بالسهم السفلى مرة أخرى واضغط على Save Configuration to an Alternate File
كما بالشكل التالى :

11- وبعد ذلك سوف تظهر الشاشة لتأكيد الحفظ على الملف config. لتكون بالشكل التالى :

12- ومن ثم اضغط على enter ثم بعد ذلك تحرك بالسهم right arrow للضغط على كلمة Exit
13- بعض الإرشادات نقلت من موضوع للأخ hackobacko فى استمعل ال menuconfig :
*ملاحظة : عند عمل اعدادات الكيرنل استعمل الاسهم الاربعة الاعلى والاسفل للانتقال بين الخيارات و انتر للدخول للخيارات الفرعية واستخدم اليمين واليسار للانتقال بين select help exit
exit: للخروج من القوائم الفرعية للقائمة الأساسية
عند الوقوف على اختيار ما واختيار help يعرض لك معلومات عنه .
عندما تريد اختيار خيار ما استعمل ال space bar او المسطرة وقد تجد هناك خيارين لبعض الاختيارات
بالضغط على مسطرة مرة تظهر * بمعنى انه تم الإختيار
اذا تم الضغط ثانية تظهر M التى تعنى module ولفهمها سأضرب مثالا
هناك بعض البرامج فى لينيكس لا تعمل سوى بأن تكون برامج أو libraries اخرى موجودة
اى ان البرنامج فى عمله يستدعى هذه ال libraries
اذا اخترت الاختيار* فيجب التأكد أن هذا الشىء ستحتاجه حتما فى الكيرنل لأنه سوف يصبح built in kernel
اختيارات كثيرة امامها * ولا تحتاجها يعنى زيادة فى حجم الكيرنل وبطء ادائه قليلا
اما اذا اخترت M فهذا يعنى modules اى انه سوف يتم بناء هذه الخيارات خارج الكيرنل نفسه ولكن اذا احتاجها فسوف يتم استدعائها مما يعنى صغر حجم الكيرنل وامكانية وضعه على bootable disk للطوارىء وكذلك اداء اعلى لصغر الحجم
وفى نفس الوقت اذا احتاج اى درايفر ولم يجده فى قلبه سوف يبحث عنه ضمن ال modules ويقوم بتحميله اذا وجده .
الحين بعد ما سوينا كل شىء نبدأ فى بناء الحزمة للكيرنل ( الخطوات الحين لمستخدمى ubuntu )
14- نقوم بعد ذلك بكتابة الأمر التالى :
كود:
sudo make-kpkg clean
كود:
sudo make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers modules_image

16- طبعا العملية هتآخد وقت على حسب سرعة الجهاز ياعنى عندى تقريبا خدت ساعة بعد ما يخلص ويقف على سطر الأوامر تانى هنكتب الأمر ls هنجد إنه فيه حزمتين تانيين تم اضافتهم للمجلد linux تحت الأسم ده:
كود:
kernel-image-2.6.12-custom_10.00.Custom_i386.deb kernel-headers-2.6.12-custom_10.00.Custom_i386.deb
كود:
sudo dpkg -i kernel-image-2.6.12-custom_10.00.Custom_i386.deb sudo dpkg -i kernel-headers-2.6.12-custom_10.00.Custom_i386.deb
*ملحوظة : نفس الخطوات التى تمت مع توزيعة ubuntu يمكن ان تتم مع أى توزيعة أخرى ولكن مع استبدال الأوامر الخاصة بالتوزيعة مثلا make kpkg اكيد يقابلها شىء بتوزيعات Suse و Fedora فليتكرم مستخدمى التوزيعات الأخرى بالمشاركة بهذا الموضوع لكل يكون موضوع إن شاء الله يصلح لكل التوزيعات باستخدام الطريقتين
تعليق