linux - How to move a primary partition into an extended one?

07
2014-04
  • ranisalt

    My installation is Fedora 18 and Windows 8, and I need room for another system.

    I have a very delicate task: I need to move my primary /boot partition inside an extended partition which contains all other system's partitions (home, root and swap). Layout is as follows:

    Dispositivo Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      718847      358400    7  HPFS/NTFS/exFAT
    /dev/sda2          718848    84604927    41943040    7  HPFS/NTFS/exFAT
    /dev/sda3        84604928    85628927      512000   83  Linux
    /dev/sda4        85628928   883879935   399125504    5  Estendida
    /dev/sda5        85630976    92938239     3653632   82  Linux swap / Solaris
    /dev/sda6        92940288   197797887    52428800   83  Linux
    /dev/sda7       197799936   883879935   343040000   83  Linux
    

    If an image is preferred (it is in portuguese): GParted print screen

    I have much more empty space than used space, if needed, as seen in the screenshot, and I also have an external drive with more than 250G free. I want to have boot partition inside the extended, if possible. Fedora by default uses the most possible primary partition quantity, and I want to free one up to install another OS. Another very wanted solution would be to move Windows' partitions inside an exclusive extended partition, as I think Windows' boot partition is not used (I use GRUB as bootloader).

  • Answers
  • Rod Smith

    Linux can boot from a logical partition just fine. There are a handful of partitioning programs that can convert primary partitions to logical partitions and vice-versa, but there are often (perhaps always) limits. The program I'm most familiar with for this task is my own FixParts. I recommend you read its Web page to learn how to use it.

    In your case, the major problem is that there's no free space between your /dev/sda2 and /dev/sda3. Thus, you'll need to shrink one of these partitions to create some free space -- just one sector is plenty, but you'll probably have to shrink it by 1MiB. GParted can do this job, but there is a caveat: Windows can be pretty fussy about its boot partition. If you're booting from /dev/sda2, it could be rendered unbootable by shrinking that partition in GParted. Thus, it might be better to do this from Windows. Once there's unallocated space just before /dev/sda3, FixParts should have no problems converting it to a logical partition inside your extended partition.


  • Related Question

    linux - convert a logical partition to a primary partition
  • ant2009

    Fedora 14 xfce

    I have the following partition setup. I would like to know how can I convert the logical partition sda6 to a primary partition.

    Disk /dev/sda: 320.1 GB, 320072933376 bytes
    255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x1707a8a5
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048     1026047      512000   83  Linux
    /dev/sda2         1026048   205844479   102409216   83  Linux
    /dev/sda3       205844480   214228991     4192256   82  Linux swap / Solaris
    /dev/sda4       214228992   625141759   205456384    5  Extended
    /dev/sda5       214231040   573562879   179665920   83  Linux
    /dev/sda6       573564928   625141759    25788416    7  HPFS/NTFS
    
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda2              97G  5.0G   91G   6% /
    tmpfs                 494M  176K  494M   1% /dev/shm
    /dev/sda1             485M   68M  392M  15% /boot
    /dev/sda5             169G   26G  135G  16% /home
    
    # partition table of /dev/sda
    unit: sectors
    /dev/sda1 : start=     2048, size=  1024000, Id=83
    /dev/sda2 : start=  1026048, size=204818432, Id=83
    /dev/sda3 : start=205844480, size=  8384512, Id=82
    /dev/sda4 : start=214228992, size=410912768, Id= 5
    /dev/sda5 : start=214231040, size=359331840, Id=83
    /dev/sda6 : start=573564928, size= 51576832, Id= 7
    

    I would like to convert sda6 to a primary partition, the reason for this it to install windows 7 starter.

    Many thanks for any suggestions,


  • Related Answers
  • Mokubai

    With that partition layout you will not be able to change sda6 to a primary partition without first deleting both sda5 and sda4 (the extended partition itself) as you can only have a maximum of 4 primary partitions on a drive. This is a limitation of how drives are partitioned and is why you end up with extended (logical) partitions in the first place.

    http://en.wikipedia.org/wiki/Disk_partitioning

    The total data storage space of a PC hard disk can be divided into at most four primary partitions, or alternatively three primary partitions and an "extended partition". These partitions are described by 16-byte entries that constitute the Partition Table, located in the master boot record.

    The best you can do is delete sda4, sda5 and sda6 and create the primary partition in the emptied space.

    Alternatively you could just buy a new drive to install Win7 on.

  • Hello71

    You can't. There are already 3 primary partitions plus one extended partition on the disk. In any case, there's no reason why Windows 7 (or any >NT version of Windows) won't/can't install on a logical partition.

  • Neal

    Windows does not need to be installed onto a primary partition. It does however need to have a primary partition onto which it can put its boot stuff.

    If you can live without the separate Linux boot partition, I would suggest moving the Linux boot stuff from its own partition (/dev/sda1) to / (/dev/sda2), formatting sda1 as ntfs (and mark it as being active), and then installing Windows onto /dev/sda6: the Windows installer should be quite happy to do it.

    (As an example I've just created a Virtual machine, and, on the hard disk made a primary 512MB partition (marked active and formatted as ntfs) and an extended partition containing one logical partition formatted as ntfs. Windows XP installed quite happily on the logical partition.)