سؤال

أريد أن أتعلم البرمجة Llinux Kernel.

ماذا ستكون النقاط البداية لذلك؟ ما يمكن أن يكون بعض المشاكل الأكثر بساطة للاستهداف؟

هل كانت مفيدة؟

المحلول

حاول الحصول على حجز من روبرت الحب في برمجة Linux Kernel. لها موجزة جدا وسهلة المتابعة.

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

أيضا، انظر إلى دليل برمجة Linux Kernel. وبعد نظرا لأن الكثير يمكن تعلمه من برمجة وحدات النواة، فإن هذا الدليل سوف يساعدك. ونعم، بالنسبة للكثير من المعلومات، استشر "الوثائق" الدليل الفرعي لمصادر نواة تاربال.

نصائح أخرى

**TODO** +editPic: Linux Kernel Developer -> (Ring Layer 0)
         +addSection: Kernel Virtualization Engine

KERN_WARN_CODING_STYLE: Do not Loop unless you absolutely have to.

أوصت الكتب ل غير مهم void *i

"الرجال لا يفهمون الكتب حتى يتمتعون بقدر معين من الحياة، أو على أي حال، فلا يفهم أي رجل كتاب عميق، حتى ينظر إلى جزء على الأقل من محتوياته". -ezra جنيه

رحلة ألف كود ميل يجب أن تبدأ بخطوة واحدة. إذا كنت في الارتباك حول أي من الكتب التالية التي يجب أن تبدأ بها، فلا تقلق، فلا تقلق أي شخص من اختيارك. ليس كل من تجول تاه. كما جميع الطرق توصل في نهاية المطاف إلى الطريق السريع, ، سوف تستكشف أشياء جديدة في رحلة kernel الخاصة بك حيث تقدم الصفحات دون تلبية أي نهايات مسدود، وفي نهاية المطاف الاتصال ب code-set. وبعد اقرأ مع نهائي العقل وتذكر: الكود ليس الأدب.

ما تبقى ليس شيئا أو مشاعر أو صورة أو صورة ذهنية أو ذاكرة أو حتى فكرة. إنها وظيفة. عملية نوع من نوع ما. جانب من جوانب الحياة التي يمكن وصفها كدالة لشيء "أكبر". وبالتالي، يبدو أنها ليست "منفصلة" حقا من هذا الأمر آخر. مثل وظيفة سكين - قص شيء - ليس كذلك، في الواقع، منفصلة عن السكين نفسه. قد تكون الوظيفة أو قد لا تكون قيد الاستخدام في الوقت الحالي، ولكن من المحتمل أن تكون منفصلة أبدا.

Solovay Strassen خوارزمية Derandomized للاختبار البدني:

Solovay Strassen Derandomized Algorithm for Primality Test

اقرأ عدم التناقض والحفاظ عليه؛ ولا تصدق ونأخذ أمرا مفروغا منه؛ ولا تجد الحديث والخطاب؛ ولكن للوزن والنظر. يتم تذوق بعض الكتب، والبعض الآخر الذي سيتم بلعه، وبعض قليل من مضغه وهضمه: أي أن بعض الكتب يجب قراءتها فقط في أجزاء، والبعض الآخر ليتم قراءته، ولكن ليس بفضول، وبعض القليل من القراءة كليا ، ومع الاجتهاد والاهتمام.

static void tasklet_hi_action(struct softirq_action *a)
{
        struct tasklet_struct *list;

        local_irq_disable();
        list = __this_cpu_read(tasklet_hi_vec.head);
        __this_cpu_write(tasklet_hi_vec.head, NULL);
        __this_cpu_write(tasklet_hi_vec.tail, this_cpu_ptr(&tasklet_hi_vec.head));
        local_irq_enable();

        while (list) {
                struct tasklet_struct *t = list;

                list = list->next;

                if (tasklet_trylock(t)) {
                        if (!atomic_read(&t->count)) {
                                if (!test_and_clear_bit(TASKLET_STATE_SCHED,
                                                        &t->state))
                                        BUG();
                                t->func(t->data);
                                tasklet_unlock(t);
                                continue;
                        }
                        tasklet_unlock(t);
                }

                local_irq_disable();
                t->next = NULL;
                *__this_cpu_read(tasklet_hi_vec.tail) = t;
                __this_cpu_write(tasklet_hi_vec.tail, &(t->next));
                __raise_softirq_irqoff(HI_SOFTIRQ);
                local_irq_enable();
        }
}

الأساسية لينكس ( 5 -> 1 -> 3 -> 2 -> 7 -> 4 -> 6 )

"الطبيعة لا تحتوي على نواة ولا قذيفة؛ إنها كل شيء في وقت واحد "- يوهان فولفغانغ فون جوته

يجب أن يكون القارئ ضليلا جيدا مفاهيم نظام التشغيل; ؛ فهم عادل للعمليات الجارية الطويلة وفروقه مع العمليات مع رشقات تنفذ قصيرة؛ عدم التسامح مع عدم التسامح مع قيود الوقت الحقيقي الصعب. أثناء القراءة، من المهم أن نفهم و n/ack اختيارات التصميم المصنوعة من مصدر نواة Linux في النظم الفرعية الأساسية.

المواضيع [و] إشارات [هي] درب منصة تعتمد من البؤس واليأس والرعب والجنون (~ أنتوني باكست). القول أنك يجب أن تكون خبيرا لتقييم ذاتي، قبل الغوص في النواة. يجب أن يكون لديك أيضا تجربة جيدة مع قوائم مرتبطة، كومة، قوائم الانتظار، أشجار السود السود، وظائف التجزئة، وآخرون.

volatile int i;
int main(void)
{
    int c;
    for (i=0; i<3; i++) {
        c = i&&&i;
        printf("%d\n", c);    /* find c */
    }
    return 0;
}

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

محاضرات الفيديو في الأنظمة في الوقت الحقيقي, جدولة المهام, ضغط الذاكرة, حواجز الذاكرة, SMP

#ifdef __compiler_offsetof
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
  1. Linux Kernel Development. - روبرت الحب
  2. فهم نواة لينكس - دانيال ب. بوفيت، ماركو سيساتي
  3. فن Linux Kernel Design - يانغ ليكيانغ
  4. مهنية لينكس نواة الهندسة المعمارية - Wolfgang Mauerer.
  5. تصميم نظام التشغيل UNIX - موريس ج. باخ
  6. فهم مدير الذاكرة الظاهري Linux - ميل غورمان
  7. Linux Kernel Internals. - Tigran Aivazian.
  8. جزء لا يتجزأ من Linux التمهيدي - كريستوفر هالنان

Linux Device Drivers. ( 1 -> 2 -> 4 -> 3 -> 8 -> ... )

"الموسيقى لا تحملك جنبا إلى جنب. عليك أن تحمله بشكل صارم من خلال قدرتك على التركيز فقط على هذا النواة الصغيرة الصغيرة القليل من العاطفة أو القصة". - ديبي هاري

مهمتك هي أساسا إنشاء واجهة اتصال عالية السرعة بين جهاز الأجهزة ونواة البرنامج. يجب عليك قراءة ورقة البيانات المرجعية للأجهزة / دليل لفهم سلوك الجهاز وتحديد التحكم والبيانات وتقدم القنوات الفيزيائية. تعرف المعرفة بالهندسة المعمارية الخاصة بك ومعرفة عادلة لمكافحة استخدامات الأجهزة VLSI مثل VHDL أو Verilog تساعدك على المدى الطويل.

س:: ولكن، لماذا يجب علي قراءة مواصفات الأجهزة؟

أ: لأنه، "هناك جنة من الكربون والسيليكون لا يمكن للبرامج الجسر" - راهول سوناد

ومع ذلك، فإن ما سبق لا يطرح مشكلة الخوارزميات الحاسوبية (رمز السائق - معالجة نصف)، كما يمكن محاكاة تماما على آلة تورينج العالمي. وبعد إذا كانت النتيجة المحسوبة صحيحة في المجال الرياضي, ، إنه أمر يقين أنه صحيح أيضا في المجال المادي.

محاضرات الفيديو على سائقي أجهزة Linux (ليك 17 و 18)، تشريح سائق KMS جزء لا يتجزأ, تحديد دبوس وتحديث GPIO, إطار عقارب الساعة المشتركة, اكتب سائق Linux الحقيقي - جريج KH

static irqreturn_t phy_interrupt(int irq, void *phy_dat)
{
         struct phy_device *phydev = phy_dat;

         if (PHY_HALTED == phydev->state)
                 return IRQ_NONE;                /* It can't be ours.  */

         /* The MDIO bus is not allowed to be written in interrupt
          * context, so we need to disable the irq here.  A work
          * queue will write the PHY to disable and clear the
          * interrupt, and then reenable the irq line.
          */
         disable_irq_nosync(irq);
         atomic_inc(&phydev->irq_disable);

         queue_work(system_power_efficient_wq, &phydev->phy_queue);

         return IRQ_HANDLED;
}
  1. Linux Device Drivers. - جوناثان كوربيت، اليساندرو روبيني، وجريج كروه هارتمان
  2. برامج تشغيل جهاز Linux الأساسي - Sreekrishnan Venkateswaran.
  3. كتابة برامج تشغيل جهاز Linux - جيري كوبرز
  4. دليل برمجة وحدة نواة Linux - بيتر جاي سالزمان، مايكل بيوران، أوري بوميرانز
  5. دليل مبرمج Linux PCMCIA - ديفيد هينز
  6. لينكس SCSI برمجة HOWTO - هايكو eibfeldt.
  7. دليل البرمجة التسلسل لأنظمة التشغيل Posix - مايكل ر. الحلو
  8. برامج تشغيل رسومات Linux: مقدمة - Stéphane Marchesin.
  9. دليل البرمجة لبرامج تشغيل جهاز Linux USB - Detlef Fliegl.
  10. نموذج جهاز Linux Kernel - باتريك موتشيل

شبكة نواة ( 1 -> 2 -> 3 -> ... )

"اتصل به عشيرة، واتصل بها بشبكة، فاتصل بها قبيلة، اتصل بها عائلة: كل ما تسميه، من أنت، أنت بحاجة إلى واحدة". - جين هوارد

فهم حزمة المشي في kernel هو مفتاح فهم شبكة النواة. فهم أنه يجب أن نريد أن نفهم NetFilter أو IPSec Internals، وأكثر من ذلك. الهياكلان الأكثر أهمية لطبقة شبكة Linux Kernel هي: struct sk_buff و struct net_device

static inline int sk_hashed(const struct sock *sk)
{
        return !sk_unhashed(sk);
} 
  1. فهم شبكة Linux Internals - كريستيان بنينوتي
  2. Linux Kernel Networking: التنفيذ والنظرية - رامي روزن
  3. برمجة شبكة يونيكس - دبليو ريتشارد ستيفنز
  4. الدليل النهائي لبرمجة شبكة Linux - كير ديفيس، جون دبليو تيرنر، ناثان يوكوم
  5. مكدس Linux TCP / IP: الشبكات للأنظمة المضمنة - توماس ف. هربرت
  6. Linux المقبس برمجة حسب المثال - وارن دبليو جاي
  7. Linux التوجيه المتقدمة ومراقبة حركة المرور HOWTO - بيرت Hubert.

تصحيح النواة ( 1 -> 4 -> 9 -> ... )

ما لم يقال في التواصل معه أحدهما بالضبط ما يعنيه المشكلة، لا بد أن تؤدي المشكلة. ~ آلان تورينج، حول أجهزة الكمبيوتر

قال براين دبليو كيرنغان، في ورقة يونيكس للمبتدئين (1979)، "لا تزال أداة تصحيح الأخطاء الأكثر فعالية فكر مستيقظ، إلى جانب تصريحات طباعة بحكمة". معرفة ما الذي تجمعه سيساعدك على الحصول على البيانات المناسبة بسرعة لتشخيص سريع. قال عالم الكمبيوتر الكبير Edsger Dijkstra ذات مرة أن الاختبار يمكن أن يثبت وجود الأخطاء ولكن ليس غيابهم. يجب أن توازن ممارسات التحقيق الجيدة من الحاجة إلى حل المشكلات بسرعة، والحاجة إلى بناء مهاراتك، والاستخدام الفعال لخبراء الموضوعين.

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

محاضرات الفيديو على تصحيح النواة وملفطان, تحليل تفريغ الأساس, تصحيح الأخطاء متعددة مع GDB, السيطرة على ظروف السباق متعددة النواة, تصحيح الالكترونيات

/* Buggy Code -- Stack frame problem
 * If you require information, do not free memory containing the information
 */
char *initialize() {
  char string[80];
  char* ptr = string;
  return ptr;
}

int main() {
  char *myval = initialize();
  do_something_with(myval);
}
/*  “When debugging, novices insert corrective code; experts remove defective code.”
 *     – Richard Pattis
#if DEBUG
 printk("The above can be considered as Development and Review in Industrial Practises");
#endif
 */
  1. Linux تصحيح الأخطاء والأداء - ستيف بست.
  2. تطبيقات Linux تقنيات تصحيح الأخطاء - ميلينت أوريليان
  3. تصحيح الأخطاء مع GDB: مصحح الأخطاء على مستوى مصدر جنو - رولاند H. Pesch.
  4. تصحيح Linux مضمن - كريستوفر هالنان
  5. فن تصحيح الأخطاء مع GDB، DDD، وكسوف - نورمان س. ماتلوف
  6. لماذا تفشل البرامج: دليل لتصحيح الأخطاء المنهجية - أندرياس زورر
  7. الرمز الشرقي البرمجيات: كتيب لتصحيح الأخطاء وتحسين رمز Legacy - بيل بلوندن
  8. تصحيح الأخطاء: العثور على معظم مشاكل البرامج والأجهزة - ديفيد J. Agans.
  9. تصحيح الأخطاء من خلال التفكير: نهج متعدد التخصصات - روبرت تشارلز ميتزجر
  10. ابحث عن BUG: كتاب برامج غير صحيحة - آدم بار

أنظمة الملفات ( 1 -> 2 -> 6 -> ... )

"أردت أن أحصل على ذاكرة افتراضية، على الأقل كما هو مقترن عن أنظمة الملفات". - كين طومسون

على نظام UNIX، كل شيء هو ملف؛ إذا لم يكن هناك شيء ما ملف، فهذه عملية، باستثناء الأنابيب والمقابس المسماة. في نظام الملفات، يتم تمثيل ملف بواسطة inode, ، نوع من الرقم التسلسلي الذي يحتوي على معلومات حول البيانات الفعلية التي تشكل الملف. نظام الملفات الظاهري Linux VFS تخزين المعلومات في الذاكرة من كل نظام ملفات كما يتم تركيبها واستخدامها. يجب أن تؤخذ الكثير من الرعاية لتحديث نظام الملفات بشكل صحيح حيث يتم تعديل البيانات داخل هذه التخزين المؤقت كملفات يتم إنشاء الملفات والدلائل، مكتوبة وحذفها. الأهم من هذه المخابئ هي ذاكرة التخزين المؤقت المخزن المؤقت، والتي يتم دمجها في الطريقة التي تصل إليها أنظمة الملفات الفردية بأجهزة تخزين كتلة الأساس.

محاضرات الفيديو على أنظمة التخزين, نظام ملفات فلاش ودية

long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
{
        struct open_flags op;
        int fd = build_open_flags(flags, mode, &op);
        struct filename *tmp;

        if (fd)
                return fd;

        tmp = getname(filename);
        if (IS_ERR(tmp))
                return PTR_ERR(tmp);

        fd = get_unused_fd_flags(flags);
        if (fd >= 0) {
                struct file *f = do_filp_open(dfd, tmp, &op);
                if (IS_ERR(f)) {
                        put_unused_fd(fd);
                        fd = PTR_ERR(f);
                } else {
                        fsnotify_open(f);
                        fd_install(fd, f);
                }
        }
        putname(tmp);
        return fd;
}

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
        if (force_o_largefile())
                flags |= O_LARGEFILE;

        return do_sys_open(AT_FDCWD, filename, flags, mode);
}
  1. أنظمة ملف لينكس - موشيه بار
  2. نظام الملفات Linux. - وليام فون هاجر
  3. نظام الملفات UNIX: التطور والتصميم والتنفيذ - ستيف د. بات
  4. تصميم نظام الملفات العملية - دومينيك جيامباولو
  5. نظام الملفات تحليل الطب الشرعي - حاملة براين
  6. Linux FileSystem التسلسل الهرمي - بينه نجوين
  7. BTRFS: نظام الملفات Linux B Tree - ohad rodeh.
  8. STEGFS: نظام ملفات التشاينوغرافية لينكس - أندرو د. ماكدونالد، ماركوس ج. كوه

حماية ( 1 -> 2 -> 8 -> 4 -> 3 -> ... )

"لم يتم تصميم UNIX لإيقاف مستخدميها من القيام بأشياء غبية، كما سيوقفها أيضا من القيام بأشياء ذكية". - دوغ غوين

لا تقنية تعمل إذا لم يتم استخدامها. تتغير الأخلاقيات مع التكنولوجيا.

"f × s = k"نتاج الحرية والأمن هو ثابت. - قوانين Niven

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

"لا يمكنك اختراق مصيرك، القوة الغاشمة ... تحتاج إلى باب خلفي وقناة جانبية في الحياة". - كلايد دصوزا

أجهزة الكمبيوتر لا تحل المشاكل، فإنها تنفذ الحلول. وراء كل شيء عدم الحتمية رمز الخوارزميات، هناك تحدد عقل _ يمانع. - / var / log / dmesg

محاضرات الفيديو على التشفير وأمن الشبكة, مساحات الأسماء للأمن, الحماية ضد الهجمات عن بعد, تأمين Linux مضمن

env x='() { :;}; echo vulnerable' bash -c "echo this is a test for Shellsock"
  1. القرصنة: فن الاستغلال - جون إريكسون
  2. الجذور الجذرية آرسنال: الهروب والتهرب في الزوايا المظلمة للنظام - بيل بلوندن
  3. اختراق مكشوف: أسرار أمن الشبكة - ستيوارت ماككل، جويل Scambray، جورج كورتز
  4. دليل لاستغلال نواة: مهاجمة جوهر - انريكو بيرلا، Massimiliano Oldani
  5. فن الطب الشرعي الذاكرة - مايكل هيل ليل، قضية أندرو، جيمي ليفي، هارون والترز
  6. هندسة عكسية عملية - بروس دانغ، ألكساندر جازيت، إلياس باخالاني
  7. تحليل البرامج الضارة العملية - مايكل سيكورسكي، أندرو هوننج
  8. أمان Linux الأقصى: دليل القراصنة لحماية خادم Linux الخاص بك - مجهول
  9. لينكس الأمن - كريج هانت
  10. العالم الحقيقي لينكس الأمن - بوب تكسن

مصدر النواة ( 0.11 -> 2.4 -> 2.6 -> 3.18 )

"مثل النبيذ، ينضج إتقان نواة البرمجة مع مرور الوقت. ولكن على عكس النبيذ، يحصل على أحلى في هذه العملية". - lawrence mucheka.

قد لا تعتقد أن المبرمجين فنانين، ولكن البرمجة هي مهنة إبداعية للغاية. انها الإبداع القائم على المنطق. لا يمكن لأي شخص أن يقوم تعليم علوم الكمبيوتر بإنشاء أي شخص مبرمج خبير أي أكثر من دراسة الفرش والصباغ يمكن أن يجعل شخص ما رسام خبير. كما تعلمون بالفعل، هناك فرق بين معرفة المسار والمشي في المسار؛ من الأهمية بمكان أن نشمر بأكمامك واحصل على يديك القذرة مع شفرة مصدر النواة. أخيرا، مع نواة الخاص بك هكذا المعرفه, ، أينما ذهبت، سوف يلمع.

المبرمجون غير الناضجين تقليد؛ سرقة الناضجة يقوم Bad Codeers Deface بما يتناوله، والأبرميون الجيدين يصنعونه في شيء أفضل، أو على الأقل شيء مختلف. يرمز الرموز الجيد سرقةه إلى شعور كامل فريد من نوعه، يختلف تماما عن ذلك تمزق منه.

محاضرات الفيديو على وصفات نواة

linux-0.11
├── boot
│   ├── bootsect.s      head.s      setup.s
├── fs
│   ├── bitmap.c    block_dev.c buffer.c        char_dev.c  exec.c
│   ├── fcntl.c     file_dev.c  file_table.c    inode.c     ioctl.c
│   ├── namei.c     open.c      pipe.c          read_write.c
│   ├── stat.c      super.c     truncate.c
├── include
│   ├── a.out.h     const.h     ctype.h     errno.h     fcntl.h
│   ├── signal.h    stdarg.h    stddef.h    string.h    termios.h
│   ├── time.h      unistd.h    utime.h
│   ├── asm
│   │   ├── io.h    memory.h    segment.h   system.h
│   ├── linux
│   │   ├── config.h    fdreg.h fs.h    hdreg.h     head.h
│   │   ├── kernel.h    mm.h    sched.h sys.h       tty.h
│   ├── sys
│   │   ├── stat.h      times.h types.h utsname.h   wait.h
├── init
│   └── main.c
├── kernel
│   ├── asm.s       exit.c      fork.c      mktime.c    panic.c
│   ├── printk.c    sched.c     signal.c    sys.c       system_calls.s
│   ├── traps.c     vsprintf.c
│   ├── blk_drv
│   │   ├── blk.h   floppy.c    hd.c    ll_rw_blk.c     ramdisk.c
│   ├── chr_drv
│   │   ├── console.c   keyboard.S  rs_io.s
│   │   ├── serial.c    tty_io.c    tty_ioctl.c
│   ├── math
│   │   ├── math_emulate.c
├── lib
│   ├── close.c  ctype.c  dup.c     errno.c  execve.c  _exit.c
│   ├── malloc.c open.c   setsid.c  string.c wait.c    write.c
├── Makefile
├── mm
│   ├── memory.c page.s
└── tools
    └── build.c
  1. بداية المبتدئ Linux 0.11 المصدر (أقل من 20،000 خط من التعليمات البرمجية المصدر). بعد 20 عاما من التطوير، مقارنة مع Linux 0.11، أصبح Linux ضخم ومعقد للغاية، ويصعب التعلم. لكن مفهوم التصميم والهيكل الرئيسي ليس له تغييرات أساسية. تعلم لينكس 0.11 لا يزال لديه أهمية عملية مهمة.
  2. قراءة إلزامية للمتسللين kernel => Linux_source_dir/Documentation/*
  3. يجب أن تكون مشتركا ونشطا في قائمة بريدية واحدة على الأقل. أبدا ب nernel newbies..
  4. لا تحتاج إلى قراءة شفرة المصدر الكامل. بمجرد دراية ب API Kernel واستخدامه، ابدأ مباشرة بمقدار التعليمات البرمجية المصدرية لنظام النظام الفرعي الذي تهتم به. يمكنك أيضا البدء في كتابة وحداتك الخاصة ب Play-Play لتجربة Kernel.
  5. سيستفيد كتاب قيادة الأجهزة عن طريق وجود أجهزة خاصة بهم. أبدا ب فطيرة التوت.

الدفع مشروع لبن كيرنيل لينكس

"نحن نذهب من خلال التعليمات البرمجية المصدر Linux Kernel، القيام بمراجعات الرمز، وتحديد التعليمات البرمجية غير المشبعة وتنظيف التنظيف الأخرى وتحويلات API. إنها بداية جيدة لنواة القرصنة.

أود أن أقول: "تعلم C". :)

جرب هذا الكتاب المجاني على الإنترنت.

دليل برمجة وحدة نواة Linux http://www.linuxhq.com/guides/lkmpg/mpg.html.

تحقق kernelnewbies.org، الاشتراك في القائمة البريدية kernelnelnewbies، وصلت إلى irc.oft.org # kernelnewbies

بعض الموارد:

  • كتاب: روبرت الحب، Linux Kernel Development، الطبعة الثالثة
  • كتاب: كوربيت، روبيني، برامج تشغيل جهاز Linux، الطبعة الثالثة (نسخة مجانية هنا)
  • الكتاب: لينكس نواة باختصار (نسخة مجانية هنا)
  • المواد المجانية المقدمة من قبل إلكترونات مجانية
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top