¿Cómo comenzamos el desarrollo de software del sistema usando la programación en C en un entorno Linux?

El software del sistema no es diferente en desarrollo que cualquier otra aplicación.

La única diferencia es que el software del “sistema” es lo que hace que el sistema sea utilizable, y a veces tiene interfaces con el núcleo u otro software que también se considera “sistema”.

Un pequeño ejemplo es enviar un archivo para imprimir. La aplicación que hace eso se usa para interactuar con la cola de impresión, por lo que se relaciona con el sistema de cola. Esa aplicación no tiene mucho uso en ningún otro lado. El subsistema de spooling es un servicio que espera a que se envíen los archivos, luego hace cosas (dependiendo del archivo y las opciones pasadas por la aplicación que envía) y envía la salida a otro lugar (puede ser a una impresora, una red a otro sistema imprimir, o en una máquina de fax, o en otro sistema para enviar un fax …).

Todo lo que el usuario hace es decirle a la aplicación el archivo a imprimir y cómo se desea imprimir. La aplicación y los otros servicios del sistema hacen el trabajo.

Lo primero que necesita para obtener conocimiento sobre el kernel de Linux y el sistema de archivos, luego necesita conocer los sockets y luego tratar de escribir pequeños fragmentos de código. De esa manera puedes convertirte en un programador de sistemas Linux.