[systemd-devel] CopyBlocks= from initrd systemd-repart

Renjaya Raga Zenta ragazenta at gmail.com
Fri Aug 23 12:33:14 UTC 2024


Ok, I've just found that this use case isn't supported.

"Copying from block device node is not permitted in --image=/--root= mode,
refusing."

I guess I should use Format= and CopyFiles= instead.


On Fri, Aug 23, 2024 at 5:44 PM Renjaya Raga Zenta <ragazenta at gmail.com>
wrote:

> I use the following drop-in, but still error: "No such file or directory"
>
> ```
> [Unit]
> After=systemd-tmpfiles-setup-dev.service systemd-udevd.service
> After=sysroot.mount sysboot.mount
> ConditionDirectoryNotEmpty=|/sysroot/usr/lib/repart.d
>
> [Service]
> ExecStartPre=/lib/systemd/repart-pre
> ```
>
> In repart-pre, I checked /dev/gpt-part-boot and /dev/gpt-part-root
> actually exist.
>
>
> On Fri, Aug 23, 2024 at 4:45 PM Mikko Rapeli <mikko.rapeli at linaro.org>
> wrote:
>
>> Hi,
>>
>> On Fri, Aug 23, 2024 at 04:28:24PM +0700, Renjaya Raga Zenta wrote:
>> > Hi,
>> >
>> > I want to duplicate partition 1 and partition 2 using systemd-repart.
>> > This is for SBC, I use mkosi to create the OS image.
>> >
>> > By default, it needs 2 partitions
>> >
>> > 1. Boot partition: FAT32 used by 1st stage bootloader
>> > 2. Root partition: EXT4
>> >
>> > This works fine.
>> >
>> > Then I want to create "recovery mode", it needs 4 partition
>> >
>> > 1. Default Boot partition
>> > 2. Default Root partition
>> > 3. Secondary Boot partition
>> > 4. Secondary Root partition
>> >
>> > Partition [3] should be copied from partition [1] and partition [4]
>> should
>> > be copied from partition [2].
>> >
>> > I've configured the systemd-repart to run in initrd, I've also
>> configured
>> > udev rules to create symlink to device node:
>> >
>> > 1. /dev/gpt-part-boot -> /dev/nvme0n1p1
>> > 2. /dev/gpt-part-root -> /dev/nvme0n1p2 (mounted on /sysroot,
>> > systemd-repart need this path because it's hardcoded in the source code)
>> >
>> > But when I specify CopyBlocks=/dev/gpt-part-boot in the repart.d conf
>> file,
>> > it failed with this error message:
>> > "Failed to open '/dev/gpt-part-boot': No such file or directory"
>>
>> I've had a bit similar issues. I think systemd-repart or generator
>> services
>> which run after it provide /dev/gpt-part*. Thus systemd-repart can't use
>> these yet. I think you need adjust systemd-repart dependencies to wait for
>> the device nodes from udev.
>>
>> Cheers,
>>
>> -Mikko
>>
>> > The systemd-repart failed in initrd, but then it will run again after
>> > switch-root, and it works fine.
>> >
>> > Any hints? I want the systemd-repart to run fine in initrd, not after
>> > switch-root.
>> >
>> > Thank you.
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20240823/83c5ab1f/attachment.htm>


More information about the systemd-devel mailing list