This problem occurs when the partition type code for the Linux partition is mis-set. This is a very common problem on newer systems that boot in EFI mode and that use the GUID Partition Table (GPT) because Linux tools mis-apply the Windows partition type code ("Microsoft Basic Data") to Linux filesystem partition tables. There's been a fix for this problem since mid-2011, but the libparted developers have been sluggish in incorporating it into their library, which most Linux partitioning tools use. Until this happens, the easiest way of dealing with the problem is as follows:
- Install the
gdisk
or gptfdisk
package (the name varies with the distribution). If your distribution lacks this package, go to the GPT fdisk downloads page to get it.
- Figure out which partition(s) hold your Linux filesystem(s). Typing
df -h
may help with this, or you can examine /etc/fstab
, or you can use GParted to do so with a GUI tool.
- Launch
gdisk
on the disk, as in sudo gdisk /dev/sda
. Note: If gdisk
includes lines near the start of its output that read MBR: MBR only
and GPT: not present
, stop! This indicates you've got an MBR disk, not a GPT disk. Continuing with this procedure could be harmful! Lines that read MBR: protective
or MBR: hybrid
and GPT: present
indicate a GPT disk, and you can proceed.
- Type
p
to view your partition table and verify that the Linux partition(s) you identified earlier seem reasonable. In gdisk
, they'll probably have a type code of 0700.
- Type
t
to change a partition type code. gdisk
will prompt for a partition number and a new type code. Enter the partition number you've identified and specify a type code of 8300.
- Repeat the previous step for each Linux filesystem partition. (Don't do this to Linux swap, LVM, or RAID partitions. They shouldn't be showing up in Windows to begin with, since they should have their own type codes.)
- Type
p
again to verify that your partition table looks sane.
- Type
w
to save your changes. When asked, verify that you want to write data to the disk.
When you reboot into Windows, it should not show the Linux partition(s).
This procedure is preferable to the one offered by Alois Mahdal because it truly fixes the underlying cause of the problem, rather than being a simple workaround for Explorer. With this fix in place, the problem should not recur if you re-install Windows or move the disk to another computer.
A libparted fix that uses the proper Linux-specific type code exists and is in the pipeline; however, a new libparted hasn't been released in over a year. I don't know how long it will be before the libparted developers get around to releasing it. Even if they were to release it tomorrow, it would be a while before that version made its way into distributions' repositories and installers. Thus, for the moment you're stuck with fixing the problem yourself after the fact.