Rust
- How Rust can build an elegant API around raw memoryThis post will explain what registers are, what are their use in bare-metal programming, and how these macros allows for smooth Rust code when working with them.
- Simple errors handling in Rust using macrosDescribes how using macros you can easily handle errors of a whole piece of software elegantly.
- Executing the binaryExecute a binary inside our container, resolve issues of dynamic libraries, mount directories inside the environment. Conclusion of the serie
- Syscalls and resources restrictionHow to restrict the binary running inside our container in order to protect our system. Introduction to seccomp, syscalls, cgroups, rlimit
- User namespaces and Linux CapabiltiesSet up user namespaces, map the UID / GID, restrict the child process with linux capabilities
- Defining the container environmentSet the container hostname, modify the container mount point, pivoting the root.
- Birth of a child processPrepare inter-process communication (IPC), create a clone of the parent process while restricting its scope using namespaces.
- Creating the skelettonGetting the configuration, creating the skeletton for the container, checking the Linux kernel version for compatibility
- Starting the projectCreation of the project, the logging system, the error handlings, and arguments validation
- Introduction to containersOverview of what is a container, the problem of software isolation it solves and how does it compares to other solutions.