README 3.87 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
Linux Install Party Customization Kit (lipck)
=============================================

Content
-------

0. License
1. About
2. Requirements
3. HowTo
Christopher Spinrath's avatar
Christopher Spinrath committed
11
4. Tips
12
13
14
15
16
17
18
19
20
21
22

License
-------

lipck is licensed under the GPLv3. See the COPYING file for further
details.


About
-----

23
lipck is a helper tool for remastering Ubuntu based distributions. Amongst
24
25
26
27
28
29
30
31
32
33
others it can
- apply patches to rootfs/isofs/initramfs,
- update the initramfs kernel,
- preinstall packages into the rootfs,
- provide a custom package archive on the install media; this allows a user
  to install extra packages without internet access,
- merge i386 and amd64 install media (including file deduplication and
  automated architecture recognition in grub),
- autogenerate grub configuration from templates.

34
35
36
In comparison to other tools, like UCK, the host system is independent of the
system remastered. Furthermore, the host is kept clean with respect to resources
(like mount points). This is achieved by using linux namespaces/lxc.
37

38
39
However, in its current state each version of lipck (git tag/commit) is designed
for a specific Ubuntu version. While the version/source image can be configured
40
41
42
43
freely, patches and static files (i.e. those in the contrib directory) are
not versionized and do only apply to a single Ubuntu image.

Originally, lipck was (or still is) created to remaster install images for
44
linux install fests organized by members of the Open Source Arbeitskreis of
45
46
47
48
49
50
51
the Fachschaft 1/1 Mathematik, Physik, Informatik of the RWTH Aachen University.
It is published in hope that it will be useful for someone else as well.


Requirements
------------

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
lipck makes use of the following tools (make sure they are installed):

- 7z
- bzip2
- cpio
- diff
- git
- (GNU) ddrescue
- (GNU) make
- grub (i386-pc, i386-efi, x86_64-efi)
- lxc
- patch
- rsync
- squashfs-tools (mksquashfs, unsquashfs)
- tar
- util-linux
- wget
- xz/lzma

And, optionally,

- VirtualBox tools (vboxmanage) to create a vmdk image.
74
75
76

HowTo
-----
Christopher Spinrath's avatar
Christopher Spinrath committed
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
129
130
131
132
133

In short: run
	$ make WORKSPACE=/media/drivewithspace config
	# make image
	# make repo  #build offline repository (optionally)
	# make IMAGE_FILE=/somewhere/myfinalimage.img image_deploy
	# make IMAGE_FILE=/somewhere/myfinalimage.img image_deploy_vmdk

where the first command should be executed as user (the owner of the lipck git)
and all others as root. /media/drivewhitspace should provide enough disk space
to store the basic isos, the extracted rootfs/initramfs, etc. (~40G should
suffice). image_deploy will assemble the final (raw) image. The last command
is optional again (note that IMAGE_FILE should have the same value as in the
previous line).

In practise, you may want to edit some configuration files/patches prior to
invoking make as described above:

- the most important config file is config/Makefile.conf where, among others,
  the base iso can be configured. See config/examples for more details.

- contrib/rootfs/{hold_packages,pre_installed_packages*} lets you control the
  packages that will be installed preinstalled in the rootfs.

- contrib/rootfs/offline_repo.json defines all packages available in the
  offline repository.

- Files in contrib/rootfs/{modprobe.d,skel,sysctl.d} will be copied as is
  to the corresponding folders in the rootfs.

- patches/{initrd,iso,rootfs} contains patches for the initramfs,
  iso/images root, and the rootfs. Probably they have to be adapted for
  new iso base images. Unfortunaly, version/iso specific patches are not
  supported yet.

Lastly, you may want to spawn a shell in the rootfs being remastered with

	# make rootfs_console

to debug stuff.


Tips
-----

- If the rootfs_remaster target failed, it may the neccessary to execute the
  next make command two times (the first time a dirty state will be discovered
  and fixed).

- code executed in the rootfs is located in scripts/, you may need to execute

	# make rootfs_finalize

  to trigger a reload of this code.


Happy hacking!