services: Add udev service, and add it to '%base-services'.
* gnu/services/base.scm (udev-service): New procedure. (%base-services): Use it. * gnu/system.scm (%base-packages): Add UDEV.
This commit is contained in:
		
							parent
							
								
									1bd3f84986
								
							
						
					
					
						commit
						151a2c07aa
					
				
					 2 changed files with 32 additions and 2 deletions
				
			
		| 
						 | 
					@ -23,6 +23,8 @@
 | 
				
			||||||
  #:use-module (gnu system shadow)                ; 'user-account', etc.
 | 
					  #:use-module (gnu system shadow)                ; 'user-account', etc.
 | 
				
			||||||
  #:use-module (gnu system linux)                 ; 'pam-service', etc.
 | 
					  #:use-module (gnu system linux)                 ; 'pam-service', etc.
 | 
				
			||||||
  #:use-module (gnu packages admin)
 | 
					  #:use-module (gnu packages admin)
 | 
				
			||||||
 | 
					  #:use-module ((gnu packages linux)
 | 
				
			||||||
 | 
					                #:select (udev))
 | 
				
			||||||
  #:use-module ((gnu packages base)
 | 
					  #:use-module ((gnu packages base)
 | 
				
			||||||
                #:select (glibc-final))
 | 
					                #:select (glibc-final))
 | 
				
			||||||
  #:use-module (gnu packages package-management)
 | 
					  #:use-module (gnu packages package-management)
 | 
				
			||||||
| 
						 | 
					@ -35,6 +37,7 @@
 | 
				
			||||||
            file-system-service
 | 
					            file-system-service
 | 
				
			||||||
            user-processes-service
 | 
					            user-processes-service
 | 
				
			||||||
            host-name-service
 | 
					            host-name-service
 | 
				
			||||||
 | 
					            udev-service
 | 
				
			||||||
            mingetty-service
 | 
					            mingetty-service
 | 
				
			||||||
            nscd-service
 | 
					            nscd-service
 | 
				
			||||||
            syslog-service
 | 
					            syslog-service
 | 
				
			||||||
| 
						 | 
					@ -397,6 +400,32 @@ hydra.gnu.org are used by default."
 | 
				
			||||||
                                 (id 30000))))
 | 
					                                 (id 30000))))
 | 
				
			||||||
             (activate activate)))))
 | 
					             (activate activate)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define* (udev-service #:key (udev udev))
 | 
				
			||||||
 | 
					  "Run @var{udev}, which populates the @file{/dev} directory dynamically."
 | 
				
			||||||
 | 
					  (with-monad %store-monad
 | 
				
			||||||
 | 
					    (return (service
 | 
				
			||||||
 | 
					             (provision '(udev))
 | 
				
			||||||
 | 
					             (requirement '(root-file-system))
 | 
				
			||||||
 | 
					             (documentation "Populate the /dev directory.")
 | 
				
			||||||
 | 
					             (start #~(lambda ()
 | 
				
			||||||
 | 
					                        (let ((pid (primitive-fork)))
 | 
				
			||||||
 | 
					                          (case pid
 | 
				
			||||||
 | 
					                            ((0)
 | 
				
			||||||
 | 
					                             ;; In dmd 0.1, file descriptor 0 is closed, thus
 | 
				
			||||||
 | 
					                             ;; is gets reused when open(2) is called, and it
 | 
				
			||||||
 | 
					                             ;; turns out that EPOLL_CTL_ADD of 0 returns
 | 
				
			||||||
 | 
					                             ;; EPERM for some reason.  So make sure 0 is
 | 
				
			||||||
 | 
					                             ;; open.
 | 
				
			||||||
 | 
					                             ;; FIXME: Close the other descriptors.
 | 
				
			||||||
 | 
					                             (execl (string-append #$udev "/libexec/udev/udevd")
 | 
				
			||||||
 | 
					                                    "udevd"))
 | 
				
			||||||
 | 
					                            (else
 | 
				
			||||||
 | 
					                             ;; Create a bunch of devices.
 | 
				
			||||||
 | 
					                             (system* (string-append #$udev "/bin/udevadm")
 | 
				
			||||||
 | 
					                                      "trigger")
 | 
				
			||||||
 | 
					                             pid)))))
 | 
				
			||||||
 | 
					             (stop #~(make-kill-destructor))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define %base-services
 | 
					(define %base-services
 | 
				
			||||||
  ;; Convenience variable holding the basic services.
 | 
					  ;; Convenience variable holding the basic services.
 | 
				
			||||||
  (let ((motd (text-file "motd" "
 | 
					  (let ((motd (text-file "motd" "
 | 
				
			||||||
| 
						 | 
					@ -409,6 +438,7 @@ This is the GNU operating system, welcome!\n\n")))
 | 
				
			||||||
          (mingetty-service "tty6" #:motd motd)
 | 
					          (mingetty-service "tty6" #:motd motd)
 | 
				
			||||||
          (syslog-service)
 | 
					          (syslog-service)
 | 
				
			||||||
          (guix-service)
 | 
					          (guix-service)
 | 
				
			||||||
          (nscd-service))))
 | 
					          (nscd-service)
 | 
				
			||||||
 | 
					          (udev-service))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;;; base.scm ends here
 | 
					;;; base.scm ends here
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,7 +218,7 @@ explicitly appear in OS."
 | 
				
			||||||
         guile-final (@ (gnu packages admin) dmd) guix
 | 
					         guile-final (@ (gnu packages admin) dmd) guix
 | 
				
			||||||
         util-linux inetutils isc-dhcp
 | 
					         util-linux inetutils isc-dhcp
 | 
				
			||||||
         net-tools                        ; XXX: remove when Inetutils suffices
 | 
					         net-tools                        ; XXX: remove when Inetutils suffices
 | 
				
			||||||
         module-init-tools kbd
 | 
					         module-init-tools udev kbd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         ;; The packages below are also in %FINAL-INPUTS, so take them from
 | 
					         ;; The packages below are also in %FINAL-INPUTS, so take them from
 | 
				
			||||||
         ;; there to avoid duplication.
 | 
					         ;; there to avoid duplication.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue