# RootFS With the introduction of libbsd, rtems-net-services and other BSD ports, the number of configuration files required to bootstrap an RTEMS system has grown quite a bit. The original approach was to create these files on the fly in C using standard POSIX syscalls (open/write/close), however this quickly becomes difficult to maintain. rtems-init implements a simple rootfs system that mirrors something you'd find with Buildroot (one of the embedded Linux build systems). Internally, the rootfs is just a tarball that RTEMS unpacks at runtime into the in-memory FS (IMFS). This tarball is generated at compile time by a Python script in the `tools` submodule, and embedded into the binary using a `.incbin` assembler directive. `bin2c` is not the preferred method of including tarballs due to the large amount of code generated, which significantly increases the compile time and compile time memory usage. The rootfs for rtems-init can be found in the `rootfs` subdirectory. ## Adding Files New files should be added under the `rootfs` subdirectory, generally in the same layout as they will be in the destination file system. Files to be built into the rootfs must be listed in `rootfs/rootfs.txt`. The format of this file is as follows: ``` # file dest permissions owner:group etc/passwd / 0644 etc/group / 0644 etc/dhcpcd.conf / 0644 ``` `owner:group` is optional and specifies the owning uid/gid (a numeric value!).