aboutsummaryrefslogtreecommitdiff
path: root/gnu/build/file-systems.scm
Commit message (Collapse)AuthorAge
* file-systems: Add support for FAT16.Ludovic Courtès2017-10-11
| | | | | | | | | * gnu/build/file-systems.scm (check-fat32-file-system): Rename to... (check-fat-file-system): ... this. (check-file-system): Adjust accordingly. (fat16-superblock?, read-fat16-superblock) (fat16-superblock-uuid, fat16-superblock-volume-name): New procedures. (%partition-label-readers, %partition-uuid-readers): Add FAT16.
* file-systems: Preserve UUID types when serializing.Ludovic Courtès2017-10-11
| | | | | | | | | | | Reported by Roel Janssen <roel@gnu.org> at <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>. * gnu/system/file-systems.scm (file-system->spec): When DEVICE is a UUID, serialize it in a way that preserves its type. (spec->file-system): Adjust accordingly. * gnu/build/file-systems.scm (canonicalize-device-spec): Add case for when SPEC is 'uuid?'.
* file-systems: 'mount-file-system' now takes a <file-system> object.Ludovic Courtès2017-10-11
| | | | | | | | | | | | | * gnu/build/file-systems.scm (mount-file-system): Rename 'spec' to 'fs' and assume it's a <file-system>. * gnu/build/linux-boot.scm (boot-system): Assume MOUNTS is a list of <file-system> and adjust accordingly. * gnu/build/linux-container.scm (mount-file-systems): Remove 'file-system->spec' call. * gnu/services/base.scm (file-system-shepherd-service): Add 'spec->file-system' call. Add (gnu system file-systems) to 'modules'. * gnu/system/linux-initrd.scm (raw-initrd): Use (gnu system file-systems). Add 'spec->file-system' call for #:mounts.
* uuid: Add 'uuid=?' and use it.Ludovic Courtès2017-10-05
| | | | | | | * gnu/system/uuid.scm (uuid=?): New procedure. * tests/uuid.scm ("uuid=?"): New test. * gnu/build/file-systems.scm (partition-uuid-predicate) (luks-partition-uuid-predicate): Use it instead of 'bytevector=?'.
* file-systems: Introduce (gnu system uuid).Ludovic Courtès2017-09-11
| | | | | | | | | | | | | | | * gnu/build/file-systems.scm (sub-bytevector) (latin1->string, %fat32-endianness, fat32-uuid->string) (%iso9660-uuid-rx, string->iso9660-uuid) (iso9660-uuid->string, %network-byte-order) (dce-uuid->string, %uuid-rx, string->dce-uuid) (string->ext2-uuid, string->ext3-uuid, string->ext4-uuid) (vhashq, %uuid-parsers, %uuid-printers, string->uuid) (uuid->string): Move to... * gnu/system/uuid.scm: ... here. New file. * gnu/system/file-systems.scm (uuid): Move to the above file. * gnu/system/vm.scm: Adjust accordingly. * gnu/local.mk (GNU_SYSTEM_MODULES): Add uuid.scm.
* file-systems: Add UUID type dictionaries.Ludovic Courtès2017-09-11
| | | | | | | | | | * gnu/build/file-systems.scm (uuid->string): Rename to... (dce-uuid->string): ... this. (string->uuid): Rename to... (string->dce-uuid): ... this. (vhashq): New macro. (%uuid-parsers, %uuid-printers): New variables. (uuid->string, string->uuid): New procedures.
* build: Allow mounting of entire disks.Danny Milosavljevic2017-08-05
| | | | * gnu/build/file-systems.scm (disk-partitions): Also return entire drives.
* build: Allow specifying volume-uuid with make-iso9660-image.Danny Milosavljevic2017-07-03
| | | | | * gnu/build/file-systems.scm (iso9660-uuid->string): Export. * gnu/build/vm.scm (make-iso9660-image): Add volume-uuid.
* file-systems: iso9660-uuid->string: Use "-" as separator in the result.Danny Milosavljevic2017-07-02
| | | | | * gnu/build/file-systems.scm (iso9660-uuid->string): Use "-" as separator in the result.
* file-systems: Handle EIO error in 'ENOENT-safe' as well.Adam Van Ymeren2017-06-11
| | | | | | | | | | | | Trying to boot GuixSD when an audio CD is in the drive will die with an "input/output error" when trying to read the superblock from the cd drive. This patch catches and warns in this case rather than dying. * gnu/build/file-systems.scm (ENOENT-safe): Handle EIO. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* file-systems: Provide string->ext*-uuid, string->btrfs-uuid.Danny Milosavljevic2017-06-10
| | | | | * gnu/build/file-systems.scm (string->ext2-uuid, string->ext3-uuid, string->ext4-uuid, string->btrfs-uuid): New variables. Export them.
* file-systems: Provide string->iso9660-uuid.Danny Milosavljevic2017-06-09
| | | | | | * gnu/build/file-systems.scm (string->iso9660-uuid): New variable. Export it. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* file-systems: Use creation time if modification time is unset for ISO9660.Danny Milosavljevic2017-06-07
| | | | * gnu/build/file-systems.scm (iso9660-superblock-uuid): Modify.
* file-systems: Improve error handling in the iso9660 case - fixes boot problem.Danny Milosavljevic2017-06-03
| | | | * gnu/build/file-systems.scm (read-iso9660-superblock): Modify.
* file-systems: Improve error reporting.Danny Milosavljevic2017-05-31
| | | | | | | | Suggested by Chris Marusich <cmmarusich@gmail.com>. Fixes <https://bugs.gnu.org/27143>. * gnu/build/file-systems.scm (read-iso9660-primary-volume-descriptor): Improve error reporting.
* gnu: build: Improve comments.Danny Milosavljevic2017-05-31
| | | | | * gnu/build/file-systems.scm (iso9660-superblock-volume-name): Add clarifying comment.
* gnu: build: Improve docstrings.Danny Milosavljevic2017-05-27
| | | | | * gnu/build/file-systems.scm (iso9660-superblock?, read-iso9660-superblock, iso9660-superblock-uuid): Improve docstrings.
* gnu: build: file-systems: Add ISO-9660.Danny Milosavljevic2017-05-03
| | | | | | | | | | | Fixes <https://bugs.gnu.org/26751>. * gnu/build/file-systems.scm (iso9660-superblock?, read-iso9660-primary-volume-descriptor, read-iso9660-superblock, iso9660-superblock-uuid, iso9660-uuid->string, iso9660-superblock-volume-name): New variables. (%partition-label-readers): Add iso9660. (%partition-uuid-readers): Add iso9660.
* file-systems: Allow for bind-mounts of named sockets.Ludovic Courtès2017-04-13
| | | | | | | | | Previously a named socket such as /dev/log would fail the 'regular-file?' test and we'd end up mkdir'ing it. * gnu/build/file-systems.scm (regular-file?): Remove. (mount-file-system): Change (regular-file? source) to (not (file-is-directory? source)).
* build: Fix compilation warnings.Mathieu Othacehe2017-04-11
| | | | | | | | | | | * gnu/build/linux-boot.scm (define-module): Use (guix build syscalls). * gnu/build/linux-modules.scm (define-module): Ditto. * gnu/build/file-systems (define-module): Stop re-exporting mount, umount and MS_* flags as this is now safe to include (guix build syscalls) instead. (mount): Remove procedure. (umount): Ditto. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* file-systems: Add FAT32 support.David Craven2017-03-01
| | | | | | | | | | * gnu/build/file-systems.scm (%fat32-endianness, fat32-superblock?, read-fat32-superblock, fat32-superblock-uuid, fat32-uuid->string, fat32-superblock-volume-name, check-fat32-file-system): New variables. (%partition-label-readers, %partition-uuid-readers, check-file-system): Add fat support. (latin1->string): New variable. (null-terminated-latin1->string): Use latin1->string.
* file-systems: Do not read superblocks past the end of a device.Ludovic Courtès2017-01-31
| | | | | | | | | Fixes <http://bugs.gnu.org/25573>. Reported by Alex Kost <alezost@gmail.com>. * gnu/build/file-systems.scm (seek*): New procedure. (read-superblock): Use it instead of 'seek' and ensure it returns OFFSET.
* system: Add btrfs file system support.David Craven2017-01-10
| | | | | | | | | | | | | | | | * 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. * doc/guix.texi: Adjust accordingly. Fixes <http://bugs.gnu.org/19280>.
* file-systems: Refactor file-system predicates.David Craven2017-01-10
| | | | | | | | | | | | | * gnu/build/file-systems.scm (partition-field-reader, read-partition-field, %partition-label-readers, %partition-uuid-readers, read-partition-label, read-partition-uuid): New variables. (partition-predicate, partition-label-predicate, partition-uuid-predicate, luks-partition-uuid-predicate): Use partition field readers. (find-partition): New variable. (find-partition-by-label, find-partition-by-uuid, find-partition-by-luks-uuid): Use find-partition-by.
* file-systems: Refactor check-file-system.David Craven2017-01-10
| | | | | | * gnu/build/file-systems.scm (check-file-system): Use file-system type specific checker. (check-ext2-file-system): New variable.
* file-systems: Refactor file system detection logic.David Craven2017-01-06
| | | | | | | | | | | | | | | * gnu/build/file-systems.scm (read-superblock, null-terminated-latin1->string): New variables. (sub-bytevector): Move to general section. (ext2-superblock?, read-ext2-superblock): New variables. (ext2-superblock-uuid, ext2-superblock-volume-name): Use sub-bytevector and null-terminated-latin1->string. (%ext2-sblock-magic, %ext2-sblock-creator-os, %ext2-sblock-uuid, %ext2-sblock-volume-name): Inline constants. (luks-superblock?, read-luks-header): New variables. (%luks-header-size, %luks-magic): Inline. (partition-label-predicate, partition-uuid-predicate, luks-partition-uuid-predicate): Use new functions.
* gnu: Allow nfs file systems to be automatically mounted.John Darrington2016-11-29
| | | | | * gnu/build/file-systems.scm (mount-file-system): Append target addr= when mounting nfs filesystems.
* gnu: build: file-system: Change url of LUKS specification.ng02016-11-06
| | | | | | * gnu/build/file-system.scm: Change url of LUKS specification. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
* file-systems: 'disk-partitions' detected partitions from mapped devices.Ludovic Courtès2016-10-27
| | | | | | | | | | Previously, partitions of mdadm- or cryptsetup-produced block devices would not be returned by 'disk-partitions'. * gnu/build/file-systems.scm (disk-partitions)[last-character]: New procedure. [partition?]: Add 'name' parameter and rewrite. Adjust caller. * gnu/build/file-systems.scm (ENOENT-safe): Silently ignore ENOMEDIUM.
* file-systems: Always use (guix build syscalls).Ludovic Courtès2016-09-05
| | | | | | | | | | * gnu/build/file-systems.scm: Use (guix build syscalls) unconditionally. Override the 'mount' and 'umount' bindings when (guile) provides them. (MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_REMOUNT) (MS_BIND, MS_MOVE): Remove. * guix/build/syscalls.scm (%libc-errno-pointer): Add 'false-if-exception' around 'dynamic-func'.
* file-systems: Add 'find-partition-by-luks-uuid'.Ludovic Courtès2016-04-17
| | | | | | | | | | | | | | * gnu/build/file-systems.scm (%luks-endianness, %luks-header-size): New macros. (%luks-magic): New variable. (sub-bytevector, read-luks-header, luks-header-uuid): New procedures. (partition-predicate): Add 'read' parameter; wrap it with 'ENOENT-safe'. Use it instead of 'read-ext2-superblock*'. (read-ext2-superblock*): Remove. (partition-label-predicate, partition-uuid-predicate): Pass 'read-ext2-superblock' as the first argument. (partition-luks-uuid-predicate): New variable. (find-partition-by-luks-uuid): New procedure.
* file-systems: Separate ENOENT catching from ext2 superblock reads.Ludovic Courtès2016-04-17
| | | | | * gnu/build/file-systems.scm (ENOENT-safe): New procedure. (read-ext2-superblock*): Rewrite in terms of it.
* file-systems: Spawn a Bournish REPL upon fsck failure.Ludovic Courtès2016-02-08
| | | | | | | | | | | | | Fixes <http://bugs.gnu.org/22588>. Reported by Mark H Weaver <mhw@netris.org>. * gnu/build/file-systems.scm (check-file-system): Pass %BOURNISH-LANGUAGE as the argument to 'start-repl'. * gnu/services.scm (activation-script): Add (guix build bournish). * gnu/services/base.scm (file-system-shepherd-service)[imported-modules]: Likewise. * gnu/system/linux-container.scm (container-script): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise.
* system: Allow the root file system to be named by UUID.Ludovic Courtès2016-01-01
| | | | | | | | * gnu/build/file-systems.scm (canonicalize-device-spec)[canonical-title]: Use 'string->uuid' to check whether SPEC is a UUID. When SPEC is a string and CANONICAL-TITLE is 'uuid, call 'string->uuid'. * gnu/system.scm (operating-system-grub.cfg): Add 'root-device' variable and use it for the "--root=" argument.
* file-systems: Move 'string->uuid' to the build side.Ludovic Courtès2016-01-01
| | | | | | * gnu/system/file-systems.scm (%uuid-rx, string->uuid): Move to... * gnu/build/file-systems.scm (%uuid-rx, string->uuid): ... here. New variables.
* file-systems: Do not truncate mount points that already exist.Ludovic Courtès2015-10-17
| | | | | | | | | | Reported by David Thompson <dthompson2@worcester.edu> at <https://lists.gnu.org/archive/html/guix-devel/2015-10/msg00284.html>. * gnu/build/file-systems.scm (mount-file-system): When SOURCE matches 'regular-file?', do not create MOUNT-POINT if it already exists. This fixes a bug whereby we would be truncating MOUNT-POINT if it already existed.
* build: file-systems: Allow for bind mounting regular files.David Thompson2015-08-08
| | | | | | * gnu/build/file-systems.scm (regular-file?): New procedure. (mount-file-system): Create a regular file instead of a directory when bind mounting a regular file.
* file-systems: Implement partition lookup by UUID.Ludovic Courtès2015-07-14
| | | | | | | | | | | | * gnu/build/file-systems.scm (read-ext2-superblock*, partition-predicate): New procedures. (partition-label-predicate): Rewrite in terms of 'partition-predicate'. (partition-uuid-predicate, find-partition-by-uuid, uuid->string): New procedures. (%network-byte-order): New macro. (canonicalize-device-spec)[canonical-title]: Check whether SPEC is a string. [resolve]: New procedure. Add 'uuid' case and use it.
* file-systems: Use (guix build syscalls) at build time if needed.Ludovic Courtès2015-07-14
| | | | * gnu/build/file-systems.scm: Wrap 'module-use!' statement in 'eval-when'.
* build: file-systems: Import (guix build syscalls) for non-static Guiles.David Thompson2015-07-09
| | | | | | | * gnu/build/file-systems.scm: Import (guix build syscalls) when 'mount' is not defined. * gnu/system.scm (operating-system-activation-script): Include (guix build syscalls) module in derivation.
* gnu: Make 'mount' interface in static Guile consistent with Guix API.David Thompson2015-06-19
| | | | | | | | | | Rather than expecting a pointer, the version of 'mount' in guile-static-stripped now takes a string for the 'options' argument, just like the 'mount' procedure in (guix build syscalls). * gnu/packages/patches/guile-linux-syscalls.patch (mount): Expect a string or #f for 'options' argument. * gnu/build/file-systems.scm (mount-file-system): Use new 'mount' interface.
* file-systems: Use a second 'mount' call for read-only bind mounts.Ludovic Courtès2015-04-20
| | | | | | | * gnu/build/file-systems.scm (MS_REMOUNT): New constant. (mount-file-system): Add 'flags' local variable. When FLAGS has MS_BIND & MS_RDONLY, call 'mount' with MS_REMOUNT. * gnu/services/base.scm (file-system-service) <start>: Likewise.
* linux-boot: Make /etc/mtab a symlink to /proc/self/mounts.宋文武2015-01-05
| | | | | | | | | | Fixes <http://bugs.gnu.org/19491>. * gnu/build/linux-boot.scm (mount-root-file-system): Make /root/etc/mtab a symlink to /proc/self/mounts. * gnu/build/file-systems.scm (mount-file-system): Don't update /etc/mtab. * guix/build/syscalls.scm (mount, umount): Have #:update-mtab? default to #f.
* file-systems: Always write the options field in /etc/mtab.Ludovic Courtès2014-11-20
| | | | | | | | * gnu/build/file-systems.scm (mount-file-system): When OPTIONS is false, write "rw" to /etc/mtab. This fixes a bug whereby 'remove-from-mtab' in (guix syscalls) would otherwise raise a 'match-error' because of the missing field. This affected file systems mounted from the initrd, such as devtmpfs, which has options == #f.
* linux-boot: Ask fsck for a progress bar.Ludovic Courtès2014-09-19
| | | | | * gnu/build/file-systems.scm (check-file-system): Pass '-C 0' to FSCK. Suggested by Mark H. Weaver.
* Move part of (gnu build linux-boot) to (gnu build file-systems).Ludovic Courtès2014-09-03
* gnu/build/linux-boot.scm (%ext2-endianness, %ext2-sblock-magic, %ext2-sblock-creator-os, %ext2-sblock-uuid, %ext2-sblock-volume-name, read-ext2-superblock, ext2-superblock-uuid, ext2-superblock-volume-name, disk-partitions, partition-label-predicate, find-partition-by-label, canonicalize-device-spec, MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_BIND, MS_MOVE, bind-mount, check-file-system, mount-flags->bit-mask, mount-file-system): Move to... * gnu/build/file-systems.scm: ... here. New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * gnu/services/base.scm: Use (gnu build file-systems). * gnu/services/dmd.scm (dmd-configuration-file): Likewise. * gnu/system.scm (operating-system-activation-script): Likewise. * gnu/system/linux-initrd.scm (base-initrd): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise.