ในระบบของฉัน ฉันติดตั้ง CentOS 7 สองชุด และ Windows 10 Pro หนึ่งชุด ทุกระบบสามารถบู๊ตได้และทำงานได้อย่างถูกต้องและเป็นปัจจุบันอย่างสมบูรณ์ (เคอร์เนล แพ็คเกจ การทำงาน)
เมื่อฉันวิ่ง grub2-mkconfig ในสำเนาของ CentOS อย่างใดอย่างหนึ่ง (โฮสต์หนึ่งเรียกว่า พิงกุ, อื่น ๆ พิงกาด้วยเหตุผล) การกำหนดค่าด้วงใหม่จะถูกสร้างขึ้น ส่วนหนึ่งถูกสร้างขึ้นผ่านเทมเพลต os-prober
รายการที่สร้างโดย grub2-mkconfig สำหรับสำเนาของ CentOS ที่ฉันบูทและเริ่มต้น grub2-mkconfig จาก ถูกต้อง นั่นคือพวกเขามีรายการเมนูที่มีบรรทัดดังนี้:
ลินุกซ์ /vmlinuz-5.4.147-1.el7.elrepo.x86_64 root=/dev/mapper/pinga-root ro crashkernel=auto spectre_v2=retpoline
initrdefi /initramfs-5.4.147-1.el7.elrepo.x86_64.img
อย่างไรก็ตาม รายการที่สร้างขึ้นสำหรับสำเนาอื่นของ CentOS 7 จะมีลักษณะดังนี้:
ลินุกซ์ /vmlinuz-5.4.147-1.el7.elrepo.x86_64 root=/dev/mapper/pingu-root ro crashkernel=auto spectre_v2=retpoline
เริ่มต้น /initramfs-5.4.147-1.el7.elrepo.x86_64.img
(หมายเหตุ ลินุกซ์ และ เริ่มต้น แทน ลินุกซ์ และ เริ่มต้น)
ฉันคิดว่านี่เป็นเพราะสี่บรรทัดใน /etc/grub.d/30_os-prober ชอบ ลินุกซ์ ${LKERNEL} ${LPARAMS} (เป็นต้น) - แต่ทำไมต้องเป็นเช่นนี้? เหตุใด os-prober จึงถือว่าสำเนาอื่นของ Linux ควรเริ่มต้นด้วยเสมอ ลินุกซ์ แทน ลินุกซ์?
ฉันพลาดการตั้งค่าหรือการแทนที่บางอย่างที่จะแก้ไขปัญหานี้หรือไม่
สำหรับตอนนี้ ฉันเพิ่งเปลี่ยนบรรทัดเหล่านี้ใน 30_os-prober เพื่อที่จะมี ลินุกซ์ และ เริ่มต้นแต่นั่นให้ความรู้สึกเหมือนเป็นการแฮ็กมากกว่าเล็กน้อย