The widely available and standardized UEFI Graphics Output Protocol (GOP) interface is an excellent alternative to VGA or serial port consoles for printing logs to the screen.
This project aims to implement a UEFI GOP based console. For more information, check out Part I, Part II and Part III of this series.
All the work referred to here can be found in this draft PR.
Added support for ASCII codes \a
, \b
, \t
.
Enabling the configuration option CONFIG_LIBUKDEBUG_ANSI_COLOR
generates colored logs with the use of ANSI escape codes.
These codes are now parsed and the logs are colored appropriately by the GOP console.
All the new code has been pushed to the draft PR!
ANSI escape codes control various paramters of text output such as foreground color, background color, formatting etc.
These escape codes are prefixed with the escape character, which has the ASCII value 27
or 033
in octal or 0x1b
in hex.
The format of ANSI color codes is \033[<code>m
.
There are many of these codes, but the focus of my implementation is on parsing just the color codes that the Unikraft kernel outputs in in logs when CONFIG_LIBUKDEBUG_ANSI_COLOR
is on, which currently are:
Color Name | Foreground Color Code | Background Color Code |
---|---|---|
Reset | 0 | 0 |
Black | 30 | 40 |
Red | 31 | 41 |
Green | 32 | 42 |
Yellow | 33 | 43 |
Blue | 34 | 44 |
Magenta | 35 | 45 |
Cyan | 36 | 46 |
White | 37 | 47 |
Full reference here.
For example, \033[37m\033[44mHello World!
would print Hello World!
in white on a blue background. The order in which the foreground and the background sequences are issued does not matter.
I would once again like to thank all the great Unikraft folk for their continued support! This work would not have been possible without them ❤️
Feel free to ask questions, report issues, and meet new people.