The symptom you describe is caused by the Linux partition having an incorrect partition type code. The proper solution is to change that type code. The details of how to do this vary depending on the partitioning software you use. As an example:
- Boot to Linux.
- Type
df
to view your mounted filesystems and identify which ones correspond to partitions on /dev/sda
(assuming that's your disk; if not, adjust here and for the rest of this procedure).
- Type
sudo gdisk /dev/sda
.
- If
gdisk
produces output that includes MBR: MBR only
and a complaint that it's converting MBR data to GPT form, type q
immediately! You can instead launch fdisk
on the disk (sudo fdisk /dev/sda
), and the procedure will be much the same, but with one important difference (noted below).
- Type
p
to view the partition table and verify that it looks sensible. At least one of your Linux partitions likely has a type code of 0700 (or 07 in fdisk
on an MBR disk).
- Type
t
to change a partition's type code. When prompted, enter the number of the partition that has the wrong type code and change it to 8300 (or 83 on an MBR disk when using fdisk
).
- If necessary, repeat step #5 for any other misidentified partitions. (It sounds like you've got just one.)
- Type
p
to view the partition table again. Compare it to what you saw earlier, and ensure it's the same except for the partition(s) whose type code(s) you've changed. If you see unexpected changes, type q
to quit without saving those changes and start over again. (Both gdisk
and fdisk
hold their changes in memory until you save them.)
- Type
w
to save your changes. The program will ask for confirmation. Give it.
After this, Windows should no longer assign the Linux partition(s) drive letters. Unlike the solution offered by Aaron (which basically "plasters over" the problem), this one will continue to work even if you completely delete and re-install Windows, or if you use an emergency disk for maintenance.
This problem could have been caused in any number of ways, including use of very old software to prepare the disk (Linux used to "piggyback" on the Windows type code for GPT disks, which was a bad idea), creating the Linux partition with Windows partitioning software, or user error when preparing the partition.
For more on this problem, including the history of the development of the Linux-native GPT type code, see this page of mine.
Note that Windows partitioning tools will show all partitions, even those that are not assigned drive letters in Windows. This is normal and desirable -- partitioning tools operate at a lower level than most other tools, so they must be able to see and operate on partitions that belong to other OSes.