all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Oleg Pykhalov <go.wigust@gmail.com>
To: Maxime Devos <maximedevos@telenet.be>
Cc: 46209@debbugs.gnu.org
Subject: bug#46209: 46043 breaks booting with custom shepherd package
Date: Sun, 31 Jan 2021 22:49:30 +0300	[thread overview]
Message-ID: <87lfc8lwdx.fsf@gmail.com> (raw)
In-Reply-To: <9e86e296320b9b31aa132e8df050a664b0ea6146.camel@telenet.be> (Maxime Devos's message of "Sun, 31 Jan 2021 17:26:37 +0100")


[-- Attachment #1.1: Type: text/plain, Size: 1852 bytes --]

Hello,

Thank you for the fast responce.

First of all I want to ask did you try to override Shepherd yourself?

It would be helpful to have a paragraph in the documentation how to
override the Shepherd, and if you know a proper way, please add a small
example of operating-system definition with overriden Shepherd and a
basic service like OpenSSH.

Maxime Devos <maximedevos@telenet.be> writes:

> On Sun, 2021-01-31 at 15:46 +0300, Oleg Pykhalov wrote:
>> Before applied patch [1] I used a hack to override shepherd package:
>> 
>>     (module-set! (resolve-module '(gnu packages admin)) 'shepherd shepherd-patched)
>> 
>> Now on Guix commit eb6b061 I cannot use the previous override, and also
>> the mentioned in [1] way overriding shepherd package doesn't work:
>> 
>>     (shepherd-root-service-type config => (shepherd-configuration
>>                                            (inherit config)
>>                                            (shepherd shepherd-patched)))
>> 
>> I got error about undefined ‘#:supplementary-groups’ which added in
>> ‘shepherd-patched’, so I assume my ‘shepherd-patched’ package not used.
>> 
>> [1] https://issues.guix.gnu.org/46043
>
> Can you post your operating system configuration definition?
> Also, were does the error about undefined "#:supplementary-groups"
> appear? When booting, when reconfiguring a ‘live’ system, when
> guix is compiling the shepherd services to .go?

While booting (as I understand in initrd).  If I run (system "/bin/sh"),
then "ps auxwww" I got only shepherd and /bin/sh in the process list.

I can publish, but it's too big [1], so if you don't mind I prepared a
virtual-machine to reproduce the issue.  Basically I don't even need to
use a patched shepherd to break the VM (result attached as a screenshot
below).


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: virtual-machine-definition --]
[-- Type: text/x-scheme, Size: 3206 bytes --]

;; Generation 120	Jan 31 2021 01:15:12	(current)
;;   guix eb6b061
;;     repository URL: https://git.savannah.gnu.org/git/guix.git
;;     branch: master
;;     commit: eb6b061320418fdbd49ecb72c366e43ff7a38dbc
;;
;; env GUIX_PACKAGE_PATH=$PWD guix system build vm-image.tmpl
;; env GUIX_PACKAGE_PATH=$PWD guix system vm vm-image.tmpl

(use-modules (gnu) (guix) (srfi srfi-1))
(use-service-modules shepherd networking ssh)
(use-package-modules admin bootloaders certs nano)

(let ((base-system
       (operating-system
         (host-name "gnu")
         (timezone "Etc/UTC")
         (locale "en_US.utf8")

         (firmware '())

         ;; Below we assume /dev/vda is the VM's hard disk.
         ;; Adjust as needed.
         (bootloader (bootloader-configuration
                      (bootloader grub-bootloader)
                      (target "/dev/vda")
                      (terminal-outputs '(console))))
         (file-systems (cons (file-system
                               (mount-point "/")
                               (device "/dev/vda1")
                               (type "ext4"))
                             %base-file-systems))

         (users (cons (user-account
                       (name "guest")
                       (comment "GNU Guix Live")
                       (password "")                     ;no password
                       (group "users")
                       (supplementary-groups '("wheel" "netdev"
                                               "audio" "video")))
                      %base-user-accounts))

         ;; Our /etc/sudoers file.  Since 'guest' initially has an empty password,
         ;; allow for password-less sudo.
         (sudoers-file (plain-file "sudoers" "\
root ALL=(ALL) ALL
%wheel ALL=NOPASSWD: ALL\n"))

         (packages (append (list nano nss-certs)
                           %base-packages))

         (services
          (append (list ;; Uncomment the line below to add an SSH server.
                   ;;(service openssh-service-type)

                   ;; Use the DHCP client service rather than NetworkManager.
                   (service dhcp-client-service-type))

                  ;; Remove GDM, ModemManager, NetworkManager, and wpa-supplicant,
                  ;; which don't make sense in a VM.
                  (remove (lambda (service)
                            (let ((type (service-kind service)))
                              (or (memq type
                                        (list wpa-supplicant-service-type
                                              network-manager-service-type
                                              modem-manager-service-type))
                                  (eq? 'network-manager-applet
                                       (service-type-name type)))))
                          %base-services))))))
  (operating-system
    (inherit base-system)
    (essential-services
     (modify-services (operating-system-default-essential-services base-system)
       (shepherd-root-service-type config => (shepherd-configuration
                                              (inherit config)
                                              (shepherd shepherd)))))))

[-- Attachment #1.3: Type: text/plain, Size: 633 bytes --]


> A pitfall to take in mind: it's the ‘essential-services’ field
> you need to modify, not the ‘services’ field of ‘operating-system’.
> My original example at [1] was incorrect.  A corrected example:
>
> (operating-system
>  [...]
>  (services [don't modify this])
>  (essential-services
>   (modify-services (operating-system-default-essential-services
>                     this-operating-system)
>     (shepherd-root-service-type c =>
>                                 (shepherd-configuration
>                                  (inherit c)
>                                  (shepherd-patched))))))


[-- Attachment #1.4: QEMU Screenshot --]
[-- Type: image/png, Size: 11036 bytes --]

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

  reply	other threads:[~2021-01-31 19:50 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-31 12:46 bug#46209: 46043 breaks booting with custom shepherd package Oleg Pykhalov
2021-01-31 16:26 ` Maxime Devos
2021-01-31 19:49   ` Oleg Pykhalov [this message]
2021-01-31 20:35     ` Maxime Devos
2021-01-31 20:57     ` Maxime Devos
2021-01-31 22:40       ` Oleg Pykhalov
2021-01-31 21:09     ` Maxime Devos
2021-01-31 22:55       ` Oleg Pykhalov
2021-02-01  8:15         ` Maxime Devos
2021-02-01  9:18         ` Ludovic Courtès
2021-02-01 18:51           ` Oleg Pykhalov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lfc8lwdx.fsf@gmail.com \
    --to=go.wigust@gmail.com \
    --cc=46209@debbugs.gnu.org \
    --cc=maximedevos@telenet.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.