Creating OS [Noobie :D]
Creating OS [Noobie :D]
Hello everyone,
I wanted to create an operating system for school, as final test.
But i have a lot of questions atm...
Few of the questions i have are
*What things are needed in an OS
*Is it possible for me (16year old) to create an very very basic os? before february
*Should i use grubs or a bootloader and why?
*In what order do i need to make the things
And might have more questions but don't know them atm
Kind regards,
Akatchi
Thx in advance
I wanted to create an operating system for school, as final test.
But i have a lot of questions atm...
Few of the questions i have are
*What things are needed in an OS
*Is it possible for me (16year old) to create an very very basic os? before february
*Should i use grubs or a bootloader and why?
*In what order do i need to make the things
And might have more questions but don't know them atm
Kind regards,
Akatchi
Thx in advance
Re: Creating OS [Noobie :D]
Age does not matter I am 14. First thing I would Ask myself is: Do I know C/C++ or assembly?
If not. It is still possible to do a linux distro or a mini realmode OS.
If not. It is still possible to do a linux distro or a mini realmode OS.
Get back to work!
Github
Github
Re: Creating OS [Noobie :D]
You can always do it, but chances are you get fail in the school test.
Re: Creating OS [Noobie :D]
Not really. I get high scores on all tests. Time-management is key though.
Get back to work!
Github
Github
Re: Creating OS [Noobie :D]
Can we stop making these threads like "I'm a n00b need halp pl0x" (Or admins should lock them)
Like seriously, everything is on the wiki.
Like seriously, everything is on the wiki.
Re: Creating OS [Noobie :D]
Lets not be so hard guys, if he can get a basic console in ring 0 up he might get good marks, even if it just has one command. And I'm almost at that point now, and having started over again due to bad design, I haven't put a great deal of time into the new version, and most of that was fixing the page tables. And, to boot, I'm only 16 as well, and I'm doing it purely for fun, and am having to juggle my college life around my osdever life, and even then I have a gazillion other commitments that all need seeing to, so it is very possible, IF you can manage your time.
Re: Creating OS [Noobie :D]
Hi,
@op: You have 2 strands to your question. Firstly, "Where do I start?" and "What components do I need for a basic OS?". These questions are indeed addressed in depth in the wiki and links contained in the wiki. Take a look there.
The second part is "Is it possible in the timeframe?". Basically, from your background reading, you need to clearly define the scope of your project. This is going to have to be very basic in the time allowed. If you want a long mode OS with a nice driver interface, supporting drivers, a port of GCC, Bash and VIM or even a GUI by February, the answer is probably no, it's not achievable by a one-man team who probably has other stuff going on as well.
OTOH, we have had a couple of 512 byte challenges in the past and some of the end results of this could almost be described as an OS in their own right. So if you want something small, which is fairly dependent on the BIOS, or somthing a little more complex which simply aims to achieve one task reasonably well, you can probably do it, but best get started now.
Cheers,
Adam
If you have a problem with a particular post / topic, please use the "report this post" link at the top (depending on your theme!) of each post. Several admins are only able to skim the forums - when you report a post it flags it up with a big, obvious red background so our attention is drawn towards something, normally before the flamefest starts.Nessphoro wrote:Can we stop making these threads like "I'm a n00b need halp pl0x" (Or admins should lock them)
Like seriously, everything is on the wiki.
@op: You have 2 strands to your question. Firstly, "Where do I start?" and "What components do I need for a basic OS?". These questions are indeed addressed in depth in the wiki and links contained in the wiki. Take a look there.
The second part is "Is it possible in the timeframe?". Basically, from your background reading, you need to clearly define the scope of your project. This is going to have to be very basic in the time allowed. If you want a long mode OS with a nice driver interface, supporting drivers, a port of GCC, Bash and VIM or even a GUI by February, the answer is probably no, it's not achievable by a one-man team who probably has other stuff going on as well.
OTOH, we have had a couple of 512 byte challenges in the past and some of the end results of this could almost be described as an OS in their own right. So if you want something small, which is fairly dependent on the BIOS, or somthing a little more complex which simply aims to achieve one task reasonably well, you can probably do it, but best get started now.
Cheers,
Adam
Re: Creating OS [Noobie :D]
Thx for the postive response ^~^death2all wrote:Lets not be so hard guys, if he can get a basic console in ring 0 up he might get good marks, even if it just has one command. And I'm almost at that point now, and having started over again due to bad design, I haven't put a great deal of time into the new version, and most of that was fixing the page tables. And, to boot, I'm only 16 as well, and I'm doing it purely for fun, and am having to juggle my college life around my osdever life, and even then I have a gazillion other commitments that all need seeing to, so it is very possible, IF you can manage your time.
did i took you alot of time for 1 command? i only want the very basic for my OS, not something that runs like a perfect DOS copy, im doing it for school but just like you most of it just for fun, and to see how it works
i think time wont be a problem, i got alot of free time
do you mind if i add you on msn? (just pm me if u like)
Thats something id like to make, i doesn''t need to be very good, im fine with the very very basics, it must stay fun to do 2AJ wrote:Hi,
OTOH, we have had a couple of 512 byte challenges in the past and some of the end results of this could almost be described as an OS in their own right. So if you want something small, which is fairly dependent on the BIOS, or somthing a little more complex which simply aims to achieve one task reasonably well, you can probably do it, but best get started now.
Cheers,
Adam
im already busy with learning the c++ and kinda learning about kernels and stuff like that... in a week of 2 i wanna start with a kernel/compiler or somethign like that, still dont know where to start with
Re: Creating OS [Noobie :D]
In fairness, it depends on what you want to do. One command is easy:
* Load kernel
* Enable A20
* Load GDT
* Jump to PMode
* Load page table
* Initialize exceptions, PIC and PIT (very useful for debugging)
* Set IDT, enable interrupts
* Init keyboard
* Detect for command, execute command
Could just be a simple "sysinfo" that prints your amount of memory (detect it using BIOS first), and CPU vendor string. Even that there needs a fair amount of design. Because I am going for general purpose desktop OS, right now I need to develop a file system, and implement it, to save me some headaches later, so I haven't got one command yet, but I could very easily add it if I wanted to (probably an hours work, if I don't have any distractions...)
It is very possible indeed, and in actual fact I have done all of the points above (other than keyboard and command), and detected memory, AND set up a working "register sys call" routine, AND a working console driver, in less than a week, so it is indeed possible.
* Load kernel
* Enable A20
* Load GDT
* Jump to PMode
* Load page table
* Initialize exceptions, PIC and PIT (very useful for debugging)
* Set IDT, enable interrupts
* Init keyboard
* Detect for command, execute command
Could just be a simple "sysinfo" that prints your amount of memory (detect it using BIOS first), and CPU vendor string. Even that there needs a fair amount of design. Because I am going for general purpose desktop OS, right now I need to develop a file system, and implement it, to save me some headaches later, so I haven't got one command yet, but I could very easily add it if I wanted to (probably an hours work, if I don't have any distractions...)
It is very possible indeed, and in actual fact I have done all of the points above (other than keyboard and command), and detected memory, AND set up a working "register sys call" routine, AND a working console driver, in less than a week, so it is indeed possible.
Re: Creating OS [Noobie :D]
OP, if you want any advice from me, drop me a message on the forums, or through my development blog (in my signature), and I will do my best to answer. As for where to start, I would personally start by creating a stub boot loader. I started with it simply printing an 'S' onscreen (S for success^^). Then change this to a word, null terminated ('Success' for me ofc). Move this code to a function, and you have the start of a console driver. Then, change the file, to turn this into a temporary, 16 bit kernel, and load it in in your boot loader. From there, I'd love to help you, but if I'm going to give you all the answers, I might as well make it for you as well, and then there'd be no point you even being here . But any questions, don't hesitate to ask, and a good pointer for what to make and in what order is the Brokenthorn Entertainment tutorials, which I use regularly when I am stuck for where to go next (as a matter of fact, the owner is on the forums somewhere.)
Re: Creating OS [Noobie :D]
again im sorry for my late response, i have been laying in bed for the past few days, because i had somethign with my knee and wasn''t able to walk with it, the doctors said i need to have alot of rest =)death2all wrote:OP, if you want any advice from me, drop me a message on the forums, or through my development blog (in my signature), and I will do my best to answer. As for where to start, I would personally start by creating a stub boot loader. I started with it simply printing an 'S' onscreen (S for success^^). Then change this to a word, null terminated ('Success' for me ofc). Move this code to a function, and you have the start of a console driver. Then, change the file, to turn this into a temporary, 16 bit kernel, and load it in in your boot loader. From there, I'd love to help you, but if I'm going to give you all the answers, I might as well make it for you as well, and then there'd be no point you even being here . But any questions, don't hesitate to ask, and a good pointer for what to make and in what order is the Brokenthorn Entertainment tutorials, which I use regularly when I am stuck for where to go next (as a matter of fact, the owner is on the forums somewhere.)
ok =) ill sure wanna do that because right now i dont even know in what order i wanna make the things (and what things are required for the basic). If it is possible i rather skip the boot loader and use GRUBS for it instead. How long did it took you to create the S and then go to succes? just everythign togheter from the bascis. Nah xD you dont need to make it for me i just wanna learn from it and explore everything how it works the brokenthorns are noobfriendly ^^?
Re: Creating OS [Noobie :D]
I would say the brokenthorn tutorials are very beginner friendly. Its where I started out (many moons, and many incarnations of Xero (including many names of it, originally called something in sweedish I think...) ago), and since then I've gone on to progressively harder and harder material. Not sure what you mean with how long? In terms of getting it working, I have had varying success: at first, I struggled (search out my early posts on ISO 9660 if you don't believe. Some nooby mistakes in there XD), but then eventually, I honed my skills, and, having started over recently, managed to get a working console driver, IDT, paging, exceptions, IRQs, and PIT, in just over a week. Given this is a school project, the only other thing you will really need is a shell, and a keyboard driver (and really, for a school project, you'd probably get away with sticking the shell in the kernel...). Using GRUB, I can't help you, haven't had any experience on multiboot (to any OSDevver with substantial experience, this will sound like a swear. I'm working on it. Honest. ^^)
EDIT: Almost forgot, sorry to hear about your injury
EDIT: Almost forgot, sorry to hear about your injury
Re: Creating OS [Noobie :D]
alright thanks =) i'll gonna search for them soon, im busy with the pre-information about kernels and stuff like that just to help when im starting.death2all wrote:I would say the brokenthorn tutorials are very beginner friendly. Its where I started out (many moons, and many incarnations of Xero (including many names of it, originally called something in sweedish I think...) ago), and since then I've gone on to progressively harder and harder material. Not sure what you mean with how long? In terms of getting it working, I have had varying success: at first, I struggled (search out my early posts on ISO 9660 if you don't believe. Some nooby mistakes in there XD), but then eventually, I honed my skills, and, having started over recently, managed to get a working console driver, IDT, paging, exceptions, IRQs, and PIT, in just over a week. Given this is a school project, the only other thing you will really need is a shell, and a keyboard driver (and really, for a school project, you'd probably get away with sticking the shell in the kernel...). Using GRUB, I can't help you, haven't had any experience on multiboot (to any OSDevver with substantial experience, this will sound like a swear. I'm working on it. Honest. ^^)
EDIT: Almost forgot, sorry to hear about your injury
With the how long i meant how long did it take you to input an S for succes on the screen? is that a hard command? and how long did it took you to create a basic OS (to give me an expectation of the amount of time needed)
ofcourse i believe =).
is it just that simple for a basic os? (shell and keyboard driver)
isn't grub easier then a bootloader? or how long does it take to create a bootloader? i thought it was like 30 hours or something =) thats why i might choose for grub ^^
No problem =) i can kinda walk again xD went to school but cant walk the stairs right now :3 just hurts a little bit
Regards,
Akatchi
Re: Creating OS [Noobie :D]
For a bootloader, I dare say that mine is just kludged together, and loads in the kernel from a predefined sector on disk (64, if you must know.) That's all you will really need, I would have thought. I am working on improving my boot loader now, to get it multiboot compliant, and the same with my kernel, but this is not mandatory just to get a basic OS working. As for displaying characters, it is BIOS interrupt 0x10 (I forget the service number, use Ralph Brown's Interrupt List for that...)
As for the whole thing, not too long, depending on how far you want to go, and what you want it to do. In its current state, my OS took about 2 months, most of which was consumed by a paging bug (albeit a really nooby bug, and one that I could very easily have avoided, and any competent programmer would have done.) All in all, to get a single command, in PMode, with paging and a flat memory model, a rough guesstimate gives me around 2-3 months, if you use your time well, and don't make any stupid mistakes.
As for the whole thing, not too long, depending on how far you want to go, and what you want it to do. In its current state, my OS took about 2 months, most of which was consumed by a paging bug (albeit a really nooby bug, and one that I could very easily have avoided, and any competent programmer would have done.) All in all, to get a single command, in PMode, with paging and a flat memory model, a rough guesstimate gives me around 2-3 months, if you use your time well, and don't make any stupid mistakes.