Jak wykryć, czy tryb wideo uruchomionego urządzenia z Linuksem przez UEFI to protokół wyjścia graficznego (GOP) czy uniwersalny adapter graficzny (UGA)?

5

Wygląda na to, że oprogramowanie układowe UEFI obsługuje protokoły graficzne GOP lub UGA. GOP jest nowszy i zastąpił UGA. Na moim komputerze, który nie ma zintegrowanego adaptera graficznego (tylko dyskretny adapter graficzny NVIDIA GTX 965m), zauważyłem, że po uruchomieniu na żywo instalacyjnego dysku CD z systemem Linux nie ma modułu jądra sterującego moją kartą graficzną (sprawdziłem logi lspci i X) .

Po przeprowadzeniu badań dotyczących UEFI znalazłem te dwa rodzaje protokołów graficznych i zastanawiałem się, czy istnieje sposób (zapytanie z wiersza poleceń), aby dowiedzieć się, który z nich jest używany, ponieważ wydaje się, że jest to UEFI oprogramowanie układowe, które umożliwia sterowanie wyświetlaczem mojego komputera (prawdopodobnie przez moją dyskretną kartę graficzną „kompatybilną z VGA”).

Co więcej, w ustawieniach BIOS (czy nadal nazywa się to ustawieniami BIOS, gdy korzystam z oprogramowania układowego UEFI?), Mogłem również zmienić ustawienia Video Op Rom na „tryb zgodności BIOS”. Kiedy zostawiłem go jako „tylko UEFI”, uzyskałem pełną rozdzielczość w ustawieniach konfiguracji BIOS i na wyświetlaczu POST oraz ekranie modułu ładującego rozruch. Wybierając „tryb zgodności BIOS”, otrzymałem znacznie mniejszą rozdzielczość. Czy to w zasadzie oznacza, że ​​oprogramowanie sprzętowe mogło zamiast tego korzystać z protokołu VGA?

CMCDragonkai
źródło
1
AFAIK, wszystko oprócz komputerów Mac używa GOP? Chociaż nic z tego nie ma znaczenia; Linux w ogóle nie używa sterowników UEFI - oprogramowanie układowe zwalnia wszystkie sterowniki podczas ExitBootServices () i komunikuje się z kartą graficzną bezpośrednio przez PCI.
grawity
Jeśli to prawda, to dlaczego moje lspcipokazy nie używają „sterowników jądra” dla mojej karty graficznej NVIDIA? Przełączanie między BIOS i UEFI w ustawieniach Video Op Rom zmienia rozdzielczość dla całej sesji. A także uruchamiam Live CD, który nie ładuje żadnych sterowników NVIDIA ani Nouveau dla karty NVIDIA.
CMCDragonkai
Hmm, może być źle o tym, biorąc pod uwagę @ postu Roda. (w efifbkońcu musiałby wiedzieć, z jakim protokołem się mówi)
grawity

Odpowiedzi:

9

Aby rozwinąć odpowiedź na temat grawitacji, istnieje kilka kwestii o różnym stopniu istotności dla twojego pytania:

  • UGA vs. GOP - Jak mówisz, istnieją dwa systemy wideo EFI, UGA i GOP. Ten ostatni został wprowadzony z EFI 2.x (alias UEFI), IIRC i AFAIK, wszystkie systemy oparte na UEFI używają GOP. Zasadniczo wszystkie systemy EFI 1.x powinny korzystać z UGA; jednak Apple (który nadal korzysta z EFI 1.x, nawet w najnowszych produktach) przeniósł UGA na EFI, więc niektóre (ale nie wszystkie) komputery Mac mają EFI 1.x z GOP. Mogą istnieć inne wyjątki od nieparzystych. Jak mówi grawitacja, to rozróżnienie jest ważne na poziomie oprogramowania układowego, ale tak naprawdę nie na poziomie systemu operacyjnego, a przynajmniej nie AFAIK.
  • Urządzenia bufora ramki Linux - niezależnie od tego, czy jest to UGA, czy GOP, oprogramowanie układowe zapewnia systemowi operacyjnemu dostęp do sprzętu wideo, który Linux udostępnia za pośrednictwem urządzenia bufora ramki - w szczególności efifb. W systemach opartych na EFI jest to często podstawa do działania w trybie tekstowym (jeśli nie uruchomisz X lub naciśniesz Ctrl + Alt + F1 do Ctrl + Alt + F6). OTOH, istnieją również urządzenia buforujące ramki dostarczane przez niektóre sterowniki jądra dla określonych mikroukładów wideo, więc możesz nie korzystać z tego efifburządzenia. Nie wiem od razu, czy są jakieś różnice w sposobie prezentowania się systemu operacyjnego przez UGA i GOP. Z pewnością nie znam żadnych różnic na wyższym poziomie, takich jak polecenia, których używałbyś w Linuksie.
  • Sterowniki X Window System - sterowniki X mogą polegać na sterownikach wideo jądra lub być w zasadzie od nich niezależne. W większości przypadków używasz sterownika X napisanego dla określonego mikroukładu wideo (ATI, Nvidia, Intel itp.), A te nie działają przez oprogramowanie układowe. Tak więc na te sterowniki nie powinny mieć wpływu UGA vs. GOP (ani nawet BIOS vs. EFI, choć istnieją pewne zastrzeżenia). To powiedziawszy, istnieje sterownik bufora ramki X, który będzie działał za pośrednictwem dowolnego urządzenia buforującego ramki, w tym efifburządzenia. W ten sposób mógłbyśprowadzić wyświetlacz za pomocą trybów UGA lub GOP EFI. Jest to zdecydowanie nieoptymalny sposób, aby to zrobić, ponieważ sterowniki bufora ramki są zwykle wolne. Nowoczesne środowiska okienkowe, w tym Unity Ubuntu, w coraz większym stopniu polegają na funkcjach akceleracji wideo, które nie są dostępne przez bufor ramki.

Możesz zobaczyć niektóre z nich podczas pracy, sprawdzając bufor pierścieniowy jądra poprzez dmesg, jak w:

$ dmesg | grep fb
[    0.625015] efifb: probing for efifb
[    0.625207] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90010880000, using 3072k, total 3072k
[    0.625208] efifb: mode is 1024x768x32, linelength=4096, pages=1
[    0.625209] efifb: scrolling: redraw
[    0.625210] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.627994] fb0: EFI VGA frame buffer device
[    6.086695] fb: conflicting fb hw usage radeondrmfb vs EFI VGA - removing generic driver
[    6.689526] [drm] fb mappable at 0xC1488000
[    6.689531] [drm] fb depth is 24
[    6.689610] fbcon: radeondrmfb (fb0) is primary device
[    6.804904] radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device

Ten przykład pokazuje liczbę komunikatów związanych z buforowaniem ramki w systemie z procesorem graficznym AMD / ATI. Zauważysz, że nie ma wzmianki o UGA vs. GOP, ale efifburządzenie jest przywoływane, podobnie jak fbcon(konsola framebuffer) i radeondrmfb(urządzenie bufora ramki dla urządzeń ATI / AMD Radeon). removing generic driverWiadomość oznacza przełączanie połączenia ze efifbsterownikiem do radeondrmfbkierowcy. Możesz także sprawdzić /var/log/Xorg.0.logwiadomości związane z serwerem X. W przypadku mojego systemu są one mniej interesujące, ale jeśli masz problemy z uruchomieniem X, Xorg.0.logmoże Cię to zainteresować.

Jeszcze jedna kwestia: gdy pytasz o pomoc w kwestiach sprzętowych, ogólnie ważne jest, abyś określił, jaki jest twój sprzęt - „dyskretna karta graficzna” jest niewystarczająco specyficzna, gdy prosi o pomoc w problemach z wideo. W tym przypadku nie jest jasne, na czym polega twój problem - czy po prostu szukasz informacji na temat tego, jak wszystko do siebie pasuje, aby lepiej zrozumieć?

Rod Smith
źródło
Bardzo szczegółowa odpowiedź, miała wiele sensu. Mój konkretny problem polegał na próbie zrozumienia, dlaczego menedżer wyświetlania X nie uruchamiałby się na mojej płycie CD na żywo (NIXOS), kiedy uruchamiałem się przez UEFI Video OpROM, a podczas uruchamiania przez starszą wersję wideo OpROM, menedżer wyświetlania X mógł wtedy uruchomić (i logi wskazują, że używa VESA VBE). Sprawdzę dzienniki jądra i skontaktuję się z tobą. Mój dyskretny procesor graficzny to NVIDIA GTX 965m.
CMCDragonkai
Więc znalazłem efifbi fb0w logach jądra. Ale wspomniałeś, że X może używać efifbdo wyświetlania rzeczy, ale sprawdzając dzienniki X, w ogóle nie ma wzmianki efifb?
CMCDragonkai
To brzmi jak błąd w oprogramowaniu płyty głównej lub problem z brakiem lub błędnym wsparciem EFI w oprogramowaniu karty graficznej. Możesz uzyskać dodatkową pomoc, jeśli opublikujesz cztery pliki na stronie pastebin : Twój dmesgi Xorg.0.logplik z obu ustawień opcji wideo w oprogramowaniu układowym. (To znaczy dwa dmesgwyjścia i dwa Xorg.0.logpliki.) Sam nie jestem ekspertem w debugowaniu problemów z wideo, więc mogę nie być w stanie pomóc; ale może ktoś to zrobi. Możesz rozpocząć nowe pytanie, które zawiera odpowiednie wskazówki z góry.
Rod Smith
Wygląda na to, że NVIDIA ma słabe wsparcie dla UEFI Video Op ROM. Więc przełączyłem się na starszą wersję wideo, a sterownik NVIDIA ma pełną rozdzielczość na tty7, podczas gdy tty1 ma atm o niskiej rozdzielczości.
CMCDragonkai