SuSE 6.2: Configuring X server for VirtualBox

I’m installing SuSE 6.2 on a VirtualBox virtual machine and am stuck at the X server configuration. According to the VirtualBox manual,

The VirtualBox graphics device (sometimes referred to as VGA device) is, unlike nearly all other emulated devices, not based on any physical counterpart. It is a simple, synthetic device which provides compatibility with standard VGA and several extended registers used by the VESA BIOS Extensions (VBE).

In SaX I tried some fairly generic options—the “SVGA” server with a “generic” chipset driver and an “LCD” monitor with resolutions up to 1600×1200. But SaX isn’t able to successfully detect the video card or start the X server. The video card it detects is “Unknown vendor (0x80ee) Unknown chipset (0xbeef) rev 0” and it assumes that there is only 64K of video RAM, even though I’ve allocated 16 MB in VirtualBox. When I try to start the X server with this configuration, it discounts all the video modes based on incorrect hsync frequencies or vertical refresh rates, claims that the colour depth is not supported, and then aborts:

XFree86 Version 3.3.4 / X Window System
(protocol Version 11, revision 0, vendor release 6300)
Release Date: July 13 1999
	If the server is older than 6-12 months, or if your card is newer
	than the above date, look for a newer version before reporting
	problems.  (see http://www.XFree86.Org/FAQ)
Operating System: Linux 2.2.9 i686 [ELF] 
Configured drivers:
  SVGA: server for SVGA graphics adaptors (Patchlevel 0):
      NV1, STG2000, RIVA 128, RIVA TNT, RIVA TNT2, RIVA ULTRA TNT2,
      RIVA VANTA, RIVA ULTRA VANTA, RIVA INTEGRATED, ET4000, ET4000W32,
      ET4000W32i, ET4000W32i_rev_b, ET4000W32i_rev_c, ET4000W32p,
      ET4000W32p_rev_a, ET4000W32p_rev_b, ET4000W32p_rev_c,
      ET4000W32p_rev_d, ET6000, ET6100, et3000, pvga1, wd90c00, wd90c10,
      wd90c30, wd90c24, wd90c31, wd90c33, gvga, ati, sis86c201, sis86c202,
      sis86c205, sis86c215, sis86c225, sis5597, sis5598, sis6326, sis530,
      sis620, tvga8200lx, tvga8800cs, tvga8900b, tvga8900c, tvga8900cl,
      tvga8900d, tvga9000, tvga9000i, tvga9100b, tvga9200cxr, tgui9400cxi,
      tgui9420, tgui9420dgi, tgui9430dgi, tgui9440agi, cyber9320, tgui9660,
      tgui9680, tgui9682, tgui9685, cyber9382, cyber9385, cyber9388,
      cyber9397, cyber9520, cyber9525, 3dimage975, 3dimage985, cyber9397dvd,
      blade3d, cyberblade, clgd5420, clgd5422, clgd5424, clgd5426, clgd5428,
      clgd5429, clgd5430, clgd5434, clgd5436, clgd5446, clgd5480, clgd5462,
      clgd5464, clgd5465, clgd6205, clgd6215, clgd6225, clgd6235, clgd7541,
      clgd7542, clgd7543, clgd7548, clgd7555, clgd7556, ncr77c22, ncr77c22e,
      cpq_avga, mga2064w, mga1064sg, mga2164w, mga2164w AGP, mgag200,
      mgag100, mgag400, oti067, oti077, oti087, oti037c, al2101, ali2228,
      ali2301, ali2302, ali2308, ali2401, cl6410, cl6412, cl6420, cl6440,
      video7, ark1000vl, ark1000pv, ark2000pv, ark2000mt, mx, realtek,
      s3_virge, AP6422, AT24, AT3D, s3_svga, NM2070, NM2090, NM2093, NM2097,
      NM2160, NM2200, ct65520, ct65525, ct65530, ct65535, ct65540, ct65545,
      ct65546, ct65548, ct65550, ct65554, ct65555, ct68554, ct69000,
      ct64200, ct64300, mediagx, V1000, V2x00, p9100, spc8110, i740,
      i740_pci, Voodoo Banshee, Voodoo3, generic
(using VT number 7)

XF86Config: /etc/XF86Config
(**) stands for supplied, (--) stands for probed/default values
(**) XKB: rules: "xfree86"
(**) XKB: model: "pc104"
(**) XKB: layout: "us"
(**) Mouse: type: PS/2, device: /dev/psaux, samplerate: 60
(**) Mouse: buttons: 3
(**) SVGA: Graphics device ID: "Primary-Card"
(**) SVGA: Monitor ID: "Primary-Monitor"
(--) SVGA: Mode "1600x1000" needs hsync freq of 28.80 kHz. Deleted.
(--) SVGA: Mode "1280x960" needs vert refresh rate of 35.89 Hz. Deleted.
(--) SVGA: Mode "1024x768" needs vert refresh rate of 56.23 Hz. Deleted.
(--) SVGA: Mode "640x480" needs hsync freq of 31.00 kHz. Deleted.
(--) SVGA: Mode "1600x1200" needs hsync freq of 28.80 kHz. Deleted.
(--) SVGA: Mode "1280x1024" needs vert refresh rate of 33.64 Hz. Deleted.
(--) SVGA: Mode "1152x864" needs vert refresh rate of 44.46 Hz. Deleted.
(**) FontPath set to "/usr/X11R6/lib/X11/fonts/75dpi:unscaled,/usr/X11R6/lib/X11/fonts/100dpi:unscaled,/usr/X11R6/lib/X11/fonts/Type1,/usr/X11R6/lib/X11/fonts/URW,/usr/X11R6/lib/X11/fonts/Speedo,/usr/X11R6/lib/X11/fonts/misc,/usr/X11R6/lib/X11/fonts/75dpi,/usr/X11R6/lib/X11/fonts/100dpi"
(--) SVGA: PCI: Unknown vendor (0x80ee) Unknown chipset (0xbeef) rev 0, Memory @ 0xe0000000
(**) SVGA: chipset:  generic
(**) SVGA: videoram: 64k
(--) SVGA: clocks:  25.18

(**) SVGA: 16bpp not supported for this chipset

 *** A configured device found, but display modes could not be resolved.***


Fatal server error:
no screens found

When reporting a problem related to a server crash, please send
the full server output, not just the last messages

X connection to :0.0 broken (explicit kill or server shutdown).

Here is the non-working configuration file output by SaX:


# SaX autogenerated XF86Config file
# This file was generated from the SaX
# Version: 2.8 - sax@suse.de
# Date: Tue Jul 25 22:51:10 CEST 2017
# Xserver:SVGA
# MouseVendor:Unknown
# MouseName:Unknown
# RamDac:60
# Dac8:60
# Dac16:60
# Dac24:
# Dac32:

Section "Files"
  RgbPath	"/usr/X11R6/lib/X11/rgb"
  FontPath	"/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
  FontPath	"/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
  FontPath	"/usr/X11R6/lib/X11/fonts/Type1"
  FontPath	"/usr/X11R6/lib/X11/fonts/URW"
  FontPath	"/usr/X11R6/lib/X11/fonts/Speedo"
  FontPath	"/usr/X11R6/lib/X11/fonts/misc"
  FontPath	"/usr/X11R6/lib/X11/fonts/75dpi"
  FontPath	"/usr/X11R6/lib/X11/fonts/100dpi"
EndSection

Section "ServerFlags"
  AllowMouseOpenFail
EndSection

Section "Module"
EndSection

# This section is no longer supported
# See a template below
# Section "XInput"
# EndSection

Section "Keyboard"
  Protocol	"Standard"
  XkbRules	"xfree86"
  XkbModel	"pc104"
  XkbLayout	"us"
EndSection

Section "Pointer"
  Protocol		"PS/2"
  Device		"/dev/psaux"
  SampleRate		60
  BaudRate		1200
EndSection

Section "Monitor"	
  Identifier	"Primary-Monitor"
  VendorName	"!!! LCD !!!"
  ModelName	"XGA 1024X768@60HZ"
  HorizSync	31.5-50
  VertRefresh	58-62
  Modeline "1600x1000" 59.90 1600 1616 1968 2080 1000 1000 1004 1044
  Modeline "1280x960" 59.90 1280 1296 1552 1664 960 960 965 1003
  Modeline "1024x768" 59.89 1024 1040 1216 1328 768 768 774 802
  Modeline "640x480" 25.79 640 656 720 832 480 480 484 501
  Modeline "1600x1200" 59.90 1600 1616 1968 2080 1200 1200 1204 1253
  Modeline "1280x1024" 59.90 1280 1296 1552 1664 1024 1024 1029 1070
  Modeline "1152x864" 59.99 1152 1168 1384 1496 864 864 870 902
  Modeline "800x600" 40.35 800 816 928 1040 600 600 606 626
EndSection

Section "Device"
  Identifier	"Primary-Card"
  VendorName	"!!! GENERIC SERVER SELECTION !!!"
  BoardName	"SVGA"
  Chipset	"generic"
  Videoram	64
EndSection

Section "Screen"  
  Driver	"SVGA"
  Device	"Primary-Card"
  Monitor	"Primary-Monitor"
  DefaultColorDepth	16
  SubSection "Display"
    Depth	32
    Modes	"640x480" 
  EndSubSection
  SubSection "Display"
    Depth	24
    Modes	"640x480" 
  EndSubSection
  SubSection "Display"
    Depth	16
    Modes	"640x480" 
    #Virtual	640 480
  EndSubSection
  SubSection "Display"
    Depth	8
    Modes	"640x480" 
  EndSubSection
EndSection


Section "Screen"  
  Driver	"Accel"
  Device	"Primary-Card"
  Monitor	"Primary-Monitor"
  DefaultColorDepth	16
  SubSection "Display"
    Depth	32
    Modes	"640x480" 
  EndSubSection
  SubSection "Display"
    Depth	24
    Modes	"640x480" 
  EndSubSection
  SubSection "Display"
    Depth	16
    Modes	"640x480" 
    #Virtual	640 480
  EndSubSection
  SubSection "Display"
    Depth	8
    Modes	"640x480" 
  EndSubSection
EndSection

If I edit the file to change the video RAM from 64 to 8192 or 16384, to expand the range of horizontal sync and vertical refresh rates to what the server expects, and to lower all the bit depths to 8, then I can get the X server to start at 640×480, but the system is pretty useless in this configuration:

https://files.nothingisreal.com/tmp/suse62.png

Can anyone tell me which X server I need to install, and which graphics driver and monitor I should select, in order to get a decent screen resolution and colour depth?

Before continuing,
Is there some reason why you’re trying to install an ancient Linux (circa 1999)?

That’s so old, it might have problems even with virtualized video drivers.

I assume you’re installing as a Guest.
I can’t imagine anyone trying to run something like this as a HostOS.

Be aware that in 1999, 640x480 (VGA) was probably standard and the limits of the video drivers at that time.

TSU

You might try to compile and install the guest additions (which come with an X11 graphics driver), and then configure X to use vboxvideo.
I suppose they were not included yet in 6.2… :wink:

Although the question is if they build and work on such an ancient system.

Other than that, I would try the “vesa” driver instead of SVGA if available (I started with SuSE 8.1 and don’t know anything about older versions…).

Nostalgia. It was the first GNU/Linux distribution I regularly used. And I’ve continued to use various incarnations of (open)SUSE ever since.

Be aware that in 1999, 640x480 (VGA) was probably standard and the limits of the video drivers at that time.
Absolutely not. By the late 1990s, most “consumer” video cards supported at least 1024×768 at 16-bit colour, and that’s how I was running SuSE 6.2 on my IBM ThinkPad i1452. There were VESA standards for this resolution going back to the early 1990s, which as far as I know are still supported by modern video cards, presumably including the one emulated by VirtualBox.

Well, the guest additions don’t seem to be an option.
Acording to the documentation, they are only available for Kernel 2.6 and higher…

Actually, Linux guests are only fully supported since Kernel 2.6. For 2.4 there’s limited support, earlier versions are not supported at all.
https://www.virtualbox.org/manual/ch03.html#guestossupport

Still, I suppose “vesa” should work satisfactorily, if it was already available in SuSE 6.2.

Oh, are the drivers provided in source form? If so, maybe I can compile or cross-compile them.

Other than that, I would try the “vesa” driver instead of SVGA if available (I started with SuSE 8.1 and don’t know anything about older versions…).

An option “vesa” is available only when selecting the monitor. When selecting the graphics driver, I need to select from a long list of vendors, and then a long list of products. There is a vendor labelled “!!! GENERIC SERVER SELECTION !!!” which includes the following:


3DLABS
8514
AGX
AT3D/AT25 + VOODOO RUSH
I128 (IMAGINE)
I740
MACH32
MACH64
MACH8
MONO
NVIDIA
P9000
S3
S3 VIRGE
SVGA
TRIDENT
TSENG
VGA16
VOODOO BANSHEE
W32

As I mentioned above, I’ve tried SVGA with little success. I’ve also tried VGA16 and 8514 (a popular and widely cloned IBM chipset) but haven’t been able to get any resolution higher than 640×480.

And yet, when creating a new virtual machine in VirtualBox 5.1.24, it gives me “Linux 2.2” (the kernel version used by SuSE 6.2) as an option:

https://files.nothingisreal.com/tmp/vboxcreate.png

Yes, of course. The sources are on the guest additions CD which you can download and insert into the VM via Devices->Insert Guest Addition ISO.
Or download it manually here:
http://download.virtualbox.org/virtualbox/
(the file named “VBoxGuestAdditions_x.y.z.iso”)

But as mentioned, they require Kernel 2.6 according to the documentation.

An option “vesa” is available only when selecting the monitor. When selecting the graphics driver, I need to select from a long list of vendors, and then a long list of products.

Well, you can always edit /etc/XF86Config (or whatever the exact name is in your version) manually…
But, I don’t know how to specify the driver in that old version. Nowadays you would add Driver “vesa” to the Device section, but the one you posted doesn’t have such a line so I’m not sure it would work (and as I said, I’m also not sure if a vesa driver existed already back then).

On second thought (after looking at your XF86Config in more detail), have you tried to change the resolution in the /etc/XF86Config?
The corresponding modelines for higher resolutions are there, it’s just that 640x480 is set to be used…
Try to replace the “Modes 640x480” with “Modes 800x600” e.g. in the “Screen” sections.

Another suggestion: maybe VMware Player (available for free) would work better…

Well, but that doesn’t mean that it’s specifically supported.
From the docs:

Since VirtualBox is designed to provide a generic virtualization environment for x86 systems, it may run operating systems of any kind, even those not listed here. However, the focus is to optimize VirtualBox for the following guest systems:

(list of supported guest OSes, no mention of Linux 2.2)

Yes, I’ve tried that. No luck, I’m afraid.

Well, but that doesn’t mean that it’s specifically supported.

Yeah, I suppose it’s unsupported in the sense of “things might work, but if not, don’t come crying to us”. (FWIW, apart from the graphical display and the network card, everything does seem to run fine.)

Another suggestion: maybe VMware Player (available for free) would work better…

Now there’s an idea. Maybe that, or QEMU.

Well, I had somewhat better luck with QEMU. I launched QEMU with -vga cirrus to emulate a basic Cirrus Logic GD5446 video card. In SaX, this is one of the chipsets selectable in “expert” mode after selecting the SVGA driver. I still need to manually set the video memory. The XF86Config file SaX outputs doesn’t work as-is; X complains that there is “no defined dot-clock matching mode”. But if I manually change the Mode lines to match the dot clock settings it reports, then I’m able to start X (and KDE) at 1024×768 in 16-bit colour. Unfortunately, the display is rather corrupted:

https://files.nothingisreal.com/tmp/qemukde.png