พารามิเตอร์ GRUB2 และเคอร์เนล vga =


16

ตามเอกสารประกอบการใช้vga=พารามิเตอร์เคอร์เนลจะถูกคัดค้าน ณ วันที่ของ GRUB2 ความจริงที่ว่าเมล็ดพันธุ์ใหม่บางอันดูเหมือนจะไม่สนับสนุนอีกต่อไปในอะแดปเตอร์บางรุ่นก็ไม่ต้องกังวลเพราะกราฟิกการ์ดที่ฉันมีอายุเจ็ดถึงแปดปี

ปัญหาตอนนี้คือฉันต้องการใช้โหมดข้อความความละเอียดสูงกว่าเช่น 80x50 แทนที่จะเป็นตัวอักษรเริ่มต้น 80x25 เห็นได้ชัดว่ากราฟิก (VBE / VESA) โหมดการจะออกจากคำถามสำหรับนี้กราฟิกการ์ด (ATI Rage XL) - รายการของโหมดที่สามารถใช้ได้เพียงแสดงให้เห็นผ่าน0 มันดูน่ากลัว แต่ฉันอยากไปด้วย(80x50)6680x601

ฉันเห็น 80x50 และ 80x60 ทำงานหลังจากรับรายการของโหมดที่มีอยู่เมื่อใดก็ตามที่ไม่รองรับโหมดเริ่มต้น (โดยมีการใส่ความคิดเห็นเริ่มต้นGRUB_TERMINAL=console) และฉันได้รับแจ้งให้เลือก

ฉันจะตั้งค่าโหมดได้อย่างไรถ้าฉันไม่ควรตั้งค่าบนบรรทัดคำสั่งเคอร์เนลและการใช้งานทุกครั้งGRUB_GFXMODE(ไม่ว่าจะมีหรือไม่มีvbeโมดูลการโหลดล่วงหน้า) และGRUB_GFXPAYLOAD_LINUX=keepล้มเหลวหรือไม่ ล้มเหลวเช่นเดียวกับใน: หน้าจอว่างเปล่าเนื่องจากเป็นโหมดกราฟิกที่ไม่ถูกต้องสำหรับการ์ดที่ฉันมีในเครื่องนี้หรือไม่

ความคิดของฉันคือการส่งผ่านnomodesetไปยังเคอร์เนล แต่บูตโหลดเดอร์จะยังคงต้องตั้งค่าโหมดกราฟิก และฉันไม่เห็นตัวเลือกอื่นใดนอกจากvga=พารามิเตอร์เคอร์เนลสำหรับการทำเช่นนั้น

หมายเหตุ:vbetestและvideotestคำสั่งใน GRUB2 Console จะว่างเปล่าหน้าจอแล้วหน้าจอสลับไปที่โหมดการนอนหลับหลังจากที่อ้างว่าไม่มีการใส่วิดีโอ vbeinfoและvideoinfoแสดงโหมดที่มีอยู่สองสามโหมดนอกเหนือจากที่กล่าวถึงข้างต้น แต่ไม่มีการกล่าวถึงว่าควรตั้งค่าที่ใด นอกจากนี้เมื่อผ่านvga=1(ไม่nomodeset) ในบรรทัดคำสั่งเคอร์เนลผมเห็นคำเตือนสั้น ๆ เกี่ยวกับเรื่องนี้ถูกเลิก แต่มันยาวเกินไปที่จะอ่านอย่างสมบูรณ์ - dmesgและการส่งออกจะไม่ปรากฏใน



พารามิเตอร์นำไปใช้กับเคอร์เนลไม่vga grub2ไม่ว่าgrub2นักพัฒนาจะพยายามสร้างคอมเพล็กซ์แบบง่าย ๆ อย่างไรก็ยังคงทำงานได้ตราบใดที่เมล็ดเข้าใจพารามิเตอร์นี้
ajeh

คำตอบ:


9

บางทีมันอาจเลิกใช้แล้วโดย grub2 อย่างไรก็ตามมันควรจะทำงานได้และจะต้องทำงานต่อไป มันใช้งานได้สำหรับฉันโดยใช้ grub2 และ debian wheezy และ rhel7.3 (ยืนยัน 01-2017) นอกจากนี้ตามเอกสารอย่างเป็นทางการก็ไม่ได้คัดค้าน:

https://www.kernel.org/doc/Documentation/x86/boot.txt

หากบรรทัดคำสั่งที่จัดเตรียมโดยบูตโหลดเดอร์ถูกป้อนโดยผู้ใช้ผู้ใช้อาจคาดหวังว่าตัวเลือกบรรทัดคำสั่งต่อไปนี้จะทำงาน โดยทั่วไปไม่ควรลบออกจากบรรทัดคำสั่งเคอร์เนลแม้ว่าจะไม่ได้มีความหมายกับเคอร์เนลก็ตาม

vga = นี่คือจำนวนเต็ม (ในรูปแบบ C ทั้งทศนิยมฐานแปดหรือฐานสิบหก) หรือหนึ่งในสตริง "ปกติ" (หมายถึง 0xFFFF), "ext" (หมายถึง 0xFFFE) หรือ "ถาม" (หมายถึง 0xFFFD) ค่านี้ควรถูกป้อนลงในฟิลด์ vid_mode เนื่องจากถูกใช้โดยเคอร์เนลก่อนที่จะแยกบรรทัดคำสั่ง

และhttps://www.kernel.org/doc/Documentation/svga.txtจะบอกทุกอย่างที่คุณจำเป็นต้องรู้ ต่อไปนี้เป็นตัวอย่างบางส่วนของความละเอียดที่ฉันมักใช้:

vga=0x31b --> 1280x1024x32
vga=0x34d --> 1600x900x32
vga=0x31e --> 1600x1200x32

ในการรับรายการโหมดที่รองรับให้ใช้:

vga=ask

สำหรับหน้าจอ 1024 × 768x24 ซึ่งฉันพบว่าใช้งานได้กับระบบและจอภาพทั้งหมดที่ฉันใช้ (คราวนี้เป็นทศนิยมและฐานสิบหก):

vga=792
vga=0x318

1
สิ่งนี้ใช้ได้กับฉันเมื่อฉันแก้ไข/etc/default/grubโดยต่อท้ายvga=792ค่าที่มีอยู่ของGRUB_CMDLINE_LINUX
Shashank Vyas

อัปเดต Ubuntu วันนี้ติดตั้งสิ่งใหม่สำหรับ UEFI grub boot และเสนอการเปลี่ยนแปลงบรรทัดคำสั่งเพื่อเพิ่มvga=currentพร้อมกับสิ่งที่ผิดพลาดการถ่ายโอนข้อมูล ฉันปฏิเสธการเปลี่ยนแปลง แต่มาที่นี่เพื่อสงสัยว่าvga=currentหมายถึงอะไร
WinEunuuchs2Unix

2

พารามิเตอร์ vga ยังคงรองรับกับคำสั่ง linux16 และ initrd16 ดังนั้นหากคุณเปลี่ยน "linux" เป็น "linux16" หรือ "initrd" เป็น "initrd16" คุณจะได้รับพฤติกรรมเก่า ฉันไม่แน่ใจว่าการเปลี่ยนแปลงอื่นใดที่ทำให้เกิด แต่มันทำงานได้ดีพอสำหรับฉัน :-)


1
นี่คือคำแนะนำที่ดี! เพียงแค่กด e เพื่อแก้ไขใน grub2 จากนั้นไปที่ตำแหน่งที่มันบอกว่าลินุกซ์และใส่ 16 ในตอนท้าย จากนั้นคุณสามารถใส่ vga = ถามที่ท้ายบรรทัด หาก framebuffer ยังคงเปิดใช้งานอยู่ในเคอร์เนลมันอาจจะเปลี่ยนจากข้อความ VGA ที่รวดเร็วไปยังโหมดนั้นในไม่ช้า
Alex Cannon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.