Setting up dual-boot, between any Windows OS and Linux

It is quite straight-forward to install Linux for a dual-boot setup, on any make/model of computer. The first step is to decide whether to install Linux into its own partition on the disk-drive that already contains the Windows-OS installation, or whether you might choose to attach a separate 2nd disk-drive to the computer and install Linux onto its own disk-drive.

If you plan to install Linux onto the existing drive containing Windows-OS, you want to see how many total 'partitions' are already on the disk, and determine how to create 3 new partitions typically created for Linux. (Typically, the 3 partitions are a small one called 'Swap', and then a 'root' partition for the Linux-OS itself, and a 'home' partition where the individual user-accts have their disk-storage areas.

The NEWER (more modern) methodology is to use a GPT partition layout (aka UEFI)

So, for PC with existing Windows-10 installation, first CHECK to see if you already have GPT. In windows 10 it's (probably already using GPT. To verify: right click your C drive, select properties, and in the new window select the hardware tab, in the list of drives find your HDD, highlight and select properties, in the new window select volumes, click populate, in the new window look for partition style. It should show you: GUID Partition Table (GPT).

Assuming you're using one of the Debian-family distros (e.g. Mint or Ubuntu or Debian, etc)

The remaining sections discuss the OLDER partition methodology...referred to as "MBR" (master boot record)

To gain the actual SPACE (tracks and cylinders) needed to CREATE the three new partitions, it is trivial to boot up Windows, and use its 'disk-manager' software to 'SHRINK' the needed unused space from the existing large C-partition. Typically, you can easily reclaim HALF of the disk (or even more if wanted) to devote to Linux. Then, you boot up any Linux installation DVD, and run its installation procedure, and point your Linux installation to that now UNUSED/AVAILABLE free-disk-space that you just created during the Windows 'shrink' operation.

If you do need assistance for any of this, or for details or planning for the full Linux-installation, my advice would be to ask for help in the Linux-specific 'forums' for the exact 'distribution' of Linux that you desire to install/use. e.g. if your choice is Mint, then ask for help in Mint forums. if your choice is Ubuntu, ask for help in Ubuntu forums, etc. Another approach is to find a local LUG (Linux User Group) in your area and ask a member to help you get started in Linux, by guiding you thru these steps for the various steps.

Google to find your local area's "LUG" (Linux User Group) [ New Hampshire ones are shown below ]

Gaining disk-space for Linux (while booted and running Windows)

You start by booting up the existing, already-installed Windows (e.g. Window-7 or whatever) and use its built-in disk-manager to 'shrink' the large 'c-partition' to a smaller size, which will then result in having what's called 'un-formatted' free space on the hard-drive. Typically, you would want to shrink by about 20 GB (for Linux 'root') plus another 50 to 100 GB (for 'home', which is where each user's file-storage area will reside).

Doing the actual Linux installation (from a Linux install-DVD)

Then you'd boot up the Linux install medium that you've created or purchased (typically, from either a CD or DVD or flash-drive), and run the Linux partition-mgr to now 'format' the exposed new space. Normally, you'd create 2 partitions...one for the Linux-OS itself, of about 20 GB in size, and the second for a separate '/home' partition (where user-accounts data will reside, for 1 or more users). That second partition would be between 50-100 GB in size.

To carry out the actual new partition declarations, you will use one of the Linux partitioning programs, such 'gparted' [ g(nu) part(ition) ed(itor) ]. So, given that you used Windows' Disk-Manager to free up 120 GB of what then became 'unallocated' space, later, once booted up under a Linux 'Live' installation DVD, you could launch 'gparted', and tell it create a new partition of type 'Extended', to utilize that whole space of 120 GB. You would then 'sub-partition' that extended-partition into the needed individual 2 partitions, of type 'logical partition'. The first logical partition would be of 20 GB for the Linux-OS itself ('root' partition), The 2nd logical-partition would be of size 100 GB, for the 'home' partition. You can carry out this partitioning either before launching the actual Linux-install program, or wait until during the actual installation, when the installer should prompt you to carry out those partitioning steps, using whatever partitioning-tool that the installer program chooses.

During the Linux-installation, you also choose one of several methods for controlling the 'boot-menu'...either letting Linux now control the 'MFD' (master-file-directory area of the hard-drive), or alternatively installing a boot-manager such as Easy-BCD onto Windows-OS, then choosing Linux's boot option of writing its boot-info into that first 'root' partition only.

I've used both MFD boot-setup methods, and now find the second one (using EasyBCD) as more flexible and easier to understand. So, I now am recommending this method! It also is the easiest to totally 'undo'...if you later decided to undo/remove the entire Linux installation, and reclaim the partition space for Windows. [That said, most Linux-distro-based advisors are more familiar with the first method...i.e. having Linux take over and control the 'MFD', from Windows. If you do it that way, you do NOT even need EasyBCD.]

One warning before acquiring/installing EasyBCD: Note that the Neosmart ppl who produce EasyBCD have made the very BAD CHOICE of packaging un-necessary 'addon' things (that no doubt make them extra revenue). So, be ALERT when you do the installation step, and choose NO to the 'crap' that they bundle and try to 'trick' you into installing along with EasyBCD! This 'crapware' can easily be found and removed separately afterwards if you get tricked. So first, go into "ControlPanel->Programs..." and look down thru the list of the named packages you already have installed, both BEFORE and AFTER you install EasyBCD, and remove anything extra that got installed along with the EasyBCD package.

EasyBCD has a non-commercial edition which is free (and is the one I use).
EasyBCD website
If you plan to use this approach, then remember that during your Linux installation, to be sure to tell Linux to have its boot-mgr NOT take control of the disk's MBR. (It will be a configuration choice during the config-step of the boot-mgr. It is usually stated as a choice between whether to write boot information to the disk itself or only to the Linux partition itself.) If you forget or misunderstand and do put Linux grub in control of the MBR, that MIGHT be reversible/repairable later, using a bootable tool available on the EasyBCD website. [ NOTE: This CAN be easily reversed, as long as the partition types on the shared disk are NOT of the newer 'GPT' type and if the newer UEFI boot rules are NOT in effect. See UEFI vs legacy boot for further details. ] For further reading/understanding, here's another writeup explaining the newer partition 'flags' that now exist on the newer UEFI-boot installations: The "esp" flag indicates uefi-booting.

Post-installation task: Fix the 'clock-discrepancy' problem, between Windows and Linux

When you boot back and forth between Linux and Windows, you will probably immediately notice the each system's current time indications are NOT in agreement! This is because the two OSes, by default, keep the value that's in the actual HARDWARE clock, in an incompatible way. Linux (and Mac OSX) are both setup to keep the hardware clock set to UTC (aka universal 'Greenwich time'), whereas Windows-OSes are designed/setup to keep the hardware clock set to 'local-time', based on your timezone.

So, as you might expect, there are two different approaches to resolving this problem: Either teach Windows to start keeping hardware-clock in UTC, or teach Linux to start keeping the hardware-clock in local-time. My STRONG recommendation is to do the former...teach Windows to keep the hardware-clock in UTC! This approach is logically easier to think about, in my view. And, it is trivially EASY to make the change on the Windows side: a simple 'registry-entry' setting, is all that is necessary to make the change. See fix incorrect clock issues when dual-booting