التبديل بين كيدي لينكس ونظام تشغيل آخر
إذا كان لديك كيدي لينكس مثبتًا إلى جانب نظام تشغيل آخر قائم على لينكس، يمكنك عادةً الوصول إلى كليهما من خلال قائمة إقلاع البرنامج الثابت لحاسوبك — تلك التي تحصل عليها بالضغط على مفتاح مثل F12 أثناء بدء تشغيل الجهاز.
هذا يعمل، لكنه يعني التقاط ضغطة مفتاح خلال ثانية أو ثانيتين عند كل إعادة تشغيل. تصف هذه الصفحة كيفية إضافة إدخال لكل نظام إلى قائمة إقلاع النظام الآخر، بحيث يمكنك التبديل بينهما من قائمة تنتظرك.
على أي نظام أكتب هذا؟
كل قسم أدناه مُعلَّم بالنظام الذي تنتمي إليه أوامره، لأن الاثنين غير قابلين للتبادل:
- على كيدي لينكس، تستخدم أوامر المسؤول
run0، كما في كل مكان آخر في هذه الوثائق. - على النظام الآخر، تستخدم غالبًا
sudoبدلًا من ذلك، وتختلف مواقع الملفات حسب التوزيعة.
تشغيل أمر على النظام الخاطئ لن يفعل شيئًا في أفضل الأحوال.
إذا كان النظام الآخر يستخدم أيضًا systemd-boot
عادةً لا يوجد شيء لإعداده. يجد systemd-boot الإدخالات بالنظر إلى ESP، لذا إذا كتب كلا النظامين إلى نفس القسم، فيجب أن يظهر كلاهما بالفعل في نفس القائمة.
للتحقق، شغّل ما يلي على كيدي لينكس أو النظام الآخر:
bootctl list
إذا كان النظام الآخر يستخدم GRUB
لا يرى GRUB و systemd-boot بعضهما البعض تلقائيًا، لذا يجب إضافة إدخال على كل جانب.
أضف كيدي لينكس إلى قائمة GRUB
افعل هذا على النظام الآخر، الذي يستخدم GRUB.
أضف ما يلي إلى /etc/grub.d/40_custom، أسفل الأسطر الموجودة بالفعل:
menuentry "systemd-boot" --class systemd {
insmod part_gpt
insmod fat
insmod chain
search --no-floppy --file --set=root /EFI/systemd/systemd-bootx64.efi
chainloader /EFI/systemd/systemd-bootx64.efi
}
لا يحتاج أي شيء هناك إلى تعديل: يثبّت bootctl دائمًا systemd-boot في نفس المسار، أيًا كانت التوزيعة التي شُغِّل عليها.
ثم اجعل الملف قابلًا للتنفيذ وأعد توليد تشكيلة GRUB:
sudo chmod +x /etc/grub.d/40_custom sudo grub-mkconfig -o /boot/grub/grub.cfg
تسمي بعض التوزيعات هذه بشكل مختلف — على سبيل المثال grub2-mkconfig و /boot/grub2/grub.cfg على فيدورا و openSUSE. تحقق مما تستخدمه توزيعتك.
أضف GRUB إلى قائمة كيدي لينكس
افعل هذا على كيدي لينكس.
لهذا الاتجاه، تحتاج أولًا إلى معرفة مكان وجود GRUB على ESP. لا توجد إجابة واحدة: كل توزيعة تختار اسم دليل خاص بها هناك، لذا يجب البحث عن هذا بدلًا من نسخه.
للعثور عليه:
run0 find /boot -name 'grub*.efi' 2>/dev/null
خذ النتيجة واحذف كل شيء قبل /EFI. إذا حصلت على /boot/EFI/debian/grubx64.efi، فالمسار الذي تريده هو /EFI/debian/grubx64.efi.
إذا كان الإقلاع الآمن مفعّلًا، فابحث في ذلك الدليل نفسه عن shimx64.efi واستخدم ذلك المسار بدلًا منه إن وُجد. لا تُوفِّر كل توزيعة واحدًا.
افتح الآن محرر نصوص، وأنشئ ملفًا باسم grub.conf في دليلك الرئيس، وضع فيه ما يلي:
title GRUB ([name for the other OS goes here]) efi [path to the EFI file goes here, e.g. /EFI/debian/grubx64.efi] sort-key zz-grub
استبدل الجزء في السطر الأول بما تريد تسمية المدخل به في القائمة، والجزء في السطر الثاني بالمسار الذي عثرت عليه للتو. ثم انقل الملف إلى مكانه:
run0 mv ~/grub.conf /boot/loader/entries/grub.conf
يجب أن يعرضه bootctl list الآن، وسيظهر في أسفل قائمة الإقلاع عند إعادة التشغيل التالية.
ملاحظات
- إذا كان المدخل المبدئي لكل قائمة هو مُقلع الإقلاع الآخر، فامنح واحدًا منها على الأقل مهلة غير صفرية، وإلا فستتنقل بينهما كما في مسرّع الجسيمات. لذا تجنّب فعل ذلك.
- يحتوي ESP المشترك على أنوية كلا النظامين، لذا قد يمتلئ. يستحق
df -h /bootنظرة إذا بدأت التحديثات بالفشل. - يمكن للتحديثات على أي من النظامين تغيير ترتيب إقلاع البرنامج الثابت أو إزالة المدخلات. إذا تغيّر شيء بشكل غير متوقع، فـ
efibootmgr -vوbootctl listمكانان جيدان لبدء البحث. - إذا كان للنظامين ESP منفصلان، فقد يظل جانب GRUB يعمل، لكن جانب systemd-boot لن يعمل عمومًا، لأنه لا يمكنه تحميل الملفات إلا من ESP الخاص به.
المقالة مساهمة من Hadi Chokr تحت ترخيص CC-BY-4.0.