تعلم اختراق النواة والتطوير المضمن في المنزل؟[مغلق]

StackOverflow https://stackoverflow.com/questions/60763

  •  09-06-2019
  •  | 
  •  

سؤال

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

شكرًا!

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

المحلول

إذا كنت جديدًا تمامًا في تطوير kernel، فإنني أقترح عدم البدء بتطوير الأجهزة والانتقال إلى بعض وحدات kernel "للبرامج فقط" مثل proc file /sysfs أو للحصول على أمثلة أكثر تعقيدًا لتطوير نظام الملفات / الشبكة، والتطوير على uml/vmware/ فيرتثلبوإكس/...الجهاز لذا فإن تعطل جهازك لن يضر كثيرًا :) للتطوير المضمن، يمكنك استخدام مجموعة أدوات تطوير ARM صغيرة أو جهاز Via C3/C4 صغير، أو أي جهاز كمبيوتر قديم يمكنك نسخه باستخدام جهاز USB / PCI / أي شيء آخر جهاز.

ربما يكون المكان الجيد للبدء Kernelnewbies.org - الذي يحتوي على الكثير من الروابط والمعلومات المفيدة لمطوري النواة، ويحتوي أيضًا على قائمة من المهام سهلة التنفيذ للتعامل مع المبتدئين.

بعض الكتب للقراءة:

فهم نواة لينكس - مرجع جيد جدًا يوضح تفاصيل تصميم أنظمة النواة الفرعية

برامج تشغيل الأجهزة لينكس - تمت كتابته بشكل أشبه ببرنامج تعليمي يحتوي على الكثير من أمثلة التعليمات البرمجية، مع التركيز على المضي قدمًا وشرح الجوانب الرئيسية لنواة Linux.فهو يقدم عملية البناء وأساسيات وحدات النواة.

دليل برمجة وحدة Linux Kernel - بعض المواد التمهيدية أكثر

كما اقترحنا سابقًا، يعد النظر إلى كود Linux فكرة جيدة دائمًا، خاصة وأن Linux Kernel API تميل إلى التغيير كثيرًا ...يساعد LXR كثيرًا من خلال واجهة تصفح رائعة جدًا - lxr.linux.no

لفهم عملية بناء Kernel، قد يكون هذا الرابط مفيدًا:

ملفات تعريف Linux Kernel (kbuild)

أخيرًا وليس آخرًا، تصفح دليل التوثيق الخاص بتوزيع Kernel Source!

فيما يلي بعض التمارين المثيرة للاهتمام التي تمت سرقتها بوقاحة من فئة تطوير النواة:

  • اكتب وحدة kernel التي تنشئ الملف /proc/jiffies الذي يقدم تقريرًا عن الوقت الحالي في لمح البصر عند كل وصول للقراءة.
  • اكتب وحدة kernel توفر ملف proc /proc/sleep.عندما يكتب أحد التطبيقات عددًا من الثواني كنص ASCII في هذا الملف ("echo 3 > /proc/sleep")، فيجب حظره لمدة محددة من الثواني.يجب ألا يكون لعمليات الوصول للكتابة أي تأثير جانبي على محتويات الملف، أي أنه عند عمليات الوصول للقراءة، يجب أن يبدو الملف فارغًا (انظر LDD3، الفصل 1).6/7)
  • اكتب ملف proc حيث يمكنك تخزين بعض النصوص مؤقتًا (باستخدام echo "blah" > /proc/pipe) ثم أخرجه مرة أخرى (cat /proc/pipe)، مع مسح الملف.احذر من مشكلات المزامنة.
  • قم بتعديل وحدة مثال توجيه الإخراج للتسجيل كجهاز أحرف /dev/pipe، وإضافة تخصيص ذاكرة ديناميكي لطلبات الكتابة.
  • اكتب نظام ملفات بسيط حقًا.

نصائح أخرى

مطلق يجب يكون هذا كتاب من تأليف روبيني.(متوفرة كنسخة ورقية أو نسخة إلكترونية مجانية)

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

أما بالنسبة للقيام بالأعمال المضمنة، فإنني أوصي بشراء أحد أجهزة الكمبيوتر ذات اللوحة الواحدة (SBC) العديدة الموجودة في السوق.هناك عدد من هذه الأجهزة التي تعتمد على معالجات x86، عادةً مع واجهات PC/104 (يتوافق PC/104 كهربائيًا مع معيار ناقل ISA، ولكنه يعتمد على موصلات قابلة للتكديس بدلاً من موصلات الحافة - من السهل جدًا ربط الأجهزة المخصصة بها)

عادةً ما تحتوي على موصلات VGA تسهل عملية تصحيح الأخطاء.

بالنسبة لاختراق Linux المضمن، يعد جهاز التوجيه Linksys WRT54G البسيط الذي يمكنك شراؤه في كل مكان بمثابة منصة تطوير بحد ذاتها http://en.wikipedia.org/wiki/Linksys_WRT54G_series:

يتميز WRT54G بكونه أول جهاز شبكة على مستوى المستهلك تم إصدار كود مصدر البرنامج الثابت الخاص به للوفاء بالتزامات GNU GPL.يتيح ذلك للمبرمجين تعديل البرامج الثابتة لتغيير أو إضافة وظائف إلى الجهاز.توفر العديد من مشاريع البرامج الثابتة التابعة لجهات خارجية للجمهور برامج ثابتة محسنة لـ WRT54G.

لقد حاولت التثبيت OpenWrt و DD-WRT البرامج الثابتة عليه.يمكنك التحقق من ذلك كنقطة انطلاق للقرصنة على منصة منخفضة التكلفة.

بالنسبة للمبتدئين، أفضل طريقة هي قراءة الكثير من التعليمات البرمجية.بما أن Linux مفتوح المصدر، فستجد العشرات من برامج التشغيل.ابحث عن واحد يعمل في بعض النواحي مثل ما تريد كتابته.ستجد بعض التعليمات البرمجية اللائقة وسهلة الفهم نسبيًا (جهاز الاسترجاع، ROM fs، وما إلى ذلك)

يمكنك أيضًا استخدام lxr.linux.no, ، وهو رمز Linux المرجعي.إذا كان عليك معرفة كيفية عمل شيء ما، وتحتاج إلى النظر في الكود، فهذه طريقة جيدة وسهلة.

يوجد أيضًا كتاب O'Reilly (فهم نواة Linux، الإصدار الثالث يدور حول 2.6 نواة) أو إذا كنت تريد شيئًا مجانًا، يمكنك استخدام كتاب برمجة Linux المتقدمة (http://www.advancedlinuxprogramming.com/).هناك أيضًا الكثير من الوثائق المحددة حول أنظمة الملفات والشبكات وما إلى ذلك.

بعض الأشياء التي يجب الاستعداد لها:

  • سوف تقوم بالتجميع المتقاطع.سيستخدم الجهاز المضمن وحدة المعالجة المركزية MIPS أو PowerPC أو ARM ولكن لن يحتوي على طاقة وحدة المعالجة المركزية أو الذاكرة أو مساحة التخزين الكافية لتجميع النواة الخاصة به في فترة زمنية معقولة.
  • غالبًا ما يستخدم النظام المضمن منفذًا تسلسليًا كوحدة تحكم، ولتقليل التكلفة لا يوجد عادةً موصل ملحوم على لوحات الإنتاج.يعد تصحيح أخطاء ذعر kernel أمرًا صعبًا للغاية ما لم تتمكن من لحام موصل المنفذ التسلسلي، فلن يكون لديك الكثير من المعلومات حول الخطأ الذي حدث.

ال لينكسيس NSLU2 هي طريقة منخفضة التكلفة للحصول على نظام مضمن حقيقي للعمل معه، ويحتوي على منفذ USB لإضافة الأجهزة الطرفية.يمكن أيضًا استخدام أي عدد من نقاط الوصول اللاسلكية، راجع صفحة التوافق مع OpenWrt. انتبه إلى أن الطرازات الحالية من Linksys WRT54G التي ستجدها في المتاجر لم يعد من الممكن استخدامها مع Linux:لديهم ذاكرة وصول عشوائي (RAM) وفلاش أقل من أجل تقليل التكلفة.تستخدم Cisco/Linksys الآن vxWorks على WRT54G، مع مساحة ذاكرة أصغر.

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

أنا مبتدئ تمامًا في اختراق النواة :) قررت شراء كتابين "تطوير برامج Linux:دليل يتضمن تمارين" و"كتابة برامج تشغيل أجهزة Linux:دليل يحتوي على تمارين" مكتوبة بشكل واضح جدًا وتوفر قاعدة جيدة لمزيد من التعلم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top