unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch.
       [not found] <87o8qavktf.fsf@gnu.org>
@ 2020-06-08 12:57 ` Jan (janneke) Nieuwenhuizen
  2020-06-08 12:57   ` [bug#41541] [PATCH 1/4] hurd-boot: Create individual translators instead of running MAKEDEV Jan (janneke) Nieuwenhuizen
                     ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Jan (janneke) Nieuwenhuizen @ 2020-06-08 12:57 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès, Jan Nieuwenhuizen

From: Jan Nieuwenhuizen <janneke@gnu.org>

Hi!

Almost done...these patches didn't see a review yet; I would like you to have
a look at the two hurd-boot patches.  I have tested them both because I
decided to do the split-up a bit differently: first introduce the MAKEDEV
replacement and make the settrans invocation => setxattr syscall transition a
separate feature.  Hope you like it :-)

Thanks!

Jan (janneke) Nieuwenhuizen (4):
  hurd-boot: Create individual translators instead of running MAKEDEV.
  system: hurd: Remove 'cross-hurd-image' hack.
  system: bare-hurd.tmpl: Add openssh client and service.
  hurd-boot: Use 'setxattr' instead of invoking settrans.

 gnu/build/hurd-boot.scm            | 172 ++++++++++++++++++++--------
 gnu/system.scm                     |   1 +
 gnu/system/examples/bare-hurd.tmpl |  13 ++-
 gnu/system/hurd.scm                | 177 +----------------------------
 4 files changed, 140 insertions(+), 223 deletions(-)

-- 
2.26.2





^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 1/4] hurd-boot: Create individual translators instead of running MAKEDEV.
  2020-06-08 12:57 ` [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch Jan (janneke) Nieuwenhuizen
@ 2020-06-08 12:57   ` Jan (janneke) Nieuwenhuizen
  2020-06-08 12:58   ` [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack Jan (janneke) Nieuwenhuizen
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Jan (janneke) Nieuwenhuizen @ 2020-06-08 12:57 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

* gnu/build/hurd-boot.scm (make-hurd-device-nodes): Do not create
dev/{null,zero,full,random,urandom} mount points.
(setup-translator, xattr-translator,
showtrans-translator?, translated?, set-hurd-device-translators): New
procedures.
(boot-hurd-system): Use them instead of running MAKEDEV.
---
 gnu/build/hurd-boot.scm | 172 +++++++++++++++++++++++++++++-----------
 1 file changed, 125 insertions(+), 47 deletions(-)

diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index 09326233d2..398cee1395 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -80,16 +80,8 @@ Return the value associated with OPTION, or #f on failure."
     (string-append root (if (string-suffix? "/" root) "" "/") dir))
 
   (mkdir (scope "dev"))
-  (for-each (lambda (file)
-              (call-with-output-file (scope file)
-                (lambda (port)
-                  (display file port)   ;avoid hard-linking
-                  (chmod port #o666))))
-            '("dev/null"
-              "dev/zero"
-              "dev/full"
-              "dev/random"
-              "dev/urandom"))
+  ;; Don't create /dev/null etc just yet; the store
+  ;; messes-up the permission bits.
   ;; Don't create /dev/console, /dev/vcs, etc.: they are created by
   ;; console-run on first boot.
 
@@ -115,6 +107,125 @@ Return the value associated with OPTION, or #f on failure."
   ;; settings?
   )
 
+(define (xattr-translator? file-name)
+  "Return true if FILE-NAME has an extended @code{gnu.translator} attribute
+set."
+  (false-if-exception
+   (not (string-null? (getxattr file-name "gnu.translator")))))
+
+(define (showtrans-translator? file-name)
+  "Return true if @file{showtrans} finds a translator installed on FILE-NAME."
+  (with-output-to-port (%make-void-port "w")
+    (lambda _
+      (with-error-to-port (%make-void-port "w")
+        (lambda _
+          (zero? (system* "showtrans" "--silent" file-name)))))))
+
+(define (translated? file-name)
+  "Return true if a translator is installed on FILE-NAME."
+  (if (string-contains %host-type "linux-gnu")
+      (xattr-translator? file-name)
+      (showtrans-translator? file-name)))
+
+(define* (setup-translator file-name command #:optional (mode #o600))
+  "Setup translator COMMAND on FILE-NAME."
+  (unless (translated? file-name)
+    (let ((dir (dirname file-name)))
+      (unless (directory-exists? dir)
+        (mkdir-p dir))
+      (unless (file-exists? file-name)
+        (call-with-output-file file-name
+          (lambda (port)
+            (display file-name port)  ;avoid hard-linking
+            (chmod port mode)))))
+    (catch 'system-error
+      (lambda _
+        (apply invoke "settrans" "--create" file-name command))
+      (lambda (key . args)
+        (let ((errno (system-error-errno (cons key args))))
+          (format (current-error-port) "~a: ~a\n"
+                  (strerror errno) file-name)
+          (format (current-error-port) "Ignoring...Good Luck!\n"))))))
+
+(define* (set-hurd-device-translators #:optional (root "/"))
+  "Make some of the device nodes needed on GNU/Hurd."
+
+  (define (scope dir)
+    (string-append root (if (string-suffix? "/" root) "" "/") dir))
+
+  (define scope-setup-translator
+    (match-lambda
+      ((file-name command)
+       (scope-setup-translator (list file-name command #o600)))
+      ((file-name command mode)
+       (let ((mount-point (scope file-name)))
+         (setup-translator mount-point command mode)))))
+
+  (define servers
+    '(("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
+      ("servers/crash-kill"      ("/hurd/crash" "--kill"))
+      ("servers/crash-suspend"   ("/hurd/crash" "--suspend"))
+      ("servers/password"        ("/hurd/password"))
+      ("servers/socket/1"        ("/hurd/pflocal"))
+      ("servers/socket/2"        ("/hurd/pfinet"
+                                  "--interface" "eth0"
+                                  "--address"
+                                  "10.0.2.15" ;the default QEMU guest IP
+                                  "--netmask" "255.255.255.0"
+                                  "--gateway" "10.0.2.2"
+                                  "--ipv6" "/servers/socket/16"))))
+
+  (define devices
+    '(("dev/full"    ("/hurd/null"     "--full")            #o666)
+      ("dev/null"    ("/hurd/null")                         #o666)
+      ("dev/random"  ("/hurd/random"   "--seed-file" "/var/lib/random-seed")
+                                                            #o644)
+      ("dev/zero"    ("/hurd/storeio"  "--store-type=zero") #o666)
+
+      ("dev/console" ("/hurd/term"     "/dev/console" "device" "console"))
+
+      ("dev/klog"    ("/hurd/streamio" "kmsg"))
+      ("dev/mem"     ("/hurd/storeio"  "--no-cache" "mem")  #o660)
+      ("dev/shm"     ("/hurd/tmpfs"    "--mode=1777" "50%") #o644)
+      ("dev/time"    ("/hurd/storeio"  "--no-cache" "time") #o644)
+
+      ("dev/vcs"     ("/hurd/console"))
+      ("dev/tty"     ("/hurd/magic"    "tty")               #o666)
+
+      ("dev/tty1"    ("/hurd/term"     "/dev/tty1" "hurdio" "/dev/vcs/1/console")
+                                                            #o666)
+      ("dev/tty2"    ("/hurd/term"     "/dev/tty2" "hurdio" "/dev/vcs/2/console")
+                                                            #o666)
+      ("dev/tty3"    ("/hurd/term"     "/dev/tty3" "hurdio" "/dev/vcs/3/console")
+                                                            #o666)
+
+      ("dev/ptyp0"   ("/hurd/term"     "/dev/ptyp0" "pty-master" "/dev/ttyp0")
+                                                            #o666)
+      ("dev/ptyp1"   ("/hurd/term"     "/dev/ptyp1" "pty-master" "/dev/ttyp1")
+                                                            #o666)
+      ("dev/ptyp2"   ("/hurd/term"     "/dev/ptyp2" "pty-master" "/dev/ttyp2")
+                                                            #o666)
+
+      ("dev/ttyp0"   ("/hurd/term"     "/dev/ttyp0" "pty-slave" "/dev/ptyp0")
+                                                            #o666)
+      ("dev/ttyp1"   ("/hurd/term"     "/dev/ttyp1" "pty-slave" "/dev/ptyp1")
+                                                            #o666)
+      ("dev/ttyp2"   ("/hurd/term"     "/dev/ttyp2" "pty-slave" "/dev/ptyp2")
+                                                            #o666)))
+
+  (for-each scope-setup-translator servers)
+  (false-if-exception (mkdir-p (scope "dev/vcs/1")))
+  (false-if-exception (mkdir-p (scope "dev/vcs/2")))
+  (false-if-exception (mkdir-p (scope "dev/vcs/3")))
+  (false-if-exception (rename-file "/dev/console" "/dev/console-"))
+  (for-each scope-setup-translator devices)
+
+  (false-if-exception (symlink "/dev/random" "/dev/urandom"))
+  (false-if-exception (mkdir-p "/dev/fd"))
+  (false-if-exception (symlink "/dev/fd/0"   "/dev/stdin"))
+  (false-if-exception (symlink "/dev/fd/1"   "/dev/stdout"))
+  (false-if-exception (symlink "/dev/fd/2"   "/dev/stderr")))
+
 \f
 (define* (boot-hurd-system #:key (on-error 'debug))
   "This procedure is meant to be called from an early RC script.
@@ -126,20 +237,9 @@ starting the Shepherd.
 XXX TODO: see linux-boot.scm:boot-system.
 XXX TODO: add proper file-system checking, mounting
 XXX TODO: move bits to (new?) (hurd?) (activation?) services
-XXX TODO: use settrans/setxattr instead of MAKEDEV
+XXX TODO: use Linux xattr/setxattr to remove (settrans in) /libexec/RUNSYSTEM
 
 "
-  (define translators
-    '(("/servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
-      ("/servers/crash-kill" ("/hurd/crash" "--kill"))
-      ("/servers/crash-suspend" ("/hurd/crash" "--suspend"))
-      ("/servers/password" ("/hurd/password"))
-      ("/servers/socket/1" ("/hurd/pflocal"))
-      ("/servers/socket/2" ("/hurd/pfinet" "--interface" "eth0"
-                            "--address" "10.0.2.15" ;the default QEMU guest IP
-                            "--netmask" "255.255.255.0"
-                            "--gateway" "10.0.2.2"
-                            "--ipv6" "/servers/socket/16"))))
 
   (display "Welcome, this is GNU's early boot Guile.\n")
   (display "Use '--repl' for an initrd REPL.\n\n")
@@ -147,35 +247,13 @@ XXX TODO: use settrans/setxattr instead of MAKEDEV
   (call-with-error-handling
    (lambda ()
 
-     (define (translated? node)
-       ;; Return true if a translator is installed on NODE.
-       (with-output-to-port (%make-void-port "w")
-         (lambda ()
-           (with-error-to-port (%make-void-port "w")
-             (lambda ()
-               (zero? (system* "showtrans" "--silent" node)))))))
-
      (let* ((args    (command-line))
             (system  (find-long-option "--system" args))
             (to-load (find-long-option "--load" args)))
 
-       (format #t "Creating essential servers...\n")
-       (setenv "PATH" (string-append system "/profile/bin"
-                                     ":" system "/profile/sbin"))
-       (for-each (match-lambda
-                   ((node command)
-                    (unless (translated? node)
-                      (mkdir-p (dirname node))
-                      (apply invoke "settrans" "--create" node command))))
-                 translators)
-
-       (format #t "Creating essential device nodes...\n")
-       (with-directory-excursion "/dev"
-         (invoke "MAKEDEV" "--devdir=/dev" "std")
-         (invoke "MAKEDEV" "--devdir=/dev" "vcs")
-         (invoke "MAKEDEV" "--devdir=/dev" "tty1""tty2" "tty3" "tty4" "tty5" "tty6")
-         (invoke "MAKEDEV" "--devdir=/dev" "ptyp0" "ptyp1" "ptyp2")
-         (invoke "MAKEDEV" "--devdir=/dev" "console"))
+       (format #t "Setting-up essential translators...\n")
+       (setenv "PATH" (string-append system "/profile/bin"))
+       (set-hurd-device-translators)
 
        (false-if-exception (delete-file "/hurd"))
        (let ((hurd/hurd (readlink* (string-append system "/profile/hurd"))))
-- 
2.26.2





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack.
  2020-06-08 12:57 ` [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch Jan (janneke) Nieuwenhuizen
  2020-06-08 12:57   ` [bug#41541] [PATCH 1/4] hurd-boot: Create individual translators instead of running MAKEDEV Jan (janneke) Nieuwenhuizen
@ 2020-06-08 12:58   ` Jan (janneke) Nieuwenhuizen
  2020-06-13 10:49     ` Jan Nieuwenhuizen
  2020-06-08 12:58   ` [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service Jan (janneke) Nieuwenhuizen
  2020-06-08 12:58   ` [bug#41541] [PATCH 4/4] hurd-boot: Use 'setxattr' instead of invoking settrans Jan (janneke) Nieuwenhuizen
  3 siblings, 1 reply; 11+ messages in thread
From: Jan (janneke) Nieuwenhuizen @ 2020-06-08 12:58 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

The initial

    guix build -f gnu/system/hurd.scm

hack has been superseded by regular guix system (cross) build.

* gnu/system/hurd.scm (compile-manifest, cross-hurd-image): Remove.
---
 gnu/system/hurd.scm | 177 +-------------------------------------------
 1 file changed, 3 insertions(+), 174 deletions(-)

diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index 956682357e..2205def577 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -39,16 +39,15 @@
   #:use-module (gnu system)
   #:use-module (gnu system shadow)
   #:use-module (gnu system vm)
-  #:export (cross-hurd-image
-            %base-packages/hurd
+  #:export (%base-packages/hurd
             %base-services/hurd
             %hurd-default-operating-system
             %hurd-default-operating-system-kernel))
 
 ;;; Commentary:
 ;;;
-;;; This module provides tools to (cross-)build GNU/Hurd virtual machine
-;;; images.
+;;; This module provides system-specifics for the GNU/Hurd operating system
+;;; and virtual machine.
 ;;;
 ;;; Code:
 
@@ -104,173 +103,3 @@
     (pam-services '())
     (setuid-programs '())
     (sudoers-file #f)))
-
-(define* (cross-hurd-image #:key (hurd hurd) (gnumach gnumach))
-  "Return a cross-built GNU/Hurd image."
-
-  (define (cross-built thing)
-    (with-parameters ((%current-target-system "i586-pc-gnu"))
-      thing))
-
-  (define (cross-built-entry entry)
-    (manifest-entry
-      (inherit entry)
-      (item (cross-built (manifest-entry-item entry)))
-      (dependencies (map cross-built-entry
-                         (manifest-entry-dependencies entry)))))
-
-  (define system-profile
-    (profile
-     (content
-      (map-manifest-entries cross-built-entry
-                            (packages->manifest %base-packages/hurd)))))
-
-  (define grub.cfg
-    (let ((hurd (cross-built hurd))
-          (mach (with-parameters ((%current-system "i686-linux"))
-                  gnumach))
-          (libc (cross-libc "i586-pc-gnu")))
-      (computed-file "grub.cfg"
-                     #~(call-with-output-file #$output
-                         (lambda (port)
-                           (format port "
-set timeout=2
-search.file ~a/boot/gnumach
-
-menuentry \"GNU\" {
-  multiboot ~a/boot/gnumach root=device:hd0s1
-  module ~a/hurd/ext2fs.static ext2fs \\
-    --multiboot-command-line='${kernel-command-line}' \\
-    --host-priv-port='${host-port}' \\
-    --device-master-port='${device-port}' \\
-    --exec-server-task='${exec-task}' -T typed '${root}' \\
-    '$(task-create)' '$(task-resume)'
-  module ~a/lib/ld.so.1 exec ~a/hurd/exec '$(exec-task=task-create)'
-}\n"
-                                   #+mach #+mach #+hurd
-                                   #+libc #+hurd))))))
-
-  (define fstab
-    (plain-file "fstab"
-                "# This file was generated from your Guix configuration.  Any changes
-# will be lost upon reboot or reconfiguration.
-
-/dev/hd0s1	/	ext2	defaults
-"))
-
-  (define passwd
-    (plain-file "passwd"
-                "root:x:0:0:root:/root:/bin/sh
-guixbuilder:x:1:1:guixbuilder:/var/empty:/bin/no-sh
-"))
-
-  (define group
-    (plain-file "group"
-                "guixbuild:x:1:guixbuilder
-"))
-
-  (define shadow
-    (plain-file "shadow"
-                "root::0:0:0:0:::
-"))
-
-  (define etc-profile
-    (plain-file "profile"
-                "\
-export PS1='\\u@\\h\\$ '
-
-GUIX_PROFILE=\"/run/current-system/profile\"
-. \"$GUIX_PROFILE/etc/profile\"
-
-GUIX_PROFILE=\"$HOME/.guix-profile\"
-if [ -f \"$GUIX_PROFILE/etc/profile\" ]; then
-  . \"$GUIX_PROFILE/etc/profile\"
-fi\n"))
-
-  (define hurd-directives
-    `((directory "/servers")
-      ,@(map (lambda (server)
-               `(file ,(string-append "/servers/" server)))
-             '("startup" "exec" "proc" "password"
-               "default-pager" "crash-dump-core"
-               "kill" "suspend"))
-      ("/servers/crash" -> "crash-dump-core")
-      (directory "/servers/socket")
-      (file "/servers/socket/1")
-      (file "/servers/socket/2")
-      (file "/servers/socket/16")
-      ("/servers/socket/local" -> "1")
-      ("/servers/socket/inet" -> "2")
-      ("/servers/socket/inet6" -> "16")
-      (directory "/boot")
-      ("/boot/grub.cfg" -> ,grub.cfg)   ;XXX: not strictly needed
-      ("/hurd" -> ,(file-append (with-parameters ((%current-target-system
-                                                   "i586-pc-gnu"))
-                                  hurd)
-                                "/hurd"))
-
-      ;; TODO: Create those during activation, eventually.
-      (directory "/root")
-      (file "/root/.guile"
-            ,(object->string
-              '(begin
-                 (use-modules (ice-9 readline) (ice-9 colorized))
-                 (activate-readline) (activate-colorized))))
-      (directory "/run")
-      (directory "/run/current-system")
-      ("/run/current-system/profile" -> ,system-profile)
-      ("/etc/profile" -> ,etc-profile)
-      ("/etc/fstab" -> ,fstab)
-      ("/etc/group" -> ,group)
-      ("/etc/passwd" -> ,passwd)
-      ("/etc/shadow" -> ,shadow)
-      (file "/etc/hostname" "guixygnu")
-      (file "/etc/resolv.conf"
-            "nameserver 10.0.2.3\n")
-      ("/etc/services" -> ,(file-append (with-parameters ((%current-target-system
-                                                           "i586-pc-gnu"))
-                                          net-base)
-                                        "/etc/services"))
-      ("/etc/protocols" -> ,(file-append (with-parameters ((%current-target-system
-                                                            "i586-pc-gnu"))
-                                           net-base)
-                                         "/etc/protocols"))
-      ("/etc/motd" -> ,(file-append (with-parameters ((%current-target-system
-                                                       "i586-pc-gnu"))
-                                      hurd)
-                                    "/etc/motd"))
-      ("/etc/login" -> ,(file-append (with-parameters ((%current-target-system
-                                                        "i586-pc-gnu"))
-                                       hurd)
-                                     "/etc/login"))
-
-
-      ;; XXX can we instead, harmlessly set _PATH_TTYS (from glibc) in runttys.c?
-      ("/etc/ttys" -> ,(file-append (with-parameters ((%current-target-system
-                                                       "i586-pc-gnu"))
-                                      hurd)
-                                    "/etc/ttys"))
-      ("/bin/sh" -> ,(file-append (with-parameters ((%current-target-system
-                                                     "i586-pc-gnu"))
-                                    bash)
-                                  "/bin/sh"))))
-
-  (qemu-image #:file-system-type "ext2"
-              #:file-system-options '("-o" "hurd")
-              #:device-nodes 'hurd
-              #:inputs `(("system" ,system-profile)
-                         ("grub.cfg" ,grub.cfg)
-                         ("fstab" ,fstab)
-                         ("passwd" ,passwd)
-                         ("group" ,group)
-                         ("etc-profile" ,etc-profile)
-                         ("shadow" ,shadow))
-              #:copy-inputs? #t
-              #:os system-profile
-              #:bootcfg-drv grub.cfg
-              #:bootloader grub-bootloader
-              #:register-closures? #f
-              #:extra-directives hurd-directives))
-
-;; Return this thunk so one can type "guix build -f gnu/system/hurd.scm".
-cross-hurd-image
-- 
2.26.2





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service.
  2020-06-08 12:57 ` [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch Jan (janneke) Nieuwenhuizen
  2020-06-08 12:57   ` [bug#41541] [PATCH 1/4] hurd-boot: Create individual translators instead of running MAKEDEV Jan (janneke) Nieuwenhuizen
  2020-06-08 12:58   ` [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack Jan (janneke) Nieuwenhuizen
@ 2020-06-08 12:58   ` Jan (janneke) Nieuwenhuizen
  2020-06-08 13:23     ` Jan Nieuwenhuizen
  2020-06-13  7:24     ` Jan Nieuwenhuizen
  2020-06-08 12:58   ` [bug#41541] [PATCH 4/4] hurd-boot: Use 'setxattr' instead of invoking settrans Jan (janneke) Nieuwenhuizen
  3 siblings, 2 replies; 11+ messages in thread
From: Jan (janneke) Nieuwenhuizen @ 2020-06-08 12:58 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

This:

    ./pre-inst-env guix system disk-image --no-grafts --target=i586-pc-gnu \
        gnu/system/examples/bare-hurd.tmpl

now produces a VM image with functional ssh daemon that you may run like

    guix environment --ad-hoc qemu -- qemu-system-i386 -enable-kvm -m 512M \
     -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
     -snapshot -hda <the-image>

and use like

    ssh -p 10022 root@localhost
    guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'

or even (if you use --image-size=3G)

    guix build hello

* gnu/system/examples/bare-hurd.tmpl (%hurd-os)[packages]: Add openssh.
[services]: Add openssh-service.
---
 gnu/system/examples/bare-hurd.tmpl | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index 16f20416aa..6b421550b7 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -11,6 +11,8 @@
 ;; it boots, but needs activation, more setup and services to be useful.
 
 (use-modules (gnu) (gnu system hurd) (guix utils))
+(use-service-modules ssh)
+(use-package-modules ssh)
 
 (define %hurd-os
   (operating-system
@@ -25,7 +27,14 @@
                         %base-file-systems))
     (host-name "guixygnu")
     (timezone "Europe/Amsterdam")
-    (packages %base-packages/hurd)
-    (services %base-services/hurd)))
+    (packages (cons openssh %base-packages/hurd))
+    (services (cons (service openssh-service-type
+                             (openssh-configuration
+                              (use-pam? #f)
+                              (port-number 2222)
+                              (permit-root-login #t)
+                              (allow-empty-passwords? #t)
+                              (password-authentication? #t)))
+               %base-services/hurd))))
 
 %hurd-os
-- 
2.26.2





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 4/4] hurd-boot: Use 'setxattr' instead of invoking settrans.
  2020-06-08 12:57 ` [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch Jan (janneke) Nieuwenhuizen
                     ` (2 preceding siblings ...)
  2020-06-08 12:58   ` [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service Jan (janneke) Nieuwenhuizen
@ 2020-06-08 12:58   ` Jan (janneke) Nieuwenhuizen
  3 siblings, 0 replies; 11+ messages in thread
From: Jan (janneke) Nieuwenhuizen @ 2020-06-08 12:58 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

Note: Using `getxattr' on the Hurd instead of running showtrans does not
work (yet?).

* gnu/build/hurd-boot.scm (setup-translator): Use 'setxattr' instead of
invoking settrans.
* gnu/system.scm (hurd-multiboot-modules): Add --x-xattr-translator-records to
enable xattr-embebbing of translators.
---
 gnu/build/hurd-boot.scm | 2 +-
 gnu/system.scm          | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index 398cee1395..8150aff972 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -140,7 +140,7 @@ set."
             (chmod port mode)))))
     (catch 'system-error
       (lambda _
-        (apply invoke "settrans" "--create" file-name command))
+        (setxattr file-name "gnu.translator" (string-join command "\0" 'suffix)))
       (lambda (key . args)
         (let ((errno (system-error-errno (cons key args))))
           (format (current-error-port) "~a: ~a\n"
diff --git a/gnu/system.scm b/gnu/system.scm
index 21d0fbd190..c6feea08f9 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -1190,6 +1190,7 @@ a list of <menu-entry>, to populate the \"old entries\" menu."
                 "--device-master-port='${device-port}'"
                 "--exec-server-task='${exec-task}'"
                 "--store-type=typed"
+                "--x-xattr-translator-records"
                 "'${root}'" "'$(task-create)'" "'$(task-resume)'"))
          (target (%current-target-system))
          (libc (if target
-- 
2.26.2





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service.
  2020-06-08 12:58   ` [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service Jan (janneke) Nieuwenhuizen
@ 2020-06-08 13:23     ` Jan Nieuwenhuizen
  2020-06-13  7:24     ` Jan Nieuwenhuizen
  1 sibling, 0 replies; 11+ messages in thread
From: Jan Nieuwenhuizen @ 2020-06-08 13:23 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

[-- Attachment #1: Type: text/plain, Size: 191 bytes --]

Jan (janneke) Nieuwenhuizen writes:

Oops ... to fast.

Moved comment in commit message into bare-hurd.tmpl, and update do use
openssh-sans-x instead.

New patch attached, sorry :-)
Janneke


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0003-system-bare-hurd.tmpl-Add-openssh-sans-x-client-and-.patch --]
[-- Type: text/x-patch, Size: 2288 bytes --]

From 97abb4aeab3aecc6f4b8177e61d588a64116666d Mon Sep 17 00:00:00 2001
From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
Date: Thu, 7 May 2020 19:14:07 +0200
Subject: [PATCH 3/4] system: bare-hurd.tmpl: Add openssh-sans-x client and
 service.

* gnu/system/examples/bare-hurd.tmpl (%hurd-os)[packages]: Add openssh-sans-x.
[services]: Add openssh-service.  Add example usage.
---
 gnu/system/examples/bare-hurd.tmpl | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index 16f20416aa..cdde80200c 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -8,9 +8,24 @@
 ;;     ./pre-inst-env guix system disk-image --target=i586-pc-gnu --no-grafts \
 ;;         gnu/system/examples/bare-hurd.tmpl
 ;;
-;; it boots, but needs activation, more setup and services to be useful.
+;; You may run it like so
+;;
+;;     guix environment --ad-hoc qemu -- qemu-system-i386 -enable-kvm -m 512M \
+;;      -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
+;;      -snapshot -hda <the-image>
+;;
+;; and use it like
+;;
+;;     ssh -p 10022 root@localhost
+;;     guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'
+;;
+;; or even (if you use --image-size=3G)
+;;
+;;     guix build hello
 
 (use-modules (gnu) (gnu system hurd) (guix utils))
+(use-service-modules ssh)
+(use-package-modules ssh)
 
 (define %hurd-os
   (operating-system
@@ -25,7 +40,15 @@
                         %base-file-systems))
     (host-name "guixygnu")
     (timezone "Europe/Amsterdam")
-    (packages %base-packages/hurd)
-    (services %base-services/hurd)))
+    (packages (cons openssh-sans-x %base-packages/hurd))
+    (services (cons (service openssh-service-type
+                             (openssh-configuration
+                              (openssh openssh-sans-x)
+                              (use-pam? #f)
+                              (port-number 2222)
+                              (permit-root-login #t)
+                              (allow-empty-passwords? #t)
+                              (password-authentication? #t)))
+               %base-services/hurd))))
 
 %hurd-os
-- 
2.26.2


[-- Attachment #3: Type: text/plain, Size: 152 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service.
  2020-06-08 12:58   ` [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service Jan (janneke) Nieuwenhuizen
  2020-06-08 13:23     ` Jan Nieuwenhuizen
@ 2020-06-13  7:24     ` Jan Nieuwenhuizen
  1 sibling, 0 replies; 11+ messages in thread
From: Jan Nieuwenhuizen @ 2020-06-13  7:24 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

Jan (janneke) Nieuwenhuizen writes:

> * gnu/system/examples/bare-hurd.tmpl (%hurd-os)[packages]: Add openssh.
> [services]: Add openssh-service.
> ---

Moved instructions from commit message to bare-hurd.tmpl and
Pushed to master as edbc067138fa417d03cbb204511d8b08b61a3d4d

Thank you!

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack.
  2020-06-08 12:58   ` [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack Jan (janneke) Nieuwenhuizen
@ 2020-06-13 10:49     ` Jan Nieuwenhuizen
  2020-06-14 16:46       ` bug#41541: " Jan Nieuwenhuizen
  0 siblings, 1 reply; 11+ messages in thread
From: Jan Nieuwenhuizen @ 2020-06-13 10:49 UTC (permalink / raw)
  To: 41541; +Cc: Mathieu Othacehe, Ludovic Courtès

Jan (janneke) Nieuwenhuizen writes:

> The initial
>
>     guix build -f gnu/system/hurd.scm
>
> hack has been superseded by regular guix system (cross) build.
>
> * gnu/system/hurd.scm (compile-manifest, cross-hurd-image): Remove.
> ---

Pushed to master as 60fdd9e3896bcd31e0b6ec29ac46d92aa8558565

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#41541: [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack.
  2020-06-13 10:49     ` Jan Nieuwenhuizen
@ 2020-06-14 16:46       ` Jan Nieuwenhuizen
  2020-06-14 17:48         ` [bug#41541] " Mathieu Othacehe
  2020-06-14 20:29         ` Ludovic Courtès
  0 siblings, 2 replies; 11+ messages in thread
From: Jan Nieuwenhuizen @ 2020-06-14 16:46 UTC (permalink / raw)
  To: 41541-done; +Cc: Mathieu Othacehe, Ludovic Courtès

Jan Nieuwenhuizen writes:

> Pushed to master as 60fdd9e3896bcd31e0b6ec29ac46d92aa8558565

Hurd is merged, serviced, done, closing.

\o/

Thank you so much for getting this done.

And let this be the beginning of much more Hurd!
Janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack.
  2020-06-14 16:46       ` bug#41541: " Jan Nieuwenhuizen
@ 2020-06-14 17:48         ` Mathieu Othacehe
  2020-06-14 20:29         ` Ludovic Courtès
  1 sibling, 0 replies; 11+ messages in thread
From: Mathieu Othacehe @ 2020-06-14 17:48 UTC (permalink / raw)
  To: 41541; +Cc: janneke


>> Pushed to master as 60fdd9e3896bcd31e0b6ec29ac46d92aa8558565
>
> Hurd is merged, serviced, done, closing.
>
> \o/
>
> Thank you so much for getting this done.

That's terrific, congrats!

Mathieu




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack.
  2020-06-14 16:46       ` bug#41541: " Jan Nieuwenhuizen
  2020-06-14 17:48         ` [bug#41541] " Mathieu Othacehe
@ 2020-06-14 20:29         ` Ludovic Courtès
  1 sibling, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2020-06-14 20:29 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: 41541-done, Mathieu Othacehe

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Jan Nieuwenhuizen writes:
>
>> Pushed to master as 60fdd9e3896bcd31e0b6ec29ac46d92aa8558565
>
> Hurd is merged, serviced, done, closing.
>
> \o/
>
> Thank you so much for getting this done.
>
> And let this be the beginning of much more Hurd!

Woohoo!  Congrats, and thanks for all the hard work & patience!
Now’s the time to have some more fun, indeed!

Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-06-14 20:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <87o8qavktf.fsf@gnu.org>
2020-06-08 12:57 ` [bug#41541] [PATCH 0/4] Final wip-hurd-vm batch Jan (janneke) Nieuwenhuizen
2020-06-08 12:57   ` [bug#41541] [PATCH 1/4] hurd-boot: Create individual translators instead of running MAKEDEV Jan (janneke) Nieuwenhuizen
2020-06-08 12:58   ` [bug#41541] [PATCH 2/4] system: hurd: Remove 'cross-hurd-image' hack Jan (janneke) Nieuwenhuizen
2020-06-13 10:49     ` Jan Nieuwenhuizen
2020-06-14 16:46       ` bug#41541: " Jan Nieuwenhuizen
2020-06-14 17:48         ` [bug#41541] " Mathieu Othacehe
2020-06-14 20:29         ` Ludovic Courtès
2020-06-08 12:58   ` [bug#41541] [PATCH 3/4] system: bare-hurd.tmpl: Add openssh client and service Jan (janneke) Nieuwenhuizen
2020-06-08 13:23     ` Jan Nieuwenhuizen
2020-06-13  7:24     ` Jan Nieuwenhuizen
2020-06-08 12:58   ` [bug#41541] [PATCH 4/4] hurd-boot: Use 'setxattr' instead of invoking settrans Jan (janneke) Nieuwenhuizen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).