Linked by Eugenia Loli-Queru on Wed 21st Nov 2001 17:39 UTC
Syllable, AtheOS Norwegian ex-Amiga coder Kurt Skauen started designing & writing AtheOS in 1996. Until late 1999, AtheOS (a name derived from the Greek Goddess Athena) used to be called AltOS. AtheOS has even seen complete rewrites along the years, and today is on version 0.3.7. Come with me and see what AtheOS has to offer today to you. All your questions answered and we also include five new screenshots.
E-mail Print r 0   · Read More · 38 Comment(s)
Order by: Score:
*cough*
by Vanders on Wed 21st Nov 2001 17:58 UTC

so if you want to be the very first that will write/port an email client or a newsgroup client for AtheOS, here is your chance too.


http://www.shagged.org/~vanders/mercury.shtml

Just thought I'd mention it ;) Nice review Euginia, and some nice screen shots too!

*cough*
by Eugenia on Wed 21st Nov 2001 18:04 UTC

Yes, I know about Mercury, but hey... ;-)
And it is funny that when you posted this comment, I was thinking of you. I was thinking "I told Vanders that the review will be up at 6 PM, his time... Let's see, what's the time right now? Was I on time?" ;)

So, Vanders, when will we see a beta of Mercury? ;)

erm...
by Fpouier on Wed 21st Nov 2001 18:14 UTC

why not port OpenTracker?
!

Fpouier - Did you read the article?
by Dave on Wed 21st Nov 2001 18:17 UTC

There was a section in there as to the reasons why OpenTracker hasn't been ported.

Hehe
by Vanders on Wed 21st Nov 2001 18:25 UTC

I was punctual, I wouldn't miss a review of AtheOS now! ;)

Mercury should reach Version 0.1 by Christmas, as I do have some other comitments (I won't repeat them here, those "in the know" know what they are), and the code is coming along nicely ;)

by Camilo Pino on Wed 21st Nov 2001 18:29 UTC

wow, what a review, I am really impressed, yes, it is easy to install, but it would be something like FreeBSD installer.

FreeType usage
by Chris Herborth on Wed 21st Nov 2001 18:38 UTC

I'd really like to know why AtheOS's on-screen text looks SO MUCH BETTER than the text on my Linux system (Mandrake 8.1, running KDE, with anti-aliasing on). Especially monospaced fonts... Konsole doesn't seem to agree with my theory that Andale Mono is a monospaced font. Stupid X11...

- chrish

/me waits for an X11 fan to tell me _I'm_ stupid for not "simply" hax0ring some magic config file hidden somewhere on my system

Okay, since you asked,
by WattsM on Wed 21st Nov 2001 18:50 UTC

"You're stupid for not simply hax0ring some magic config file hidden somewhere on your system, Chris."

Damned if I know. Whenever I run a window manager that enables anti-aliased fonts horrible things happen to my fonts--all the settings that I had for KDE or XFce seem to change, or they say they're one font but are displaying another. Some of the fonts stop working. And when I do seem to get things working, I either can't honestly tell a difference or the text gets crappy, depending on the application. This was particularly bad in KDE.

Great Review!!!
by Rick on Wed 21st Nov 2001 19:01 UTC

Good Review Eugenia. Captured the beauty of AtheOS ;) . Hopefully this will bring more programmers to AtheOS. And any non c++ programmers out there, if you want to get your feet wet with c++ programming AtheOS is the place to do it.

by Androo on Wed 21st Nov 2001 19:58 UTC

"I'd really like to know why AtheOS's on-screen text looks SO MUCH BETTER than the text on my Linux system"

Simply because X11 was never meant to do modern font management and a number of hacks need to be applied for things to work propery. In a perfect world, the hacks work, but the world of Linux and the things that run under it is no perfect world.

Since KDE2 was released, many of the KDE folk have been striving to make text work better. Fortunately they've made improvements ... but X11 is still there and will continue to make life difficult.

I just pray for the BlueOS developers ... they're planning on using X11, am I correct?

Font problems
by Rayiner Hashem on Wed 21st Nov 2001 20:20 UTC

There are some acknowledge font problems with KDE and anti-aliased fonts. This should be fixed in KDE 3.0 (specificially, the problem is with Qt and Qt 3.0 fixes it). Until then, there's tons of workarounds. Just search on google for 'Konsole AA fonts'. One thing that has worked for me is this:

1) Assuming you have your truetype fonts (I suggest Microsoft's webfonts) in /usr/X11R6/lib/X11/fonts/ttf, cd to that directory.

2) Open the file called fonts.alias (if it isn't there create it.)

3) Insert an alias between the standard X fixed font (9x15) and you're choice of fonts. If you don't know the X name of you're particular font, open up the fonts.dir file in the folder containing the font (for example /usr/X11R6/lib/X11/fonts/ttf/fonts.dir). Now do a search for the name of the font. There should be several lines that begin with a foundry name (such as monotype or adobe) a dash, and then the font name ("Courier New"). Search for the particular line that contains the face you want (medium-r-normal for regular, medium-i-normal for italic, bold-i-normal for bold, etc). This line (minus the name of the font file at the beginning) is the X font name.

For example, I use the monotype Courier New font (from MS webfonts) so I have a line in fonts.alias that reads:
9x15 -monotype-"Courier New"-medium-r-normal--0-0-0-0-m-iso8859-1. `

Then open Konsole and set the standard font to "Normal". Reload Konqueror and everything should be fixed. If you get weird spacing on the font, the font file you're using is stupid and doesn't properly identify itself as monospaced. In that case, read the faq at:

http://www.google.com/search?q=cache:ebhO3FQ5Y_4:www.dexterslabs.co...

Re: Androo
by ealm on Wed 21st Nov 2001 20:30 UTC

BlueOS will only use XF temporary until they've written their own GUI

Looks promising
by Dutch Cap on Wed 21st Nov 2001 22:39 UTC

Perhaps not really for me (yet), as I am only semi-geek. Might give installing it a try some time, though. Looks like, in time, this might turn into a nice replacement for my BeOS partition, which, by that time, will probably have become obsolete (apart from some sentimental value, of course :-)

Re: Looks promising
by ealm on Wed 21st Nov 2001 23:11 UTC

I think you can count on BeOS to live on...
Look in the interviews archive here osn, and read the "BlueOS" and "OpenBeOS" interview

IDE, FDC drivers.
by P_developer on Wed 21st Nov 2001 23:33 UTC

I'm surprised that Kurt hasn't done at least an IDE driver.

Kurt,

A PIO driver is very easy to write. The core of my IDE driver in petros is very simple - the IDE controller is programmed in the context of the thread that's executing and then all the ISR does is set a semaphore to let the thread know to continue at strategic points. The whole lot is wrapped in a kernel mutex to stop the pio calls getting out of sequence. Granted it doesn't do fancy stuff like queuing requests or sorting by track number, but these type of things can be done by a higher layer in the kernel. If you're simply doing bios calls it really wouldn't take much more work to get native IDE into the kernel. The only other hassle you might have is dealing with sector translation and othe bios extension stuff. We have a headache with partition table issues when dos extenders or sector translation is active.

An ATAPI driver is a minor abstraction of the IDE driver - not much more work there except to write the CDROM file system drivers - but I presume you already have that bit or are already working on it.

For FDC, it's a bit trickier - you have to manage DMA (watch out for 16 meg limitations on legacy hardware) and I have found that programming the controller is much more finicky (need to refer to data sheets when writing). However, I did manage to get it working quite well without blocking the entire system. You can read the floppy to your heart's content without locking up other parts of the system.

Just a few handy hints ;)

P

P.S. with the collection of talent that shows up at OSnews, it would be cool for us all to pool our knowledge regarding devices, controllers, OS techniques etc and put a lot of the stuff together in one place. I spend days digging up stuff like datasheets and specs like IDE etc.

Re: IDE, FDC drivers
by Eugenia on Wed 21st Nov 2001 23:38 UTC

>with the collection of talent that shows up at OSnews...and put a lot of the stuff together in one place

A lot of people have emailed us and asked for an article that gives 'advices' on how to write an OS in general. I have asked a few people to participate in such an article (including Jbq), but they all claim to be extremely busy these days... ;)
I'll see what I can do though.

Re: IDE driver
by Joe Radkowski on Thu 22nd Nov 2001 00:18 UTC

P_developer, I think I will take a look at your driver then. I have been trying to get the current (old driver) updated to run under 0.3.6 without major DMA errors. I have been slowly backing off going for a complete driver and just getting PIO working.

<plug>http://www.0reality.com>Zer0 is a little AtheOS News and Forum site I have put up and am slowly getting time to put into. (Do i work on the site or the driver... ahh yes free time goes so quick)

Joe

PS Thanks for the tips!

Re: me
by Joe Radkowski on Thu 22nd Nov 2001 00:20 UTC

I (and others) are hoping Zer0 Reality is used as a place off the mailing to discuss user related topics amoung other things. The Mailing List was getting about 100 msgs every few days or so, a tad too many imho. If anyone reading goes to install AtheOS and runs into a problem feel free to ask questions, we got answers!

Joe

Re: IDE driver
by Joe Radkowski on Thu 22nd Nov 2001 01:13 UTC

Ah after looking at your site I see its a closed source OS. ;)

An idea
by Branko on Thu 22nd Nov 2001 02:13 UTC

Great review.

I agree with you that AtheOS does not look that great GUI wise so here's an idea:
Let people submit their own made up GUI screenshots, make something cool and maybe Kurt will like it?
Kinda like Linux themes but a new GUI for AtheOS, or at least some new ideas?

Thanks!

Re: IDE driver.
by P_developer on Thu 22nd Nov 2001 04:38 UTC

email me & I'll send you some pseudo code.

P

re: An idea
by Vanders on Thu 22nd Nov 2001 08:51 UTC

Windows can already be changed using plugin Window Decorators; the screenshots show four of the available decorators (Drow, YNOP, MacDady & BeIsh) Kurt will probably extend this interface to allow the plugin to draw all of the GUI widgets, including buttons & scrollbars. It promises to be faster than a skins engine, and would offer a fairly flexible GUI.

Just some pointers.
by Wesley Parish on Thu 22nd Nov 2001 08:51 UTC

Eugenia wrote: "A lot of people have emailed us and asked for an article that gives 'advices' on how to write an OS in general."

Try : http://tunes.org/Review/OSes.html
for a few pointers to some usable FAQS.

Then there are the books like Tanenbaum's, Villani's, Brinch Hansen's, etc.

by Stu on Thu 22nd Nov 2001 09:06 UTC

Eugenia wrote: "A lot of people have emailed us and asked for an article that gives 'advices' on how to write an OS in general."

hmm in a few weeks, a new version of the OS-FAQ will be up! so look out for it in a few weeks..

http://www.mega-tokyo.com/os

-stu

install
by gfx on Thu 22nd Nov 2001 13:25 UTC

About the install issue is it possible to get Atheos as an imagefile
write it to zipdisk (dd) and boot from that ?

by Matt K on Thu 22nd Nov 2001 23:50 UTC

Hmm, and win2000 takes 4 boot disks to install.

re: Matt K
by Eugenia on Fri 23rd Nov 2001 00:18 UTC

>[/i]Hmm, and win2000 takes 4 boot disks to install.[/i]

You have misanderstood. To install AtheOS, you need 3 bootable floppies, *PLUS* a 20 MB tarball which has to reside in a FAT partition. If you don't have a FAT partition, you have to put that tarball spawned across 12-13 floppy disks. So, if you don't have a FAT partition around, you will need almost 16 floppy disks to install AtheOS.

Learning to write an OS
by Rayiner Hashem on Fri 23rd Nov 2001 02:54 UTC

A lot of people have been asking about learning to write an OS. I found myself with exactly the same problem a few months ago, and I've found some helpful stuff in addition to the links already mentioned. I suggest you go in this order, because you kinda get led nicely from one to the other.

1) Modern Operating Systems, by Andrew Tannebaum.
2) http://ojos.sourceforge.net/tutorial1.html
3) http://www.execpc.com/~geezer/os/
4) http://www.acm.uiuc.edu/sigops/roll_your_own/
6) www.nondot.org/sabre/os
7) Understanding the Linux Kernel: From I/O Ports to Interrupts, Orielly.
8) http://citeseer.nj.nec.com/cranor99uvm.html
9) /usr/src/linux

After that, look around at various articles and research papers on the internet. In particular, look for stuff about Solaris, since they tend to document their additions to UNIX really well. Unlike most people, I don't reccomend just going out there and reading code. You'll quickly get lost and intimidated. Instead, read some of the papers and books first so you have a high level overview of how everything works, then read the code once you're comfortable with the concepts.

by QN on Fri 23rd Nov 2001 05:14 UTC

I have to say that the GUI looks so ugly. There are so many ways to make them look decent and nice even with simply drawings. I just don't get it. Look at www.stardock.com, www.themes.org, www.kde-look.org for some ideas.

by DavidGentle on Fri 23rd Nov 2001 05:42 UTC

The gui is barely started yet.

...
by <:> on Fri 23rd Nov 2001 10:26 UTC

look at www.intercircle.net/beos for a nice looking screenidea.
But seriously, I think opentracker should be ported. It *does* need it.

Open Tracker
by Kevin on Fri 23rd Nov 2001 16:14 UTC

Open Tracker should not be ported. Neither should KDE or GNOME... plus, OT would be very hard to port from what i've heard...

by Matt K on Sun 25th Nov 2001 02:15 UTC

> You have misanderstood. To install AtheOS, you need 3 bootable floppies, *PLUS* a > 20 MB tarball which has to reside in a FAT partition.

I understand, just a cheap shot at windows. (It really isn't much harder to install, as long as you have that fat partition.)

By the way, I already have 0.36 which I have used slightly. My question is what are the improvement in 0.37 over 0.36.?

re: Matt K
by Eugenia on Sun 25th Nov 2001 02:47 UTC

>My question is what are the improvement in 0.37 over 0.36.?

There is a detailed Changelog for that on the atheos web site. Mostly bug fixes though.

Improvements from 0.3.6 to 0.3.7
by Rick on Sun 25th Nov 2001 02:56 UTC

Matt K wrote:

>By the way, I already have 0.36 which I have used slightly. My question is >what are the improvement in 0.37 over 0.36.?

Taken from changes.txt. Sorry it is so long.

Since 0.3.6:
*MISC*
o When the "Popup selected windows" option is turned on or the <CTRL>
qualifier is held while selecting a window the window will now be
moved to front no mather where in the window you click. In previous
windows only the window boarders would bring it to front. When
"Popup selected windows" is not selected you will still have to
double-click the window boarders or click the "toggle depth"
boarder-button to bring a window to front. This is to make it
possible to double-click controls inside a window without moving
it to front.

o More (and more human readable) memory usage info from the "sysinfo"
utility. Also added a -l option that will make it enter a loop that
repeadatly clear the terminal and refresh the system information much
like the "top" utility.

o Changed the window size limits to mean right/bottom border rather than
with/height in pixels to make it more consistent with the rest of the API.

o Major optimizations in all image translator plugin. Greatly improves the
speed and responsiveness of ABrowse during page loading.

o Optimized the image loader in ABrowse further speeding up page loading.

o Windows now get selected no mather what mouse button was used (previous
versions only selected when clicking with the left button). This solves
a few problems for aplications using right-click popup menues.

o Various optimizations in the TCP/IP stack. Both to reduce the CPU usage
but most importantly there has been a lot of tuning of the timer code
who dramatically increase the performance on high-latency connections.

o Changed/fixed the locking cheeme in the ELF executable/DLL loader to
improve the concurrency of the loader.

o New system for handling installation of UNIX/POSIX command line
applications and library packages ported to AtheOS.
In UNIX most binaries are installed into /usr/bin/* or /usr/local/bin/*
so the shell have an easy job finding them. Similarily all libraries
are installed into /usr/lib/* or /usr/local/lib/* and the same goes
for header-files, man-pages, info-files, etc etc. The problem with
this approach is that it becomes very hard to remove one "package"
since it has been blended in with several dozen's other packages.
In AtheOS each package are installed into a separate directory
containing it's own bin, lib, man, etc etc directories. This makes
it easy to maintain a package (unpack it and it's installed, delete
the directory and it's uninstalled) but it makes it hard for the
shell to find all the executables since they are spread over a
lot of directories. In earlier versions this was handled by a
script that updated the various search path environment variables
to include all the application directories. This was not an optimal
solution since the environment was growing rather large and searching
the long search-paths had a bit higher overhead than just looking in
a couple of directories. It also required all shells to be restarted
in order to update their internal environment.
The new system works by having a separate directory (/atheos/autolnk)
with bin, lib, man, etc etc subdirectories inside that the "package
manager" (pkgmanager) will fill with symlinks pointing into the
corresponding directory inside all the package directories. So
/atheos/autolnk/bin/ will contain symlinks that point into
/usr/gcc/bin/*, /usr/make/bin/* and so on. Thus the only entry that
need to be in the $PATH environment variable is /atheos/autolnk/bin/.
pkgmanager can also search through /atheos/autolnk/* and remove all
symlinks pointing to a given package to clean up before uninstalling it.
If the "package" need to do some additional configuration it can
include a "pkgsetup.sh" script or executable at the top-level of the
package directory and pkgmanager will execute this script after
building the symlink mirros. Similarily it can include a "pkgcleanup.sh"
script or executable that will be executed after the symlinks have
been removed again during uninstall.

o The buffers used by the kernel debugger and for kernel debugging output
has been redesigned to much better utilize the buffer-space. This means
that normally all the kernel-output generated during bootup will make
it to the /var/log/kernel.log file and that it is less likely that
log-data will be lost during extream load or when large amounts of
output is generated.

o More API documentation.


*NEW FEATURES*
o Added a GetTabCount() member to os::TabView.

o Support for mouse-wheel. Catalin Climov <catalin@climov.com> submitted
a patch to the PS2 driver adding IntelliMouse wheel support.

o Generic support for mouse-wheel in the GUI toolkit and specific support
in various GUI controls like os::Scrollbar, os::Spinner, os::TextView,
and os::ListView.

o Support for mouse-wheel in ABrowse and ATerm.

o Support for non-square views and windows by allowing applications to
specify an optional clipping region that will be used to define the shape
of the view or window. Still to low performance to be usefull for things
like large round windows but can be used to make iregulary shaped views.

o New os::MenuItem derved class that render a separator line.

o New members in os::TextView for deleting ranges of text and inserting
text at a specific position without "manually" moving the cursor and
selecting ranges.

o Support for adding restrictive clipping regions to views. The application
can now pass a clipping region to a view to restrict what areas that
will be affected by the various rendering commands. This can be used to
reduce flickering and in some cases to speed up complex rendering operations.
It can also be useful to clip text rendering to a predefined area since
it is hard to predict how much space a string will cover on-screen.

o New API for getting a file-descriptor to any of the ELF images loaded
by a process aswell as to the directory where the executable was loaded
from. This makes it very easy to get to the image files to load resources
from them and it also makes it easy to make an application "position
indepentent" since it is possible to open data files with paths that
are relative to the directory where the executable is located. Now
applications that need extra data files can store the executable and
all the data files in a directory or directory-tree and the application
can find it's data files no matter where the user move the directory
since it will always open the data files relative to where the executable
are.

o A new function named get_image_id() that returns the image-ID of the
DLL or executable containing the calling function. This is ueseful
in conjunction with the API for getting a file-descriptor for a
image file. This makes it possible for a DLL to easily find it's
own DLL ID in order to load resources embedded in the DLL. The
function will use the address of the caller to determine which
image it lives in.

o New constructors and SetTo() members in the various highlevel
filesystem classes that accept open file descriptors.

o The various highlevel filesystem classes will now automatically
expand paths starting with "~/" with the current users home
directory and will open paths starting with "^/" relative the
the directory where the applications executable is located
independent of the applications current-working-directory.

o New classes for reading and creating resources within executable
and DLL images aswell as a command line tool for adding, listing,
and extracting resources embedded in executables and DLL's.

o New class for parsing command line options. The class greatly
simplify parsing command line options in CLI programs. It can
also help the application printing a "--help" screen by automatically
generating a help-screen for the command-line option by intelligently
formatting the page to be easily readable with the current terminal
width.

o New regular expression searching class. The class help you to
do regexp searches and matches on strings and support extracting
sub-expression results in the form of sub-strings or by using
the resulting substrings to expand a template string.

o Support for TCP keepalive packages in the TCP/IP stack. Earlier
versions didn't send or replied to keepalive packages so idle
connections used to be cut by the peer after a couple of hours.

o Support for disabling kernel debug output to a serial port. It
is now possible to disable the serial output entirely by setting
the baud rate to 0. It is also possible to change the baud rate
and serial-port used at run-time with kernel-debugger commands
from a local debug terminal. Note that the default baudrate has
now been changed from 115200 to 0 so the serial output is disabled
by default. To enable it again you can add "debug_baudrate=115200"
to the kernel-line in "/boot/boot/grub/menu.lst" (or to temporarily
enable it you can run the kernel-debugger localy with "dbterm -l"
and set the baudrate with the "dbspeed" command).

*BUG FIXES*
o Fixed a render bug in the CPU monitor.

o Fixed a bug in os::Font causing the size to be wrong when set to 10.0.

o Fixed a bug in os::TextView causing glyphs to be rendered to high
so the top of some glyphs was cut in some fonts.

o Fixed a bug in os::TabView::DeleteTab(). When deleting the currently
selected "tab" the view associated with the new selection sometimes
got hidden.

o Removed a memory leak from the os::TextView class.

o Fixed a bug in the handling of double precision floating point values
in the os::Variant class. Older versions rounded all double values to
it's integer value before returning it.

o Fixed a bug in the PS2 mouse driver that often caused a total lockup
of the GUI.

o Removed some memory leaks in the GIF and JPEG image translator aswell
as the image loader in ABrowse.

o Fixed a crash-bug in the ABrowse image scaling.

o Fixed a bug in the history-system in ABrowse. The history was not properly
updated when following links to anchor points within the same page.

o Fixed some bugs in the ABrowse HTTP loader that caused premature aborting
of a page-loading to leak memory and mix the content of the aborted page
and the next loaded page.

by Matt K on Mon 26th Nov 2001 04:13 UTC

Thanks a lot. There appear to be some important fixes in 0.3.7, I'll be sure to update soon.
Atheos seems like it has a lot of potential, it's great to hear more about it. I agree with idea Kurt's to do all the developement work and decision making of the core OS and GUI himself. Perhaps that and determination are the only way to finally make a good and consistent OS.

Just some additional pointers
by Wesley Parish on Mon 26th Nov 2001 10:34 UTC

About writing your own OS - it is easy to do a "pseudocode write" as it were, of an operating system, without having much idea of what the actual machine (CPU, memory, bus, disks, and other peripherals) behaves. I've done it myself. I have a book called "The Design of Operating Systems for Small Computer Systems" by Stephen H. Kaisler, which does precisely that.

To understand what the machine is actually doing, you have to read books like "Computer Architecture: A Quantitive Approach" by Hennesy and Patterson, "The Intel Microprocessors" by Brey, etc. It's a lot of hard work, but that's part of the fun. And all worth it in the end.

might try installing AtheOS sometime
by Anonymous on Sun 3rd Feb 2002 07:38 UTC

Hi!

Pretty interesting intervies: I might try installing AtheOS sometine: for now, being linux newbie, lemme try learning a few things:)