Mengurangi pergantian mode video saat boot Linux

12

Ketika saya mem-boot komputer desktop saya, yang hanya memiliki Linux, mode video dan / atau font konsol diaktifkan empat kali:

  • Ketika GRUB dimulai, ia beralih dari teks 80x25 ke mode grafis sehingga dapat menggambar latar belakang yang cantik di belakang menu-nya;
  • GRUB kemudian kembali ke teks 80x25 setelah saya mengambil sesuatu dari menu;
  • Ketika driver KMS untuk kartu video saya dimuat, ia beralih ke mode teks beresolusi lebih tinggi (saya tidak tahu apakah ini mode teks perangkat keras atau tidak);
  • Akhirnya X dimulai dan berjalan grafik dan tetap seperti itu. Saya pikir saklar terakhir ini tidak mengubah resolusi mode video, hanya grafisnya.

Saya ingin menyingkirkan sebanyak mungkin sakelar mode ini. Idealnya, ketika GRUB mengambil alih dari BIOS, ia akan langsung menuju mode teks resolusi tinggi yang sama dengan yang dipilih oleh driver KMS, dan tampilan akan tetap dalam mode itu sampai X mulai dan menampilkan grafik. Saya mendapat kesan bahwa ini dimungkinkan dengan mucking dengan baris perintah kernel dan / atau parameter memuat modul konsol GRUB, tapi saya tidak tahu detailnya.

GRUB 1.98 + 20100706, kernel 2.6.32.15 menggunakan driver video Nouveau. Distro adalah Debian tidak stabil. Tolong jangan ada jawaban yang melibatkan kompilasi ulang apa pun atau merakit kombinasi kernel / driver yang berdarah, saya tidak cukup peduli tentang hal ini untuk mendapatkan banyak masalah.

EDIT: Tobu menyarankan pengaturan GRUB_GFXMODEke resolusi piksel penuh dari monitor, dan GRUB_GFXPAYLOAD_LINUX=keepuntuk menghindari sakelar mode setelah menu hilang. Ini memang bagian dari apa yang saya inginkan, tetapi akhirnya menjadi lebih buruk secara keseluruhan. Tidak ada mode switch setelah menu, tapi masih ada layar yang sangat lambat mengecat ulang (saya mungkin harus menyerah pada gfxmode GRUB, ini terlalu lambat pada 1920x1200). Lebih serius, sekarang ada saklar mode ganda ketika nouveaufb memuat, bersama dengan pesan kesalahan yang tampak menyenangkandmesg

[    5.923798] [drm] nouveau 0000:02:00.0: allocated 1920x1200 fb: 0x40250000, bo ffff8801ba5f4600
[    5.923802] fb: conflicting fb hw usage nouveaufb vs EFI VGA - removing generic driver
[    5.923821] [drm] nouveau 0000:02:00.0: PFIFO_INTR 0x00000010 - Ch 1
("PFIFO_INTR" message repeats 400+ times)
[    5.925609] Console: switching to colour dummy device 80x25
[    5.925802] Console: switching to colour frame buffer device 240x75
zwol
sumber
Saya ingin tahu apa itu "grafis".
Dijeda sampai pemberitahuan lebih lanjut.
1
Untuk resolusi piksel yang diberikan, mode video dapat berupa grafik (setiap piksel individu dapat dialamatkan) atau teks (mensimulasikan terminal sel karakter dari masa lalu). Apa yang saya maksud dengan "graphicalness" adalah, saklar mode video keempat yang saya daftarkan beralih dari teks ke grafis tanpa mengubah resolusi piksel, saya pikir tetap.
zwol

Jawaban:

2

Plymouth dirancang untuk membantu dalam hal ini:

Idenya adalah bahwa pada awal proses boot mode asli untuk komputer diatur, plymouth menggunakan mode itu, dan mode itu tetap sepanjang seluruh proses boot hingga dan setelah X dimulai. Idealnya, tujuannya adalah untuk menyingkirkan semua flicker saat startup.

Karena Anda hanya memiliki satu OS yang diinstal, menonaktifkan perubahan resolusi grub (tidak ada grafik latar belakang), dan bahkan menu itu sendiri, meninggalkannya 80x25 tidak akan menghasilkan perubahan sampai Plymouth mengambil alih.

chris
sumber
1

Periksa resolusi dan kedalaman warna Anda:

xrandr -q
xdpyinfo | grep 'depth of root window' | awk '{ print $5 }'

Set GRUB_GFXMODE=<width>x<height>x<depth>di /etc/default/grubsehingga resolusi menu grub sesuai dengan resolusi KMS.

Mungkin menambahkan GRUB_GFXPAYLOAD_LINUX=keepke default juga, sehingga tidak ada langkah menengah setelah menu grub dan sebelum mengatur KMS. X11 harus menyimpan apa yang digunakan KMS, artinya tidak ada saklar X11 yang perlu dikhawatirkan.

Terapkan hasil edit Anda dengan

sudo update-grub
Tobu
sumber
Terima kasih! Ini memang bagian dari apa yang saya inginkan, tetapi memiliki efek samping negatif yang membuatnya lebih buruk daripada status quo. Saya menambahkan detail ke pertanyaan.
zwol
0

Anda dapat mengaktifkan KMS dari sesaat setelah GRUB, dan ini biasanya akan menyertakan parameter ke baris perintah kernel yang menyalakannya. Untuk intel, itu i910.modeset=1, tetapi di luar itu Anda harus memeriksa dokumen distribusi Anda tentang ini.

Daenyth
sumber
KMS aktif sejak driver nouveau dimuat, saya percaya, tapi itu hanya terjadi selama pemindaian perangkat awal udev, beberapa saat setelah userspace berjalan. Saya bermain-main dengan opsi video = dan vga = baris perintah tapi tidak berhasil.
zwol
Anda dapat memberitahu itu untuk memuat sebelum itu dengan metode ini
Daenyth
Pendek membangun kembali kernel dengan nouveaumodul yang dikompilasi dalam (yang terlalu banyak masalah) yang terbaik yang bisa saya lakukan adalah tetap nouveau di /etc/initramfs-tools/modules... tetapi semua yang dilakukan adalah memindahkan saklar mode ganda sebelumnya, dari dalam "Menunggu / dev untuk diisi "ke kanan setelah" Memuat, harap tunggu ... "Tujuannya adalah untuk menghilangkan sakelar mode.
zwol
Dalam hal ini Anda perlu menggunakan boot loader yang mampu KMS. Saya pikir grub2 dapat melakukan ini, tetapi jika tidak, maka Anda benar-benar kurang beruntung.
Daenyth
grub2 memang mengatur mode dan membiarkannya tetap (itulah yang GRUB_GFXPAYLOAD_LINUX = tetap berprestasi) tetapi itu entah bagaimana tidak cukup baik untuk nouveau dan / atau subsistem fb, maka pesan kesalahan "Konflik penggunaan fb hw". Kebetulan, perilaku persis sama dengan i915 di laptop saya.
zwol