"No matter how certain its eventual coming, an event whose
exact time and form of arrival are unknown vanishes when we picture the future. We
tend not to believe in the next big war or economic swing; we certainly don't believe in
the next big software revolution." - David Gelernter
Visopsys (VISual OPerating SYStem) is an alternative operating system for
PC-compatible computers, written "from scratch", and developed
primarily by a single hobbyist programmer since late 1997.
Visopsys is free software and the source
code is available under the terms of the GNU General Public License.
The libraries and header files are licensed under the terms of the
GNU Lesser General Public License.
The bulk of Visopsys is a fully multitasking, 100% protected mode,
virtual-memory, massively-monolithic-style kernel. Added to this is a
bare-bones C library and a minimal suite of applications — together comprising a small but reasonably
functional operating system which can operate natively in either graphical or
text modes. Though it's been in continuous development for a number of years,
realistically the target audience remains limited to operating system
enthusiasts, students, and assorted other sensation seekers. The ISO and
floppy images available from the download page
can install the system, or operate in 'live demo' mode.
Other operating systems can do more than Visopsys; it doesn't include many
applications. Needless to say, it's not as good as Linux or even
Syllable. On the other hand, it's still a one-person project.
From the perspective of a user — the "but what the heck is it good for?"
perspective — its primary selling point is a reasonably functional partition
management program (the 'Disk Manager') in the vein of Symantec's Partition Magic.
Visopsys and its Disk Manager comprise the popular
Partition Logic system. It can
create, format, delete, resize, defragment, and move partitions, and modify
their attributes. It can also copy hard disks, and has a simple and friendly
graphical interface, but can fit on a bootable floppy disk (or CD-ROM, if you're
The primary goal of Visopsys is to cherry-pick the best ideas
from other operating systems, preferably contribute a few new ideas, and hopefully avoid
(re-) introducing some of the more annoying elements.
However many ideas Visopsys borrows from other
products, it is not a Windows or UNIX lookalike, nor a clone of
any other system. On the other hand, much of what you see in Visopsys will
be familiar. There are a number of command line programs that are
superficially UNIX- or DOS-like, so you shouldn't have too much trouble finding
your way around. It is compatible with existing filesystems, file formats,
protocols, and encryption algorithms (among other things).
Some of the higher-level conceptual goals are as follows:
1. "Native" Graphical environment
- The base-level graphics server (analogous to an 'X' server in Unix,
but not X) is integrated into the kernel. A default GUI environment runs
"straight out of the box", with no setup procedure.
- At a later stage, a new metaphor for the GUI
environment. While not intended to be revolutionary, the planned
interface will eventually try to put a new spin on graphical shell design —
without making it unfamiliar or non-intuitive. The ideas are formed, but
the code is not written.
- To the greatest extent possible, the user should be able to perform all tasks,
including administrative ones, using this "point and click" interface
need to edit mysterious configuration files by hand.
2. Strong command line capabilities (text windows and
- Users must be given the ability to operate in a text-based environment if they
prefer to do so.
- To the greatest extent possible, the user should be able to perform all tasks,
including administrative ones, using the text interface. Configuring mysterious
configuration files by hand is, therefore, optional.
3. Compatible. Visopsys will conform to existing standards
to the greatest extent possible. It is not a goal for Visopsys to define new formats
(such as a new filesystem type). Examples of such standards include:
- Filesystem types
- Executable/object/library file formats
- Image, sound, font, compression and text file formats
- Encryption algorithms
- Network protocols
- Software development environment conventions
- Hardware interface standards (e.g. VESA)
- Some level of POSIX compliance, where possible, eventually.
Visopsys is starting to look and feel like a 'real' operating system.
There's still a long way to go before Visopsys might be useful to the average
person, but it's getting there little by little.
Coding work was begun as a part-time operation in late 1997. The
large majority of the code is written in C, with portions in x86 Assembly
Language. Following is a list of some of the implemented and unimplemented
- Graphical User Interface (GUI)
- Fully 32 bits, "protected" mode
- Fully pre-emptive multitasking and multi-threading
- Virtual memory, and memory protection
- Flat linear memory management
- Graceful processor fault and exception handling
- Good random number capability
- Buffered, asynchronous disk I/O
- ELF executable format
- JPG, BMP and ICO image files
- Filesystem support for:
- 12, 16, and 32-bit FAT filesystems (commonly used by
DOS and Windows)
Read-only Ext2/Ext3 filesystems (commonly used by
CD-ROM filesystems (ISO9660/Joliet)
- DVD-ROM filesystems (UDF)
- Native command line shell
- Small, native C library
- Native installer program
- Dynamic linking
- Hard disk partitioning program (Disk Manager)
- I/O Protection
- FPU state saves
- Multi-user operation
- Inter-Process Communications (IPC) facility
- Most network functionality
- Filesystem support for:
- Writable Ext2/Ext3
NTFS filesystems (commonly
used by Windows and Linux)
(others, as demand dictates)
- GIF and PNG image files
The primary developer of Visopsys is
Andy McLaughlin, a 30-something programmer originally from Calgary, Canada.
Several years ago, I moved to London, UK, after a year in Boston and 2 years in San Jose, California. Like many other hobby OS writers, I build Visopsys in my
I am not actively seeking other programmers to assist in the development
of Visopsys at this time, but I do gladly accept code submissions and suggestions.
An operating system kernel is a big enough challenge to be discouraging at times.
In comparison, the Pascal compiler I wrote over an eight month period is trivial. On the other hand, since I do everything by myself I am able to keep the
development on a unified path. The architecture that develops is — I hope — consistent
(for better or worse) and thus the end product reflects the vision of a single
programmer. It can be argued that this is the good, old-fashioned way of producing
The included Disk Manager does most of what you'd expect from your basic 'fdisk'
tool, whilst maintaining safety through MBR backups and 'undo' functionality.
The slightly more sophisticated features, such as copying disks, resizing, and moving
partitions, are the beginnings of a project to create a free alternative to
certain proprietary tools such as Partition Magic, Drive Image, and Norton Ghost;
the same user-friendly GUI environment, yet still small enough to fit on a boot
floppy. What it currently lacks are easily accessible ways to error-check
and resize filesystems.
A few other simple user applications are provided. These include a
'Computer' browser; a 'File Browser'; a 'Program Manager'; a basic 'User Manager' for administering user accounts and
passwords; a 'Keyboard Mapping' program which provides a choice between
various international keyboard layouts; a 'Display Properties' program
for setting graphical boot, screen resolution, colours, background, etc.; and a
'Configuration Editor' for modifying the system's configuration files, and a
text editor. Additionally there are
simple games, programs for installing Visopsys, viewing images, and making screen shots, as
well as a simple command line shell and associated programs for viewing memory
usage, managing processes, and plenty of other simple tasks.
Hardware support is generally limited to devices that conform to popular
hardware interface standards, such as VESA, PS2, USB, ATA/ATAPI (IDE),
compatibility-mode SATA, plus all of
the standard PC chipset components. Graphics are provided through the
(non-performant, but reasonably standard) VESA linear framebuffer interface.
At present there aren't any vendor-specific video drivers provided, though this
is not so much a design choice as it is the result of limited manpower and time.
Memory requirements are small: approximately 5 MB in text mode, and generally
less than 20MB in graphics mode depending on screen resolution, etc.
Visopsys supports all variations of FAT filesystem (12, 16, 32/VFAT) as well as
read-only EXT2/3, ISO, and UDF. Upcoming features include support for SATA, OHCI
(USB controller), SCSI, FAT resizing, and writable EXT2. Ports of
the Newlib C library, GNU Binutils and GCC will be available in the future as
- Single Pentium (or better) processor
RAM above 64MB
- Programmable Interrupt Controller (PIC)
- System timer chip
- Real-Time Clock (RTC) chip
- PS/2 Keyboard controller
- Text console IO
- Direct Memory Access (DMA) controller
- Floppy disk drive
- IDE hard disk drive and CD-ROM
- VESA 2.0 or greater video card with LFB
- PS/2 mouse
- PCI bus devices
- Lance ethernet (AMD PC-NET) network Cards
- UHCI USB controllers
- USB disk, mouse, keyboard, and hub
- Multiple processors (multiprocessing)
- 3DNow! and MMX processor extensions
- non-USB SCSI disk
- SATA disks in native mode
- OHCI USB controllers
- 3D or accelerated graphics
- Serial ports (UART chip) and serial mice
- Other network Cards
- (many others)
Visopsys is developed using CentOS (Red Hat) 5, built with the included GNU C compiler and
the NASM assembler, available
at sourceforge.net (or else use the command
"yum install nasm" in CentOS).
I'd like to thank the following individuals who contribute (with or without their
knowledge) to the success of this project:
- Jonas Zaddach <email@example.com>
has made a number of contributions including early 'Lance' network driver
support, the foundations for PCI support, and German keyboard layouts and
'Alt-Gr' key support.
- Davide Airaghi <firstname.lastname@example.org>
provided some initial work on FPU state saves and an Italian keyboard mapping.
- Graeme McLaughlin <email@example.com>
for patiently helping me test many versions of Visopsys.
- Bauer Vladislav <firstname.lastname@example.org>
contributed the original 'cal' calendar program.
- Leency <email@example.com>
for his icon contributions.
- Grzesiek (Greg) <firstname.lastname@example.org>
contributed an FPU exception handler fix to the multitasker.
- Hugh Anderson <email@example.com>
for debugging installation issues on Fedora FC5.
- Thomas Kreitner for all his testing and interest, and for
finding the weird bugs. Only an evil genius would discover some of these
- Some icons are adapted from the Noia icons for Windows
XP v2.00 Copyright © 2002 Carles Carbonell Bernadó
- Folder icon adapted from Jakub 'jimmac' Steiner's <firstname.lastname@example.org>
"Gorilla" folder icon at
- Some of the descriptions in fcntl.h are Copyright ©
1997 The Open Group from
- The values float.h are intelligent guesses based on
reconciling the float.h files from Linux and Solaris on i386 machines, and
based on the 'Standard C' specification Copyright © 1989-1996 P. J.
Plauger and Jim Brodie.
- sqrt.c is Copyright © 1996-2004 Paul Hsieh. Paul's
square root page is here:
- Katrin Becker <email@example.com>
at the University of Calgary for helpful advice about free-list management in filesystems. I should have paid more attention in class.
- John Fine <firstname.lastname@example.org>, Alexei A. Founze
<email@example.com>, and the rest of the
regular contributors to the comp.lang.asm.x86 and alt.os.development newsgroups. Thanks for always taking
the time to help people.
- Jerry Coffin <firstname.lastname@example.org> and Ratko
Tomic for posting information about alternate text mode video configurations.