الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]ما تفسير هذا الكود في نواة لينكس

بدأه أحمد أبو عبد البر في 17 يونيو 2013 · 2 رد · 1,272 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله والحمد لله

 

وقعت لي مشكلة عند تحديث نواة لينكس ولقد بحث في حلولها ولم أجد حلا نافعا

ملخص المشكلة أن النواة لا تلقع وترسل هذه الرسالة

 

No init found. Try passing init= option to kernel

 

ثم عزمت على البحث أكثر عمقا عن سبب المشكلة وبحثت في أكواد النواة فوجد الكود المسؤول عن هذه الرسالة

static int init(void * unused)
{
        lock_kernel();
        do_basic_setup();

        prepare_namespace();

        /*
         * Ok, we have completed the initial bootup, and
         * we're essentially up and running. Get rid of the
         * initmem segments and start the user-mode stuff..
         */
        free_initmem();
        unlock_kernel();

        if (open("/dev/console", O_RDWR, 0) < 0)        // stdin
                printk("Warning: unable to open an initial console.\n");

        (void) dup(0);                                  // stdout
        (void) dup(0);                                  // stderr

        /*
         * We try each of these until one succeeds.
         *
         * The Bourne shell can be used instead of init if we are
         * trying to recover a really broken machine.
         */

        if (execute_command)
                execve(execute_command,argv_init,envp_init);
        execve("/sbin/init",argv_init,envp_init);
        execve("/etc/init",argv_init,envp_init);
        execve("/bin/init",argv_init,envp_init);
        execve("/bin/sh",argv_init,envp_init);
        panic("No init found.  Try passing init= option to kernel.");
}

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

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#2

إذا كان هذا الكود مأخوذ من نواتك الحالية فالنواة التي تستخدمها عمرها أكثر من خمس سنوات . هذا الجزء مسؤول عن تهيئة النواة وتشغيل الشل، أسباب ظهور الرسالة موجودة في Documentation/init.txt، أحد الأسباب أن النواة لم تتمكن من ضم القرض الجذر / أو أنك لاتستخدم المعيارية المناسبة لمعالجك أو أن إعتماديات النواة مفقودة أو غير مطابقة للإصدار الذي تستخدمه (وهذا وارد عند التحديث اليدوي).

#3

شكرا أخي

 

الكود ليس مأخوذا من نواتي بل من موقع github وانا صراحة لم أنتبه إلى أن الكود قديم فشكرا لك على التنبيه

 

هذا هو الكود الأحدث

static int __ref kernel_init(void *unused)
{
kernel_init_freeable();
/* need to finish all async __init code before freeing the memory */
async_synchronize_full();
free_initmem();
mark_rodata_ro();
system_state = SYSTEM_RUNNING;
numa_default_policy();

flush_delayed_fput();

if (ramdisk_execute_command) {
if (!run_init_process(ramdisk_execute_command))
return 0;
pr_err("Failed to execute %s\n", ramdisk_execute_command);
}

/*
* We try each of these until one succeeds.
*
* The Bourne shell can be used instead of init if we are
* trying to recover a really broken machine.
*/
if (execute_command) {
if (!run_init_process(execute_command))
return 0;
pr_err("Failed to execute %s. Attempting defaults...\n",
execute_command);
}
if (!run_init_process("/sbin/init") ||
!run_init_process("/etc/init") ||
!run_init_process("/bin/init") ||
!run_init_process("/bin/sh"))
return 0;

panic("No init found. Try passing init= option to kernel. "
"See Linux Documentation/init.txt for guidance.");
}

الذي فهمته من الجملة الشرطية الأخيرة أنه إذا لم يتم تنفيذ أحد الملفات على الأقل فسوف تظهر رسالة الخطأ فهل هذا صحيح ؟

 

 

 

أنا قرأت Documentation/init.txt من قبل وحاولت تتبع الخطأ ولكن شيئا من ذلك لم ينفع

 

لأني إنما حدثت النواة من المستودعات الرسمية وبواسطة مدير البرامج pacman

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 18 يونيو 2013 في 13:15

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…