summaryrefslogtreecommitdiffstats
path: root/README
blob: f08726338056d325e5f96cb4670006c21661f841 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
PTXdist
=======


Installation
------------

To install PTXdist, just run 

	./configure --prefix <installpath> 

to configure the packet (FIXME: make this --prefix=/path..., probably by
really autoconfigurizing), then

	make

to build everything and 

	make install

in case you want to install it. Make sure your $PATH environment
variable points to <installpath>/bin, because that's where the ptxdist
frontend program is being installed to. 

For developers who want to work with svn versions of PTXdist it is only
necessary to run "./configure && make" and set the PATH variable to the
bin/ directory inside the PTXdist tree. 


Quickstart
----------

For the impatient: try out to compile your own Linux system for generic
i586 and above machines by cloning the generic-i586-glibc project: 

	somewhere$ ptxdist clone generic-i586-glibc myproject

This copies the generic-i586-glibc project into ./myproject, which is
your "workspace" for the following actions. 

Change into your project's workspace and build everything: 

	somewhere$ cd myproject
	somewhere/myproject$ ptxdist go

This builds a root filesystem into the root/ directory of your
workspace. You can try it with 

	somewhere/myproject$ chroot root/ /bin/sh

If you have more time to find out how it works, read on. 


Idea
----

PTXdist is a tool which can be used to generate a root tree for all
kinds of Linux systems. It was written with embedded systems in mind,
but there is no reason why you can't use it to configure your firewall,
router or whatever dedicated "device" comes to your mind. 

The job works like this: you run 'ptxdist menuconfig', configure what
you need and get a .config file. Run 'ptxdist go' and you'll find a 
root tree in root/. Voila. 


Directory Layout
----------------

These files and directories are supposed to be in an empty project
directory: 

kernel-patches-native/	contains patch series for the kernel which is
			compiled natively (for simulation)
kernel-patches-target/	contains patch series for the target kernel
kernelconfig.native	kernel .config file for the native kernel
kernelconfig.target	kernel .config file for the target kernel
patches/		project specific patches, overwrites the generic
			ones from PTXdist
projectroot/		put files here which are to be copied over to
			the target's root directory, like for example 
			etc files, scripts, ... Note that the copying
			has to be done explicitly by some project
			specific rule file.  
ptxconfig		.config file to configure the userland for
			your project. 
rules/			contains project specific rules
src -> ...		link to point to your directory containing
			tarball files for the packets. 

Additionally some other directories are being built when you run
"ptxdist go" or other start other build targets. 

build-host/		build directory for host tools
build-cross/		build directory for cross tools
build-target/		build directory for target tools
images/			'ptxdist images' creates tarballs and 
			filesystem images in this directory. 
local/			tools which are installed locally go to this dir
root/			root filesystem for the target
state/			state files (show in which state packages 
			currently are during the compilation)

For more details look at the output of 'ptxdist --help' or see the
PTXdist manual. 


Bugs
----

- search for FIXMEs
- see TODO, which is out of date :-) 
  
Robert Schwebel <r.schwebel@pengutronix.de>, 2006-02-19