Enquiry
Enquiry
Hi all!
I am fed up with commercial operating systems being designed poorly, and have decided it is time to start my own.
I know I wont instantly have features of Windows XP, but if I can use something secure, I would be much more happier.
I know the first step in starting an O/S is to program a file boot.ini with the destination of the operating system files, but from here on, I was wondering if anyone could give me some advice in where to start.
Thanks!
Nik
I am fed up with commercial operating systems being designed poorly, and have decided it is time to start my own.
I know I wont instantly have features of Windows XP, but if I can use something secure, I would be much more happier.
I know the first step in starting an O/S is to program a file boot.ini with the destination of the operating system files, but from here on, I was wondering if anyone could give me some advice in where to start.
Thanks!
Nik
Re:Enquiry
Hmmm... you appear to be confused here. Boot.ini is a file that XP uses to tell it what to put into the boot menu so you can have different windows installs on different partitions.
I suggest you take a good look through the OSFAQ (especially the sections on booting) and possibly see if your library has any good books available on systems programming.
Also, what experience do you have? Writing an OS takes a lot of programming skill with whatever languages you choose (with asm and c being the current favourites I believe).
I suggest you take a good look through the OSFAQ (especially the sections on booting) and possibly see if your library has any good books available on systems programming.
Also, what experience do you have? Writing an OS takes a lot of programming skill with whatever languages you choose (with asm and c being the current favourites I believe).
Re:Enquiry
I would advise that you first attempt a solid, from-source Linux installation before jumping so far as to say you need your own operating system. If you're dissatisfied with XP, you can run Linux, BSD, or even some wierd thing like BeOS. Don't get too far ahead of yourself.
However, if my Three Attempts (the three OS's you can run) haven't dissuaded you, then welcome to OS development. You'll definitely need C expertise, as it's the most purely convenient language to use right now, and at least a dabbling of assembler. I also recommend becoming fluent in Pascal, because despite the fact that few use it for OS development it still trains your mind to program with more structure than C requires of you.
Beyond the minimums of C and ASM, I would recommend just learning as many languages as you can, as each one will contribute to how you're able to think about coding.
However, if my Three Attempts (the three OS's you can run) haven't dissuaded you, then welcome to OS development. You'll definitely need C expertise, as it's the most purely convenient language to use right now, and at least a dabbling of assembler. I also recommend becoming fluent in Pascal, because despite the fact that few use it for OS development it still trains your mind to program with more structure than C requires of you.
Beyond the minimums of C and ASM, I would recommend just learning as many languages as you can, as each one will contribute to how you're able to think about coding.
Re:Enquiry
I was not aware boot.ini was a Windows 2000/XP related file.
I only know how to program in HTML.
I beleive I am very advanced in computers, though programming is 1 of the 2 things where I lack in computers.
I am prepaired to dive in the deep end and start straight off with learning how to program an Operating System.
Complex challenges will not scare me off, because with everything, if you take it on, eventually you will acheive your goal.
Thanks for the advice about searching the boot forums.
I will do this now.
Nik
I only know how to program in HTML.
I beleive I am very advanced in computers, though programming is 1 of the 2 things where I lack in computers.
I am prepaired to dive in the deep end and start straight off with learning how to program an Operating System.
Complex challenges will not scare me off, because with everything, if you take it on, eventually you will acheive your goal.
Thanks for the advice about searching the boot forums.
I will do this now.
Nik
Re:Enquiry
Hi,
Welcome to OS Development. First things first, make sure you actually know a good programming language, like C/C++ AND Assembly. (Pascal can also be used for OS devving)
Second, learn how to use other OSes. This advice might be a bit strange, but it actually will learn you that "A:" f.e. is not mandatory.
Before you do any OS devving, you should program a few/lot of normal applications (normal APP developing) instead of creating an OS immediatly.
All this is at the holy OS Faq
Good luck with OS devving,
DennisCGc.
Welcome to OS Development. First things first, make sure you actually know a good programming language, like C/C++ AND Assembly. (Pascal can also be used for OS devving)
Second, learn how to use other OSes. This advice might be a bit strange, but it actually will learn you that "A:" f.e. is not mandatory.
You actually know that HTML is NOT a programming language. It's a markup language.I only know how to program in HTML.
Before you do any OS devving, you should program a few/lot of normal applications (normal APP developing) instead of creating an OS immediatly.
All this is at the holy OS Faq
Good luck with OS devving,
DennisCGc.
Re:Enquiry
No, you're not. Learn a couple of languages first and program all sorts of things in them BEFORE writing an OS: GUI apps, command-line programs, networking programs, maybe something database related (though they are horribly boring), small games and anything that strikes your fancy that you're up to. Do those, get the experience, THEN try to write an operating system.Kolusion wrote: I am prepaired to dive in the deep end and start straight off with learning how to program an Operating System.
Good luck!
Re:Enquiry
I am fed up with commercial operating systems being designed poorly, and have decided it is time to start my own.
Those don't mesh. Basically what you're saying is that somebody else told you Windows is poorly designed.I only know how to program in HTML.
This isn't the deep end, it's the abyss. It's quite possible to learn how to program at the same time as writing an operating system. However in practice it's an incredibly stupid thing to do. Learn how to program first. Then, if you're still interested, learn how to program an operating system.I am prepaired to dive in the deep end and start straight off with learning how to program an Operating System.
Re:Enquiry
In order:I was not aware boot.ini was a Windows 2000/XP related file.
I only know how to program in HTML.
I beleive I am very advanced in computers, though programming is 1 of the 2 things where I lack in computers.
1) Use at least one OS other than windows before attempting OS dev
2) HTML isn't programming, it's not even scripting, so basically you don't know how to program
3) Advanced with no programming knowledge doesn't really pan out, I'm almost scared to ask what the second thing you're not good at is
My advice would be to use linux for a while and get to know the more complicated commands, then do some scripting, then do some programming in C, then move onto assembly when you're more proficient at C, then read a lot of books about hardware and OS theory, then you will be ready young grasshopper.
Re:Enquiry
boot.ini has been around since Windows NT 3.1 and its very advanced to "program".....
[hr]
it looks to me that you arent ready for the hard challenge of writing an OS. HTML is not going to cut it for writing an OS.
So now im going to tell you some stories about my "secure" operating systems:
K OS (writen in ASM...i got stuck/distracted. I gave up. It was very secure. Noone can hack it. Then again it doesnt do anything )
Tora OS (hence my user name....i got stuck/distracted. I sort of gave up. Too much work. once again super secure. Noone can hack it. Wait it also doesnt do anything )
[hr]
You want a secure OS? I got one for you:
MS-DOS 1.1
Oh wait...it doesnt do anything.
[hr]
By now you should be getting my point. If you want secure you will most likely have to get rid of stuff that you like.
[hr]
However i do have some helpful hints for you:
1. Firewall (either hardware or software)
2. Run antivirus every so often.
3. Windows Update/firefox updates/whatever you are running updates.
4. Dont have things like telnet running on your computer and then not have an administrator password.
5. If you are using Windows Server dont allow administrators to log on via Terminal Services unless they have a strong password
I have been running the "highly insecure windows os" for the last how many years now? online and i have NOT ONCE been hacked or even gotten a virus.
So you have the wrong solution to the right problem.
[hr]
it looks to me that you arent ready for the hard challenge of writing an OS. HTML is not going to cut it for writing an OS.
So now im going to tell you some stories about my "secure" operating systems:
K OS (writen in ASM...i got stuck/distracted. I gave up. It was very secure. Noone can hack it. Then again it doesnt do anything )
Tora OS (hence my user name....i got stuck/distracted. I sort of gave up. Too much work. once again super secure. Noone can hack it. Wait it also doesnt do anything )
[hr]
You want a secure OS? I got one for you:
MS-DOS 1.1
Oh wait...it doesnt do anything.
[hr]
By now you should be getting my point. If you want secure you will most likely have to get rid of stuff that you like.
[hr]
However i do have some helpful hints for you:
1. Firewall (either hardware or software)
2. Run antivirus every so often.
3. Windows Update/firefox updates/whatever you are running updates.
4. Dont have things like telnet running on your computer and then not have an administrator password.
5. If you are using Windows Server dont allow administrators to log on via Terminal Services unless they have a strong password
I have been running the "highly insecure windows os" for the last how many years now? online and i have NOT ONCE been hacked or even gotten a virus.
So you have the wrong solution to the right problem.
Re:Enquiry
Sorry dude, this is so classic ::)
In essence:
To be more serious about it...
Don't try to climb Mount Everest if you've never done any rock climbing of any type beforehand. HTML isn't even a programming language, and although it's helpful to know HTML, it won't get you any further than your OS's home page. Learn assembly and C, read from <a href="http://www.osdev.org/osfaq2/index.php/Foreword">the holy OS Faq</a>
and then ask some questions, download some files - then you can climb Everest, but make sure you don't fall off!
I recommend learning DOS programming, as it is this type of low-level programming that will help you (learning to write Windows programs won't help you any in OS deving, except as practice for general programming concepts). I personally recommend DJGPP (which is a C/C++ compiler for DOS - don't bother to learn C++ yet unless you really want to - it won't help much in OS deving) and either FASM or NASM. I use FASM, but most people (especially OS devers) use NASM, so you'll find more tutorials, examples, etc. on NASM. Both are free, and they use similar syntax. FASM has a more active community at http://board.flatassembler.net/ but less examples, tutorials, docs, etc.
But if all you want is a good OS that is secure but can do stuff, try linux. If you want a better OS, try linux. If you want an OS that is fun, compatible with most Windows devices, and can even run Windows and DOS programs under emulators - try linux. The learning curve is steeper than that of Windows, but it's worth it - and if you're afraid of the CLI, try XFree86 with KDE or GNOME.
There are many hobby-OS's; MenuetOS is a pretty well-known hobby OS written in FASM, but it can't do much and it's not very secure at all (my first program crashed the OS, which is very easy to do ;-D ). A lot of hobby OS's don't go very far, or do very much, because writing an OS really is incredibly difficult, a major undertaking.
Whatever you choose to do, good luck!
In essence:
But I'll try to be nice anyways...I don't know anything about programming, can someone teach me how to write an OS?
To be more serious about it...
Don't try to climb Mount Everest if you've never done any rock climbing of any type beforehand. HTML isn't even a programming language, and although it's helpful to know HTML, it won't get you any further than your OS's home page. Learn assembly and C, read from <a href="http://www.osdev.org/osfaq2/index.php/Foreword">the holy OS Faq</a>
and then ask some questions, download some files - then you can climb Everest, but make sure you don't fall off!
I recommend learning DOS programming, as it is this type of low-level programming that will help you (learning to write Windows programs won't help you any in OS deving, except as practice for general programming concepts). I personally recommend DJGPP (which is a C/C++ compiler for DOS - don't bother to learn C++ yet unless you really want to - it won't help much in OS deving) and either FASM or NASM. I use FASM, but most people (especially OS devers) use NASM, so you'll find more tutorials, examples, etc. on NASM. Both are free, and they use similar syntax. FASM has a more active community at http://board.flatassembler.net/ but less examples, tutorials, docs, etc.
But if all you want is a good OS that is secure but can do stuff, try linux. If you want a better OS, try linux. If you want an OS that is fun, compatible with most Windows devices, and can even run Windows and DOS programs under emulators - try linux. The learning curve is steeper than that of Windows, but it's worth it - and if you're afraid of the CLI, try XFree86 with KDE or GNOME.
There are many hobby-OS's; MenuetOS is a pretty well-known hobby OS written in FASM, but it can't do much and it's not very secure at all (my first program crashed the OS, which is very easy to do ;-D ). A lot of hobby OS's don't go very far, or do very much, because writing an OS really is incredibly difficult, a major undertaking.
Whatever you choose to do, good luck!
Re:Enquiry
Yeah, I have disabled all services not required, most network services have been disabled also, example, remote login connection has been disabled.
Found a flaw in Trend Micro's firewall the other day, contacted them to help them but they ignored me, so **** them.
I am over software firewalls anyway, they can be put out of action by a virus.
I'm buying a Cisco PIX 501 at the end of the week.
Anyway, for the rest of you who under estimated me, I have already researched parameters and program a simple O/S that I have successfully loaded.
I learnt all this from nothing in 4 hours.
I do beleive you can have a more than basic secure operating system, I just beleive most programmers get it working and move on to the next element without thoror checks.
And I know how to completelly secure Windows XP... Its called removing network devices
Out of curiosity, what is the average age of users on this forum?
Anyway, look forward to speaking with most of you later in the week.
Nik
Found a flaw in Trend Micro's firewall the other day, contacted them to help them but they ignored me, so **** them.
I am over software firewalls anyway, they can be put out of action by a virus.
I'm buying a Cisco PIX 501 at the end of the week.
Anyway, for the rest of you who under estimated me, I have already researched parameters and program a simple O/S that I have successfully loaded.
I learnt all this from nothing in 4 hours.
I do beleive you can have a more than basic secure operating system, I just beleive most programmers get it working and move on to the next element without thoror checks.
And I know how to completelly secure Windows XP... Its called removing network devices
Out of curiosity, what is the average age of users on this forum?
Anyway, look forward to speaking with most of you later in the week.
Nik
Re:Enquiry
Hi,
There are already a lot of different groups/people writing different operating systems for various reasons. Unfortunately, writing a new OS takes a huge amount of work - there's the design and programming (which require good design/programming skills and a good knowledge of the hardware), but there's also testing, documentation, publicity, etc.
Obviously, the more people that help out with a project the quicker that project will be ready, and the quicker another alternative to Windows/Unix will be available.
Helping out with other projects is also a great way to learn more about what's involved, and the problems OS developers need to deal with!
For example, you could check out the OS testing forum (try a few OSs out and let people know if it worked or if there were problems - see http://www.mega-tokyo.com/forum/index.php?board=7), or find (formatting, spelling, grammatical) mistakes in the FAQ (see http://www.osdev.org/osfaq2/), or help people here with their projects.
The best way to do this would be to post a list of your skills or a list of things you'd be willing to do, and say you want to help people out. Alternatively, you could investigate the different projects and find one that is similar to what you want and volunteer yourself to that project alone.
Actually, something that would be a huge help to everyone here would be a web site (or a set of HTML pages) that describes each OS project and tries to attract and organise other helpers, and create interest in these projects. Unfortunately, forums like this one don't get many "normal" vistors - testers, web site designers, promotion people, quality control people, graphics designers, interaction engineers, etc are rather lacking. For example, if someone wants to find out how "user-friendly" their OS is, where can they go to find inexperienced users? If someone needs a nice logo for the project, where can they find a good graphics designer? If someone needs to have documentation proof read?
You'd need some spare time, good HTML skills and some publicity for this, but you could become the main source of volunteers and publicity, and we could call you "The Assistance God", and all be forever grateful! ;D
BTW - it'd be much better than reading posts from people who have nothing better to do than criticize your enthusiasm :-[.
Cheers,
Brendan
Have you considered helping out an existing operating system project?Kolusion wrote:I am fed up with commercial operating systems being designed poorly, and have decided it is time to start my own.
There are already a lot of different groups/people writing different operating systems for various reasons. Unfortunately, writing a new OS takes a huge amount of work - there's the design and programming (which require good design/programming skills and a good knowledge of the hardware), but there's also testing, documentation, publicity, etc.
Obviously, the more people that help out with a project the quicker that project will be ready, and the quicker another alternative to Windows/Unix will be available.
Helping out with other projects is also a great way to learn more about what's involved, and the problems OS developers need to deal with!
For example, you could check out the OS testing forum (try a few OSs out and let people know if it worked or if there were problems - see http://www.mega-tokyo.com/forum/index.php?board=7), or find (formatting, spelling, grammatical) mistakes in the FAQ (see http://www.osdev.org/osfaq2/), or help people here with their projects.
The best way to do this would be to post a list of your skills or a list of things you'd be willing to do, and say you want to help people out. Alternatively, you could investigate the different projects and find one that is similar to what you want and volunteer yourself to that project alone.
Actually, something that would be a huge help to everyone here would be a web site (or a set of HTML pages) that describes each OS project and tries to attract and organise other helpers, and create interest in these projects. Unfortunately, forums like this one don't get many "normal" vistors - testers, web site designers, promotion people, quality control people, graphics designers, interaction engineers, etc are rather lacking. For example, if someone wants to find out how "user-friendly" their OS is, where can they go to find inexperienced users? If someone needs a nice logo for the project, where can they find a good graphics designer? If someone needs to have documentation proof read?
You'd need some spare time, good HTML skills and some publicity for this, but you could become the main source of volunteers and publicity, and we could call you "The Assistance God", and all be forever grateful! ;D
BTW - it'd be much better than reading posts from people who have nothing better to do than criticize your enthusiasm :-[.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re:Enquiry
OK, i gotta be honest in saying that i have a very hard time believing this is true, if you said "I looked at the bare bones tutorial found in your wiki and got it to build and boot", then it would be plausible. But claiming to have _no_ programming experience and then saying 4 hours later you have a bootable stub OS..yea no, I call bullshit.Anyway, for the rest of you who under estimated me, I have already researched parameters and program a simple O/S that I have successfully loaded.
I learnt all this from nothing in 4 hours.
I mean, obviously you either lied about how much programming experience you have, or you are lying about your progress. I really don't see why you would do either really, i mean people in the forum only mean to help.
If you feel that I am wrong in my assessment, feel free to post the source to your OS for our viewing. if you indeed did come up with something on your own, well then I will happily appologize.
Bottom line is that you will only be fooling yourself and no one else here. You are better off being honest and accepting people's advice.
Anyway, here's my advice with regard to your question.
Firstly download the intel PDFs regarding the pentium processor instruction set. This will give you a familiarity with programming on intel CPUs at the lowest level and knowledge of how things really work.
Second learn C or C++ inside and out. I don't mean "hello world" here, i mean be able to solve real problems in the language. These languages are not trivial to master (easy to be proficient, difficult to be a guru).
Third, Use an OS besides windows. This isn't a requisite, just a recomendation. I am not claiming windows is bad or good, just that you need to see other ways that things can be done. For example, you at first thought boot.ini was part of the "standard boot process" and didn't know it was windows specific...an honest mistake based on being naive, no biggie. You need to branch out your knowledge and see how things are done when we aren't tied to the microsoft way of doing things. Who knows, you may stuble on a great new way of doing things.
Fourth ok, we finally get into the OS. Well i personally recomend starting with the OS and not the boot loader (use grub, it's easy). First thing you need to develop a console which can do character I/O (read a single char, write a single char) in a line based fashion. This will help you greatly in debugging you OS. Next i would do page level memory managment. A simple stack will do for this (see http://www.nist.gov/dads/HTML/stack.html).
Once you can issue pages, well paging kinda come naturally. Once this is all done, I moved on the kernel level threads which included thread managment primitives such as semaphores, monitors and mutexes and basic scheduling. All very critical OS concepts. Finally after that the next logical step would be implementing user space threads/processes.
If all this hasn't scared you off, well kudos to you and best of luck. But I still recomend you be honest with us and yourself. And remember, something that boots and prints "Hello World" or a version number is not an OS. It is a simple stand alone program which can run without an OS. An OS must let the user "operate" the computer in a useful fashion. In this sense, I would consider the vast majority of "project OSs" out there, not really operating systems yet, but efforts towards one.
proxy