Skip to content

Proposal: Unified firmware analysis and filesystem reconstruction #480

@lacraig2

Description

@lacraig2

Our current system works in the following way:

flowchart LR
    A[firmware input] -->B(fw2tar)--> C(rootfs.tar.gz)--> D(penguin)
    A -->F(User determined process) --> C
Loading

A problem we often see is that fw2tar does not correctly determine what should be in the filesystem. This is particularly relevant when considering the case of multiple filesystems.

This proposal advances and relies upon the theory that static information is insufficient in some cases to fully rectify a filesystem.

The problem of rectifying a filesystem from an input firmware is a rehosting decision that should be expressed and resolvable by the user within penguin.

Making this change would mean folding in significant portions of fw2tar inside of penguin while maintaining existing code paths and functionality.

For example:

flowchart LR
    A[firmware input] --> B(penguin init --fw) --> E[config + multiple fs] --> G[penguin run]
    C[fs.tar.gz] --> D(penguin init fs.tar.gz) --> F[config + single fs] --> G
Loading

In addition, we would need some specification within config.yaml that would describe the filesystem:


fs:
      / : fs.tar.gz
      /mnt/a: fs2.tar.gz
      /mnt/b: fs3.tar.gz

There might also be a more clever path for including this in static_files.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions