How to get a high resolution console for FreeBSD inside a VMWare image?

Nikolas Britton nikolas.britton at
Fri Oct 14 19:42:19 PDT 2005

On 10/14/05, Jared Evans <jnevans at> wrote:
> I know that this isn't exactly a standard configuration (VMWare as opposed
> to native installation) for FreeBSD so most of the answers I found online
> weren't really applicable for me.
> 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 100x37 VESA_800x600
> 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.
> 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 100x37 VESA_800x600
> vidcontrol: operation not supported by device
> Any more tips for me?

You computer (VMware) doesn't have a "proper" VESA BIOS and that is
why 800x600 raster text mode won't work etc. FreeBSD 6 has this all
worked just put 'allscreens_flags="MODE_279"' in rc.conf for
1024x768... 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
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

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.


More information about the freebsd-questions mailing list