NFS Root with SystemD

Do you find your NFS root fails to boot when you use SystemD root filesystems?

Is it driving you crazy?

Add this fix to your target filesystem to prevent DHCP changing the IP address of the target on the interface which has the root filesystem mounted:

(Thanks to for the gist)

Streaming MJPEG with Gstreamer

On the Target (Transmitter)

gst-launch-1.0 v4l2src device=${V4L} ! "image/jpeg, width=1920, height=1080" ! progressreport ! rtpjpegpay ! udpsink host=${HOST} port=5000

On your development host: (on the Receiver):

gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink

v4.14 Kernel Contributions

  • media: v4l: vsp1: Allow entities to participate in the partition algorithm
  • media: v4l: vsp1: Provide UDS register updates
  • media: v4l: vsp1: Move partition rectangles to struct and operate directly
  • media: v4l: vsp1: Remove redundant context variables
  • media: v4l: vsp1: Calculate partition sizes at stream start
  • media: v4l: vsp1: Move vsp1_video_pipeline_setup_partitions() function
  • media: v4l: vsp1: Release buffers in start_streaming error path
  • drm: rcar-du: Repair vblank for DRM page flips using the VSP
  • media: MAINTAINERS: Add ADV748x driver
  • media: i2c: adv748x: add adv748x driver
  • media: adv748x: Add adv7481, adv7482 bindings

v4.13 Kernel Contributions

  •  [media] media: entity: Catch unbalanced media_pipeline_stop calls
  • device property: Add fwnode_graph_get_port_parent
  • [media] media: fdp1: Support ES2 platforms
  • [media] v4l: subdev: tolerate null in media_entity_to_v4l2_subdev
  • drm: rcar-du: Register a completion callback with VSP1
  • v4l: vsp1: Extend VSP1 module API to allow DRM callbacks
  • v4l: vsp1: Postpone frame end handling in event of display list race
  • Documentation: of: Fix grammar usage in graph bindings

GCC Compiler output checker has definitely earned the title for this weeks Cool Toy of the Week!

It allows you to add snippets of code to the browser, and see the compiled output of a multitude of different compilers, and gives the flexibility to change them, and compare the output of different compiler versions and options.

All that along with code highlighting to show which lines generated which assembly, it’s a must for getting to understand the compiler.

v4.12 Kernel Contributions

  • [media] v4l: vsp1: Register pipe with output WPF
  • [media] v4l: vsp1: Fix struct vsp1_drm documentation
  • [media] v4l: vsp1: Remove redundant pipe->dl usage from drm
  • [media] v4l: vsp1: Prevent multiple streamon race commencing pipeline early
  • [media] v4l: vsp1: Fix format-info documentation
  • [media] uvcvideo: Don’t record timespec_sub
  • [media] uvcvideo: Fix empty packet statistic
  • drm: bridge: dw-hdmi: Remove device type from platform data
  • drm: bridge: dw-hdmi: Add support for custom PHY configuration

Docker, why do you hurt me so …

My DigitalOcean Droplet found itself with 100% disk space usage, which was odd, as I had only spun up the droplet instance a couple of days ago, and only had a couple of docker images running (or so I thought).

Unfortunately, it turns out that one of my docker images wasn’t actually running successfully, but systemd was kindly restarting it every time it failed. This led to a new docker instance of my wordpress image being started every minute or so, probably more often. And it’s not that the container wasn’t being cleaned up after it had failed, The docker was started with a ‘–rm’ flag, and I have a forceful image remove in the systemd unit files.

However, each time it started, the ‘volumes’ that were created persisted, and left as orphans. This quickly consumed space, by the time 2000 volumes had been created.

Fortunately, after version 1.9 docker has an easy-ish solution to cleaning up the volumes:

docker volume ls -qf dangling=true | xargs -r docker volume rm

Note to anyone else – Don’t be surprised if the above command removes your volumes, and deletes items. Use at your own peril/risk. I’m putting this here to remind me later 😀