Page 1 of 2
xOS
Posted: Wed Jul 27, 2016 9:51 pm
by BrightLight
Here's the second public release I ever make in my life (the first being ZeroOS 0.1 in late 2014 or early 2015, I think.)
This release boots to graphics mode, and launches two programs at the same time to demonstrate multitasking and userspace (make a register dump at any moment
) Each program creates a window, on which the user can use the mouse to draw on the window, to demonstrate window manager events as well.
YouTube video to demonstrate.
New stuff in this release:
- Window event support.
- Demo programs to demonstrate multitasking with ring 3 protection.
- Major bugfix in memory manager.
- Minor performance tweaks in mouse driver.
- First release that boots on real hardware without page faulting.
Missing stuff in this release:
- Unstable release; source code will be distributed with stable releases only.
- MTRR configuration crashes some HW; so this release does not configure MTRR.
- The graphics library is heavily optimized for 32-bit video modes, and 24-bit modes will suffer just from moving the mouse.
- Overall performance may be low.
Disk image download, both raw and VMDK.
I welcome all your feedback, both good and bad.
EDIT: I have released
the source code.
Re: xOS 0.04 -- first public release
Posted: Thu Jul 28, 2016 9:21 am
by max
Hey omar!
Nice work, congrats on the release, will try it out.
Would take a closer look, but why do you not provide the sources? Saying that it's GPLv3 but not providing the source violates GPL
Greets
Re: xOS 0.04 -- first public release
Posted: Thu Jul 28, 2016 10:05 am
by onlyonemac
max wrote:Hey omar!
Nice work, congrats on the release, will try it out.
Would take a closer look, but why do you not provide the sources? Saying that it's GPLv3 but not providing the source violates GPL
Greets
He said he will release the source code soon.
Re: xOS 0.04 -- first public release
Posted: Thu Jul 28, 2016 11:25 am
by max
onlyonemac wrote:He said he will release the source code soon.
No, he didn't. At least not in this post.
Re: xOS 0.04 -- first public release
Posted: Thu Jul 28, 2016 1:37 pm
by BrightLight
max wrote:onlyonemac wrote:He said he will release the source code soon.
No, he didn't. At least not in this post.
Yes, I did.
omarrx024 wrote:Unstable release; source code will be distributed with stable releases only.
Re: xOS 0.04 -- first public release
Posted: Thu Jul 28, 2016 4:08 pm
by iansjack
I think your logic is faulty.
You are saying that you won't release the source of this (unstable) release. Which is exactly what Max said. And, as he said in an earlier post, that means that you can't claim the GPL for it as people can't "modify the code".
That you are going to release the source of a future release is irrelevant.
Re: xOS 0.04 -- first public release
Posted: Fri Jul 29, 2016 4:07 pm
by BrightLight
Oh well. I made some fixes and put the source code on
GitHub.
Re: xOS 0.04 -- first public release
Posted: Fri Jul 29, 2016 9:18 pm
by Rusky
Technically you only have to provide the source if the source was provided to you under the GPL. That is not the case here, as omarrx024 wrote the source code rather than receive it from someone else.
Re: xOS 0.04 -- first public release
Posted: Sat Jul 30, 2016 1:43 am
by iansjack
Rusky wrote:Technically you only have to provide the source if the source was provided to you under the GPL. That is not the case here, as omarrx024 wrote the source code rather than receive it from someone else.
I believe that to be incorrect:
If you make object code available on a network server, you have to provide the Corresponding Source on a network server as well.
Re: xOS 0.04 -- first public release
Posted: Sat Jul 30, 2016 2:38 am
by BrightLight
I know that I should provide the sources if my project is GPL, and I did. Just 2 days later after doing some fixes.
Re: xOS 0.04 -- first public release
Posted: Sat Jul 30, 2016 10:08 am
by Rusky
iansjack wrote:I believe that to be incorrect:
If you make object code available on a network server, you have to provide the Corresponding Source on a network server as well.
That only applies to those who received the project under the GPL. The original author is not bound by the license in that way- that is what makes it possible to dual-license, or to sell license exemptions, for example.
But not to derail this! Nice work getting everything working together at this scale- a few hardware devices and simple userspace working. What are your goals moving forward? Do you have a target audience? Do you plan to support long mode? What pieces do you want to move into userspace, with what sort of syscall API? What design decisions can we already see that we might not have noticed?
Re: xOS 0.04 -- first public release
Posted: Sat Jul 30, 2016 3:08 pm
by BrightLight
Rusky wrote:But not to derail this! Nice work getting everything working together at this scale- a few hardware devices and simple userspace working. What are your goals moving forward? Do you have a target audience? Do you plan to support long mode? What pieces do you want to move into userspace, with what sort of syscall API? What design decisions can we already see that we might not have noticed?
Thanks! First, I plan to make this OS self-hosting with an installer (i.e. it can boot from a generic "installer CD" and install itself to a hard disk). I also want to add more hardware support: AHCI, HPET and USB are in my list, although USB is rather far. I really do this just for learning and for passing time; I don't expect an audience to ever use it. I do plan to support long mode, but not any time soon. 3rd party drivers will run in userspace; native graphics drivers, sound drivers and network drivers will all run in ring 3 and not be built-in to the kernel.
Re: xOS 0.04 -- first public release
Posted: Mon Aug 01, 2016 1:14 pm
by ~
omarrx024 wrote:Rusky wrote:But not to derail this! Nice work getting everything working together at this scale- a few hardware devices and simple userspace working. What are your goals moving forward? Do you have a target audience? Do you plan to support long mode? What pieces do you want to move into userspace, with what sort of syscall API? What design decisions can we already see that we might not have noticed?
Thanks! First, I plan to make this OS self-hosting with an installer (i.e. it can boot from a generic "installer CD" and install itself to a hard disk). I also want to add more hardware support: AHCI, HPET and USB are in my list, although USB is rather far. I really do this just for learning and for passing time; I don't expect an audience to ever use it. I do plan to support long mode, but not any time soon. 3rd party drivers will run in userspace; native graphics drivers, sound drivers and network drivers will all run in ring 3 and not be built-in to the kernel.
A smaller OS would be much more usable if it could be simply installed into a subfolder of the root directory (like "OS_Name_Folder") inside an already-existing partition (FAT, NTFS, Ext...) and if all installs of that OS could be searched and selected from a bootloader in all existing partitions from external media (avoiding installing or altering the most used booting configuration of the machine).
It all would be much easier if the bootloader was on a removable media like USB, floppy or CD/DVD, and if it just passed control to the OS on an existing formatted internal hard disk.
In this way the OS could be installed like any other regular application and then booted with, say, a configured USB stick to boot into it. Then nothing would need to be altered from the existing user OS and it would avoid keeping an exclusive hold on the machine against the rest of OSes and bootable system executive code applications/tests/demos.
It could well be a matter of creating a simple bootloader program based on FreeDOS installed into an external device or into the hard drive if we really need to make it our native OS.
Re: xOS 0.04 -- first public release
Posted: Mon Aug 01, 2016 2:08 pm
by BrightLight
~ wrote:A smaller OS would be much more usable if it could be simply installed into a subfolder of the root directory (like "OS_Name_Folder") inside an already-existing partition (FAT, NTFS, Ext...) and if all installs of that OS could be searched and selected from a bootloader in all existing partitions from external media (avoiding installing or altering the most used booting configuration of the machine).
It all would be much easier if the bootloader was on a removable media like USB, floppy or CD/DVD, and if it just passed control to the OS on an existing formatted internal hard disk.
In this way the OS could be installed like any other regular application and then booted with, say, a configured USB stick to boot into it. Then nothing would need to be altered from the existing user OS and it would avoid keeping an exclusive hold on the machine against the rest of OSes and bootable system executive code applications/tests/demos.
This is planned! I do plan to support ISO9660 and FAT32. NTFS and Ext2/3/4 are too complex and a waste of time for the early stages I'm in. I also will add support for running the entire OS from a ramdisk (e.g. you could boot the OS with MEMDISK, etc...) and wouldn't require any changes in the host system except changes in the GRUB configuration file. I've done this before.
xOS 0.06 alpha release
Posted: Mon Aug 22, 2016 3:34 pm
by BrightLight
Hello.
I'm happy to announce the third public release of xOS, version 0.06. New things in this release include:
- AHCI SATA read-only access; now boots from a SATA hard disk.
- ATA improvements.
- PCI improvements.
- Major memory manager bugfix.
- New default window theme.
- SSE memcpy and some other performance improvements.
Known issues:
- On VirtualBox, the AHCI controller doesn't respond to commands.
Things to expect in the next release:
- File system driver.
- Loading programs from disk.
- Using a picture file as the background.
- (Hopefully) fix the AHCI driver on VirtualBox.
For testing purposes, this release has a script called qemu.sh, which runs QEMU using SATA instead of ATA, just for demonstration.
Download Link
GitHub Release
I look forward to hearing all feedback, both good and bad.
Cheers.