summary refs log tree commit diff
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2020-07-26 10:30:57 +0200
committerMathieu Othacehe <othacehe@gnu.org>2020-07-26 18:35:10 +0200
commit218a67dfabcdf592325a8f8c49b86478f69ff589 (patch)
tree3434eb6ae6ab76bfb7f91920f3c0cd35689c0419
parent675e56221e3dfc58cac94bf30835f16a9c41d530 (diff)
downloadguix-218a67dfabcdf592325a8f8c49b86478f69ff589.tar.gz
installer: Add NTFS support.
This adds support for creating and editing NTFS partitions. It is however not
possible yet to create root NTFS partitions, as overlaying on top of a fuse
partition does not seem supported.

* gnu/installer.scm (installer-program): Add "ntfs-3g" to the inputs.
* gnu/installer/parted.scm (user-fs-type-name, user-fs-type->mount-type,
partition-filesystem-user-type, create-ntfs-file-system,
format-user-partitions): Add NTFS support.
* gnu/installer/newt/partition.scm (run-fs-type-page): Add NTFS support.
-rw-r--r--gnu/installer.scm1
-rw-r--r--gnu/installer/newt/partition.scm2
-rw-r--r--gnu/installer/parted.scm16
3 files changed, 16 insertions, 3 deletions
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 2c7315bde0..cb2f5ad2ca 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -320,6 +320,7 @@ selected keymap."
                        e2fsprogs ;mkfs.ext4
                        btrfs-progs
                        jfsutils ;jfs_mkfs
+                       ntfs-3g ;mkfs.ntfs
                        kbd ;chvt
                        guix ;guix system init call
                        util-linux ;mkwap
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index c925e410a9..54d595f54e 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -121,7 +121,7 @@ Be careful, all data on the disk will be lost.")
   (run-listbox-selection-page
    #:info-text (G_ "Please select the file-system type for this partition.")
    #:title (G_ "File-system type")
-   #:listbox-items '(ext4 btrfs fat16 fat32 jfs swap)
+   #:listbox-items '(ext4 btrfs fat16 fat32 jfs ntfs swap)
    #:listbox-item->text user-fs-type-name
    #:sort-listbox-items? #f
    #:button-text (G_ "Exit")
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 6c805cc053..47e0a9e78d 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -222,7 +222,8 @@ inferior to MAX-SIZE, #f otherwise."
     ((btrfs) "btrfs")
     ((fat16) "fat16")
     ((fat32) "fat32")
-    ((jfs) "jfs")
+    ((jfs)   "jfs")
+    ((ntfs)  "ntfs")
     ((swap)  "linux-swap")))
 
 (define (user-fs-type->mount-type fs-type)
@@ -232,7 +233,8 @@ inferior to MAX-SIZE, #f otherwise."
     ((btrfs) "btrfs")
     ((fat16) "fat")
     ((fat32) "vfat")
-    ((jfs) "jfs")))
+    ((jfs)   "jfs")
+    ((ntfs)  "ntfs")))
 
 (define (partition-filesystem-user-type partition)
   "Return the filesystem type of PARTITION, to be stored in the FS-TYPE field
@@ -246,6 +248,7 @@ of <user-partition> record."
             ((string=? name "fat16") 'fat16)
             ((string=? name "fat32") 'fat32)
             ((string=? name "jfs") 'jfs)
+            ((string=? name "ntfs") 'ntfs)
             ((or (string=? name "swsusp")
                  (string=? name "linux-swap(v0)")
                  (string=? name "linux-swap(v1)"))
@@ -1040,6 +1043,11 @@ bit bucket."
   (with-null-output-ports
    (invoke "jfs_mkfs" "-f" partition)))
 
+(define (create-ntfs-file-system partition)
+  "Create a JFS file-system for PARTITION file-name."
+  (with-null-output-ports
+   (invoke "mkfs.ntfs" "-F" "-f" partition)))
+
 (define (create-swap-partition partition)
   "Set up swap area on PARTITION file-name."
   (with-null-output-ports
@@ -1117,6 +1125,10 @@ NEED-FORMATING? field set to #t."
           (and need-formatting?
                (not (eq? type 'extended))
                (create-jfs-file-system file-name)))
+         ((ntfs)
+          (and need-formatting?
+               (not (eq? type 'extended))
+               (create-ntfs-file-system file-name)))
          ((swap)
           (create-swap-partition file-name))
          (else