Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Add support for Hypriot-OS on the Raspberry PI #3704

@greylurk

Description

@greylurk

The folks over at http://blog.hypriot.com/ have built a custom raspbian-based distro which makes it easy to stand up a docker host on the Raspberry PI (and a few other ARM devices). However, when I try to add one of the new items to docker-machine, I get an "OS Type Unrecognized" error:

$ docker-machine -D create --driver generic --generic-ip-address=192.168.0.150 --generic-ssh-key=/Users/greylurk/.ssh/id_rsa --generic-ssh-user=pirate --engine-storage-driver=overlay docker-pi-1
Docker Machine Version:  0.8.0, build b85aac1
Found binary path at /usr/local/bin/docker-machine
Launching plugin server for driver generic
Plugin server listening at address 127.0.0.1:52931
() Calling .GetVersion
Using API Version  1
() Calling .SetConfigRaw
() Calling .GetMachineName
(flag-lookup) Calling .GetMachineName
(flag-lookup) Calling .DriverName
(flag-lookup) Calling .GetCreateFlags
Found binary path at /usr/local/bin/docker-machine
Launching plugin server for driver generic
Plugin server listening at address 127.0.0.1:52935
() Calling .GetVersion
Using API Version  1
() Calling .SetConfigRaw
() Calling .GetMachineName
(docker-pi-1) Calling .GetMachineName
(docker-pi-1) Calling .DriverName
(docker-pi-1) Calling .GetCreateFlags
(docker-pi-1) Calling .SetConfigFromFlags
Running pre-create checks...
(docker-pi-1) Calling .PreCreateCheck
(docker-pi-1) Calling .GetConfigRaw
Creating machine...
(docker-pi-1) Calling .Create
(docker-pi-1) Importing SSH key...
(docker-pi-1) DBG | IP: 192.168.0.150
(docker-pi-1) Calling .GetConfigRaw
(docker-pi-1) Calling .DriverName
(docker-pi-1) Calling .DriverName
Waiting for machine to be running, this may take a few minutes...
(docker-pi-1) Calling .GetState
Detecting operating system of created instance...
Waiting for SSH to be available...
Getting to WaitForSSH function...
(docker-pi-1) Calling .GetSSHHostname
(docker-pi-1) Calling .GetSSHPort
(docker-pi-1) Calling .GetSSHKeyPath
(docker-pi-1) Calling .GetSSHKeyPath
(docker-pi-1) Calling .GetSSHUsername
Using SSH client type: external
Using SSH private key: /Users/greylurk/.docker/machine/machines/docker-pi-1/id_rsa (-rw-------)
&{[-F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none pirate@192.168.0.150 -o IdentitiesOnly=yes -i /Users/greylurk/.docker/machine/machines/docker-pi-1/id_rsa -p 22] /usr/bin/ssh <nil>}
About to run SSH command:
exit 0
SSH cmd err, output: <nil>:
Detecting the provisioner...
(docker-pi-1) Calling .GetSSHHostname
(docker-pi-1) Calling .GetSSHPort
(docker-pi-1) Calling .GetSSHKeyPath
(docker-pi-1) Calling .GetSSHKeyPath
(docker-pi-1) Calling .GetSSHUsername
Using SSH client type: external
Using SSH private key: /Users/greylurk/.docker/machine/machines/docker-pi-1/id_rsa (-rw-------)
&{[-F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none pirate@192.168.0.150 -o IdentitiesOnly=yes -i /Users/greylurk/.docker/machine/machines/docker-pi-1/id_rsa -p 22] /usr/bin/ssh <nil>}
About to run SSH command:
cat /etc/os-release
SSH cmd err, output: <nil>: PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
HYPRIOT_OS="HypriotOS/armhf"
HYPRIOT_OS_VERSION="v1.0.0"
HYPRIOT_DEVICE="Raspberry Pi"
HYPRIOT_IMAGE_VERSION="v1.0.0"

Couldn't set key HYPRIOT_OS, no corresponding struct field found
Couldn't set key HYPRIOT_OS_VERSION, no corresponding struct field found
Couldn't set key HYPRIOT_DEVICE, no corresponding struct field found
Couldn't set key HYPRIOT_IMAGE_VERSION, no corresponding struct field found
Error creating machine: Error detecting OS: OS type not recognized
notifying bugsnag: [Error creating machine: Error detecting OS: OS type not recognized]

If I edit the "ID=" field in /etc/os-release on the raspberry pi to read "ID=debian" instead of "ID=raspbian" then it works fine, so the fix might be to fall back to the ID_LIKE if the ID field isn't recognized, but I'm not sure how that affects other debian derivatives

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions