Move partitions on GPT layouts - need people to test

  • Senior Developer

    After several people noticed that Windows 10 2004 comes with a different partition layout that FOG is not able to shrink and deploy to a smaller size disk I started working on that code and adding the functionality to actually move the start sector of partitions. Up to now FOG never moved partitions because it would surely cause trouble as manipulating boot loader code in the MBR would also be needed and is way too error prone to do. With GPT partition layout on UEFI based systems partition start positions should not be “hardcoded” in bootloader code anymore.

    Though this seems to work I would really like more people to test this before we actually add this to the official release!

    Here are the steps I recommend when testing:

    1. Make sure you have a working backup copy of your host used to capture the image from! Just in case something goes wrong when capturing with the new init.
    2. Download the init file and put that in /var/www/html/fog/service/ipxe/ on your FOG server.
    3. Create a new image definition for this test.
    4. Decide which hosts you use for testing capture and deploy (the later having a smaller size disk to see if it works) with this new init, edit their hosts settings in the FOG web UI and set Host Init to init-201114.xz as well as the image definition you just created.
    5. Schedule a capture task and pay attention to the boot process where it says bzImage..ok and init-201114.xz..ok to make sure it actually uses the new init file.
    6. Schedule a deploy task for a machine with a smaller size disk and deploy to it. Again make sure it says init-201114.xz..ok when booting.
    7. Please post here if you see issues as well as having success. Let us know what OS you have installed (Win 10 2004? Linux?) and the partition layout (contents of /images/NEWIMAGENAME/d1.partitions)!

    References:
    https://forums.fogproject.org/topic/14691/error-trying-to-restore-gpt-partition-when-deploying-image-to-smaller-drive-error-return-code-4
    https://forums.fogproject.org/topic/13220/error-trying-to-restore-gpt-partition-deploying-an-image-to-smaller-disk
    https://forums.fogproject.org/topic/14684/windows-8-1-corrupted-bcd
    https://forums.fogproject.org/topic/15158/fog-failed-partition-issue
    https://forums.fogproject.org/topic/15163/partitions-is-too-big-for-the-disk


  • @sebastian-roth
    Yes Youare right.
    I focused on the "corrupted size vs. and did not see previous message.
    A scan disk on the master and it works.

    Thanks.

  • Senior Developer

    @lebrun78 said in Move partitions on GPT layouts - need people to test:

    Tried with your proposed modifications on a 1.5.9.63 testing server.
    I have got this error with an existing image on the server

    I don’t understand what you mean with this. In the picture we see a capture what is most probably failing due to an unclean NTFS filesystem (hard to read the text at the top of the picture but looks like it). I would not expect the init-201114.xz to cause this problem.

    Remove the image files on the server, it worked.

    ??


  • @sebastian-roth
    Hello Sebastian,
    Tried with your proposed modifications on a 1.5.9.63 testing server.
    I have got this error with an existing image on the server
    1616756682935.jpg

    Remove the image files on the server, it worked.

    Arnaud


  • @sebastian-roth Hi,

    The deploy seems to work. We will continue to deploy with fog and keep you inform of our bugs thanks for your help !

  • Senior Developer

    @btoffolon said in Move partitions on GPT layouts - need people to test:

    The capture worked, i capture from 240Gb SSD. I want to deploy it on 120Gb SSD do you want me to try it ?

    Thanks for posting the video. Definitely helpful to debug this. As far as I can tell from the video it was able to move sda4 forward. So I would expect d1.minimum.partitions to look different this time and it should deploy to a smaller size disk. So give it a try.

    If deploy fails then post the contents of d1.minimum.partitions here again.


  • Hi,

    @sebastian-roth I take a video. Like that you have everything.
    https://youtu.be/KzmZGP9T_To

    You can see in this picture that the init is lauching well :
    https://cloud.fairy-family.fr/index.php/s/DwCadbqr3SgKSCf

    The capture worked, i capture from 240Gb SSD. I want to deploy it on 120Gb SSD do you want me to try it ?

    Thanks for your help !

  • Senior Developer

    @btoffolon As well make sure it actually boots into init-201114.xz on PXE startup. When it loads the kernel and init you should see init-201114.xz...ok!

  • Senior Developer

    @btoffolon said in Move partitions on GPT layouts - need people to test:

    /dev/sda3 : start=      239616, size=    80978882, ...
    /dev/sda4 : start=   249022976, size=     1046528, ...
    

    Looks like FOS was not able to move the 4th partition forward as the start sector number is the same in both files.

    Create a new image definition for testing. Then assign this new image to the host you capture from and schedule a debug capture task. Boot it up and hit ENTER twice to get to the command shell. Now run the simple command fog to start capturing and step through the process. At some point you see it print the partition tables on screen. Take a picture of all that and post here. If unsure what to take a photo of, take some more, upload all pictures to a file share and post a link here.


  • Hi, i have a new issue when i deploy W10 2004 on a smaller SSD. i put an error screen and break the disk partitions. I can’t format it on windows (i don’t try on linux) there is now a protected GPT partition. Did i do something wrong ?

    Thanks for reading.

    This is the d1.partition :

    root@fog:/images# cat Salle-Technologie/d1.partitions 
    label: gpt
    label-id: 79FE4766-EDD2-4DD0-826C-6DD816A2E7C6
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 250069646
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=5217DE87-4A45-4AC4-A4DD-0C8EB1C5CF5B, name="EFI system partition", attrs="GUID:63"
    /dev/sda2 : start=      206848, size=       32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=15C5E73F-7855-4DA4-A464-4694B0E56628, name="Microsoft reserved partition", attrs="GUID:63"
    /dev/sda3 : start=      239616, size=    80984324, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=E130C384-3F46-4D8F-AD25-B85FDB0127CD, name="Basic data partition"
    /dev/sda4 : start=   249022976, size=     1046528, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=D3FA37D6-10A7-4303-976C-6D8F23C4258F, name="attrs=\x22RequiredPartition GUID:63", attrs="RequiredPartition GUID:63"
    
    

    This is the d1.minimum.partition

    root@fog:/images# cat Salle-Technologie/d1.minimum.partitions 
    label: gpt
    label-id: 79FE4766-EDD2-4DD0-826C-6DD816A2E7C6
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 250069646
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=5217DE87-4A45-4AC4-A4DD-0C8EB1C5CF5B, name="EFI system partition", attrs="GUID:63"
    /dev/sda2 : start=      206848, size=       32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=15C5E73F-7855-4DA4-A464-4694B0E56628, name="Microsoft reserved partition", attrs="GUID:63"
    /dev/sda3 : start=      239616, size=    80978882, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=E130C384-3F46-4D8F-AD25-B85FDB0127CD, name="Basic data partition"
    /dev/sda4 : start=   249022976, size=     1046528, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=D3FA37D6-10A7-4303-976C-6D8F23C4258F, name="attrs=\x22RequiredPartition GUID:63", attrs="RequiredPartition GUID:63"
    

    Files :

    ls -al /var/www/html/fog/service/ipxe/init-201114.xz 
    -rw-r--r-- 1 fogproject www-data 21180716 janv. 18 09:12 /var/www/html/fog/service/ipxe/init-201114.xz
    
    root@fog:/var/www/html/fog/service/ipxe# ls -al /var/www/fog/service/ipxe/init-201114.xz 
    -rw-r--r-- 1 fog fog 21180716 janv. 15 16:49 /var/www/fog/service/ipxe/init-201114.xz
    

    md5sum :

    root@fog:/var/www/html/fog/service/ipxe# md5sum /var/www/html/fog/service/ipxe/init-201114.xz 
    04b6d3ed8269f493c1552e4c28f2d708  /var/www/html/fog/service/ipxe/init-201114.xz
    
    root@fog:/var/www/html/fog/service/ipxe# md5sum /var/www/fog/service/ipxe/init-201114.xz 
    04b6d3ed8269f493c1552e4c28f2d708  /var/www/fog/service/ipxe/init-201114.xz
    
    
  • Senior Developer

    We have more evidence this is working even with non-standard partition layouts: https://forums.fogproject.org/topic/15213/clone-500gb-hdd-to-256gb-ssd

  • Senior Developer

    I think we are getting closer to finishing this new feature. I looked through the code changes again and finally found some time to do more testing on this. Simple Debian UEFI install with sda1=/boot, sda2=/ and sda3=swap.

    Initial install on a 64 GB (virtual) disk - d1.partitions:

    label: gpt
    label-id: B1330462-6EE4-45E4-87F8-213A452A66A2
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 134217694
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=     1048576, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=47839DDA-7009-4F7B-98D9-B4B2D4C44956
    /dev/sda2 : start=     1050624, size=   131096576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=D6E07619-9532-47FD-A8C6-B0FA635CFE25
    /dev/sda3 : start=   132147200, size=     2068480, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=96D50996-9760-4C22-A14F-1EDA45509C00
    

    Deployed it to 32 GB disk and 256 GB disk and both worked fine. System booted and sda2 was expanded to whatever the disk size was (minus /boot and swap) and moved sda3=swap all the way to the end. With that d1.minimum.partitions I could deploy this to a disk as small as roughly 4,2 GB:

    label: gpt
    label-id: B1330462-6EE4-45E4-87F8-213A452A66A2
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 134217694
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=     1048576, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=47839DDA-7009-4F7B-98D9-B4B2D4C44956
    /dev/sda2 : start=     1050624, size=     5683045, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=D6E07619-9532-47FD-A8C6-B0FA635CFE25
    /dev/sda3 : start=     6733824, size=     2068480, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=96D50996-9760-4C22-A14F-1EDA45509C00
    
  • Senior Developer

    @GeorgeBells While I agree with George I still want to emphasize this is in an early testing stage. Using it as default is on your own risk. Don’t blame me if causes an issue.

  • Moderator

    @georgebells said in Move partition in GPT layout - need people to test:

    is this new init file good to be made the default somehow?

    With sufficient testing yes, plus it will be included the next release of fog (1.5.10). What I would do if it tests stable for you is to go into /var/www/html/fog/service/ipxe directory and rename the current init.xz to init.xz.orig and then copy over the updated init to init.xz Doing so will make it default for all systems. On the next update of FOG that “patched” init will be replaced with the official 1.5.10 version. Doing it this way will keep you from having to remember to switch back the default init to init.xz in the future.

    There is a way to update the configuration in fog settings to make the default init something other than init.xz, but changing it this way causes you to have to remember to switch it back later.


  • Hi

    I’ve just tested this an it worked without issues - Thank you. I will try to post the contents of those files shortly. My question is, is this new init file good to be made the default somehow?


  • Hello,

    I came across this thread looking for answers to the same issue which was being faced. I couldn’t deploy an image captured from a larger disk to a smaller one.

    Ran through the steps listed above, and it worked first time like a charm. Many thanks for your continued work on this project.

    Here are the contents of the files.

    d1.paritions

    label: gpt
    label-id: 365BDDEC-3E4F-48D2-B6B1-163B9BE426E5
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 1953525134
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=433B5D94-F683-49C8-9AD4-4DD8D4A8FB97, name="EFI system partition", attrs="GUID:63"
    /dev/sda2 : start=      206848, size=       32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=88539D67-14A1-46AF-A835-473CACB85CD9, name="Microsoft reserved partition", attrs="GUID:63"
    /dev/sda3 : start=      239616, size=  1952250880, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=54F52FB2-FFE4-4C9B-8F55-FB0B3C8542E8, name="Basic data partition"
    /dev/sda4 : start=  1952490496, size=     1034240, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=A60716BC-142E-486F-8962-C3777A684E73, attrs="RequiredPartition GUID:63"
    
    

    d1.minimum.partitions

    label: gpt
    label-id: 365BDDEC-3E4F-48D2-B6B1-163B9BE426E5
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 1953525134
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=433B5D94-F683-49C8-9AD4-4DD8D4A8FB97, name="EFI system partition", attrs="GUID:63"
    /dev/sda2 : start=      206848, size=       32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=88539D67-14A1-46AF-A835-473CACB85CD9, name="Microsoft reserved partition", attrs="GUID:63"
    /dev/sda3 : start=      239616, size=    28668848, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=54F52FB2-FFE4-4C9B-8F55-FB0B3C8542E8, name="Basic data partition"
    /dev/sda4 : start=    28909568, size=     1034240, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=A60716BC-142E-486F-8962-C3777A684E73, attrs="RequiredPartition GUID:63"
    
    

  • @sebastian-roth @JJ-Fullmer Thanks for your help, for unknonwn reason the file was deleted 😕 well i put it a third time and its work perfectly, i capture a 500Gb HDD disk and deploy in 120Gb SSD.

    d1.partitions

    fog@fog:/images/Salle-Technologie$ cat d1.partitions
    label: gpt
    label-id: 79FE4766-EDD2-4DD0-826C-6DD816A2E7C6
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 976773134
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=5217DE87-4A45-4AC4-A4DD-0C8EB1C5CF5B, name="EFI system partition", attrs="GUID:63"
    /dev/sda2 : start=      206848, size=       32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=15C5E73F-7855-4DA4-A464-4694B0E56628, name="Microsoft reserved partition", attrs="GUID:63"
    /dev/sda3 : start=      239616, size=   975486976, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=E130C384-3F46-4D8F-AD25-B85FDB0127CD, name="Basic data partition"
    /dev/sda4 : start=   975726592, size=     1046528, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=D3FA37D6-10A7-4303-976C-6D8F23C4258F, name="attrs=\x22RequiredPartition GUID:63", attrs="RequiredPartition GUID:63"
    

    d1.minimum.partitions

    fog@fog:/images/Salle-Technologie$ cat d1.minimum.partitions
    label: gpt
    label-id: 79FE4766-EDD2-4DD0-826C-6DD816A2E7C6
    device: /dev/sda
    unit: sectors
    first-lba: 34
    last-lba: 976773134
    sector-size: 512
    
    /dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=5217DE87-4A45-4AC4-A4DD-0C8EB1C5CF5B, name="EFI system partition", attrs="GUID:63"
    /dev/sda2 : start=      206848, size=       32768, type=E3C9E316-0B5C-4DB8-817D-F92DF00215AE, uuid=15C5E73F-7855-4DA4-A464-4694B0E56628, name="Microsoft reserved partition", attrs="GUID:63"
    /dev/sda3 : start=      239616, size=    72336566, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=E130C384-3F46-4D8F-AD25-B85FDB0127CD, name="Basic data partition"
    /dev/sda4 : start=    72577024, size=     1046528, type=DE94BBA4-06D1-4D40-A16A-BFD50179D6AC, uuid=D3FA37D6-10A7-4303-976C-6D8F23C4258F, name="attrs=\x22RequiredPartition GUID:63", attrs="RequiredPartition GUID:63"```
  • Testers

    @btoffolon Does this machine image fine with the original init?
    You can also try a different bzImage. I’m using 5.618RT3 made by @george1421 found here https://forums.fogproject.org/topic/15017/lenovo-l13-yoga-maybe-the-usb-cable-is-bad-error-when-trying-to-register/18?_=1610731427661

    I may have forgotten that I was using a different bzImage kernel when I started testing for this…

  • Senior Developer

    @btoffolon That is kinda strange. I don’t think I have seen this error message before but it sounds like the init is corrupt or not fully loaded when booting. Though it doesn’t make sense to me as the original FOG 1.5.9 init works for you and other people tested this alpha stage init recently as well.

    Please run those commands and post output here:

    ls -al /var/www/html/fog/service/ipxe/init-201114.xz
    ls -al /var/www/fog/service/ipxe/init-201114.xz
    md5sum /var/www/html/fog/service/ipxe/init-201114.xz
    md5sum /var/www/fog/service/ipxe/init-201114.xz
    

  • @tom-elliott i download again the file but i have the same issue

340
Online

8.1k
Users

15.0k
Topics

141.4k
Posts