<div dir="ltr"><div>Ok, I've just found that this use case isn't supported.</div><div><br></div><div>"Copying from block device node is not permitted in --image=/--root= mode, refusing."</div><div><br></div><div>I guess I should use Format= and CopyFiles= instead.</div><div><br></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 23, 2024 at 5:44 PM Renjaya Raga Zenta <<a href="mailto:ragazenta@gmail.com">ragazenta@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I use the following drop-in, but still error: "No such file or directory"<br></div><div><br></div><div>```<br></div><div>[Unit]</div>After=systemd-tmpfiles-setup-dev.service systemd-udevd.service<br>After=sysroot.mount sysboot.mount<br><div>ConditionDirectoryNotEmpty=|/sysroot/usr/lib/repart.d</div><div><br></div><div>[Service]<br>ExecStartPre=/lib/systemd/repart-pre</div><div>```<br><br></div><div>In repart-pre, I checked /dev/gpt-part-boot and /dev/gpt-part-root actually exist.<br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 23, 2024 at 4:45 PM Mikko Rapeli <<a href="mailto:mikko.rapeli@linaro.org" target="_blank">mikko.rapeli@linaro.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
On Fri, Aug 23, 2024 at 04:28:24PM +0700, Renjaya Raga Zenta wrote:<br>
> Hi,<br>
> <br>
> I want to duplicate partition 1 and partition 2 using systemd-repart.<br>
> This is for SBC, I use mkosi to create the OS image.<br>
> <br>
> By default, it needs 2 partitions<br>
> <br>
> 1. Boot partition: FAT32 used by 1st stage bootloader<br>
> 2. Root partition: EXT4<br>
> <br>
> This works fine.<br>
> <br>
> Then I want to create "recovery mode", it needs 4 partition<br>
> <br>
> 1. Default Boot partition<br>
> 2. Default Root partition<br>
> 3. Secondary Boot partition<br>
> 4. Secondary Root partition<br>
> <br>
> Partition [3] should be copied from partition [1] and partition [4] should<br>
> be copied from partition [2].<br>
> <br>
> I've configured the systemd-repart to run in initrd, I've also configured<br>
> udev rules to create symlink to device node:<br>
> <br>
> 1. /dev/gpt-part-boot -> /dev/nvme0n1p1<br>
> 2. /dev/gpt-part-root -> /dev/nvme0n1p2 (mounted on /sysroot,<br>
> systemd-repart need this path because it's hardcoded in the source code)<br>
> <br>
> But when I specify CopyBlocks=/dev/gpt-part-boot in the repart.d conf file,<br>
> it failed with this error message:<br>
> "Failed to open '/dev/gpt-part-boot': No such file or directory"<br>
<br>
I've had a bit similar issues. I think systemd-repart or generator services<br>
which run after it provide /dev/gpt-part*. Thus systemd-repart can't use<br>
these yet. I think you need adjust systemd-repart dependencies to wait for<br>
the device nodes from udev.<br>
<br>
Cheers,<br>
<br>
-Mikko<br>
<br>
> The systemd-repart failed in initrd, but then it will run again after<br>
> switch-root, and it works fine.<br>
> <br>
> Any hints? I want the systemd-repart to run fine in initrd, not after<br>
> switch-root.<br>
> <br>
> Thank you.<br>
</blockquote></div>
</blockquote></div></div>