In our company, we use Linux (well, who doesn’t?) for both embedded (Internet of Things connected) devices and cloud server workloads.
We wish to train a junior to be able to develop and maintain our custom Linux setups for embedded / IoT devices and monitor / administer them from a centralized (cloud) server (using, ofc, best security practices).
You will be under the mentorship of a skilled embedded senior with over 10 years experience on Linux systems, while also having a Teaching Assistant position at U.P.B. (Automatică și Calculatoare).
You will:
- Develop & maintain lightweight Linux distributions for IoT (with size & performance constraints);
- Build embedded Linux images for various HW platforms (e.g., x86, ARM) with custom kernel & advanced bootloader configurations (e.g., remote upgrades with A/B failover);
- Develop reliable system software for always-on / remotely connected systems;
- Automate the safe deployment of embedded software;
- Administer and monitor multiple IoT gateways / cloud server systems;
- Employ cryptographic protocols and security good practices for connected systems (e.g., do initial key provisioning, rotations, secure tunnels for maintenance / upgrading / recovery);
- Script all of those things (mostly, but not limited to, Bash & Python)! ;)
Required Skills:
- Finished or currently enrolled in a relevant degree program in computer science or a related field;
- Basic knowledge of computer architectures (i.e., x86 vs ARM), common peripheral devices (USB, serial), the usual boot process etc.;
- Moderate Linux administration skills (installation, partitioning, package management, configuring services such as http / ssh);
- Good programming experience, especially Python, C and shell scripting;
- Basic experience with build systems (e.g., Makefile / autoconf) & C compilers (gcc);
- Good English reading / writing skills (for reading / writing technical documentation);
- Basic networking knowledge (CCNA-level IP addressing, client-server protocols, basic network administration skills);
- Basic experience with virtualization / emulation (qemu) and containers;
- Debugging / problem solving skills: being able to read log outputs (from Linux / compilers) and investigating (searching) for the actual cause of an error;
- Optional: experience with configuration management tools (Ansible, SaltStack, Chef, Puppet etc.) is a big plus!