]> pere.pagekite.me Git - homepage.git/blob - mypapers/debconf-install/debconf-install.html
Some details.
[homepage.git] / mypapers / debconf-install / debconf-install.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <link rel="stylesheet" href="../mrtg-td/slides.css" type="text/css">
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6 <meta name="Language" content="en">
7 <meta name="Author" content="Petter Reinholdtsen">
8 </head>
9 <body>
10
11 <h1>Automated installations in Skolelinux
12 <br>using debian-installer and base-config</h1>
13
14 <p>Skolelinux is a Debian-based Linux distribution with simple
15 installation and preconfigured services targeted for schools.
16 The presentation will present how the standard debian
17 installation system is customised for this purpose.</p>
18
19 <div class="presenter">Petter Reinholdtsen
20 <br>pere@hungry.com
21 <br>Debconf3, 2003-07-20</div>
22
23 <h2>Skolelinux</h2>
24 <ul>
25 <li>Based on Debian/Woody (to get security updates)
26 <li>Simple installation
27
28 <li>Translated to several local languages
29 <li>Includes all the software needed in primary schools
30
31 <li>Preconfigured services (syslog, dns, ntp, dhcp, ssh, ldap,
32 nfs, smb, smtp, imap, ipp, http, web-proxy, ltsp and more)
33
34 <li>No license administration
35 <li>Admin friendly
36 <li>Scalable
37 </ul>
38
39 <h2>The Skolelinux architecture</h2>
40
41 <p><img src="http://developer.skolelinux.no/arkitektur/network-arch_en.jpg">
42
43 <h2>The skolelinux install</h2>
44 <ul>
45 <li>Simple (two questions and the root password)
46 <li>Automatic
47 <li>Using debian-installer (d-i) and base-config (b-c)
48 <li>Complete (everything work out of the box)
49 <li>Very little skolelinux-specific code (two udebs and three
50 config packages).
51 <li>Rewriting the config of other packages to get the services
52 preconfigured out of the box (against policy?)
53
54 </ul>
55
56 <h2>The two stages of the Debian installation</h2>
57 <h3>First stage (debian-installer)</h3>
58 <ul>
59 <li>Booting from cd/floppy/net/whatever
60 <li>Installing base system
61 <li>Making HD bootable
62 </ul>
63 <h3>Second stage stage (base-config)</h3>
64 <ul>
65 <li>Booting from HD
66 <li>Installing and configuring the non-base system
67 </ul>
68
69 <h2>The first stage (debian-installer)</h2>
70 <ul>
71 <li>Modular
72 <li>Extendible
73 <li>Using debconf to ask questions
74 <li>Can be mostly automatic
75 <li>Very Flexible
76 </ul>
77
78 <h2>debian-installer structure</h2>
79 <ul>
80 <li>Selector for installer modules (udebs)
81 <li>Select language and region
82 <li>Autodetect hardware
83 <li>Locate APT source (CD, Net or floppy)
84 <li>Load the rest of the installer modules
85 <li>Partition hard-drive
86 <li>Make filesystems or swap
87 <li>Mount filesystems
88 <li>Install base system
89 <li>Install kernel
90 <li>Install boot loader
91 <li>Reboot
92 </ul>
93
94 <h2>debian-installer hooks</h2>
95 <ul>
96 <li>Include or exclude d-i modules
97 <li>Running script at install system boot time
98 <li>Include or excluding packages going into the HD
99 <li>Running scripts before reboot from HD
100 <li>Partitioning
101 </ul>
102
103 <h2>The second stage (base-config)</h2>
104 <ul>
105 <li>Executed from init on first boot
106 <li>Modular (reading /usr/lib/base-config)
107 <li>Able to adjust the order of the scripts on the fly using
108 return codes.
109 <li>Partly using debconf for configuration decisions.
110 </ul>
111
112 <h2>base-config structure</h2>
113 <ul>
114 <li>Generate locale if needed
115 <li>Start terminal emulator (for non-ascii installs) if needed
116 <li>Load variables based from first stage (/root/dbootstrap_settings)
117 <li>Turn off screen saver
118 <li>Show intro screen
119 <li>Set up console keyboard
120 <li>Set up time zone
121 <li>Configure /etc/passwd, root password and local user
122 <li>Enable ppp?
123 <li>Configure APT sources
124 <li>Select packages to install
125 <li>Fetch packages
126 <li>Configure exim
127 <li>Disable ppp?
128 <li>Show "successful install" screen
129 <li>Rewrite /etc/inittab to not start base-config on next boot
130 </ul>
131
132 <h2>base-config hooks</h2>
133 <ul>
134 <li>Add scripts to /usr/lib/base-config/
135 <li>Update debconf database
136 </ul>
137 </ul>
138
139 <h2>Skolelinux specific code</h2>
140 <h3>First stage</h3>
141 <ul>
142 <li>Ask about profile and do automatic partitioning for this
143 profile
144 <li>Reorder d-i module order using dependencies and menu-item value
145 <li>Install extra packages into the HD
146 <li>Pass info to second stage using /root/dbootstrap_settings
147 and /etc/skolelinux/config
148 </ul>
149 <h3>Second stage</h3>
150 <ul>
151 <li>Preload debconf answers based on profile choice
152 <li>Automatically install packages for the given profiles
153 <li>Rewrite/replace config files
154 <li>Restart servers (except kdm)
155 <li>Check installation
156 <li>Restart kdm
157 </ul>
158
159 <h2>Some solved problems</h2>
160 <ul>
161
162 <li>Preloading debconf answers need a dummy question template
163
164 <li>Packages with insufficient install configuration support
165 get their config files rewritten using cfengine.
166
167 <li>Selecting packages to install using meta-packages.
168
169 </ul>
170
171 <h2>Conclusion</h2>
172
173 <ul>
174 <li>The current debian-installer is extendible and can do
175 automated installation, with the hooks needed by Skolelinux.
176
177 <li>The current base-config is is flexible enough for
178 Skolelinux, but could use more hooks to reduce the amount of
179 Skolelinux specific code.
180 </ul>
181
182 <h2>References</h2>
183
184 <ul>
185
186 <li><tt>http://www.student.uit.no/~pere/mypapers/debconf-install/debconf-install.html</tt>
187
188 <li><a href="http://www.skolelinux.no/">Skolelinux web site</a>
189 <li><a href="http://developer.skolelinux.no/">Skolelinux
190 developers web site</a>
191 <li><a href="http://developer.skolelinux.no/arkitektur/arkitektur.html.en">The Skolelinux architeture description</a>
192 <li><a href="http://people.debian.org/~pere/debian-installer/">Debian
193 installer web page</a>
194 </ul>
195
196 <h2>Thank you very much</h2>
197
198 <h3>Questions?</h3>
199
200 </body>
201 </html>