Skip to main content

Buildroot

This guide provides instructions for integrating the ShellHub Agent into a Buildroot-based system, enabling ShellHub’s remote management capabilities.

Prerequisites​

  • Buildroot Environment: Ensure you have Buildroot installed on your system.
  • ShellHub Access: A valid tenant ID for your ShellHub Cloud or self-hosted instance.
  • QEMU: Installed and configured for emulated environments (optional).

Step 1: Cloning Repositories​

Clone the Buildroot repository:

git clone git://git.buildroot.net/buildroot

Clone the ShellHub external Buildroot tree:

git clone https://github.com/shellhub-io/buildroot.git shellhub

Step 2: Configuring ShellHub Integration​

Setting Default Configuration​

Navigate to the Buildroot directory and set the default configuration for ShellHub:

cd buildroot
make BR2_EXTERNAL=../shellhub qemu_x86_64_defconfig

Modifying Configuration via Menuconfig​

Start the Buildroot menuconfig to customize options. Ensure the ShellHub option is selected under External options:

make BR2_EXTERNAL=../shellhub menuconfig

Step 3: Adding Custom ShellHub Configuration​

To customize the ShellHub Agent’s configuration, create a configuration overlay:

nano ../shellhub/rootfs_overlay/etc/default/shellhub-agent

Put the following content:

SERVER_ADDRESS="https://cloud.shellhub.io"
TENANT_ID="<your-tenant-id-here>"
PRIVATE_KEY="/etc/shellhub-agent.key"

Replace the placeholder values. For more information see ShellHub Environment Variables for BuildRoot..

Step 4: Building the System​

Build the root filesystem and kernel:

make BR2_EXTERNAL=../shellhub rootfs-ext2

This command generates the system images required for your device.

Step 5: Running With QEMU (Optional)​

To test your Buildroot system with ShellHub in an emulated environment, run:

qemu-system-x86_64 \
-kernel output/images/bzImage \
-drive file=output/images/rootfs.ext2,format=raw \
-append "root=/dev/sda console=ttyS0" \
-m 512M \
-nographic \
-netdev user,id=n0,hostfwd=tcp::2222-:22 \
-device virtio-net-pci,netdev=n0

Troubleshooting​

  • Configuration File Not Applied: Check the log file /var/log/shellhub-agent.log for error messages. If the agent fails to load configuration or reports failed to parse the configuration, ensure the shellhub-agent configuration file is correctly placed in /etc/default/. Double-check variable names and values, especially for SERVER_ADDRESS, PRIVATE_KEY, and TENANT_ID.

  • Network Connectivity Issues: If the agent cannot connect to the server, confirm that the network interface is properly configured and active. Verify connectivity by testing with a tool like ping or curl from within the target system.

  • Build Errors: If Buildroot fails during compilation, ensure all dependencies are satisfied and that external trees (e.g., ShellHub) are correctly referenced with BR2_EXTERNAL. Verify any added Config.in modifications do not conflict with existing configurations.

ShellHub Environment Variables for BuildRoot​

  • SERVER_ADDRESS: Your ShellHub server address. Keep https://cloud.shellhub.io if you're using ShellHub Cloud.
  • PRIVATE_KEY: Path to your private key file.
  • TENANT_ID: Links the device to a specific tenant or namespace. For help retrieving this, see Retrieving Your Tenant ID.

Conclusion​

By integrating ShellHub into your Buildroot system, you enable seamless remote management of your device. For more information on Buildroot, refer to the Buildroot Manual.