Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {*} {*} NOTE: This project is currently suspended because of lack of time, and because of significant collisions with loader changes by others. {*} New: I've published [[OliverFromme/BootLoaderTest|a tarball]] for people who would like to check this out. Beware, it's work in progress! //Note: [[http://www.pcbsd.org|PC-BSD]] >= 9.0-RC3 has the new [[/BootLoader|BootLoader]] enabled by default.// ===== "You Never Get a Second Chance to Make a First Impression" ===== Look at the current text menu of %%FreeBSD%%'s bootloader, look at the old-fashioned ASCII logo. %%FreeBSD%% aims to support the most modern hardware platforms, to implement the latest protocols and greatest algorithms. Do you think it's appropriate that %%FreeBSD%% greets its users with a boot screen that looks like a 20 years old DOS program? That's why I'm working on this: ====== Graphics support for /boot/loader ====== Lets start with a screenshot (this one is not completely up-to-date, current WIP looks a bit different): {{http://www.secnetix.de/olli/FreeBSD/vloader/screenshot.png}} The project consists of the following parts (in bottom-up order): * Graphics functions that access the actual hardware and/or machine firmware (BIOS, EFI, whatever). * A switch structure that calls the appropriate functions depending on the platform. * FICL glue that binds the graphics functions to Forth words. * Forth code that uses the new words to construct a graphical menu. * A collection of themes. Every theme has its own subdirectory ''%%/boot/themes/%%''//%%<%%name>// which contains at least a configuration file, and possibly other files as well. Example: <code> /boot/themes/default/biglogo.pcx /boot/themes/default/default.font /boot/themes/default/theme.conf </code> And the configuration file (''%%/boot/themes/default/theme.conf%%'') looks like this: <code> theme_background="/boot/themes/default/biglogo.pcx" theme_font="/boot/themes/default/default.font" theme_bgcolor="0 0 0" # black theme_fgcolor="255 255 255" # white theme_options_xy="64 10" theme_actions_xy="64 82" </code> A theme is enabled by adding a line to ''%%/boot/loader.conf%%'': <code> beastie_theme="/boot/themes/default/theme.conf" </code> New themes can easily be created. It is expected that the base system will ship only with a limited number of themes (maybe just one), and more themes can be provided through the ports collection. If a theme wants to do more sophisticated things, such as using multiple graphics files or fonts, or re-arrange the menu in completely different ways, it will have to bring its own Forth code and modify ''%%beastie.4th%%'' directly (an appropriate mechanism to provide hooks into may be provided at a later time). ===== Work in progress ===== Note this is currently work in progress, happening in the %%FreeBSD%% Perforce ("p4") repository. I plan to commit it to %%FreeBSD%% when it's ready, after proper review and approval. For those you are eager to check out the WIP, there's a tarball available for preliminary testing. Please see the [[OliverFromme/BootLoaderTest|testing instructions]] for details. Note this is "bleeding edge", so it might not work for you. Current status: ^ Item ^ Lang ^ Status ^ | low-level graphics functions | C | ✔ done for i386/amd64 (BIOS-based, VGA, 4bpp) | | platform switch | C | in progress | | FICL Forth words | C | ✔ done | | "beastie" menu graphics support | Forth | ✔ done | | text/binary converter for fonts | awk | ✔ done (a version written in C also exists) | | initial default theme | - | ✔ done (background image, font) | | multiple themes support | Forth | ✔ done | | documentation | - | in progress | If you have any questions or requests, please contact [[/OliverFromme|OliverFromme]]. ---- {{tag>InactiveProject Stale}} oliverfromme/bootloader.txt Last modified: 2018/07/21 04:10by MarkLinimon