guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 4/4] system: Add btrfs file system support.


From: Ludovic Courtès
Subject: Re: [PATCH 4/4] system: Add btrfs file system support.
Date: Tue, 10 Jan 2017 00:28:11 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

David Craven <address@hidden> skribis:

> * gnu/build/file-systems.scm (%btrfs-endianness, btrfs-superblock?,
>   read-btrfs-superblock, btrfs-superblock-uuid,
>   btrfs-superblock-volume-name, check-btrfs-file-system): New variables.
>   (%paritition-label-readers, %partition-uuid-readers): Add btrfs
>   readers.
> * gnu/system/linux-initrd.scm (linux-modules): Add btrfs modules when a
>   btrfs file-system is used.
> * gnu/tests/install.scm (%btrfs-root-os %btrfs-root-os-source,
>   %btrfs-root-installation-script, %test-btrfs-root-os): New system
>   test.

Woohoo, excellent work!

You can add “Fixes <http://bugs.gnu.org/19280>.”

> +;;; BTRFS file systems.

“Btrfs” I think.

> +;;; BTRFS root file system.

Ditto.

> +(define %btrfs-root-installation-script
> +  ;; Shell script of a simple installation.
> +  "\
> +. /etc/profile
> +set -e -x
> +guix --version
> +
> +export GUIX_BUILD_OPTIONS=--no-grafts
> +ls -l /run/current-system/gc-roots
> +parted --script /dev/vdb mklabel gpt \\
> +  mkpart primary ext2 1M 3M \\
> +  mkpart primary ext2 3M 1G \\
> +  set 1 boot on \\
> +  set 1 bios_grub on
> +mkfs.btrfs -L my-root /dev/vdb2
> +mount /dev/vdb2 /mnt
> +btrfs subvolume create /mnt/home
> +herd start cow-store /mnt
> +mkdir /mnt/etc
> +cp /etc/target-config.scm /mnt/etc/config.scm
> +guix system build /mnt/etc/config.scm
> +guix system init /mnt/etc/config.scm /mnt --no-substitutes
> +sync
> +reboot\n")
> +
> +(define %test-btrfs-root-os
> +  (system-test
> +   (name "btrfs-root-os")
> +   (description
> +    "Test basic functionality of an OS installed like one would do by hand.
> +This test is expensive in terms of CPU and storage usage since we need to
> +build (current-guix) and then store a couple of full system images.")
> +   (value
> +    (mlet* %store-monad ((image   (run-install %btrfs-root-os
> +                                               %btrfs-root-os-source
> +                                               #:script
> +                                               
> %btrfs-root-installation-script))
> +                         (command (qemu-command/writable-image image)))
> +      (run-basic-test %btrfs-root-os command "btrfs-root-os")))))

Great stuff.

Could you remote apply this as well:

diff --git a/doc/guix.texi b/doc/guix.texi
index adc7fefca..e57bf6128 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6901,9 +6901,9 @@ cfdisk
 
 Once you are done partitioning the target hard disk drive, you have to
 create a file system on the relevant partition(s)@footnote{Currently
-GuixSD pretty much assumes an ext4 file system.  In particular, code
-that reads partition UUIDs and labels only works with ext4.  This will
-be fixed in the future.}.
+GuixSD only supports ext4 and btrfs file systems.  In particular, code
+that reads partition UUIDs and labels only works for these file system
+types.}.
 
 Preferably, assign partitions a label so that you can easily and
 reliably refer to them in @code{file-system} declarations (@pxref{File
OK with these changes!

In the future it would be nice to have btrfs installation instructions
in the manual.

Thank you!

Ludo’.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]