Difference between revisions of "LAR Design"

From coreboot
Jump to: navigation, search
(TODO)
(Discussion)
Line 71: Line 71:
 
= Discussion =
 
= Discussion =
  
Patrick Mauritz and Stefan Reinauer discussed extending LAR so that it handles a MANIFEST file.
+
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

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