Embedded Linux devices are very diverse in their design and implementation. However, they all have these basic components:
- Bootloader
- Kernel
- Root filesystem
- System applications
- Device-specific data
Some components are harder to update than others, as summarized in this diagram:
![](/api/v2/epubs/9781787283282/files/assets/dfba1781-3338-4ef0-a378-f5c351fa9ca8.png)
Let's look at each component in turn.