Du må fortelle terminal-driveren at du vil ha en annen standard. Det finnes ikke noen standard måte å gjøre dette på, men i dette tilfellet av Linux har du setterm-programmet.
"setterm" bruker informasjonen i terminaldatabasen til å sette atributtene. Utvalg gjøres slik
setterm -foreground black -background white -store
der "-store" ved siden av den faktiske forandring gjør det til standard for den nåverende konsollen også. Dette krever at den nåverende terminalen (TERM miljø(environment) variablen) er beskrevet "godt nok" i termcap databasen. Hvis setterm av en eller annen grunn ikke virker, er dette noen alternativer :
En av disse xterminalene burde være tilgjengelig, og minst en av dem burde støtte farger.
xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4
der 'color_xterm' støtter versjonen av 'ls' med farger. Dette bestemte valget likner fargene benyttet på en SGI.
Du kan modifisere kernelen en gang for godt, og levere en standard for virtuelle konsoller med en avbrudds-sekvens. Jeg anbefaler kernelpatchen hvis du har kompilert din egen kernel.
Kernel kildekoden finner du på /usr/src/linux/drivers/char/console.c
rundt linje 1940 der du bør modifisere
def_color = 0x07; /* white */
ulcolor = 0x0f; /* bold white */
halfcolor = 0x08; /* grey */
som passende. Jeg bruker blå på hvitt
def_color = 0x17; /* white */
ulcolor = 0x1f; /* bold white */
halfcolor = 0x18; /* grey */
Tallene er atributt-kodene benyttet av skjermkortet i heksadesimal: det viktigste nummeret ("1"'eren i eksempelet over) er bakgrunn; det minst viktige nummeret er forgrunn. 0 = svart, 1 = blå, 2 = grønn, 3 = cyan, 4 = rød, 5 = lilla, 6 = brun/gul, 7 = hvit. Legg til 8 for å få "lyse" farger. Merk at, i de fleste tilfeller, en lys bakgrunn == blinkende bokstaver, mørk bakgrunn. Fra sjlam1@mda023.cc.monash.edu.au).
Du kan også sette en ny standard for en virtuell konsoll, på et per-dag basis med en ikke-standard ANSI-sekvens (funnet ved å bla i kernel-kildekodene)
ESC [ 8 ]
som setter forhåndsvalget til de nåværende for- og bakgrunnsfargene. Så velger Resett Atributter(Reset Attributes) strengen (ESC [ m) disse fargene i stedet for hvitt på svart.
Du må faktisk sende(echo) denne strengen til konsollen hver gang du starter opp igjen. Avhengig av hva du bruker Linux-boksen din til, er flere steder passende:
Dette er der "Velkommen til Linux xx.yy" vises med Slackware(og mange andre distribusjoner), og er et godt valg for selvstendig utstyr(og sannsynlig vis en plage for brukere som logger inn via telnet). Denne filen lages når du starter opp (i Slackware er det /etc/rc.d/rc.S; i Redhat er det /etc/rc.d/ rc.local), og du burde modifisere linjene slik at de ser ut noe sånt som
echo ""> /etc/issue
echo Velkommen til Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue
til
ESCAPE="<erstatt med et enkelt avbrudssymbol her>"
echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
echo Velkommen til Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue
Denne koden vil sette fargen (her er det hvitt på blått),
lagre valget og viske ut resten av skjermen. Denne modifiseringen
trer i kraft etter neste omstart. Husk å sette inn det _bokstavlige_
avbruddssymbolet i filen med C-q i emacs eller kontroll-v i vi,
ettersom skallet som benyttes til å kjøre dette skriptet ikke forstår
syntaksen /033
.
if [ "$TERM" = "console" ]; then
echo "\033[37;44m\033[8]" #
# eller bruk setterm.
setterm -foreground white -background blue -store
fi
if ( "$TERM" == "console" ) then
echo "\033[37;44m\033[8]"
# eller bruk setterm.
setterm -foreground white -background blue -store
endif
Du burde være i stand til å bruke programmet setterm som vist over. Dette krever at den fjerne maskinen vet nok om din terminal, og at terminal-emulatoren som gir login støtter farger. Etter min erfaring er den beste vt100-emuleringen tilgjengelig for andre platformer :
Se http://www.columbia.edu/kermit/ for detaljer om Kermit.