Skip to content
This repository has been archived by the owner on Oct 1, 2024. It is now read-only.

A container image for running the ARM embedded toolchain from an OpenSSH server, built on Fedora

License

Notifications You must be signed in to change notification settings

jwillikers/gnu-arm-embedded-ssh-image

Repository files navigation

GNU Arm Embedded SSH Image

GitHub Workflow Status pre-commit

A container image for running the GNU Arm Embedded Toolchain toolchain from an OpenSSH server, built on Fedora. Comes complete with CMake, Conan, Ninja, and Clang tools.

Synopsis

This container is meant to be used with IDE’s that support remote development over SSH, such as CLion and {Visual Studio Code}. You might find this workflow particularly helpful if you develop on an immutable base operating system, such as {Fedora Silverblue}.

Image

quay.io/jwillikers/gnu-arm-embedded-ssh

Tags
  • latest

Supported architectures
  • amd64 (x86_64)

  • arm (armhfp)

  • arm64 (aarch64)

Users
root

The default user inside the container is root since the OpenSSH server must be started by the superuser.

user

A user named user is also created with the default password password.

Volumes
/etc/ssh

Where the container’s own server-side SSH keys reside as well as various configuration files.

/home/user/.ssh

The default user’s SSH keys and configuration.

Cmd

["/usr/sbin/sshd", "-D", "-e"]

Labels
io.containers.autoupdate=registry

Enables automatic updates when using Podman and the fully-qualified image name.

Quick Start

  1. To run the OpenSSH server from this image, run the container using Podman.

    Use the -p flag to port-forward the SSH port, port 22, from the container to the host. To attach a device such as a serial console, add the --security-opt label=disable to disable SELinux and pass through the desired device with the --device flag. The following example forwards port 22 in the container to port 2222 on localhost and allows access to the device /dev/ttyBmpGdb.

    podman run \
      --rm \
      -p 2222:22 \
      --security-opt label=disable \
      --device /dev/ttyBmpGdb:/dev/ttyBmpGdb \
      --volume "$PWD":/home/user/project:Z \
      --name gnu-arm-embedded-ssh \
      -dt quay.io/jwillikers/gnu-arm-embedded-ssh:latest
    ℹ️

    To access the SSH server from another container, simply run the containers in the same pod. This doesn’t even require port forwarding!

  2. The container should then be accessible using SSH from the local machine.

    ssh -p 2222 user@127.0.0.1
  3. Enter the default password for the user named user, which is password.

Build

This project uses Buildah and Podman for building and testing the image. A set of pre-commit checks are readily available to ensure your code is up-to-spec at the time it is committed. Instructions for setting up a development environment, building the image, and testing the image follow. These instructions are intended for users of Fedora Silverblue, where the packages buildah, git, and podman are already available. Moreover, I use the fish shell.

  1. Install the fish shell.

    sudo rpm-ostree install fish
  2. Reboot to finish the installation.

    systemctl reboot
  3. Clone this repository.

    git -C ~/Projects clone git@github.com:jwillikers/gnu-arm-embedded-ssh-image.git
  4. Install pre-commit.

    pip install pre-commit
  5. Change into the project directory.

    cd ~/Projects/gnu-arm-embedded-ssh-image
  6. Install pre-commit’s Git hooks.

    pre-commit install
  7. Run the shell script to build the image.

    buildah unshare ~/Projects/gnu-arm-embedded-ssh-image/build.fish
  8. Test the image with the test.fish shell script.

    ~/Projects/gnu-arm-embedded-ssh-image/test.fish

Contributing

Contributions in the form of issues, feedback, and even pull requests are welcome. Make sure to adhere to the project’s Code of Conduct.

Open Source Software

This project is built on the hard work of countless open source contributors. Several of these projects are enumerated below.

Code of Conduct

Refer to the project’s Code of Conduct for details.

License

This repository is licensed under the GPLv3, a copy of which is provided in the license file.

© 2021 Jordan Williams

Authors