Step 1: Choose a development environment
This is the platform you will use to code your new operating system. This depends on personal preference, but most people use either the Windows or UNIX flavors. If you are using Windows, it would be a good idea to install a Unix environment like Cygwin or MinGW. You'll need to make sure the environment you're using usually includes the following names
Windows development environment
You can install it in Cygwin or MinGW.
Here i am using Cygwin
How to install Cygwin
GCC (Gnu Compiler)
You can install GCC.
How to install GCC
Binutils
Binutils is a collection of tools used to manipulate object files. Again, if you're using Windows, you can install it in Cygwin.
A good text editor
Windows users can use Notepad or can also check out Notepad++ for a multi-tab upgrade.
Step 2: Setup your version control system
Writing an operating system means you'll write hundreds (or perhaps thousands!) of lines of code. This may seem confusing when you are working on revisions. Some options worth checking out include Git, GitLab vs SVN
Step 3: Choose a bootloader
You can create your own bootloader. If you don't want to create your own bootloader, you can use an existing bootloader, such as Grand Unified Bootloader (GRUB). If you want to code the bootloader as well, check out Rolling Your Own Bootloader on OSDev.org.
Step 4: Choose a kernel design
The kernel is the core of your operating system, providing the interface between the user and the hardware. These are monolithic kernels and micro kernels. Monolithic kernels implement all of the kernel's services, while microkernels are small kernels combined with user daemons implementing services. Typically, monolithic kernels are faster, but have better fault isolation and reliability over microkernels.