Zmniejszenie przełączania trybu wideo podczas uruchamiania systemu Linux

12

Kiedy uruchamiam komputer stacjonarny, na którym jest tylko Linux, tryb wideo i / lub czcionka konsoli zmieniają się cztery razy:

  • Kiedy GRUB się uruchamia, przełącza tekst 80x25 na tryb graficzny, dzięki czemu może narysować ładne tło za swoim menu;
  • GRUB wraca do tekstu 80x25 po wybraniu czegoś z menu;
  • Po załadowaniu sterownika KMS mojej karty graficznej przełącza się on na tryb tekstowy o znacznie wyższej rozdzielczości (nie wiem, czy jest to sprzętowy tryb tekstowy, czy nie);
  • Wreszcie X się uruchamia, przechodzi w grafikę i tak pozostaje. Myślę, że ten ostatni przełącznik nie zmienia rozdzielczości trybu wideo, tylko grafikę.

Chciałbym pozbyć się jak największej liczby przełączników trybów. Idealnie, gdy GRUB przejmie system BIOS, przejdzie bezpośrednio do tego samego trybu tekstowego o wysokiej rozdzielczości, który wybiera sterownik KMS, a wyświetlacz pozostanie w tym trybie, dopóki X nie uruchomi się i nie wyświetli grafiki. Mam wrażenie, że jest to możliwe poprzez zebranie wiersza poleceń jądra i / lub parametrów ładowania modułu konsoli GRUB, ale nie znam szczegółów.

GRUB 1.98 + 20100706, jądro 2.6.32.15 przy użyciu sterowników wideo Nouveau. Distro jest niestabilna w Debianie. Proszę, nie udzielaj odpowiedzi, które wymagają ponownej kompilacji czegokolwiek lub łączenia najnowocześniejszych kombinacji jądra / sterownika, nie dbam o to wystarczająco, aby sprawić tyle kłopotów.

EDYCJA: Tobu sugeruje ustawienie GRUB_GFXMODEpełnej rozdzielczości pikseli monitora i GRUB_GFXPAYLOAD_LINUX=keepuniknięcie przełączania trybu po zniknięciu menu. To część tego, czego chcę, ale ogólnie jest gorzej. Po menu nie ma przełącznika trybów, ale wciąż pojawia się bolesnie powolna odmalowanie ekranu (prawdopodobnie powinienem po prostu zrezygnować z trybu gfx GRUB, jest on zbyt wolny przy 1920x1200). Mówiąc poważniej, teraz dostępny jest przełącznik trybu podwójnego , gdy ładuje się nouveaufb, wraz z zabawnymi komunikatami błędówdmesg

[    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
źródło
Jestem ciekawy, czym jest „graficzność”.
Wstrzymano do odwołania.
1
Dla dowolnej rozdzielczości pikseli tryb wideo może być graficzny (każdy pojedynczy piksel jest adresowalny) lub tekstowy (symuluje terminal komórek znakowych z dawnych czasów). „Graficzność” miałam na myśli, że czwarty wymieniony przeze mnie przełącznik trybu wideo przechodzi z tekstu na grafikę bez zmiany rozdzielczości pikseli.
zwol

Odpowiedzi:

2

Plymouth został zaprojektowany, aby pomóc w tym zakresie:

Chodzi o to, że na wczesnym etapie procesu rozruchu ustawiony jest tryb macierzysty komputera, Plymouth korzysta z tego trybu, a ten tryb pozostaje w trakcie całego procesu rozruchu, aż do uruchomienia X. Idealnie jest, aby pozbyć się migotania podczas uruchamiania.

Ponieważ masz zainstalowany tylko jeden system operacyjny, wyłączenie zmian rozdzielczości gruba (bez grafiki w tle), a nawet samego menu, pozostawienie go 80x25 nie spowoduje żadnych zmian, dopóki Plymouth nie przejmie kontroli.

Chris
źródło
1

Sprawdź swoją rozdzielczość i głębię kolorów:

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

Ustawić GRUB_GFXMODE=<width>x<height>x<depth>w /etc/default/grubtaki sposób, że rozdzielczość menu grub dopasowuje rozdzielczość KMS.

Może też dodać GRUB_GFXPAYLOAD_LINUX=keepdo ustawień domyślnych, aby nie było pośredniego kroku po menu grub i przed skonfigurowaniem KMS. X11 powinien zachować to, czego używa KMS, co oznacza, że ​​nie ma się czym martwić przełącznikiem X11.

Zastosuj swoje zmiany za pomocą

sudo update-grub
Tobu
źródło
Dzięki! To zrobiło część tego, czego chcę, ale miało negatywne skutki uboczne, które sprawiły, że było gorzej niż w status quo. Dodałem szczegóły do ​​pytania.
zwolnienie
0

Możesz mieć KMS aktywny od zaraz po GRUB-ie, a zwykle zawiera on parametr wiersza poleceń jądra, który go włącza. W przypadku danych wywiadowczych jest to i910.modeset=1, ale poza tym będziesz musiał sprawdzić dokumenty swojej dystrybucji na ten temat.

Daenyth
źródło
Wydaje mi się, że KMS jest aktywny od momentu załadowania sterownika w stylu secesyjnym, ale dzieje się tak tylko podczas pierwszego skanowania urządzenia udev, jakiś czas po uruchomieniu przestrzeni użytkownika. Pomyślałem trochę z opcjami wiersza poleceń video = i vga =, ale nie miałem szczęścia.
zwol
Za pomocą tej metody możesz nakazać jej załadowanie wcześniej
Daenyth,
Krótko mówiąc o przebudowaniu jądra z nouveauwkompilowanym modułem (co jest zbyt wielkim problemem), najlepsze, co udało mi się zrobić, to wsunąć nouveau w /etc/initramfs-tools/modules... ale wystarczy przesunąć przełącznik trybu podwójnego wcześniej, od wewnątrz / dev do zapełnienia ”zaraz po„ Ładowanie, proszę czekać ... ”Celem jest wyeliminowanie przełączników trybów.
zwol
W takim przypadku musisz użyć programu ładującego, który obsługuje KMS. Myślę, że grub2 może to zrobić, ale jeśli nie, to nie masz szczęścia.
Daenyth,
grub2 ustawia tryb i pozostawia go ustawionym (właśnie to osiąga GRUB_GFXPAYLOAD_LINUX = kontynuuj), ale to w jakiś sposób nie jest wystarczająco dobre dla podsystemu nouveau i / lub fb, stąd komunikaty o błędach „Konfliktowe użycie fb hw”. Nawiasem mówiąc, dokładnie takie samo zachowanie z i915 na moim laptopie.
zwol