forked from lunar-linux/lunar-iso
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
128 lines (94 loc) · 4.76 KB
/
README
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
116
117
118
119
120
121
122
123
124
125
126
127
128
#
# README file for the lunar-iso generation code.
#
-- Goal
Most of this code was written to automate the generation of homogeneous
ISO images based on a fixed set of tools. The code should be as self-
sufficient as possible and generate as much of the binaries as possible
so porting to other platforms will be easy. Please keep this in mind if
you change the scripts and want to include binaries. This should be kept
to a minimum. Note that this code doesn't do cross builds and it requires a
Lunar host.
The ISO has been optimized to minimize the number of alien files. These
should always be as much as possible be provided by modules. The exception
are stored in template, and include several files which need to be filled
with something valid before you can start. Please take care of these files
and try your utter best to make sure you don't add files in the template
that really (really (really)) do not need to be in there.
-- Start
The Makefile should be able to do most of the ISO building automatically, but
there are a few steps that need to be taken:
o Copy conf/config.in to conf/config
o Configure the base parameters of the ISO in conf/config
The code tries to pollute the host system as little as it can. It will however
create a build cache for the bootstrap modules if it doesn't exist already.
Also it will download all the sources of core modules. Last it will install
cdrtools if mkisofs isn't found.
The build cache will be copied to cache/ and the sources of the core modules
will be copied to spool/.
The cache is used to bootstrap the ISO building. As first stage a few modules
are build. These modules are then copied to cache/. For the second stage
this cache is used to build all the core modules.
-- Building it
Run make to build the ISO. The default target will build the completely ISO.
Here's a brief explanation of the different make targets:
target create BUILD/ directory
boostrap-lunar use Lunar host to get the main modules into BUILD/
boostrap-base populate BUILD/ directory with generic files
boostrap populate BUILD/ directory
download-moonbase download the moonbase, can be used for updating
moonbase-git create moonbase package from local git
install-moonbase extract the moonbase to BUILD/
download-lunar use Lunar host to download all sources
download download all sources
stage1-spool copy spool/ to BUILD/
stage1-moonbase fix the moonbase cache files
stage1-toolchain build gcc, glibc and binutils
stage1-build build the main modules
stage1-cache copy stage1 to cache/
stage1 build stage1 and copy to cache/
stage2-target create a clean BUILD/
stage2-base populate BUILD/ directory with generic files
stage2-modules populate BUILD/ with stage1 modules
stage2-spool copy spool/ to BUILD/
stage2-extract-moonbase extract the moonbase to BUILD/
stage2-moonbase fix the moonbase cache files
stage2-toolchain build stage2 gcc, glibc and binutils
stage2-build build stage2 core modules
stage2 build stage2 from stage1
pack-base create aaa_base.tar.bz2
pack create packages of alien files
linux build linux kernel
kernel create kernel for the ISO and installation
lunar-installer copy the installer to BUILD/
installer install the insatller on the ISO
iso-target clean stage2 markers
iso-modules remove modules not needed on the ISO
iso-tools check for mkisofs
iso-files create config files for the ISO
iso-strip strip all executables
iso-isolinux copy isolinux files to BUILD/
iso create the ISO from stage2
clean wipes it all away
The Makefile itself contains no configurable items. Copy the template config
in the conf/ directory to conf/config and adjust the values as needed for
your needs.
--- Using git moonbase
The moonbase.tar.bz2 can be generated from a in-tree git clone. This clone is
located at moonbase-git/core. make moonbase-git will create this clone if it
doesn't exist, otherwise it will only update the moonbase.tar.bz2 in spool/.
To use the git moonbase run make moonbase-git first to create the clone. Next
make you modification by any means. Make sure to commit all modifications to
the active branch. Only committed changes will be in moonbase.tar.bz2. When
done making modifications run make moonbase-git to update the moonbase.tar.bz2
in spool/. This will make the ISO build start from the beginning when running
make iso.
To stop using the git moonbase run make download-moonbase. This will overwrite
the custom moonbase.tar.bz2 in spool/ with the current moonbase.tar.bz2 from
Lunar-Linux.
--- Tips and tricks
o Removing BUILD/ will make start from the last finished stage redoing the
next stages: bootstrap, stage1, stage2
o Some build steps are not file based. These steps use markers. Most of them
are placed in BUILD/ some are in spool/ and cache/. Removing such a marker
can be used to redo that build step.