إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

كيفية عمل كومبايل للكيرنل .... كلاكيت للمرة العشرين ألف

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • كيفية عمل كومبايل للكيرنل .... كلاكيت للمرة العشرين ألف

    بسم الله الرحمن الرحيم
    ---------------------------

    اولا أنا آسف جدا على العنوان التهكمى بس لو تلاحظوا القسم ده كله عناوين مكررة _مع احترامى للكلام المكتوب_ لأنه غرضه الإفادة

    بس انا شايف من وجهة نظرى الشخصية ان القسم ده بدأت الأعضاء تعيد فى الكلام المكتوب بطريقة مملة _وياريت كلامى برده ميزعلش حد_ لانى عارف انهم غرضهم يفيدو المبتدئين .....

    لكن بدأت الاعضاء تخلط بين مجرد عمل ست اب عادى للكيرنل من اى package manager سواء rpm او depian package او حتى slackware package وده مجرد ست اب عادى لكيرنل جديد وخلاص دون الاستفادة الفعلية من امكاناته ولا الحصول على سرعة إضافية وبين عمل compiling و configuration لل kernel

    انا شايف ان موضوع عمل كومبايل للكيرنل اللى القسم معمول علشانه وبرده مع احترامى مقدمش اى فكرة غير ان العضو ياخد ملف ال config من الكيرنل القديم ويحطه فى الجديد ويعمل كومبايل وبكدة الموضوع بقة اسمه عمل كومبايل للكيرنل .....!!!!

    ده مش تحامل طبعا على الأعضاء ... انا نفسى لما كنت بتسأل كنت بجاوب بنفس الاجابة دى بس المشكلة اللى ظهرت حاليا مع كثرة المواضيع هنا فى المنتدى هى انه مفيش مناقشة لوجه الاستفادة من تعديل الكيرنل وخصائصه وازالة الحاجات اللى ملهاش لازمة والدريفرات اللى انت مش محتاجها وال file systems اللى انت مش ناوى تشتغل عليها !!!

    للأسف الموضوع ده شائك وصعب اى عضو يحاول شرحه لطوله .... ده غير انه اساسا عمل كومبايل للكيرنل محدش هيعلمه لحد ... عايز تعمل ادخل فى الموضوع واعمل وجرب وهتفشل عشر مرات فى الاول بس هتخرج من كل تجربة بمعلومات مفيدة .

    أم أن الموضوع ان العضو اللى بيسأل عن عمل الكومبايل للكيرنل عايز حاجة تيك اواى ؟!!!! ولا هو اساسا فكر فيه ليه من البداية ؟

    انت راجل بتتعلم لينيكس عايز تعمل كومبايل للكيرنل ولا عايز تعمله ست اب وتضحط على نفسك وتقول انا عملت compile ?!!!

    _ انا لا اقصد احدا بهذه الجملة فقط اريد بها العموم والشمول __
    ممكن حد يقوللى من فضلكم ايه فايدة ان كل الكلام مقصور على نقل ملف الكونفيج وعمل كومبايل للكيرنل الجديد .... طيب يبقى انا استفدت ايه ؟

    مجرد سد لثغرات امنية دون تحسين فى الاداء .

    وطبعا الرجالة مقصروش فى الشرح والتوضيح ولكن دون الدخول فى المنطقة الشائكة وهى عمل ال configuration

    طيب العضو المحترم اللى بيتعلم لينيكس لانه real operating system هيخسر ايه لما الكبيرنل يعمله configuration و ميظبطش معاه ؟

    الاجابة : الخسارة = 0
    والاستفادة : لا حدود لها

    توزيعات البوت لوودر فيها grub هتضيف الكيرنل اوتوماتيك للقايمة الرئيسية يعنى لو حصلت مشكلة هتقدر تدخل على الكيرنل القديم وحتى اللى البوت لودر فيها lilo محتاجة جهد بسيط جدا برده والامر فيها مش معضلة

    كل الحكاية انك هتضيع وقت فى الكومبايل للكيرنل علشان تقرأ ال help وتبحث على النت وتشوف ايه اللى هتحتاجه او لا .

    وعلى فكرة ممكن سيادتك وانت بتعمل كومبايل للكيرنل تعمل trick ظريفة جدا وسهلة وهى كالتالى :

    من المعروف ان الكيرنل لما بيلاقى تعارض ما اثناء الكومبايل او خاصية قديمة انت مختارها هيظهرلك رسالة تحذير او error اصثناء الكومبايل والكومبايلبينج هيستمر عادى يبقى سيادتك اثناء ال compile تعمل

    make 2> error-file
    وفايدته يخلى اى error بدل ما يظهر على الشاشة وانت متقدرش تشوفه كويس انه يتخزن فى ملف error-file وطبعا بالتالى الأشياء اللى هتظهر على الشاشة هى فقط ال output العادى بدون اى errors ولكن بعد ما يخلص اتلكومبايبل هتقدر تشوف الاخطاء وتعرفها من الملف ده وأيضا تعرف اماكن الاخطاء وعلى الرغم من سهولة الطريقة الا انها فعالة بطريقة لا تتخيلها وتخبرك بالاخطاء و بالاختيارات اللى انت اخترتها وملهاش لازمة depricated choices

    رسائل الخطا طبعا بتبين لك الخطأ فى اى section فى ال configuration وبعد ما تعدل الاخطاء دى هتلاقى الكيرنل بتاعك بيتعمل له comiplng smoothly يعنى تحس انه الشاشة مبيظهرش فيها اخطاء .

    هناك بعض الملحوظات ممكن الناس اللى عندها خبرة تقدر تحطها للمبتدئين واعتقد الناس اتكلمت عن بعض الاشياء فى مواضيع سابقة منها على سبيل المثال لا الحصر :

    حاول تخلى كل الدريفرات تعمل ك module ولو فيه عندك اختيار لدرايفر ك module او ك built in فى الكيرنل بستحسن انك تخليه module ليه ؟ علشان كل ما صغر حجم الكيرنل كل ما ازدادت سرعته وتحميله فى ال memory أسرع والاهم انه تخلص امن اى اى حاجة ملهاش لازمة واصبحت الموديولز مبنية خارجه يعنى مش جزء منه وبالتالى ال kernel نفسه ملهوش دعوة بال modules غير انه بيستدعيها ويشغلها وطبعا كل ما قلت ال builtins قلت ال bugs

    مش معنى كلامى انك تروح وتخلى ال file systm اللى انت بتستخدمه يتبنى ك module .... لا طبعا دى حاجة لازم تتبنى ك built in ليه ؟

    لان ده ال file system بتاع النظام او بمعنى آخر بتاع ال root partition اللى هتشتغل عليه واللى لازم يتعمله Mount قبل اى file system تانى فى ال fstab
    طيب لما الكيرنل يبدأ يتحمل فى الذاكرة ويتولى مقاليد الأمور ويحاول يدخل على ال root partition فى البداية ويعمله mount علشان هو ده البارتيشن اللى عليه النظام ... طبعا مش هيقدر "مع العلم انه اساسا مش هيقدر يستخدم اى module فى العملية دى لان ال modules مش متحملة فى الذاكرة واساسا مكانها على ال root partition " تبقى الخلاصة ان ال file system لازم يبقى built in وإلا هتواجه مشاكل وطبعا الكيرنل مش هيشتغل

    الابتعاد عن اى حاجة فيها debugging لانها هتكبر حجم الكيرنل على الفاضى وسيادتك مش شغال professional programmer او kernel developper علشان تستفاد من معلومات ال debugging لانها هتسبب كبر حجم الكيرنل بطريقة ملفتة مما يؤثر على اداؤه وفى النهاية لا انا ولا انت بنحتاجها .

    برده هتلاقى قسم اسمه kernel hacking فى ال configuration متخترش منه حاجة يعنى بالعربى سيبك منه مش هيفيدك وطالما مش عارف ايه اهميته يبقى مش هيفيدك ... وتضمينه فى الكيرنل بيأثر على حجم وسرعة الكيرنل

    معظم الاقسام سهلة بس اقسام networking وال device drivers هى اللى محتاج تركيز ,ولكن على حسب نوع اتصالك اضف الدرايفر مثلا ال connection بتاعك 10/100 mbs يبقى انت مش محتاج تضيف 1000 فى الكيرنل وبالنسبة لل device driver فقط الكارت الخاص بك يعنى لو realteak يبقى realteak فقط هو اللى تختاره ومتخترش حاجة تانية

    مثلا واحد ال controller فى جهازه ATA/IDE ميجيش اثناء عمل ال configuration وميخترش ال controller مثلا serial ATA يبقى الكيرنل مش هيشتغل وهكذا ايضا إذا فعل العكس

    واحد تانى بالنسبة لتعاريف الصوت حاطط درايفرات كتير وملهاش لازمة ... يبقى الافضل يشوف نوع كارت الصوت الخاص به ويضيفه ويشيل الباقى

    واحد تانى قالك انا عندى كارت شاشة نيفيديا وتعريفه اللى فى الكيرنل مش كويس فقام بإلغاء كل الاختيارات من قسم VGA على امل انه هيقدر يعرف الكارت بالدرايفر الخاص به ونسى طبعا انه يتأكد ان ال module الخاص بالمنفذ agp تمت إضافته !!!!! وبالتالى تنتج مشاكل كبيرة جدا

    واحد أخير قام بالعمل على خير وجه ولكنه نسى إضافة الموديولز الخاصة بال firewall

    واحد بيضيف دعم لل ram اللى حجمها كبير 3 جيجا مثلا وهو رامته 256 ميجا بايتس يبقى ايه وجه الاستفادة ؟

    واحد معندوش اى اجهزة usb وضايف دعم لل usb !!!!

    فيه حاجة تانية برده ... هتلاقى الkernel فيه encoding للغات المستخدمة او اللى انت ناوى تخليه يدعمها حط دعم لل encoding اللى انت هتحتاجه وشيل بقية ال encodings يعنى مثلا cp-256 الخاص بالعربى و ال utf-8 وال iso8859-6 الخاص بالعربى انت هتحتاجه وكذلك هتحتاج الانجليزى iso-8859-1 ولو واحد فيكم مغرم بالمواقع الصينية والروسية مثلا وعايز الط يتعرض بطريقة كويسة لما يدخلها مينساش يحط الدعم فى الكيرنل واعتقد انه الدعم فيه اختيارين يا اما module يا لما built in
    طبعا خلينا مع ال modules ا;ز حتى على الاقل حط ال encoding اللى استخدامك له قليل ك Module والاساسيين built in .... يعنى المسألة قياسية بالنسبة لك واستخدام ال modules زى ما احنا عارفين افضل .

    فيه جزئية تانية بالنسبة للناس اللى بتواجه مشكلة تعاريف ازى الصوت مثلا وعايزة تضيفه بتضطر احيانا لعمل configuration اللكيرنل واضافة الموديول الخاص بالتعريف وغعادة كومبايل _للموديولز فقط_ وليس للكيرنل كله ولكن هناك أيضا طرق بسيطة لعمل كومبايل ل module بعينه بدون الحاجة لعمل كومبايلينج للموديولز كلها يعنى بمعنى اوضح لو عفت مكان الموديول فى السورس وحبيت تعمله كومبايل المفروض هتروح فى مساره وتعمل make module-name.c ولكن Make هيدى error لان make فى الحالة دى مش هيشتغل بينما لو عملت make modules وخلاص هتشتغل وتعمل compile لكل ال modules والحل بسيط وإن كنت مش متذكر الامر حاليا اللى يخليك تعمل compile لملف سورس خاص ب module دون الدخول فى عمل قثreconfiguration للكيرنل وطبعا بعد ما الامر ده يتنفذ بنجاح ممكن تعمل modprobe او Insmod للملف ال binary الناتج من الكومبايلينج .
    هحاول إن شاء الله اجيب الامر ده واحطه هنا


    طبعا اساسا لازم تاخد ملف الكونفيج القديم من الكيرنل القديم وتحطه فى الجديد قفى الاول وده شىء كويس لانه بيوفرلك بداية قوبة بمعنى ان الملف ده هيخليلك الكيرنل الجديد يشتغل يبقى لما تيجى تعدل فى الكيرنل الجديد يبقى انت بتحاول تشيل الزيادات ولو تركت بعض الاشياء الزائدة اللى انت مش فاهم معناها يبقى مش مشكلة اما لو بدأ تعمل configuration من الصفر فده مشكلة خاصة للمبتدئين لانهم هيقابلوا حاجات كتير مش فاهمين معناها فى الاول ولو تركوها فالموضوع مهدد بالفشل

    المهم خلاثصة القول ان العملية ممارسة لا اكثر


    ملاحظات


    للاعضاء المبتدئين الكيرنل بعد ما يتعمل له COMPILE تلاقيه فى boot/ واسمه فى الغالب vmlinuz وهو ملف binary زيه زى اى برنامج معموله كومبايل

    ال Modules الخاصة بالكيرنل 2.6 امتدادها ko والكيرنلات القديمة 2.4 الموديولز امتدادها o فقط

    طبعا الموديولز بعد عمل compile لها وتحولها لملفات binary بيتم نسخها للمسار lib/modules/kernel-version/ وعلشان كدة لما يكون عندك مشكلة فى الموديولز وبتعمل كيرنل جديد او إعادة configuration للقديم ممكن تمسح الفولدر ده خالص وبعد ما ال compiling يتم هتلاقى عندك fresh copy من ال Modules
    اساسا لو موضوع ال compile للكيرنل نجح المفروض تمسح فولدر السورس القديم وفولدر ال modules القديم طالما مفيش اى حاجة للكيرنل القديم وازالة الكيرنل نفسه من boot/ ومن ال boot menu

    احيانا برده بيقابل الناس مشاكل مع تعريف كروت الشاشة من نوع نيفيديا على انظمة فيدورا انه يلاقى فيه تعارض والدرايفر مش راضى يتعمل له كومبال علشان يكون module وده نتيجة ان الكيرنل نفسه بيبقى قديم ومعموله كومبايل ب إصدارة معينة من gcc لانه طبعا احنا عارفين انه اثناء تستيب النسخة البرنامج المسؤول عن الت اب بينسخ كيرنل معمول له كومبايل جاهز لمساره الصحيح وطبعا معمول كومبايل فى الشركة وبإصدارة معينة من gcc او الكومبايلر وبالتالى انت ممكن يكون عندك على النظام نفسه اصدارة احدث من gcc غير اللى تم بها عمل كومبايل للكيرنل وبالتلى لما تحاول تعمل تستيب للدرايفر النظام بيدور على سورس الكيرنل وبيبنى موديول يعنى بيعمل كومبايل للدرايفر ويبنى موديول باستخدام النسخة الحالية من gcc على النظام ولما كان الكيرنل نفسه معموله كومبايل ب Gcc آخر فمعنى كدة انه هيحصل نعارض بين كل من ال modules القديمة وال module الجديد اللى هيتم بناؤه لانه هيتم بطريقة مختلفة قليلا والحل طبعا انك تعمل recompile للكيرنل وطبعا ده لما هيحصل هيحصل باستخدام gcc الحالى على النظام فلما تيجى تستب الدرايفر مش هيحصل تعارض لانه الكيرنل نفسه هيبقى مبنى باستخدام نفس ال Gcc على النظام



    ملفات السورس الخاصة بالكيرنل مهمة فقط لو ناوى بعد كدة تستب اى درايفر زى نبيفيديا مثلا لانه بيحتاجها علشان يعمل بناء لل module غير كدة ممكن تحذفها بامان لانها هتبقى واخدة مساحة على الفاضى مع العلم انك لو مسحتها مش هتقدر تعمل كومبايل للكيرنل تانى

    ملحوظة أخيرة :

    الأعضاء مشكورين ذاكرين حاجات كتير من اللى مذكورة هنا ولكن الفكرة والدافع اللى خلانى اكتب الموضوع ان معظم اللى كتبوا عن الموضوع محاولوش يخوضوا التجربة نفسها ..... يعنى بيتكلموا نظريا فقط
    يعنى مثلا مسألة ال file system كلنا عارفين انه لازم built in بس حد جرب يعملها ؟
    حد جرب يشيل دعم ال reiserfs لو مش هيستخدمه ؟
    حد شال ال debugging information من ال file system لانه شايف انه مش هيحتاجها ؟
    حد بيشتكى ان الكيرنل بيقعد نص ساعة يعمل كومبايل مثلا وبياخد وقت فى حين انه ممكن ياخد عشر دقائق على الأكثر ؟!


    كفاية كدة
    وارجو ان يكون حد استفاد ويبدأ يخوض فى تجربة بناء الكيرنل
    التعديل الأخير تم بواسطة hackobacko; الساعة 07-08-2007, 02:59 PM.

  • #2
    WELCOME MY FRIEND .

    أنت جيت على الجرح، موضوع كومبايل الكرنل مهواش صعب لكن المشكلة في عمل الكونفريجيشن فعلاً! و المشكلة الأكبر واللي بتخنقني هو إنهم بيغيرو أماكن الخيارات الخاصة بالكرنل بدون تنبيه و من ثم يجي حد ياخد ملف .config و مش حاطت في باله ياعيني و بعد مايعمل ريبوت يلاقي kernel panic و السبب طبعاً هو إن أسماء الخيارات في ملف الكنفنج بتتغير.. و سعادتك مش بتاخد بالك و بتحط ال.config القديم و بتنفض...

    لكن برضو مينفعش نقول ليوزر ميعرفش خيارات الكرنل كلها " وطبعا كعادة العرب ميحبش يقرأ بنفسه كل خيار من دول بيعمل أيه" و تقوله أعمل كونفنج بنفسك. صعب و كان ليا حدوتة مع السلاكوير لما ستبت 2.4 و طبعاً أنا لست من أنصارها..

    كان لازم أقوم ببناء الكرنل من الصفر بدون ملف كنفنج ولا حاجة... و فضلت 12 ساعة.. أيوة 12 ساعة و بدون مبالغة في عملية إنشاءه من الصفر، طبعاً المشاكل اللي قابلتني مهياش فظيعة لدرجة إني اقعد 12 ساعة. لكن الجهاز كان بياخد كومبايل حوالي نص ساعة عن كل مرة، و يدوب هما 24 مرة عملت كومبايل و السبب كان التالي :

    أولاً عدم معرفتي بمكان الملف الرزل في سلاك اللي بيعمل حجب لبعض الموديلات و كان من بينها موديل الماوس، و طبعا بدخل على النظام مبلاقيش ماوس..... و النتيجة هي أني كنت هتجنن .


    ثانياً مشكلة الروت بارتشن اللي كانت ناتجة عن إني معملتش make install لإني ببساطة كنت عايز البوت يفضل من سوزي مش من سلاك عشان مكنتش منزل grub على سلاك ومبحبش lilo فكانت محتاجة وقت على بال ما أظبت المسائل و برضو تمت العملية بنجاح... ولكن بعد طلوع العين.

    المشكلة الأولى و أنتهيت منها بإني خليته بيلت إين و أرتحت من موضوع الموديل لحد ما بعدها بيوم عرفت مكان الملف اللي بيعمل حجب لبعض الموديلات.

    اللي عايز أقوله إن التجارب بتفيد في المواضيع دي....

    رغم إني كنت ناوي أكتب كتييييير عن الكرنل لكن معرفش أيه حصل.. حسيت بإنعدام شهية تام " بعد كتابتي لجزء كبير جداً يكفي 4 مواضيع على الأقل" لكن تحس إن لسة بدري... بدري على ما حد يستفيد من اللي هتكتبه دا..

    على فكرة ملحّوظة أخيرة . موضوع إن الكرنل يقعد كتير فدا يعتمد على المعالج و عدد الموديلات اللي هيتعملها كومبايل..وفي الغالب هتكون كتيرة ونص ساعة وقت معقول للكومبايل .

    و أهلاً بيك في الموقع يمكن تشجعني... موعدكش هشجعك بس هحاول .
    My-LiFe My Blog
    أنتظروا ثلاثة مفاجئات قريباً..
    I'm GONE !...WITHOUT h3h3!

    تعليق


    • #3
      wb hacko, light this place, very happy with your presence

      ياسفاح

      لو تبقى نص ساعه انا هبوس البوكس بتاعي
      التعديل الأخير تم بواسطة عبد العزيز; الساعة 07-08-2007, 11:34 AM.

      تعليق


      • #4
        عندك حق فى النقطة دى لان موضوع ال configuration عايز وقت لشرحة مش فى ساعة زمن وياله ياسفاح ابتدى الشرح يا ريس
        بس عملية الكومبيل ما بتعد نص ساعة هى فعلا بتعتمد على سرعة المعالج والموديلات
        والاغلبية بعملو
        oldconfig
        اول امبارح بعد ما عملت كومبيل حسيت ان الجهاز خفيف جدا ودا لانى حجبت موديلات مش محتاجها وزيادة فى الكونفريجيشن
        واخيرا موضوع مهم جدا ومشكور انك اتكلمت فيه
        SЄČURiTY TЄΛM
        MyBlog

        تعليق


        • #5


          sAFA7 بيتكلم عن جهاز سرعته 1 جيجا هرتز

          عبد العزيز : ربنا يخليك ويكرمك ومبروك ال certificate

          ĐΓ.ĐΣΓMλNN : العفو ... بس هى فعلا حاجة بتضايق لما الواحد بيشوف ان الناس داخلبة عالم لينيكس ونظرتها سطحية للأمور بالرغم من انه المفروض يبدأ واحدة واحدة ويتعلم .... دى ال help بتاع الكيرنل دى مشكلة فى المعلومات اللى ممكن تطلعها منها بس محتاجة شوية بحث عنها وانت تكتشف قدرات خرافية للنظام

          بالبنسبة لموضوع ال compiling لل Modules دون عمل recompiling لل kernel او حتى reconffiguration :
          -----------------------------------------------------------------------------------

          من المعروف ان الsource الخاص بالكيرنل هو اساسا ملفات بلغة c وال Module زيه زى اى برنامج تانى ممكن يكون مكون من ملف وااحد او عدة ملفات ولكن السورس كود بتاع ال modules بيختلف قليلا عن ال normal user-space applications
          علشان كدة مش هتقدر تعمله compiling ب gcc بطريقة مباشرة وهتحتاج make ولما منت هتحتاج make يبقى هتحتاج تعمل makefile
          لو شايف انها صعبة انك تنشىء ملف وتسميه makefile دور على makefile فى اى سورس كود عندك او حتى فى سورس الكيرنل وخده وافتحه وعدل فيه واحفظه .

          يبقى كدة لو حبيت تعمل make ل module معين ادامك حاجة من اتنين :- يا اما تنسخ فولدر الموديول كله وتحطه مثلا فى ال home بتاعك وتعمله كومبايل هناك او انك تدخل فى مساره جوه السورس بتاع الكيرنل وتشتغل هناك

          كلا الحالتين واحد ولكن الاولى ممكن تتم لو عضو مبتدىء مش عارف يتصرف وعنده مشكلة فى درايفر معين ممكن احد الاعضاء الفاهمين اللى عارف الموديول بتاع الدرايفر ده اسمه ايه ينسخ الفولدر المحتوى على ملفات السورس للموديول ويعملها archiveing ويبعتها للعضو المبتدىء دون مشاكل

          برده الوقتى اثناء عمل الكومبايل نفسه فيه حالتين وكل حالة بتختلف فيها ملف ال makefile

          الحالة الاولى :-
          ----------------

          الموديول مكون من ملف واحد فقط بامتداد c ومثال على كدة الملف : RTL8139.c الخاص بموديول كارت ال network من نوع realteak
          فى الحالة دى هنعمل Makefile ونكتب فيه _ 'طبعا متخليش حاجة تانية مكتوبة غير السطر اللى جاى بس _

          كود:
          obj-m := RTL8139.o
          يعنى اسم الملف ولكن بامتداد o وللناس الفاهمين فى البرمجة عارفين ان الملف اللى امتداده o هو ال object file قبل عملية ال linking

          بعد كدة طبعا احفظ الملف (الموضوع سهل مش كدة ؟!) ونفذ الامر :

          كود:
          make -C /usr/src/linux M=`pwd` modules
          طبعا usr/src/linux/ ده مسار السورس للكيرنل الحالى وطبعا للناس اللى مش عارفه linux دى اساسا link او shortcut بلغة الويندوز لمسار الكيرنل الحالى فانت لو عندك كذا سورس فى usr/src/ فالينك linux هيشير للكيرنل الحالى الى انت مشغله وممن تتأكد من كدة بالامر

          كود:
          ls -l /usr/src
          هتعرف هو بيشير لانه سورس بالظبط وبلو عايز تغيره ممكن طبعا

          المهم نرجع لموضوعنا .... بعد الكومبايل هتلاقى اتكون عندك ملف RTL8139.ko هو ده ال module بتاعك يا جميل و just اعمله

          كود:
          insmod   RTL8139.ko
          الحالة التانية لو عندك موديول ليه ملفات سورس كتير
          ---------------------------------------------------------------

          فى الحالة دى هنفترض انهم file1.c و file2.c كفاية ملفين للتسهيل :D

          ال Makefile هيبقى كدة :


          obj-m := name.o

          غير ال Nmae باى اسم تحب تسمى الموديول بيه ويفضل تخليه باسم الموديول الاصلى

          name-objs := file1.o file2.o

          ملاحظة مهمة جدا : name طبعا هو اسم الموديول وممكن تسميه اى اسم بس نفس الاسم خليه فى : name-objs
          يعنى لو هتسميه my_module يبقى تعمل كدة :

          obj-m := my_module.o

          my_module-objs := file1.o file2.o

          لاحظ انك عندك السورسات file1.c و file2.c فى الفولدر الحاوى للسورسات يبقى هتاخد اسماء الملفات اللى امتدادها c وتحطها بامتداد o فى السطر التانى
          احفظ الملف ونفذ :

          كود:
          make -C /usr/src/linux M=`pwd` modules
          هيطلعلك ملف name.ko اللى هو الموديول اللى ممكن تعمله Insmod

          ملحوظة : الطريقة الخاصة بموديول له اكثر من سورس انا لسة مجربتهاش عمليا ولكن إن شاء الله هتنفع

          فيه اشكال تانية لل Makefile بس انا اخترت ابسط حاجة للناس ومتخليش الناس يحصلها panic من شكله ويفتكروا انهم ميعرفوش حاجة فى حاجة .... فانا اعتقد ان البساطة فى الملف هتساعد ناس كتير تفهم .... اما عن معنى المحتويات فى ال Makefile فهى بسيطة فى الحالة الاولى سطر واحد يدل على اسم الموديول واسم ال object file الناتج من ال compiling فى نفس الوقت لان عندك ملف واحد فهينتج ملف object بامتداد O و ملف Module بنفس الاسم بامتداد ko وفى الحالة التانية عندنا كذا ملف يعنى اول سطر لاسم الموديول يبعنى الاسم العام للموديول والسكر التانى بيدل على ال object files الناتجة من الكومبايلينج

          واحد يسأليقوللى ايه الفرق بين ملفات ال O وال KO اقوله ال object files ناتجة من الكومبايلينج لكل ملف على حدة وامتدادها o وال ko ينتج عن عمل linking للملفات ال o كلها مع بعض ومع مكتبيات ا النظام فى ملف واحد ....
          التعديل الأخير تم بواسطة hackobacko; الساعة 08-08-2007, 03:16 PM.

          تعليق


          • #6
            الطريقة الثانية تمت تجربتها وعدلت جزء بسيط فى المشاركة السابقة الخاص ب

            obj-m := my_module.o

            my_module-objs := file1.o file2.o

            يعنى لازم اسم ال module اللى هو my_module يتحط فى السطر التانى بنفس الطريقة :

            my_module-objs

            ودى كنت نسيت اعملهم زى بعض فى المشاركة السابقة :


            النقطة التانية ان ال Makefile هتلاقيه موجود اساسا فىاى فولدر خاص باى module هتلاقى واحد وفقط قم بالتعديل عليه يعنى مش هتضطر تنشىء الملف

            مثال للتوضيح علشان المبتدئين

            نفرض مثلا انك عايز تستب موديول الخاص ب sis driver الخاص بكارت الشاشة من نوع sis طبعا مع الفرض انه مش متضاف فى الكيرنل

            ادخل المسار usr/src/linux/drivers/video/ وهتلاقى فولدر اسمه sis عايز تنسخه لل home او تاخده تعمله archive وتبعته لعضو مثلا مبتدى عايز تعريف sis بحيث يحطه عنده فى اى مسار زى ال home بتاعه مثلا تقدر تعمل ده بكل سهولة يعنى مش شرط تدخل المسار فى الكيرنل نفسه

            المهم الفولدر ده فيه الملفات

            300vtbl.h
            31vtbl.h
            init30.h
            init301.h
            initef.h
            init.h
            oem300.h
            osdef.h
            sis_accel.h
            sis.h
            sis_main.h
            vgatypes.h
            vstruct.h

            init301.c
            init.c
            initextlfb.c
            sis_accel.c
            sis_main.c

            Makefile
            طبعا الافضل انك اثناء التجربة تنسخ الفولدر خارج السورس بتاع الكيرنل علشان هيتم تعديل ملف ال Makefile علشان تسيب السورس زى ما هو اذا احتجت تعمله recompile تانى

            عدل ملف ال Makefile علشان يبقى كدة

            obj-m := sis_driver.o
            sis_driver-objects := init301.c init.c initextlfb.c sis_accel.c sis_main.c
            نفذ الامر

            make -C /usr/src/linux M=`pwd` modules
            من داخل الفولدر sis الموجود فى اى مسار كان
            هتلاقى يتكون ملف sis_driver.ko اعمله insmod وبعد كدة اتاكد من تحميله ب lsmod

            تحذير : الطريقة السابقة خاصة فقط بعمل instal ل module دون الحاجة لعمل recompile لل kernel modules كلها
            لانه ممكن انت تعمل make menuconfig وتضيف ال module اللى عايز تضيفه وبعد كدة تحفظ ال configuration بعد كدة ممكن تنفذ الامر

            make modules
            make modules_install

            دون الحاجة لعمل make التى تقوم بعمل compile للكيرنل بالكامل

            تعليق


            • #7
              بيستاهل ستيكي صح؟؟

              واحلى Stick من عندي...
              V.I.P

              (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
              هود 115

              Linux is user-friendly, but it happens to be selective about its friends

              "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


              مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...


              تعليق


              • #8
                nice work..
                My-LiFe My Blog
                أنتظروا ثلاثة مفاجئات قريباً..
                I'm GONE !...WITHOUT h3h3!

                تعليق


                • #9
                  ذكرتوني بزمان ------------> قبل اسبوع
                  اصعب عمليه في وقت تحديد الهارد وير
                  والمشكله اغلبنا يحاول يعمل بناء للكيرنل من غير اي فكرة عن الهاردوير
                  فتوصل انه ياشر على الكل ( عملت كده في اول مره ) ويصير معاك غيغا كيرنل مصيبه يعني
                  المهم لتسهيل المهمة دور على الهارد وير واذا ما لقيته ضيف مشاركتك
                  ⭐ Gentoo Linux is a distribution or operating system that provides users with extensive customizability. Its creator, Daniel Robbins, developed the system to minimize CPU usage and improve system performance.
                  My sickness is called frozen mind
                  and hopefully I'll find the cure for it

                  تعليق


                  • #10
                    السلام عليكم

                    والله معتك حق الشرح بيكون بي شكل سريع فحت

                    طب لو كدا انا استخدم الyum في تنزيل الكرنيل

                    والله قبل كدا عاملتها
                    yum install kernel

                    نزل بس تعريفه ال ntfs و wireless

                    منزلوش غير كارت الشاشه

                    رحت اتفقعت و مسحت linux من علي الجهاز

                    حنزله تاني بس لما اخلص ال mcse

                    تعليق


                    • #11
                      سلام عليكم
                      فهمت من كلام السفاح انه من الممكن اتخلص من بعض المودلز و الأمور التي لا تناسب مكونات الحاسوب .
                      كيف يكمن Customize الكورنيل السورس فبل عمل Compilaction ؟

                      تحياتي

                      Th1nk bad ... D0 g00d

                      تعليق


                      • #12
                        المشاركة الأصلية بواسطة uness مشاهدة المشاركة
                        سلام عليكم
                        فهمت من كلام السفاح انه من الممكن اتخلص من بعض المودلز و الأمور التي لا تناسب مكونات الحاسوب .
                        كيف يكمن Customize الكورنيل السورس فبل عمل Compilaction ؟

                        تحياتي
                        نزل سورس الكيرنال عندك علي جهازك وفك الضغط عنه واشتغل باي configuration tool من ال kernel directory الي انت لسه منزله

                        افضل make menuconfig بس لو مش عندك ncurses library مش حتشتغل معاك

                        واخيرا

                        Intro and Gathering Information Part 2 - Preparing the Source Tree Part 3 - Configuring the Kernel Source Part 3 Continued - Configuring the Kernel Part 4 - Building the Kernel Part 5 - Installing the Kernel Part 6 - Editing the Boot Loader Configuration Reboot the Machine (and Enjoy) Appendix A - Patching the Kernel Source Appendix B - Building a 2.6 Kernel


                        هاكو ليك وحشه
                        BOOOF , I AM GONE
                        Still , you gotta wait for my PRESENT :D
                        C programming arabic Tutorial|Programming-fr34ks

                        تعليق


                        • #13
                          جزاكم الله خيراً
                          لكننا نحتاج إلى شرح مفصل لكل سؤال ... مثلاً ... ما هو الBoot from EFI Support ؟؟؟ و ما هو الMTRR (Memory Type Range Register) support ؟؟؟ و ما هو الMath emulation ؟؟؟

                          تعليق


                          • #14
                            كلامك كل ذهب وحجه جديده علي
                            بس لو سألتك سؤال واحد
                            لو كان عندي جهاز موبايل يشتغل على وندوز موبايل كيف اعمل لها كومبايل للكيرنل واستخدم لينكس بدل الوندوز التعيس فيه
                            لان اصعب حاجه فيه عمل كومبايل لقلب النظام (الكيرنل)

                            تعليق


                            • #15
                              السلام عليكم ورحمة الله وبركاته ...

                              موضوعك أخي الكريم راقي لأبعد الحدود، صح ربما ﻻ يوجد فيه الكثير من الأمور التقنية (CLI) لكن فيه الكثير من الطرق الفنية التي يحتاجها الجميع ... الموضوع أستفدت منه هذا من ما ﻻ شك فيه، وأكون كاذب لو قلت غير ذلك ...

                              لكن !!!
                              أنت قلت بإن الكثيرين لم يخوضوا ويتعمقوا بالكلام عن الخيارات التي موجودة لو عملنا
                              كود:
                              make menuconfig

                              وأغلب الناس أو لنقل 90% منهم يستعملون
                              كود:
                              cp /boot/config-`uname -r`

                              وهذه حقيقة وليست مبالغة أيضاً ... لكن حتى أنت يا طيب لم تشرح القوائم هذه بتفاصيل أكثر ... وبصراحة هناك تفاصيل كثيرة في القائمة هذه أشك إنه يوجد هنا من يعلم بها كلها ... هي كثيرة وكثيرة جداً وأمور غريبة عجيبة لن يعرفها إﻻ من عمل يوماً كـ System Programmer وليس Application Programmer ... في تسميات غريبة وفي حاجات يمكن الواحد أول مرة يسمع فيها ... صعب جداً يأتي شخص ويبني كل ملف الـ config هذا من الصفر ... ﻻ أقول مستحيلة ولكن أقول صعب ... أعرف ستقول لي بإنك ذكرت: أنسخ ملف الإعدادات القديم وأحذف ما ﻻ تحتاجه فيه ... كلام جميل وسليم 100% ... لكن أرجع وأقول حتى أنت لم تدخل بالتفاصيل وصدقني التفاصيل عبارة عن كتب وﻻ موضوع وﻻ ثنين حيكفي عشان تكتب عنها كلها ...

                              طبعاً حتقول شنو جاب الموضوع الحين على بالك والموضوع هذا من سنة مكتوب؟
                              الجواب: أوﻻً لم أنتبه لهذه التحفة بصراحة، وهي تحفة فعلاً وثانياً ﻷني حالياً صرت أحاول التعمق أكثر في مسألة الكيرنلات وشغلات متقدمة ثانية، وقمت بجمع جميع المواضيع التي بالمجتمع وجمع الكثير من المصادر الأجنبية الخارجية ... وكان ﻻبد وأن أعود وأضع ردي هذا في موضوعك ولو بعد عام معلش ...

                              ما أريد أن أوصل له بالنهاية هو: لو عندك حاجة ثانية تضيفها ؟ ياريت تضيفها في موضوعك هذا، ﻷنه تركك الموضوع بهذا الشكل خسارة كبيرة لجميع من قرأه خاصة إذا كنت فعلاً تملك إمكانيات أكثر من التي قمت بذكرها هنا بكثير ... وهذا ما أتمناه فعلاً، وأتمنى أن أزيد معلوماتي أكثر وأكثر من الذين سبقوني بهذه المواضيع ...

                              أتمنى تتقبل ردي هذا برحابة صدر وما يكون إﻻ نقد لهدف أن نرى الأفضل والأفضل ...
                              لك مني خالص الود والتقدير ...
                              إِنَّمَـا الأُمَـمُ الأَخْـلاقُ مَا بَقِيَـتْ ... فَـإِنْ هُمُ ذَهَبَـتْ أَخْـلاقُهُمْ ذَهَبُـوا

                              إذا المرء لا يرعاك إلا تكلفاً ... فدعه ولا تكثر عليه التأسفا
                              ففي الناس أبدال وفي الترك راحة ... وفي القلب صبر للحبيب ولو جفا
                              فما كل من تهواه يهواك قلبه ... ولا كل من صافيته لك قد صفا
                              إذا لم يكن صفو الوداد طبيعة ... فلا خير في خل يجيء تكلفا
                              ولا خير في خل يخون خليله ... ويلقاه من بعد المودة بالجفا
                              وينكر عيشاً قد تقادم عهده ... ويظهر سراً كان بالأمس في خفا

                              [ مواقع مفيدة: أروع موقع القرآن الكريم |مدونتي |Twitter |نظام طارق ]

                              تعليق

                              يعمل...
                              X
                              😀
                              🥰
                              🤢
                              😎
                              😡
                              👍
                              👎