GRUB2 dan kernel vga = parameter

16

Menurut dokumentasi, penggunaan vga=parameter kernel tidak digunakan pada GRUB2. Fakta bahwa beberapa kernel yang lebih baru tampaknya tidak mendukungnya lagi pada adaptor tertentu tidak menjadi masalah karena kartu grafis yang saya miliki berusia tujuh hingga delapan tahun.

Masalahnya sekarang adalah bahwa saya ingin menggunakan mode teks resolusi tinggi, seperti 80x50 bukan 80x25 karakter default. Rupanya semua grafis (VBE / VESA) mode yang keluar dari pertanyaan untuk kartu ini grafis (ATI Rage XL) - daftar mode yang tersedia hanya menunjukkan 0melalui 6. 6adalah 80x60tetapi tampak mengerikan, jadi saya ingin pergi dengan 1(80x50).

Saya telah melihat 80x50 dan 80x60 bekerja setelah mendapatkan daftar mode yang tersedia setiap kali mode default tidak didukung (dengan default dikomentari GRUB_TERMINAL=console) dan saya diminta untuk memilih.

Bagaimana saya dapat mengatur mode, jika saya tidak seharusnya mengaturnya pada baris perintah kernel dan setiap penggunaan GRUB_GFXMODE(dengan atau tanpa vbemodul preloading ) dan GRUB_GFXPAYLOAD_LINUX=keepgagal? Gagal seperti pada: layar tetap kosong karena ini adalah mode grafis yang tidak valid untuk kartu yang saya miliki di mesin ini?

Gagasan saya adalah untuk nomodesettetap menggunakan kernel, tetapi boot loader masih harus mengatur mode grafis. Dan saya tidak dapat melihat opsi selain vga=parameter kernel untuk melakukan itu.

Catatan: yang vbetestdan videotestperintah pada GRUB2 konsol akan kosong layar dan kemudian layar beralih ke modus tidur setelah mengklaim tidak ada input video. vbeinfodan videoinfomenunjukkan beberapa mode yang tersedia selain yang disebutkan di atas, tetapi tidak disebutkan di mana ini harus ditetapkan. Juga, ketika melewati vga=1(tanpa nomodeset) pada baris perintah kernel, saya melihat peringatan yang sangat singkat tentang hal itu ditinggalkan, tetapi terlalu lama untuk membaca sepenuhnya - dan hasilnya tidak muncul di dmesg.

0xC0000022L
sumber
The vgaparameter berlaku untuk kernel, tidak grub2. Tidak peduli bagaimana grub2pengembang berusaha membuat kompleks sederhana, ia tetap berfungsi selama kernel memahami parameter ini.
ajeh

Jawaban:

9

Mungkin sudah ditinggalkan oleh grub2, namun itu tetap bekerja dan harus terus bekerja. Ini berfungsi untuk saya menggunakan grub2 dan debian wheezy serta rhel7.3 (dikonfirmasi 01-2017). Juga menurut dokumentasi resmi itu tidak ditinggalkan:

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

Jika baris perintah yang disediakan oleh boot loader dimasukkan oleh pengguna, pengguna dapat mengharapkan opsi baris perintah berikut berfungsi. Mereka seharusnya tidak dihapus dari baris perintah kernel meskipun tidak semuanya benar-benar bermakna bagi kernel.

vga = di sini adalah bilangan bulat (dalam notasi C, baik desimal, oktal, atau heksadesimal) atau salah satu dari string "normal" (artinya 0xFFFF), "ext" (artinya 0xFFFE) atau "ask" (artinya 0xFFFD). Nilai ini harus dimasukkan ke dalam bidang vid_mode, karena digunakan oleh kernel sebelum baris perintah diuraikan.

Dan https://www.kernel.org/doc/Documentation/svga.txt akan memberi tahu Anda semua yang perlu Anda ketahui. Di bawah ini beberapa contoh resolusi yang biasa saya gunakan:

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

Untuk mendapatkan daftar mode yang didukung, gunakan:

vga=ask

Untuk layar 1024 × 768x24 yang saya temukan berfungsi pada hampir semua sistem dan monitor yang saya gunakan (kali ini dalam desimal dan hex):

vga=792
vga=0x318
aseq
sumber
1
Ini berfungsi untuk saya ketika saya mengedit /etc/default/grubdengan menambahkan vga=792nilai yang adaGRUB_CMDLINE_LINUX
Shashank Vyas
Pembaruan Ubuntu hari ini menginstal boot grub UEFI baru dan mengusulkan perubahan baris perintah untuk ditambahkan vga=currentbersama dengan crash dump stuff. Saya menolak perubahan tetapi datang ke sini bertanya-tanya apa vga=currentartinya.
WinEunuuchs2Unix
2

Parameter vga masih didukung dengan perintah linux16 dan initrd16, jadi jika Anda mengubah "linux" menjadi "linux16" atau "initrd" menjadi "initrd16" Anda bisa mendapatkan perilaku lama. Saya tidak yakin apa yang menyebabkan perubahan lain, tetapi itu bekerja cukup baik untuk saya. :-)

Adam M.
sumber
1
Ini saran yang bagus! Cukup tekan e untuk mengedit di grub2, lalu navigasikan ke tempat dikatakan linux dan masukkan 16 di bagian akhir. Maka Anda dapat menempatkan vga = bertanya di akhir baris. Jika framebuffer masih diaktifkan di kernel, itu mungkin akan segera beralih dari teks VGA cepat ke mode itu.
Alex Cannon