# yaft (yet another framebuffer terminal) ## test environment using qemu (i386, vga cirrus) - FreeBSD 10.1 - OpenBSD 5.7 - NetBSD 6.1.5 ## FreeBSD ### kernel rebuild edit /usr/src/sys/i386/conf/GENERIC ~~~ options VESA options SC_PIXEL_MODE ~~~ build ~~~ # cd /usr/src # make buildkernel # make installkernel ~~~ ### module load (no kernel rebuild) ~~~ # kldload vesa # echo "vesa_load=\"YES\"" >> /boot/loader.conf ~~~ ### vesa mode check available mode ~~~ # vidcontrol -i mode ~~~ change mode ~~~ # vidcontrol MODE_XXX # echo "allscreens_flags=\"MODE_XXX\"" >> /etc/rc.conf ~~~ ### keyrepeat ~~~ # kbdcontrol -r fast ~~~ ### write-combine ~~~ # memcontrol set -b 0xe0000000 -l 0x10000000 -o SVGA write-combine ~~~ ## NetBSD ### vesa mode check available mode ~~~ (boot prompt) > vesa list ~~~ edit /boot.cfg ~~~ menu=Boot normally:rndseed /var/db/entropy-file;vesa 1024x768x32;boot netbsd ~~~ ### key repeat ~~~ # wsconsctl -w repeat.del1=200 repeat.deln=50 ~~~ ~~~ # echo "setvar repeat.del1=200" >> /etc/wscons.conf # echo "setvar repeat.deln=50" >> /etc/wscons.conf ~~~ ## OpenBSD ### kernel - patch http://mlterm.sf.net/openbsd-5.3-fixvesa.patch edit /usr/src/sys/arch/i386/conf/GENERIC ~~~ vesabios0 at mainbus? option VESAFB ~~~ build ~~~ # cd /usr/src/sys/arch/i386/compile/GENERIC # make clean && make depend && make # make install # reboot ~~~ ### change vesa mode edit yaft/fb/openbsd.h ~~~ enum { FB_WIDTH = 640, FB_HEIGHT = 480, FB_DEPTH = 8, }; ~~~ ### key repeat ~~~ # wsconsctl -w repeat.del1=200 repeat.deln=50 ~~~ ~~~ # echo "setvar repeat.del1=200" >> /etc/wscons.conf # echo "setvar repeat.deln=50" >> /etc/wscons.conf ~~~