Eventually I closed the issue and answered the question stated in the first post of this thread.
1. Closing the issue
The reason why FbTerm complained "stdin isn't a interactive tty" was that I launched it too soon, i.e. before udev had created the ttys.
To avoid that I made following changes in the installer.
I modified Pat's /etc/inittab, that now begins like this
Code:
# /etc/inittab
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
# Initialization is now split in two parts, so that we can use an FbTerm for
# the second (interactive) part: as FbTerm needs to be run inside an
# interactive tty, we have to wait until the ttys be created by udev. Didier Spaier
::sysinit:/etc/rc.d/rc.S1
tty1::sysinit:/etc/rc.d/start_rc.S2
# Login /bin/sh invocations on selected ttys.
# /bin/sh being run in interactive mode reads /etc/profile that now sets ENV to
# /etc/rc.d/start_FbTerm.sh, that sets the font size then starts an FbTerm. Didier Spaier
tty1::respawn:-/bin/sh
tty2::askfirst:-/bin/sh
tty3::askfirst:-/bin/sh
So now init works this way:
- It launches the first (non interactive) part of rc.S, (script rc.S1)
- Then it launches start_rc.S2, that run the new script SetFont (see below) then starts an FbTerm running rc.S2, which is the second (interactive) part of rc.S.
- After that three ttys become available for interaction between the user and the system. Their expected usage is through FbTerm, but the user can close the FbTerm simply typing "exit", then launch a new one typing "logout", as init respawns the tty with a FbTerm in it.
This may look convoluted, but seems to work
2. Answering the question
Eventually I don't set the VESA mode (I can do that only if no frame buffer is used anyway), but set the size of the font to optimize usage of the display.
By "optimize" I mean: choose the biggest font size that allows to display at least 90 columns and 26 lines in the terminal, whatever be the display size.
Thanks to ability of FbTerm to work either with a VESA driver or a frame buffer driver, the installer will thus have a similar appearance, regardless of display size or method used for drawing.
To do that I wrote the script /etc/rc.d/SetFont (called by /etc/rc.d/start_rc.S2 and /etc/rc.d/start_FbTerm.sh as well) that finds the greatest available VESA display size (in pixels) and sets the size of the font accordingly. That font size is then set as an optional parameter of the fbterm command.
The appropriate font size for a given display size (e.g. 1024x768) is not computed "on the fly" (doing that is an exercise left to te reader :-) but simply recorded for the display sizes most used in recent years, as retrieved for instance
here. In case of an unusual (i.e. not recorded in SetFont) display size, FbTerm's default size is be used.
Of course the optimal font size depends on font's dimensions (width and height), but we will use only two fonts, both mono spaced: DejaVu Sans Mono for most European scripts and WenQuanYi Zen Hei Mono, mostly for CJK (Chinese, Japanese and Korean). Fortunately these fonts are already included in Slackware, thanks Pat.
Those who didn't fell asleep reading this boring post up to this point (congratulations!) and wanting to know more (if any :-) will be able to see the scripts in the ISO installers in directory
http://slint.fr/testing. Just mount the ISO file somewhere and unpack the initrd.
I'll post about using the "testing" installers and request help to check the list of usual display sizes in specific threads later.