Difference between revisions of "LAR Design"

From coreboot
Jump to: navigation, search
(New page: = 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...)
 
(TODO)
Line 68: Line 68:
 
* This does not enforce any alignment yet
 
* This does not enforce any alignment yet
 
* Alignment enforcing will be optional
 
* Alignment enforcing will be optional
 +
 +
= Discussion =
 +
 +
Patrick Mauritz 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
 +
* bootblock name
 +
* other metadata?
 +
 +
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

Revision as of 12:07, 22 June 2007

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 Mauritz 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
  • bootblock name
  • other metadata?

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