Imaging using partclone instead of partimage
I have a need for 2 use cases (working on 0.33b base):
- ext4 support
- grub2 support
Let’s talk about ext4, because it appears to be easier (somehow). I’m going to use partclone.extfs instead of partimage. Problem is that the image types are not compatible, and partclone plays less nicely with .gz images than partimage. But that’s OK.
So I modified my FOG script in init.gz, and everytime the partimage save/restore occured for $osid == 50, I replaced it by the appropriate command for partclone. And guess what… it works ;)
I’ll test a bit further, especially, I will try not to break the multicast more than need be, and I shall provide a patch for /bin/fog. Anyone interested? Remarks?
As for GRUB2, and other things (like UEFI), I think there are quite a more things to be done… GPT seems partially supported, so that’s a start…
It does not currently contain resize2fs. I’m building another version of init.gz right now with resize2fs enabled. Hopefully this will help you, and all of us out.
Also, I will try to give more insight on how to be able to resize ext partition… There are no reason not to do the same we do for NTFS partition using resize2fs, assuming it’s inside the init.gz, haven’t even checked for it yet :)
Thanks for trying to help me. I can try the 0.33b version again. But do you know why when I patch 0.33b there is one error, is it critical? Please see my above post.
If you’re using the 0.32 init.gz file, it doesn’t come precompiled with the partclone files.
Have you built your own init.gz file with partclone? If so, then I can do the script, if not, there’s not a lot that I can do to help.
I could build you a custom init.gz but I don’t know how much you would enjoy that as I don’t have the capacity (at the moment) to test this. I’d basically be building in the dark.
[quote=“Tom Elliott, post: 20194, member: 7271”]I’ll take a look at the fog 0.32 fog script and make the changes to it. The diff I gave you before is for 0.33[/quote]
If you could make it work on 0.32, it would be so wonderful! Thank you very much!
When I applied it to 0.33b here is the result:
[B][root@foggy ~]# patch -p1 tmp/bin/fog < fog.diff.txt [/B]
patching file tmp/bin/fog
Hunk #1 FAILED at 1.
1 out of 11 hunks FAILED – saving rejects to file tmp/bin/fog.rej
[B][root@foggy ~]# cat tmp/bin/fog.rej[/B]
+++ opt/buildroot-2013.08.1/package/fog/scripts/bin/fog2013-11-25 11:55:23.820674638 -0500
@@ -1,11 +1,11 @@
-OS_ID_WIN7 = “5”;
-OS_ID_WIN8 = “6”;
I’ll take a look at the fog 0.32 fog script and make the changes to it. The diff I gave you before is for 0.33
Here is the result when I applied the patch to 0.32, and attached is the fog.rej file.
patch -p1 tmp/bin/fog < ./fog.diff.txt
patching file tmp/bin/fog
Hunk #1 FAILED at 1.
Hunk #2 FAILED at 364.
Hunk #3 FAILED at 376.
Hunk #4 FAILED at 387.
Hunk #5 FAILED at 400.
Hunk #6 FAILED at 421.
Hunk #7 FAILED at 493.
Hunk #8 FAILED at 581.
Hunk #9 FAILED at 933.
Hunk #10 FAILED at 1036.
Hunk #11 FAILED at 1108.
11 out of 11 hunks FAILED – saving rejects to file tmp/bin/fog.rej
Can I use this script under version 0.32? Honestly, I like 0.32 better than 0.33b
Attached, find my patch for the fog script to use partclone instead of partimage.
Hopefully it helps.
Copy it to your fog server, preferably in /tftpboot/fog/images
Run these commands to edit your init.gz file. (MAKE SURE YOU’RE ON AS ROOT YOU NEED TO MOUNT THE IMAGE)
mount -o loop init tmp
patch -p1 tmp/bin/fog < fog.diff.txt
rm -rf tmp
gzip -9 init[/code]
Thank you, Gilou and Tom! I wish I knew more about programming, and really hope I can do something to help, but it looks like my only hope will be waiting for you guys to come up with a working solution.
I’m almost prepared for releasing a working model of my init.gz (non 64bit) that is now operating with creating the image. I’m just doing some testing to see if I can get the progress information to display. However, it works across the board, extfs or ntfs, and theoretically multicast.
There is a bug if you use my patch, I missed a spot where partimage is still used. I need to work a bit more on that, and we need either a way to tell “use partclone or partimage” (say, an image type), or a way to effectively migrate from the partimage+gz format to partclone + gz. But that requires a better roadmap thinking than just changing a few lines… And the fog sh script is also not consistent, a lot of things should be refactored in it to allow for an easier development on it…
As for “how I did it”, well, I’m a bit familiar with partclone (I use it for MacMinis), and the documentation is rather extensive. The catch might be with pigz / gzip, as pigz doesn’t return properly when reading stdin, but gzip is available in the buildroot environment, so there it goes…
I have huge issues building buildroot, 32 bits or 64 bits, vanilla or the one descried on SVN, or as a matter of fact, even the one listed on your website (Tom)… And I won’t have immediate time to work on that, but I’ll look into it… My goal is to work on a 64 bits buildroot + kernel, to be able to exploit the 16 GB RAM monsters properly…
I’m sorry that this is taking so long. I’ve got the code base, I think, setup and ready to run, but I keep getting a funny error. I can’t build partclone natively within buildroot, but I’ve successfully built the binaries on my 64 bit system. I just created a 32 bit VM to see if I could create the binaries on that and have them run properly, though I don’t know how well that will actually work.
It’s a work in progress, that’s for sure.
That’s kind of the point behind partclone vs. partimage. That’s really the main difference between clonezilla and fog.
Have you ever used clonezilla? someone recommends that for me, but if I could make FOG work with ext4, I really don’t want to switch to something else.
[INDENT=1]So you mean the [FONT=Consolas]partclone.diff.txt file already included everything I need to use partclone?[/FONT][/INDENT]
No. Partclone becomes a part of the init.gz file.
One more question, do I need to have partclone installed on FOG server?