Embedded Linux
  • Cover
  • Summary
  • About This Training
    • Objectives
    • Skills
    • Prerequisites
    • Requirements
  • Once Upon A Time ...
  • Embedded Linux
  • Build Systems
    • Yocto Board Support Package
      • Yocto
      • Compilation
        • Make
        • Bitbake
        • Script
      • Building Blocks
      • SDK
      • Extra Packages
      • Kernel
        • Patch
        • Building
        • Headers
      • Modules
        • Cross Compilation
        • Native
      • Filesystem
      • Flashing
    • Distributions
      • CentOS
      • Google Brillo
      • Jubilinux
      • Kali
      • Ostro
      • Ubilinux
      • Debian
  • Boot Loaders
    • U-Boot
  • Initialization
    • Upgrade
    • Boot Up
    • Dual Boot
    • Root Directory
    • Display Message
    • Modules
    • Filesystem
    • Memory
    • Backup
    • Recovery
    • Reboot
    • Processes
  • User Space
    • Virtual Network Computing
    • Text Editors
    • Services
    • Logs
    • Package Management Systems
      • Open Package Management
      • Python Package Index
      • Nicely Package Make
      • Advanced Packaging Tool
      • Manual
      • Conda
    • Libraries
      • Mraa
      • Upm
      • OpenCv
      • Temboo
      • Libiio
    • Frameworks
      • Cylon JS
      • Johnny Five
      • ROS
      • Gobot
      • Pixhawk
      • Artoo
      • Bower
      • Zetta
      • Miscellaneous
  • Subsystems
    • X File Systems
    • Pin Muxing
    • Virtual File System
    • Memory
    • Input
    • General Purpose Input Output
    • Serial
    • Bluetooth
      • Advanced Audio Distribution Profile
        • Bluez
        • Gstreamer
        • Alsa
      • Human Interface Device Game Controller
      • Serial Port Protocol
      • Arduino
    • WiFi
    • Audio
    • Camera
    • Block
    • Universal Serial Bus
      • Human Interface Device Mini Keyboard
      • Python USB
    • Inter Integrated Circuit
    • Inter Process Communication
    • Peripheral Component Interconnect
    • Clock
    • Modems
    • Networking
    • Power
    • Thermal
    • Graphics
    • LED
    • LIDAR
    • Printer
    • Serial Peripheral Interface
  • Application Development
    • C
    • C++
    • Cross Compile
    • Containers
    • Python
    • NodeJS
    • Cloud9
    • Data
    • Drone Code
    • Speech
      • Python
    • Radio Frequency
    • Bots
    • Artificial Intelligence
      • WitAi
      • MycroftAi
    • Games
    • Vision
      • Bar Codes
      • Google Cloud Vision API
    • Messaging
    • Entertainment
    • Home Assistants
    • Dashboards
    • IRC
    • Location
    • Facial Recognition
    • Software Defined Radio
    • REST
    • Notes
    • Security
    • HAM Radio
    • Automotive
    • Digital Signage
    • Photography
  • Debug
  • Wrap-Up
    • Online Training
    • Challenge
    • Tbd
  • SandBox
Powered by GitBook
On this page
  • Services
  • Init
  • SystemD
  • Systemctl
  • Services, Disable/Enable
  • Services, Running by Default, Disable?
  • Services, Start Up Script Execution
  • Services, Web Server
  • Services, Butterfly, Web Based Terminal Emulator
  • SystemD Automatic Run
  1. User Space

Services

PreviousText EditorsNextLogs

Last updated 7 years ago

Services

Init

In Unix-based computer operating systems, init (short for initialization) is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct or indirect ancestor of all other processes and automatically adopts all orphaned processes. Init is started by the kernel using a hard-coded filename; a kernel panic will occur if the kernel is unable to start it. Init is typically assigned process identifier 1.

root@edison:~# mkdir /etc/init.d
root@edison:~# nano /etc/init.d/helloservice.sh
#!/bin/sh

echo "Hello Service At Startup"
root@edison:~# chmod 755 /etc/init.d/helloservice.sh
root@edison:~# update-rc.d helloservice.sh defaults
root@edison:~# shutdown -r now

SystemD

systemd is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system.

systemd is an init system used by some Linux distributions to bootstrap the user space and manage all processes subsequently, instead of the UNIX System V or Berkeley Software Distribution (BSD) init systems. The name systemd adheres to the Unix convention of naming daemons by appending the letter d.

Systemd is an init system and system manager that is widely becoming the new standard for Linux machines. While there are considerable opinions about whether systemd is an improvement over the traditional SysV init systems it is replacing, the majority of distributions plan to adopt it or have already done so.

root@edison:~# ls /lib/systemd/system
...
...nano /etc/systemd/journald.conf
poweroff.target                         timers.target
poweroff.target.wants                   timers.target.wants
printer.target                          tmp.mount
pulseaudio.service                      udhcpd-for-hostapd.service
pwr-button-handler.service              umount.target
quotaon.service                         user.slice
rc-local.service                        user@.service
reboot.target                           watchdog-sample.service
reboot.target.wants                     wpa_supplicant.service
redis.service                           wpa_supplicant_p2p_event.service
remote-fs-pre.target                    wpa_supplicant_wlan0_event.service
remote-fs.target                        wyliodrin-hypervisor.service
rescue.service                          wyliodrin-server.service
rescue.target                           xdk-daemon.service

Systemctl

systemctl command, the central management tool for controlling the init system

root@edison:~# systemctl list-unit-files --type=service
...
root@edison:~# ls /etc/systemd/system/*.wants/
...

Services, Disable/Enable

root@edison:~# systemctl stop xdk-daemon
root@edison:~# systemctl disable xdk-daemon
rm '/etc/systemd/system/multi-user.target.wants/xdk-daemon.service'
root@edison:~# systemctl enable xdk-daemon
ln -s '/lib/systemd/system/xdk-daemon.service' '/etc/systemd/system/multi-user.target.wants/xdk-daemon.service'

Services, Running by Default, Disable?

root@edison:~# systemctl status clloader     
● clloader.service - Daemon to handle arduino sketches
   Loaded: loaded (/lib/systemd/system/clloader.service; enabled)
   Active: active (running) since Sun 2016-05-08 04:15:11 UTC; 54min ago
 Main PID: 209 (launcher.sh)
   CGroup: /system.slice/clloader.service
           ├─209 /bin/sh /opt/edison/launcher.sh
           └─210 /opt/edison/clloader --escape --binary --zmodem --disable-ti...

May 08 04:15:11 edison systemd[1]: Started Daemon to handle arduino sketches.
May 08 04:15:11 edison launcher.sh[209]: Opened /dev/ttyGS0 as inputOpened /...s
Hint: Some lines were ellipsized, use -l to show in full.
root@edison:~# systemctl status sketch_reset
● sketch_reset.service - Daemon to reset sketches
   Loaded: loaded (/lib/systemd/system/sketch_reset.service; enabled)
   Active: active (running) since Sun 2016-05-08 04:15:11 UTC; 55min ago
 Main PID: 211 (sketch_reset)
   CGroup: /system.slice/sketch_reset.service
           └─211 /opt/edison/sketch_reset -i 207 -o 215 -s /opt/edison/sketch...

May 08 04:15:11 edison systemd[1]: Started Daemon to reset sketches.
root@edison:~# systemctl status rsmb
● rsmb.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
root@edison:~# systemctl status mdns
● mdns.service - Zero-configuration networking
   Loaded: loaded (/lib/systemd/system/mdns.service; enabled)
   Active: active (running) since Sun 2016-05-08 04:15:14 UTC; 53min ago
 Main PID: 265 (mdnsd)
   CGroup: /system.slice/mdns.service
           └─265 /usr/sbin/mdnsd

May 08 04:54:08 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 04:54:08 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 04:54:12 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 101...3
May 08 05:00:00 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 05:00:00 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 05:00:01 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 05:00:01 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 05:00:08 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 05:00:08 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
May 08 05:00:09 edison mDNSResponder[265]: mDNSPlatformSendUDP got error 99 ...3
Hint: Some lines were ellipsized, use -l to show in full.
root@edison:~# systemctl status edison_config
● edison_config.service - The Edison status and configuration service
   Loaded: loaded (/lib/systemd/system/edison_config.service; enabled)
   Active: active (running) since Sun 2016-05-08 04:15:15 UTC; 54min ago
 Main PID: 289 (su)
   CGroup: /system.slice/edison_config.service
           ‣ 289 /bin/su root -c node /usr/lib/edison_config_tools/edison-con...

May 08 04:15:15 edison systemd[1]: Started The Edison status and configurat...e.
May 08 04:15:15 edison su[289]: Successful su for root by root
May 08 04:15:15 edison su[289]: + ??? root:root
May 08 04:15:15 edison su[289]: pam_unix(su:session): session opened for us...0)
Hint: Some lines were ellipsized, use -l to show in full.
root@edison:~# systemctl status systemd-resolved
● systemd-resolved.service - Network Name Resolution
   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled)
   Active: active (running) since Sun 2016-05-08 04:15:14 UTC; 56min ago
     Docs: man:systemd-resolved.service(8)
 Main PID: 253 (systemd-resolve)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-resolved.service
           └─253 /lib/systemd/systemd-resolved

May 08 04:15:14 edison systemd[1]: Started Network Name Resolution.

Services, Start Up Script Execution

    root@edison:~# cd /home/root/
    root@edison:~# nano hello-world.sh
echo "Hello World!"
    root@edison:~# chmod +x hello-world.sh
    root@edison:~# cd /lib/systemd/system
    root@edison:~# nano hello-world.service
[Unit]
Description=Hello World
After=sys-subsystem-net-devices-%i.device

[Service]
ExecStart=/bin/bash /home/root/hello-world.sh
Restart=always
RestartSec=10 

[Install]
Alias=HelloWorld
WantedBy=multi-user.target
    root@edison:~# systemctl daemon-reload
    root@edison:~# systemctl --system enable hello-world
    root@edison:~# systemctl start hello-world
    root@edison:~# systemctl status hello-world.service -l
    root@edison:~# systemctl status hello-world

Reboot your Intel Edison

    root@edison:~# reboot

Once booted, verify again hello-world service status

    root@edison:~# systemctl status hello-world

Services, Web Server

Location of the web server content

    root@edison:~# ls /usr/lib/edison_config_tools/public/

Location of the web server configuration script

    root@edison:~# ls /usr/lib/edison_config_tools/edison-config-server.js

To stop actual webserver

    root@edison:~# systemctl disable edison_config
    root@edison:~# systemctl stop edison_config
    root@edison:~# systemctl status edison_config

Services, Butterfly, Web Based Terminal Emulator

A sleek web based terminal emulator

Butterfly is a xterm compatible terminal that runs in your browser

    root@edison:~# pip install butterfly pyserial npyscreen
    root@edison:~# butterfly.server.py --unsecure --host=192.168.1.65 --port=8885
    butterfly.conf installed in /etc/butterfly/butterfly.conf
    [W 160321 05:41:44 butterfly.server:317] Butterfly is ready, open your browser to: http://192.168.1.65:8885/

SystemD Automatic Run

    root@edison:~#  cd /etc/systemd/system
    root@edison:~#  curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.service
    root@edison:~#  curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.socket
    root@edison:~#  systemctl enable butterfly.socket
    root@edison:~#  systemctl start butterfly.socket

systemctl — Control the systemd system and service manager. systemctl may be used to introspect and control the state of the "systemd" system and service manager.

Wikipedia
Homepage
Wikipedia
DigitalOcean
ArchLinux systemd System and Service Manager
Homepage
Musings from Stephanie Automatic Scripting at Boot-Up
Tektyte Running a Script On Startup
Butterfly Github