Difference between revisions of "LAR Design"
(→TODO) |
(→Discussion) |
||
| Line 71: | Line 71: | ||
= Discussion = | = Discussion = | ||
| − | Patrick | + | Patrick Georgi and Stefan Reinauer discussed extending LAR so that it handles a MANIFEST file. |
This file will list all existing files, and their current compression. If a file is in the MANIFEST, it's compression status will not be changed. This feature is required for making sure that initram is not compressed. | This file will list all existing files, and their current compression. If a file is in the MANIFEST, it's compression status will not be changed. This feature is required for making sure that initram is not compressed. | ||
| Line 77: | Line 77: | ||
MANIFEST will describe | MANIFEST will describe | ||
* compression of files | * compression of files | ||
| − | * size of the unpacked image | + | * size of the unpacked image (optional on parse-time, to make it easier for "lar c" users) |
* bootblock name | * bootblock name | ||
* other metadata? | * other metadata? | ||
| + | |||
| + | Example: | ||
| + | * normal/initram=../../build/linuxbios.initram * none | ||
| + | means: the file "normal/initram" inside the lar file will be created from "../../build/linuxbios.initram", with "none" compression. size isn't given and taken from the existing file | ||
Some syntax examples | Some syntax examples | ||
Revision as of 12:17, 22 June 2007
Contents |
Introduction
LAR is the LinuxBIOS Archiver. It is a small utility that we use to create and change LinuxBIOS images and their modules.
It is a simple archiver, similar to cpio, ar or tar.
Design goals were
- minimum overhead - maximum fault tolerance - simplicity
For a usage example see example.c.
For questions contact Stefan Reinauer <stepan@coresystems.de>.
Usage
Create archive archive.lar containing files file1 ... fileN:
$ lar c archive.lar file1 ... fileN
Extract files from archive.lar:
$ lar x archive.lar [file1 ... fileN]
List files in archive:
$ lar l archive.lar
Archive format
The rough format is:
|--------------| | header | |--------------| | data | |--------------| | header | |--------------| | data | |--------------| ...
Headers have to be 16 byte aligned.
Headers have to be 16 byte aligned.
|----------------------------| | magic (8 bytes) | |----------------------------| | length (4 bytes) | |----------------------------| | checksum (4 bytes) | |----------------------------| | offset to blob (4 bytes) | |----------------------------| | "path name" | <-- null terminated, aligned to 16 bytes |----------------------------| | blob (aligned to 16 bytes) | |----------------------------|
TODO
- Reading flash layouts
- This does not enforce any alignment yet
- Alignment enforcing will be optional
Discussion
Patrick Georgi and Stefan Reinauer discussed extending LAR so that it handles a MANIFEST file.
This file will list all existing files, and their current compression. If a file is in the MANIFEST, it's compression status will not be changed. This feature is required for making sure that initram is not compressed.
MANIFEST will describe
- compression of files
- size of the unpacked image (optional on parse-time, to make it easier for "lar c" users)
- bootblock name
- other metadata?
Example:
- normal/initram=../../build/linuxbios.initram * none
means: the file "normal/initram" inside the lar file will be created from "../../build/linuxbios.initram", with "none" compression. size isn't given and taken from the existing file
Some syntax examples
$ lar x linuxbios.rom # create linuxbios/* and linuxbios/MANIFEST
$ lar c linuxbios.rom linuxbios/ # looks for linuxbios/MANIFEST
$ lar x linuxbios.rom # image without payload $ cp payload.bin $ lar c linuxbios.rom linuxbios/ -s 512K $ # creates image, overiding size to 512K