Ponownie sprawdzam swoją odpowiedź, skoro jestem pewien.
Błędem było stwierdzenie, że sekwencje ANSI były obsługiwane przez BIOS lub w inny sposób poza jądrem; w rzeczywistości są obsługiwane w jądrze. Znalazłem to, co wcześniej przegapiłem dzięki hnaz_ na kanale IRC LinuxNewbies: drivers/char/vt.c
implementuje emulację terminala VT102 Digital Equipment, który jest używany przez sterownik wirtualnego terminala.
Więc ... jako ostateczna odpowiedź, po zapoznaniu się z kodem źródłowym, który obsługuje sekwencje specjalne dla terminali wirtualnych: Jeśli chcesz obsługiwać 256 kolorów na terminalach wirtualnych, musisz zbudować własne jądro po rozszerzeniu kodu, który analizuje sekwencje specjalne do obsługi szerszej specyfikacji kolorów.
Funkcja nazywa się csi_m (). Zmiany będą musiały być podobne do tych, które rozszerzają emulatory terminali oparte na X, aby obsługiwały sekwencje specjalne określające bogatsze kody kolorów. Prawdopodobnie będą też potrzebne inne zmiany, ale od tego chciałbyś zacząć.
kmscon
jest to terminal użytkownika, który próbuje ulepszyć terminal (w tym 24-bitowy kolor). Chociaż jego rozwój ulegał zastojowi na korzyść systemowej alternatywy.Twój 256-kolorowy RXVT / xterm / URXVT / etc jest zdefiniowany przez terminfo i ustawienie
TERM
zmiennej. W większości dystrybucji Linuksa twoje wirtualne terminale są zdefiniowane/etc/inittab
i używają domyślnego typu terminala, który określa, ile kolorów może używać terminal.Tak.
Upewnij się, że bufor ramki używa prawidłowej rozdzielczości / głębi bitów. Spróbuj dodać
vga=773
do opcji jądra, na przykład, aby uzyskać 1024 x 768 i 256 kolorów (8-bitowa głębia kolorów).Ustaw inny TERM (np
export TERM=foo
.). Musisz eksperymentować, aby znaleźć właściwy. Jeśli znajdziesz taki, który działa, możesz go zmodyfikować,/etc/inittab
tak aby wirtualne terminale uruchamiały go domyślnie (patrz następny rozdział).W tym artykule omówiono inne opcje, które mogą Ci pomóc. Zaleca Qingy (Qingy nie jest GettY) jako getty zamiennik i może dać ci to, czego szukasz, jeśli zmiana zmiennych TERM nie jest opcją.
Mówiąc o zamianach getty, przysięgam, że widziałem instrukcje dotyczące zamiany getty
GNU screen
gdzieś po drodze. W tej chwili nie znajduję linku, ale ponieważ istnieje 256-kolorowy TERMscreen
, możesz go sprawdzić./etc/inittab
używa takich linii do konfigurowania wirtualnych terminali:Oto manpage na
/sbin/getty
(z mojego systemu Debian, więc technicznie jest toagetty
program):Zwróć uwagę na
baud_rate,... port [term]
tam na końcu. Jest to zgodne z poleceniem w/etc/inittab
linii (/sbin/getty 38400 ttyN
) - zwróć uwagę, że nie ma[term]
argumentu, więc otrzymujemy wartość domyślną (uruchomecho $TERM
zaraz po zalogowaniu się do wirtualnej konsoli, aby zobaczyć, czego używa twój system). Z poziomu strony ponownie:Jeśli znajdziesz TERM, który działa, zmodyfikuj linie getty w inittab i dodaj odpowiedni TERM na końcu:
źródło
Spójrz na fbterm - to zastępczy bufor ramki, który może działać w trybie 256 kolorów (po prostu uruchamiasz go jako root z TTY)
Mam z tym mieszany sukces - niektóre aplikacje działają dobrze i zgłaszają 256 kolorów; jednak Emacs (główny powód, dla którego chciałem 256 kolorów na TTY) wydaje się nie działać; tutaj jest trochę dyskusji na ten temat, ale tak naprawdę nie można go rozwiązać:
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html
Jednak mplayer powinien działać!
źródło
emacs
środkutmux
może pomóc, ponieważ powinno tłumaczyć sekwencje specjalne dla otaczającego terminalu.kmscon
Kmscon to sposób na uzyskanie 256 kolorów i wideo bez zainstalowanego systemu Windows (X, Wayland).
Został porzucony, ale obecnie jest utrzymywany przez widelec .
Dokumentacja dotycząca instalacji jest niewielka, ale strona README tutaj powinna Cię załatwić.
Zainstalowałem to i używam go do aplikacji konsolowych, które wymagają 256 kolorów (vim z powodu mojej konfiguracji).
Przeczytaj uważnie instrukcję instalacji.
źródło
Ograniczenia mają tu sekwencje specjalne ANSI do ustawiania kolorów pierwszego planu i tła tekstu.
Z pamięci te sekwencje wyglądają jak ucieczka [01; 34m. W latach 30. są kody dla pierwszego planu, a dla tła 40.
Więc nie sądzę, że jest jakiś sposób na osiągnięcie tego, czego szukasz.
źródło