#1114648 partman: Installation error with mkswap: write error: Text file busy

#1114648#5
Date:
2025-09-07 20:59:48 UTC
From:
To:
Hey,

I'm working on a custom Trixie ISO and an error with partman comes up during setup, which says:

partman: mkswap: write error: Text file busy.

I can see that old volumes are removed and new ones are created, but then the error comes up.

Please see this snippet from /var/log/syslog:

Sep 7 20:17:36 anna[6824]: DEBUG: retrieving partman-auto-crypto 38
Sep 7 20:17:36 anna[6824]: DEBUG: retrieving partman-crypto 134
Sep 7 20:17:38 kernel: [ 41.891007] raid6: sse2x4   gen() 21572 MB/s
Sep 7 20:17:38 kernel: [ 41.963007] raid6: sse2x2   gen() 21577 MB/s
Sep 7 20:17:39 kernel: [ 42.033001] raid6: sse2x1   gen() 16910 MB/s
Sep 7 20:17:39 kernel: [ 42.033011] raid6: using algorithm sse2x2 gen() 21677 MB/s
Sep 7 20:17:39 kernel: [ 42.101797] raid6: ... xor() 13753 MB/s, rmw enabled
Sep 7 20:17:39 kernel: [ 42.101802] raid6: using sse2x2 recovery algorithm
Sep 7 20:17:39 kernel: [ 42.103960] xor: measuring software checksum speed
Sep 7 20:17:39 kernel: [ 42.103661]   prefetch64-sse : 24594 MB/sec
Sep 7 20:17:39 kernel: [ 42.103754]   generic_sse    : 22291 MB/sec
Sep 7 20:17:39 kernel: [ 42.103755] xor: using function: prefetch64-sse (24594 MB/sec)
Sep 7 20:17:39 kernel: [ 42.268957] Btrfs loaded, zoned=yes, fscrypt=yes
Sep 7 20:17:39 kernel: [ 42.302085] JFS: nTxBlock = 8192, nTxLock = 65536
Sep 7 20:17:39 kernel: [ 42.595601] XFS (sdc1): With ACLs, security attributes, realtime, quota, no debug enabled
Sep 7 20:17:41 md-devices: mdadm: No arrays found in config file or automatically
Sep 7 20:17:41 md-devices: mdadm: --auto is deprecated and will be removed in future releases.
Sep 7 20:17:43 kernel: [ 46.381164] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA lo
g.
Sep 7 20:17:43 kernel: [ 46.381191] device-mapper: uevent: version 1.0.3
Sep 7 20:17:43 kernel: [ 46.381279] device-mapper: ioctl: 4.48.0-ioctl(2023-03-01) initialised: dm-devel@lists.linux.dev
Sep 7 20:17:43 partman-lvm: PV /dev/sda4  VG data  lvm2 [76.92 GiB / 0   free]
Sep 7 20:17:43 partman-lvm: Total: 1 [76.92 GiB] / in use: 1 [76.92 GiB] / in no VG: 0 [0  ]
Sep 7 20:17:43 partman-lvm: Found volume group "data" using metadata type lvm2
Sep 7 20:17:44 partman-lvm:   1 logical volume(s) in volume group "data" now active
Sep 7 20:17:44 partman-lvm:   Logical volume "ROOT" successfully removed.
Sep 7 20:17:44 partman-lvm:   0 logical volume(s) in volume group "data" now active
Sep 7 20:17:45 partman-lvm:   Volume group "data" successfully removed
Sep 7 20:17:45 partman-lvm:   Labels on physical volume "/dev/sda4" successfully wiped.
Sep 7 20:17:46 kernel: [ 49.333619] sda: sda1 sda2 sda3 sda4
Sep 7 20:17:46 net/hw-detect.hotplug: Detected hotpluggable network interface ens18
Sep 7 20:17:46 net/hw-detect.hotplug: Detected hotpluggable network interface lo
Sep 7 20:17:46 kernel: [ 49.554252] Adding 899932k swap on /dev/sda2.  Priority:-2 extents:1 across:899932k
Sep 7 20:17:47 partman-lvm:   Physical volume "/dev/sda4" successfully created.
Sep 7 20:17:47 partman-lvm:   Volume group "data" successfully created
Sep 7 20:17:47 partman-lvm:   Logical volume "ROOT" created.
Sep 7 20:17:49 net/hw-detect.hotplug: Detected hotpluggable network interface ens18
Sep 7 20:17:49 net/hw-detect.hotplug: Detected hotpluggable network interface lo
Sep 7 20:17:49 partman: mkswap: write error: Text file busy
Sep 7 20:17:59 init: starting pid 313, tty '/dev/tty2': '-/bin/sh'

If I change to a terminal, run anna-install fdisk-udeb, delete all partitions, reboot and restart installation it works.

But running just the installation on the already existing disk throws the error, although the pressed file should say wipe everything.
Please see the snippet from my base.cfg loaded as preseed file:

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string max
d-i partman-auto-lvm/new_vg_name string data
d-i partman-auto-crypto/erase_disks boolean false

d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-basicfilesystems/no_mount_point boolean false
d-i partman-basicfilesystems/no_swap boolean false
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/confirm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-partitioning/confirm_write_new_label boolean true

But I also use a dedicated recipe for the partition layout called partman.cfg, which looks like this:

d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

d-i partman-auto/expert_recipe string                 \
    boot-root ::                                      \
        1024 1024 2048 ext4                           \
            $primary{ }                               \
            $bootable{ }                              \
            method{ format } format{ }                \
            use_filesystem{ } filesystem{ ext4 }      \
            mountpoint{ /boot } label{ BOOT }         \
        .                                             \
        8192 8704 9216 linux-swap                     \
            method{ swap } format{ }                  \
            label{ SWAP }                             \
        .                                             \
        10000 10240 10240 ext4                        \
            method{ format } format{ }                \
            use_filesystem{ } filesystem{ ext4 }      \
            mountpoint{ /opt/data/logs } label{ LOG } \
        .                                             \
        1 10000 1000000000 ext4                       \
            $lvmok{ } in_vg { root }                  \
            method{ format } format{ }                \
            use_filesystem{ } filesystem{ ext4 }      \
            mountpoint{ / } lv_name{ ROOT }           \
        .

d-i partman-auto/choose_recipe select boot-root

I already tried quite some time to solve this issue or find a workaround with different parameters and such without any luck.

Does anyone have ideas, directions or suggestions?

Many thanks,
Frank