VMWare and high resolution console (VESA)

10:10 am

update 10.14.05:

(Thanks to Nikolas Britton from FreeBSD questions mailing list)

Your computer (VMware) doesn’t have a "proper" VESA BIOS and that is
why 800×600 raster text mode won’t work etc. FreeBSD 6 has this all
worked just put ‘allscreens_flags="MODE_279"’ in rc.conf for
1024×768… you can get a list of other modes supported by typing in
vidcontrol -i MODE (I think, can never remember :-)). if you want this
for FreeBSD 5.x then your going to have to manually patch your system,
but I have a simple script that will do it for you. somewhere around
here…… check for patch errors after you run the script.
————————————————–
cd /tmp
rm current-vesa_patch.tar.gz
fetch http://www.nbritton.org/uploads/current-vesa_patch.tar.gz
rm -r current-vesa_patch
tar -zxf current-vesa_patch.tar.gz
cd /usr/src/sys/dev/syscons
patch </tmp/current-vesa_patch/current-syscons.diff
cd /usr/src/usr.sbin/vidcontrol
cp /tmp/current-vesa_patch/current-vidcontrol.1 ./vidcontrol.1
cp /tmp/current-vesa_patch/current-vidcontrol.c ./vidcontrol.c
make && make install && make clean
—————————————————–
You still need to put in your kernel (both FreeBSD 5 and 6):
options VESA
options SC_PIXEL_MODE

and when you cvsup your src in FreeBSD 5 you will need to reapply the
patch, cvsup will overwrite the files becouse the cvs revision tags
don’t match up.

end update

The black magic of VMWARE and VESA:

I simply wanted a high resolution FreeBSD console PTYs running under VMWare.  It was surprisingly more complex than I expected:

When attempting to change screen resolution for a console in FreeBSD running under VMWare, I ran across this error message:

> vidcontrol -g 100×37 VESA_800×600
vidcontrol: cannot set videomode inappropriate ioctl for device

It seemed to me that VMWare was unable to init VESA correctly in console but strangely enough Xorg is capable of changing to a higher resolution without any problems.

After some googling:

   VESA driver in current source tree checks the NONVGA flag
   of VESA information block when loading. If this flag is set
   it will refuse to initialize. Most VESA adapters do not set
   this flag, but the virtual display adapter in VMWare does.
   As a result VESA cannot be used on VMWare.

in src/sys/i386/isa/vesa.c, there is a check for the flag V_NONVGA in line 655.
If you comment it out, flag check will be bypassed.  After all, if Xorg can use higher resolution, there shouldn’t be a problem using VESA on the console!

Re-compiling my kernel to include the below as suggested by several more web searches:

options VESA
options SC_PIXEL_MODE
options VGA_WIDTH90

rebooting then:
> vidcontrol -g 100×37 VESA_800×600
vidcontrol: operation not supported by device

Arrrgghhhh!  Any more tips for me?

Bookmark and Share
FreeBSD
Related posts:
  • Stephane
    Nice but, if you're not using the X server, the high resolution console prevents the screen saver to kick in... :(
blog comments powered by Disqus