كيفية تغيير إصدار نواة لينكس بأمان في GRUB2

آخر تحديث: 31/03/2026
نبذة عن الكاتب: إسحاق
  • يتيح لك GRUB2 اختيار إصدار النواة الذي تريد تشغيله افتراضيًا بمرونة، باستخدام فهارس القوائم أو اسم الإدخال المحدد.
  • يتطلب التعامل مع فروع linux-generic وHWE وedge التحكم في GRUB لتجنب حالات عدم الاستقرار عند تثبيت نواة أحدث.
  • يُعد تعديل ملف /etc/default/grub وإعادة إنشاء التكوين باستخدام update-grub أساسًا لإصلاح أو استعادة النواة الافتراضية.
  • يضمن إلغاء تثبيت النواة المتعارضة والحفاظ على فرع واحد مستقر على الأقل أن يظل النظام قابلاً للتشغيل وآمناً.

تغيير إصدار نواة لينكس في GRUB2

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

عند تثبيت عدة نواة بالتوازي، يحاول GRUB2 دائمًا تشغيل أحدث نواة متاحة . وهذا مناسب في معظم الأحيان، ولكن إذا اضطررتَ للعودة إلى إصدار أقدم بسبب خلل أو برنامج تشغيل معيب، فستحتاج إلى تحديد النواة التي سيستخدمها GRUB كنواة افتراضية. في هذه المقالة، سنستعرض بالتفصيل وبوضوح كيفية القيام بذلك بأمان وبشكل متسق، وما هي الفروقات الدقيقة التي يجب أن تكون على دراية بها مع فروع HWE الجديدة، وكيفية دمج ذلك مع حيل أخرى مفيدة متعلقة بـ GRUB2.

ما هي إصدارات النواة التي يدعمها نظام أوبونتو، ولماذا ترغب في تغييرها؟

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

من جهة، هناك فرع linux-generic الكلاسيكي ، وهو عادةً الخيار الافتراضي على الخوادم والأنظمة التي تُعدّ فيها الاستقرارية أولوية قصوى. هذه نواة طويلة الأمد، خضعت لاختبارات شاملة، وفي إصدارات الدعم طويل الأمد مثل أوبونتو 22.04، تُقابل عادةً سلاسل مثل 5.15.x. فلسفتها واضحة: تقليل المفاجآت والأعطال بعد التحديث.

على أجهزة الكمبيوتر المكتبية، يوفر نظام أوبونتو أيضًا نواة HWE (تمكين الأجهزة) . يتم تثبيت هذه الفروع، على سبيل المثال، باستخدام أوامر مثل ` sudo apt install linux-generic-hwe-22.04` ، وتشير إلى إصدارات أحدث من النواة، مثل سلسلة 6.5.x في حالة أوبونتو 22.04 LTS، بهدف توفير الدعم للأجهزة الحديثة التي لم تكن موجودة عند إصدار النسخة الأصلية من LTS.

إذا كنت ترغب في مزيد من التحسين، فهناك أيضًا إصدار hwe-edge ، المصمم كفرع "متطور" أو متطور للغاية . يتم تثبيته باستخدام أوامر مثل ` sudo apt install linux-generic-hwe-22.04-edge` ، وعادةً ما يتضمن نواة أحدث (على سبيل المثال، 6.7.x في أوبونتو 22.04 نفسه). يوفر هذا الإصدار دعمًا لأجهزة حديثة جدًا، ولكن على حساب زيادة احتمالية مواجهة أخطاء أو عدم استقرار أو سلوك غير طبيعي.

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

خيارات متقدمة لبرنامج GRUB2

اختر مؤقتًا نواة مختلفة من قائمة GRUB2

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

في نظام أوبونتو، عند تشغيل الجهاز، يمكنك عرض قائمة GRUB2 بالضغط باستمرار على مفتاح Shift أثناء مرحلة الإقلاع الأولية. هذه الطريقة فعّالة في أنظمة BIOS التقليدية؛ أما في أنظمة UEFI، فيعرض GRUB عادةً القائمة الافتراضية، لكن الفكرة واحدة: عرض قائمة الأنظمة والخيارات.

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

  كيفية الانضمام إلى نطاقات Active Directory أو Azure AD: دليل كامل

إذا كنت تواجه مشاكل مع أحدث إصدار من النواة، الإجراء المعتاد هو الدخول إلى "الخيارات المتقدمة لنظام أوبونتو". واختر إصدارًا أقدم (على سبيل المثال، Ubuntu, with Linux 5.15.0-94-genericبدلاً من أحدث إصدار 6.x. بمجرد تشغيل النظام بنجاح باستخدام هذا الإصدار، يمكنك إلغاء تثبيت النواة المتعارضة وإعادة إنشاء التكوين باستخدام سودو التحديث- grub.

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

اعرض جميع النوى التي يتعرف عليها GRUB2

لتعيين نواة افتراضية بشكل موثوق، عليك أولاً معرفة عناصر قائمة GRUB2 المُهيأة فعلياً . لا يكفي مجرد النظر إلى الحزم المُثبتة، لأن مواقع القوائم قد تتغير عند إضافة أو إزالة النوى.

يقوم برنامج GRUB2 بإنشاء قائمته الرئيسية في الملف /boot/grub/grub.cfgعلى الرغم من أنه لا يُنصح بتعديله يدويًا (يتم استبداله عند تشغيل البرنامج). التحديث نكشنعم، يمكنك قراءته لاستخراج المعلومات. إليك أمر عملي جدًا لعرض قائمة الإدخالات:

grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»

سيعيد هذا الأمر قائمة بجميع الإدخالات والقوائم الفرعية التي تظهر عند بدء التشغيل، على غرار ما يلي:

menuentry Ubuntu
submenu Advanced options for Ubuntu
menuentry Ubuntu, with Linux 6.7.0-15-generic
menuentry Ubuntu, with Linux 6.7.0-15-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-94-generic
menuentry Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-92-generic
menuentry Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry Memory test (memtest86+.elf)
menuentry Memory test (memtest86+.bin, serial console)
menuentry MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)

عادةً ما يكون الخيار الأول هو "أوبونتو" مع أحدث نواة.وفي القائمة الفرعية "خيارات متقدمة"، تظهر جميع الإصدارات المثبتة، مرتبة من الأحدث إلى الأقدم. في مثالنا، إذا كنت ترغب في التمهيد دائمًا باستخدام Ubuntu, with Linux 5.15.0-94-genericسيكون هذا الخيار موجودًا في القائمة الفرعية المتقدمة، وليس في القائمة الرئيسية.

قائمة إدخالات GRUB2

قم بتعيين نواة محددة حسب الموضع في القائمة (مؤشرات GRUB_DEFAULT)

تتمثل الطريقة الكلاسيكية لتعيين النواة التي يريد GRUB2 تشغيلها افتراضيًا في تحديد فهرس (موضع) الإدخال، أو حتى مجموعة "القائمة الفرعية > الإدخال" عندما يكون الإصدار المطلوب موجودًا ضمن "الخيارات المتقدمة لنظام Ubuntu".

الملف المسؤول عن هذا هو /etc/default/grub . قبل تعديله، يُنصح بشدة بعمل نسخة احتياطية سريعة تحسبًا لاحتياجك إلى استعادة الحالة السابقة بسهولة. يمكنك القيام بذلك باستخدام:

sudo cp / etc / default / grub /etc/default/grub.bak

بعد ذلك، قم بتحريره باستخدام محرر النصوص المفضل لديك، على سبيل المثال باستخدام برنامج Nano:

سودو نانو / الخ / الافتراضي / نكش

سترى في الداخل سطراً كهذا GRUB_DEFAULT=0وهذا يشير إلى أنه سيتم استخدام الإدخال الأول في القائمة الرئيسية (الفهرس صفر). إذا كانت النواة التي تريدها موجودة ضمن القائمة الفرعية "خيارات متقدمة"يمكنك توجيه GRUB للدخول إلى تلك القائمة الفرعية وتحديد موقع معين باستخدام الترميز submenú>entrada.

باتباع المثال السابق، إذا كان "الخيارات المتقدمة لنظام أوبونتو" هو الخيار 1 في القائمة الرئيسية، وكان "أوبونتو مع لينكس 5.15.0-94-generic" هو الخيار الثالث ضمن تلك القائمة الفرعية (بدءًا من الصفر وتجاوز أوضاع الاسترداد)، فيمكنك كتابة شيء مثل:

GRUB_DEFAULT="1>3"

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

بمجرد أن تقوم بالتغيير GRUB_DEFAULTاحفظ الملف (في برنامج Nano، CTRL + O ثم CTRL + X) ويطبق التغييرات عن طريق إعادة إنشاء تكوين GRUB باستخدام:

سودو التحديث- grub

بعد ذلك، أعد تشغيل النظام باستخدام الأمر `sudo reboot` ، وبمجرد بدء التشغيل، تحقق من النواة التي تم تحميلها باستخدام الأمر التالي:

uname -a

ينبغي أن تُظهر لك النتيجة، على سبيل المثال، Linux ... 5.15.0-94-generic ... يشير هذا إلى أنك تستخدم الآن الإصدار الذي قمت بتعيينه باستخدام الفهارس في GRUB_DEFAULT.

استخدم اسم عنصر القائمة بدلاً من الفهارس (وضع الحفظ)

تُعاني طريقة الفهرسة من مشكلة رئيسية: تتغير المواضع عند تثبيت أو إزالة النواةهذا يعني أن تحديث النواة يمكن أن يجعل جهازك 1>3 توقف عن استهداف النواة الصحيحة، وهذا بالضبط ما تريد تجنبه إذا كنت تبحث عن استقرار طويل الأمد.

  شرح كامل لأمر wget في لينكس: دليل عملي

يوفر GRUB2 بديلاً أكثر قوة: استخدم الاسم الدقيق لعنصر القائمة كعنصر افتراضيوبهذه الطريقة، طالما أن هذا المدخل موجود في grub.cfgسيستمر اختياره حتى لو تمت إضافة إصدارات جديدة فوقه أو تحته في القائمة.

الفكرة العامة هي كالتالي: أولاً يمكنك تحديد الاسم الكامل لعنصر القائمة الذي تريدهكما يظهر في /boot/grub/grub.cfg (على سبيل المثال Ubuntu, with Linux 6.8.0-60-genericثم تقوم بتهيئة GRUB لاستخدامه كـ المدخل المحفوظ إفتراضي.

للعثور على الاسم الدقيق، يمكنك فتح ملف التكوين باستخدام محرر أو عارض، على سبيل المثال:

سودو نانو /boot/grub/grub.cfg

دات مره بداخل، استخدم Ctrl+W في Nano للبحث عن السلسلة النصية التي تُطابق إصدار النواة هذا ما يثير اهتمامك (على سبيل المثال، "6.8.0-60-generic"). على غرار menuentry سترى العنوان الكامل، على سبيل المثال:

menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...

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

sudo grub-set-default «Ubuntu, with Linux 6.8.0-60-generic»

يُحدد هذا الأمر الإدخال المُحدد باعتباره "الإدخال الافتراضي المحفوظ". وللتأكد من تطبيقه بشكل صحيح، يمكنك مراجعة ملف بيئة GRUB.

sudo grub-editenv list

يجب أن ترى سطراً كهذا:

saved_entry=Ubuntu, with Linux 6.8.0-60-generic

من الممكن أيضاً، اعتماداً على التكوين السابق، يتم استخدام الخيار GRUB_DEFAULT=saved en /etc/default/grubوهذا يُخبر GRUB باستخدام الأخير دائمًا المدخل المحفوظ مُثبتة. على أي حال، بينما الـ saved_entry إذا كانت تتطابق مع النواة التي تريدها، فستستمر في تشغيل هذا الإصدار تلقائيًا.

بعد تطبيق هذه التغييرات، أعد إنشاء ملف التكوين باستخدام `sudo update-grub` ، وأعد تشغيل النظام، وتأكد مرة أخرى باستخدام `uname -a` من أنك قمت بالتمهيد باستخدام الإصدار المحدد كافتراضي.

قم بتهيئة GRUB2 باستخدام النواة المحفوظة

تغيير نواة نظام أوبونتو إلى إصدار محدد (التثبيت والرجوع إلى إصدار أقدم)

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

الخطوة الأولى دائمًا هي معرفة نواة النظام التي تعمل عليها حاليًا . يمكنك القيام بذلك باستخدام أوامر مثل:

uname-R

اوه حسنا:

uname -a

سيعيد ذلك شيئًا كهذا:

Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux

بمجرد أن تعرف مكانك، فإن الخطوة التالية هي اطلع على أنواع النواة المتوفرة في المستودعاتفي بيئات أوبونتو/ديبيان، يتم ذلك عادةً عن طريق الاستعلام عن الحزم. linux-image من المستودع، قم بتصفية النتائج حسب الإصدار الذي ترغب فيه. بمجرد تحديد الإصدار المطلوب، يمكنك تثبيته مباشرةً باستخدام apt أو تجميعه بنفسك (انظر كيفية البحث عن التكوينات في `make menuconfig`), كما تفضل.

على سبيل المثال، إذا أردتَ الرجوع من الإصدار 6.8.0-85-generic إلى الإصدار 6.8.0-60-generic ، فستقوم بتثبيت الحزمة المناسبة باستخدام الأمر المُناسب، ثم تُؤكد ذلك بالضغط على "Y" عندما يسألك apt عما إذا كنت تُريد مُتابعة التثبيت. بعد اكتمال العملية، سيكون لديك إصدار النواة هذا مُتاحًا للإقلاع ، مع العلم أن GRUB سيستمر في اختيار الإصدار الأحدث حتى تُغير الإعدادات كما هو مُوضح.

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

قم بتعيين نواة معينة من القائمة الفرعية "خيارات متقدمة" كنواة افتراضية

في توزيعات مثل أوبونتو 22 و24، عند إضافة إصدار نواة أقدم من الإصدار الحالي، لا يُعيّن هذا الإصدار كخيار رئيسي ، بل يُضاف إلى قائمة الخيارات المتقدمة في أوبونتو . لذا، حتى لو ثبّت إصدارًا 6.8.0-60 أقدم من 6.8.0-85، فسيتم تشغيل النظام بالإصدار 85 عند إعادة التشغيل.

إلى يقوم برنامج GRUB2 تلقائيًا باختيار الإصدار الذي تريده من القائمة الفرعية.يجب أن تعرف موقعه بدقة. مرة أخرى، الأمر الذي يسرد menuentry y submenu يساعدك ذلك على رؤية البنية والترتيب العددي الذي سيستخدمه برنامج GRUB.

  يقدم Linux 6.14 تحسينات في الأداء والتوافق والأمان

تخيل أنك بعد تشغيل أمر العرض، اكتشفت أن نواة النظام المستهدفة (على سبيل المثال، "أوبونتو، مع لينكس 6.8.0-60-generic") تظهر في الموضع الرابع من القائمة الفرعية "خيارات متقدمة"، وأن هذه القائمة الفرعية هي الأولى بعد العنصر الرئيسي. في هذه الحالة، سيكون ترتيب العناصر، بدءًا من الصفر، هو 1>2 (القائمة الفرعية في الموضع 1، والعنصر في الموضع 2 داخل تلك القائمة الفرعية).

في الملف /etc/default/grubثم تقوم بتغيير السطر:

GRUB_DEFAULT=0

بواسطة:

GRUB_DEFAULT="1>2"

بعد حفظ التغييرات وتشغيل sudo update-grub ، في المرة القادمة التي تقوم فيها بالتمهيد، سيتم تحديد تلك النواة المحددة تلقائيًا ضمن "الخيارات المتقدمة"، دون الحاجة إلى إدخال القائمة الفرعية يدويًا في كل مرة.

بعد إعادة التشغيل، يمكنك التأكد من أن كل شيء سار على ما يرام. uname-R o uname -a، والتحقق من أن إصدار النواة النشط هو الإصدار الذي قمت بتعيينه من خلال GRUB_DEFAULT.

تحرير تكوين GRUB2

قم بإلغاء تثبيت HWE ونواة الحافة، ثم ارجع إلى الفرع المستقر.

بمجرد أن تتمكن من تشغيل النظام باستخدام نواة مستقرة من فرع linux-generic (على سبيل المثال، سلسلة 5.15.x في Ubuntu 22.04 LTS)، فإن الخطوة المنطقية التالية إذا كانت نواة HWE أو نواة الحافة قد سببت لك مشاكل هي تنظيف تلك الفروع من النظام.

لإلغاء تثبيت حزم HWE الوصفية، يمكنك استخدام الأمر `apt purge` مع رمز بدل يغطي الفرع بأكمله، على النحو التالي:

sudo apt purge linux-generic-hwe-22.04*

بعد إزالة تلك الحزم الوصفية، قد ترغب في حذف صور نواة النظام الحديثة التي لم تعد بحاجة إليها . على سبيل المثال، إذا كنت ترغب في التخلص من جميع النوى التي تتجاوز الإصدار 6.x لصالح سلسلة 5.x، فيمكنك استخدام أمر كهذا:

sudo apt purge linux-image-6*

يزيل هذا النوع من عمليات الحذف حزم صور النواة التي يبدأ اسمها بـ "linux-image-6"، لذا راجع بعناية ما ستزيله قبل التأكيد. تذكر الاحتفاظ بنسخة واحدة على الأقل من الفرع المستقر والفعّال ، وعادةً ما يكون linux-generic ، لأنه بدونها قد ينفد مخزون النواة القابلة للتشغيل.

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

سودو التحديث- grub

إذا كنت ترغب في ضمان بقاء الفرع العام مثبتًا، يمكنك فرض تثبيته باستخدام ما يلي:

sudo apt install linux-generic

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

كخطوة أخيرة، إذا كنت قد غيرت GRUB_DEFAULT إلى فهرس أو اسم محدد للتغلب على مشاكل HWE/edge، يمكنك إعادته إلى قيمته الافتراضية (عادة 0) إعادة التحرير /etc/default/grub:

سودو نانو / الخ / الافتراضي / نكش

وترك السطر على النحو التالي:

GRUB_DEFAULT="0"

ثم احفظ التغييرات، وقم بتشغيل الأمر sudo update-grub وأعد تشغيل النظام باستخدام الأمر sudo reboot بحيث يتم تشغيل النظام بشكل طبيعي باستخدام أحدث نواة من فرع linux-generic الذي قمت بتثبيته.

في نهاية المطاف، يُصبح التحكم في نواة النظام التي يتم تشغيلها عبر GRUB2 أداةً أساسيةً لأي مستخدم لأنظمة أوبونتو أو ديبيان أو أي توزيعة مشتقة منها، ممن لا يرغبون في الاعتماد كليًا على التحديثات الأخيرة. فمن خلال الجمع بين تثبيت إصدارات محددة، واستخدام "الخيارات المتقدمة"، والاختيار عبر الفهرس أو اسم القائمة، وإزالة الفروع التي تُسبب مشاكل ، يُمكنك تخصيص نواة النظام وفقًا لاحتياجاتك الفعلية: استقرارٌ فائق على الخوادم، وتوافقٌ تام على الأجهزة الحديثة، أو مزيجٌ مدروسٌ من الاثنين في بيئات سطح المكتب حيث لا ترغب في المخاطرة باستخدام نواة تجريبية بشكل يومي.

لا يتم عرض قائمة GRUB عند تغيير GRUB_TIMEOUT=
مقالة ذات صلة:
GRUB لا يعرض القائمة بعد تغيير GRUB_TIMEOUT: الأسباب والحل النهائي