Disclaimer: I'm by no means an operating systems expert. I am simply a computer engineering student who has recently written my own OS, from scratch.
First things first, limit your scope! All of those links seem to want to tell you how to write an OS to run on a standard PC. That is going to be a huge nightmare. Presumably, you'll want to be able to access some (or all) of the peripherals on your PC, so you'll have to write drivers for them, which is incredibly time-consuming and error-prone. Instead, write for a smaller platform with simple peripherals. Something like a Gumstix, or ARM development board. You should be able to easily get documentation for each hardware component.
Second, don't try to mimic Linux. It may seem appealing because Linux is great, but its underlying architecture isn't. Linux has a monolithic kernel, meaning that there is a lot of functionality in there. If your display code gets into a bad state, it can bring the entire system down. It's also not very fun to manage the interface when you have 250+ system calls.
Instead of a monolithic kernel, use a microkernel structure. In a microkernel, you essentially have basic scheduling, inter-process communication, and memory management. Everything else lives outside of the kernel in separate processes, which communicate via message passing. This makes it much more stable, since there's a smaller chance of the entire system being taken down. It's also a lot easier to have your OS certified (essential if you want to use it in industrial or safety-critical scenarios) when it's broken down into small pieces.
Third, you'll have to read up on scheduling algorithms, context switching (this will require knowledge of assembly for your chosen platform), memory management and concurrency. Those are just the bare minimum for a working OS!
Fourth, get some partners for your project. Writing an OS is a lot of work, and your friends will help to encourage you. They'll also help to prevent you from making silly design decisions.
Good luck!