<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/gnu/build/image.scm, branch master</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>system: hurd-boot: Prepare for runsystem in Guile.</title>
<updated>2026-05-19T16:34:56+00:00</updated>
<author>
<name>Janneke Nieuwenhuizen</name>
<email>janneke@gnu.org</email>
</author>
<published>2026-05-14T08:34:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=c62a39174e2cdc5d4efaa9c4940ea010d6dba184'/>
<id>c62a39174e2cdc5d4efaa9c4940ea010d6dba184</id>
<content type='text'>
Fo guile to run, it needs pipe support: without pipe support it aborts at
startup.  Pipe support is currently createn in runsystem by creating a
passive translator

    settrans --create /servers/socket/1 /hurd/pflocal

However, this needs a writable root file-system, and runsystem is started with
a readonly root file-system.

This patch enables running guile early in runsystem, and thus prepares for
replacing the runsystem shell script with a guile program, by embedding the
servers/socket/1 passive translator into the hurd system image using xattr.

* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Change optional root
parameter to keyword #:root.  Add #:hurd keyword parameter.  Use it to
create servers/socket/1 (pipe) and proc passive xattr translators.
* gnu/build/image.scm (initialize-root-partition): Update caller.
* gnu/system/image.scm (with-imported-modules*): Include (ice-9 optargs).
* gnu/system/images/hurd.scm (hurd-initialize-root-partition): Use it to
update caller.
* guix/scripts/system.scm (install): Update caller.

Change-Id: Ib3a672ae78bd969a2a4c0e33db8e38ccf71238ba
Merges: #8609
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fo guile to run, it needs pipe support: without pipe support it aborts at
startup.  Pipe support is currently createn in runsystem by creating a
passive translator

    settrans --create /servers/socket/1 /hurd/pflocal

However, this needs a writable root file-system, and runsystem is started with
a readonly root file-system.

This patch enables running guile early in runsystem, and thus prepares for
replacing the runsystem shell script with a guile program, by embedding the
servers/socket/1 passive translator into the hurd system image using xattr.

* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Change optional root
parameter to keyword #:root.  Add #:hurd keyword parameter.  Use it to
create servers/socket/1 (pipe) and proc passive xattr translators.
* gnu/build/image.scm (initialize-root-partition): Update caller.
* gnu/system/image.scm (with-imported-modules*): Include (ice-9 optargs).
* gnu/system/images/hurd.scm (hurd-initialize-root-partition): Use it to
update caller.
* guix/scripts/system.scm (install): Update caller.

Change-Id: Ib3a672ae78bd969a2a4c0e33db8e38ccf71238ba
Merges: #8609
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Use `unshare` to map root user for btrfs</title>
<updated>2026-01-12T09:56:38+00:00</updated>
<author>
<name>Ryan Sundberg</name>
<email>ryan@arctype.co</email>
</author>
<published>2026-01-10T21:35:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=62c28bc6d8c54800b16341d1c93a1d7833fc3328'/>
<id>62c28bc6d8c54800b16341d1c93a1d7833fc3328</id>
<content type='text'>
The current version of `mkfs.btrfs` has a regression when combined with
`fakeroot` where it does not detect the faked root uid/gid of files when
building the filesystem. This produces partition images with `/` owned by
the guixbuild user when it should be owned by root.

Using `unshare` rather than `fakeroot` resolves this by doing the uid
mapping at the kernel level rather than overloading the `stat` function.

An equivalent issue was [reported and patched in
NixOS](https://github.com/NixOS/nixpkgs/pull/434122)

* gnu/build/image.scm (system-disk-image): Import `util-linux` instead of
`fakeroot`.
* gnu/system/image.scm (make-btrfs-image): Use `unshare --map-root-user`

Change-Id: Id4eeaf510f3ec5f4a23b4d700a73e2cf46da40b1
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #5536
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current version of `mkfs.btrfs` has a regression when combined with
`fakeroot` where it does not detect the faked root uid/gid of files when
building the filesystem. This produces partition images with `/` owned by
the guixbuild user when it should be owned by root.

Using `unshare` rather than `fakeroot` resolves this by doing the uid
mapping at the kernel level rather than overloading the `stat` function.

An equivalent issue was [reported and patched in
NixOS](https://github.com/NixOS/nixpkgs/pull/434122)

* gnu/build/image.scm (system-disk-image): Import `util-linux` instead of
`fakeroot`.
* gnu/system/image.scm (make-btrfs-image): Use `unshare --map-root-user`

Change-Id: Id4eeaf510f3ec5f4a23b4d700a73e2cf46da40b1
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
Merges: #5536
</pre>
</div>
</content>
</entry>
<entry>
<title>gnu: make-iso9660-image: Do not compress any kernel, compress man pages.</title>
<updated>2025-12-22T22:00:40+00:00</updated>
<author>
<name>Rutherther</name>
<email>rutherther@ditigal.xyz</email>
</author>
<published>2025-12-01T18:39:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=08016049908b732c1b26922fe47bd3c2755100f6'/>
<id>08016049908b732c1b26922fe47bd3c2755100f6</id>
<content type='text'>
Because the linux image is called differently based on the architectures,
see system-linu/-image-file-name from gnu/system.scm, the kernel image
on aarch64, mips and armhf has still been compressed. This means that
grub cannot boot.

Man pages have moved from gz to zst, so compress them as well.

* gnu/build/image.scm (make-iso9660-image): Do not compress Image, vmlinuz and
zImage; Compress all man pages.

Change-Id: I68b35f383c84ff231865d580aa9e79d9fd88ace1
Signed-off-by: Rutherther &lt;rutherther@ditigal.xyz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Because the linux image is called differently based on the architectures,
see system-linu/-image-file-name from gnu/system.scm, the kernel image
on aarch64, mips and armhf has still been compressed. This means that
grub cannot boot.

Man pages have moved from gz to zst, so compress them as well.

* gnu/build/image.scm (make-iso9660-image): Do not compress Image, vmlinuz and
zImage; Compress all man pages.

Change-Id: I68b35f383c84ff231865d580aa9e79d9fd88ace1
Signed-off-by: Rutherther &lt;rutherther@ditigal.xyz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Create directory indexes for ext4 images.</title>
<updated>2025-12-03T16:49:40+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2025-11-24T14:51:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=e7da674bc7edd2321e42ef021c8925fefa995313'/>
<id>e7da674bc7edd2321e42ef021c8925fefa995313</id>
<content type='text'>
Fixes a bug whereby the store in ext4 partitions created with
‘guix system image’ would be limited to 65,000 sub-directories.

* gnu/build/image.scm (make-ext-image): Invoke “e2fsck -fDy”.

Fixes: guix/guix#4396
Change-Id: I02d3470fac8bdd8971083be8fce192b72bf6510c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a bug whereby the store in ext4 partitions created with
‘guix system image’ would be limited to 65,000 sub-directories.

* gnu/build/image.scm (make-ext-image): Invoke “e2fsck -fDy”.

Fixes: guix/guix#4396
Change-Id: I02d3470fac8bdd8971083be8fce192b72bf6510c
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Add support for swap.</title>
<updated>2025-11-24T22:22:52+00:00</updated>
<author>
<name>Denis 'GNUtoo' Carikli</name>
<email>GNUtoo@cyberdimension.org</email>
</author>
<published>2025-10-13T00:19:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=35770c78a2db5cced15f651fdf31ed9aae349899'/>
<id>35770c78a2db5cced15f651fdf31ed9aae349899</id>
<content type='text'>
* gnu/build/image.scm (make-swap-image): New variable.
  (make-partition-image): Support swap.
* gnu/system/image.scm (system-disk-image): Support swap.
* doc/guix.texi: (partition Reference): Support swap.

Change-Id: I1c201e6aa5dd207d53e5732617910860ee894990
Signed-off-by: Denis 'GNUtoo' Carikli &lt;GNUtoo@cyberdimension.org&gt;
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/image.scm (make-swap-image): New variable.
  (make-partition-image): Support swap.
* gnu/system/image.scm (system-disk-image): Support swap.
* doc/guix.texi: (partition Reference): Support swap.

Change-Id: I1c201e6aa5dd207d53e5732617910860ee894990
Signed-off-by: Denis 'GNUtoo' Carikli &lt;GNUtoo@cyberdimension.org&gt;
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Add support for f2fs.</title>
<updated>2025-11-24T22:22:51+00:00</updated>
<author>
<name>Denis 'GNUtoo' Carikli</name>
<email>GNUtoo@cyberdimension.org</email>
</author>
<published>2025-10-10T13:32:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=5e5ac81e9562c9f77910766f3a1c857b3da36472'/>
<id>5e5ac81e9562c9f77910766f3a1c857b3da36472</id>
<content type='text'>
* gnu/build/image.scm (make-f2fs-image): New variable.
  (make-partition-image): Support f2fs.
  (estimate-partition-size): Add optional margin.
* gnu/system/image.scm (system-disk-image): Support f2fs.
* doc/guix.texi: (partition Reference): Support f2fs.

Change-Id: Ia7fc4483c3cc1af5f34fac86a529a90a1bd7c2c6
Signed-off-by: Denis 'GNUtoo' Carikli &lt;GNUtoo@cyberdimension.org&gt;
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/image.scm (make-f2fs-image): New variable.
  (make-partition-image): Support f2fs.
  (estimate-partition-size): Add optional margin.
* gnu/system/image.scm (system-disk-image): Support f2fs.
* doc/guix.texi: (partition Reference): Support f2fs.

Change-Id: Ia7fc4483c3cc1af5f34fac86a529a90a1bd7c2c6
Signed-off-by: Denis 'GNUtoo' Carikli &lt;GNUtoo@cyberdimension.org&gt;
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Create zstd-compressed qcow2 images.</title>
<updated>2025-04-30T08:14:24+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim.cournoyer@gmail.com</email>
</author>
<published>2025-04-30T07:38:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=a0941c14ef185d3d177ad132385992c1b7d36818'/>
<id>a0941c14ef185d3d177ad132385992c1b7d36818</id>
<content type='text'>
This should be about twice as fast as the default zlib compressor used for
qcow2, and potentially multi-thread aware given some improvements to qemu-img
in the future (zstd supports its but it's not currently used by QEMU).

* gnu/build/image.scm (convert-disk-image): Specify 'compression_type=zstd'
option.

Change-Id: Ie9c66f0c13e789ec863c95a5e549f035b6a17bf9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This should be about twice as fast as the default zlib compressor used for
qcow2, and potentially multi-thread aware given some improvements to qemu-img
in the future (zstd supports its but it's not currently used by QEMU).

* gnu/build/image.scm (convert-disk-image): Specify 'compression_type=zstd'
option.

Change-Id: Ie9c66f0c13e789ec863c95a5e549f035b6a17bf9
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Honor parallel job count for the number of qemu-img co-routines used.</title>
<updated>2025-04-30T08:14:24+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim.cournoyer@gmail.com</email>
</author>
<published>2025-04-30T07:23:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=ca8a0f4d1bca745f34c5b8120b9f346eee79ff14'/>
<id>ca8a0f4d1bca745f34c5b8120b9f346eee79ff14</id>
<content type='text'>
This doesn't seem to change anything currently (the default is 8).  Perhaps
useful in the future, for example if the compressor used by qemu-img starts
honoring it.

* gnu/build/image.scm (convert-disk-image): Specify the '-m' option.

Change-Id: Ia288c85af8a0621d61cf6b9f0d3f73f5a3026d66
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This doesn't seem to change anything currently (the default is 8).  Perhaps
useful in the future, for example if the compressor used by qemu-img starts
honoring it.

* gnu/build/image.scm (convert-disk-image): Specify the '-m' option.

Change-Id: Ia288c85af8a0621d61cf6b9f0d3f73f5a3026d66
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Add support for btrfs.</title>
<updated>2024-10-14T12:08:43+00:00</updated>
<author>
<name>Roman Scherer</name>
<email>roman@burningswell.com</email>
</author>
<published>2024-10-03T12:13:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=886b410e6f641b473931d7269a9ddbf10a67937f'/>
<id>886b410e6f641b473931d7269a9ddbf10a67937f</id>
<content type='text'>
* gnu/build/image.scm (make-btrfs-image): New variable.
* gnu/system/image.scm (system-disk-image): Support btrfs.

Change-Id: I80a5b52ec478ce5927d6208e324cbb70282c647a
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/image.scm (make-btrfs-image): New variable.
* gnu/system/image.scm (system-disk-image): Support btrfs.

Change-Id: I80a5b52ec478ce5927d6208e324cbb70282c647a
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>image: Use file system options in make-vfat-image.</title>
<updated>2024-10-14T12:08:43+00:00</updated>
<author>
<name>Roman Scherer</name>
<email>roman@burningswell.com</email>
</author>
<published>2024-10-03T12:13:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=727a72c5e26345257a5e6b83387d51b3b15cc542'/>
<id>727a72c5e26345257a5e6b83387d51b3b15cc542</id>
<content type='text'>
* gnu/build/image.scm (make-vfat-image): Use file system options.

Change-Id: I791aadd2803d1ef96fc79cf8910a74a0083d2b6e
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/build/image.scm (make-vfat-image): Use file system options.

Change-Id: I791aadd2803d1ef96fc79cf8910a74a0083d2b6e
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
