ECE497 Notes on systemd

The new BeagleImages use systemd for user space initialization.

Here, here and here are some tutorials that look good.

Here is information on runlevels.

Here is a nice list of useful commands.

systemd for Admins

Tips and Tricks

Changing the Bone's USB IP address
I think I've found an answer. The BBB uses systemd to get the user space processes going at boot time. Look in /lib/systemd/system it see the various services that can be started. The one of interest is /lib/systemd/system/udhcpd.service. This starts the dhcp server that assigns the IP address to the host. Looking inside you see [Unit] Description=DHCP server for USB0 network gadget After=dev-usb0.device Conflicts=storage-gadget-init.service [Service] ExecStart=/usr/sbin/udhcpd -f -S /etc/udhcpd.conf ExecStop=/bin/kill -TERM $MAINPID KillSignal=SIGINT [Install] WantedBy=gether.target

It looks like /etc/udhcpd.conf is what configures the server. In it we find: start     192.168.7.1 end       192.168.7.1 interface usb0 max_leases 1 option subnet 255.255.255.252

On your second bone try editing this file to use a different range of addresses. That will assign your host a different number. To give your beagle a different number, look near the bottom of /usr/bin/g-ether-load.sh. I think that's where your BBB is assigned a number.

I haven't tested this. Let me know if it works.

Mark, I followed your suggestion and, eventually, was able to get 2 BBB connected and working on a single PC. In addition to /etc/udhcpd.conf, I needed to edit /usr/bin/g-ether-load.sh and /etc/udev/rules.d/udhcpd.rules However, I need more automated way to accomplish this task, since we can't expect our end users to log into our product and change the settings...

Thanks for your help.

Brian

Gadgets
I found these gadgets network-gadget-init.service storage-gadget-init.service

in

/lib/systemd/system

/usr/bin/update-image-info-on-mmcblk0p1.sh

is what creates the info.txt file.

beagle$ mount /dev/mmcblk0p1 /mnt

Here's a way to see what gadgets are out there

beagle$ systemctl --all | grep gadget sys-devi...et-usb0.device loaded active  plugged       /sys/devices/platform/omap/musb-ti81xx/musb-hdrc.0/gadget/net/usb0 network-...t-init.service loaded active  exited        Start USB Ethernet gadget storage-...t-init.service loaded inactive dead         Start usb mass storage gadget udhcpd.service           loaded active   running       DHCP server for USB0 network gadget

or

systemctl --all --full | grep gadget sys-devices-platform-omap-musb\x2dti81xx-musb\x2dhdrc.0-gadget-net-usb0.device               loaded active   plugged        /sys/devices/platform/omap/musb-ti81xx/musb-hdrc.0/gadget/net/usb0 network-gadget-init.service                                                                  loaded active   exited         Start USB Ethernet gadget storage-gadget-init.service                                                                  loaded inactive dead           Start usb mass storage gadget udhcpd.service                                                                               loaded active   running        DHCP server for USB0 network gadget

Where network-...t-init.service = network-gadget-init.service storage-...t-init.service = storage-gadget-init.service

/etc/udhcpd.conf is what assigned 192.168.7.1 to the host computer.

To stop the ethernet over USB and start the storage over USB for the current session

beagle$ /bin/systemctl stop storage-gadget-init.service beagle$ /bin/systemctl start network-gadget-init.service

To go the other way:

beagle$ g-ether-start-service.sh

To keep the storage gadget from running on boot up. (I'm still checking this.)

beagle$ systemctl disable storage-gadget-init.service