ในระบบของฉัน ฉันติดตั้ง 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
เพื่อที่จะมี ลินุกซ์
และ เริ่มต้น
แต่นั่นให้ความรู้สึกเหมือนเป็นการแฮ็กมากกว่าเล็กน้อย