1 <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
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">
11 <h1>Automated installations in Skolelinux
12 <br>using debian-installer and base-config
</h1>
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>
19 <p><tt><a href=
"http://www.hungry.com/~pere/mypapers/debconf-install/debconf-install.html">http://www.hungry.com/~pere/mypapers/debconf-install/debconf-install.html
</a></tt></p>
21 <div class=
"presenter">Petter Reinholdtsen
23 <br>Debconf3,
2003-
07-
20</div>
27 <li>Based on Debian/Woody (to get security updates)
28 <li>Simple installation
30 <li>Translated to several local languages
31 <li>Includes all the software needed in primary schools
33 <li>Preconfigured services (syslog, dns, ntp, dhcp, ssh, ldap,
34 nfs, smb, smtp, imap, ipp, http, web-proxy, ltsp and more)
36 <li>No license administration
41 <h2>The Skolelinux architecture
</h2>
43 <p><img src=
"http://developer.skolelinux.no/arkitektur/network-arch_en.jpg">
45 <h2>The skolelinux install
</h2>
47 <li>Simple (two questions and the root password)
49 <li>Using debian-installer (d-i) and base-config (b-c)
50 <li>Complete (everything work out of the box)
51 <li>Very little skolelinux-specific code (two udebs and three
53 <li>Rewriting the config of other packages to get the services
54 preconfigured out of the box (against policy?)
58 <h2>The two stages of the Debian installation
</h2>
59 <h3>First stage (debian-installer)
</h3>
61 <li>Booting from cd/floppy/net/whatever
62 <li>Installing base system
63 <li>Making HD bootable
65 <h3>Second stage stage (base-config)
</h3>
68 <li>Installing and configuring the non-base system
71 <h2>The first stage (debian-installer)
</h2>
75 <li>Using debconf to ask questions
76 <li>Can be mostly automatic
80 <h2>debian-installer structure
</h2>
82 <li>Selector for installer modules (udebs)
83 <li>Select language and region
84 <li>Autodetect hardware
85 <li>Locate APT source (CD, Net or floppy)
86 <li>Load the rest of the installer modules
87 <li>Partition hard-drive
88 <li>Make filesystems or swap
90 <li>Install base system
92 <li>Install boot loader
96 <h2>debian-installer hooks
</h2>
98 <li>Include or exclude d-i modules
99 <li>Running script at install system boot time
100 <li>Include or excluding packages going into the HD
101 <li>Running scripts before reboot from HD
105 <h2>The second stage (base-config)
</h2>
107 <li>Executed from init on first boot
108 <li>Modular (reading /usr/lib/base-config)
109 <li>Able to adjust the order of the scripts on the fly using
111 <li>Partly using debconf for configuration decisions.
114 <h2>base-config structure
</h2>
116 <li>Generate locale if needed
117 <li>Start terminal emulator (for non-ascii installs) if needed
118 <li>Load variables based from first stage (/root/dbootstrap_settings)
119 <li>Turn off screen saver
120 <li>Show intro screen
121 <li>Set up console keyboard
123 <li>Configure /etc/passwd, root password and local user
125 <li>Configure APT sources
126 <li>Select packages to install
130 <li>Show "successful install" screen
131 <li>Rewrite /etc/inittab to not start base-config on next boot
134 <h2>base-config hooks
</h2>
136 <li>Add scripts to /usr/lib/base-config/
137 <li>Update debconf database
141 <h2>Skolelinux specific code
</h2>
144 <li>Shorter language list
145 <li>Set debconf priority limit to high to get automatic install
146 <li>Ask about profile and do automatic partitioning for this
148 <li>Reorder d-i module order using dependencies and menu-item value
149 <li>Install extra packages into the HD
150 <li>Pass info to second stage using /root/dbootstrap_settings
151 and /etc/skolelinux/config
153 <h3>Second stage
</h3>
155 <li>Set debconf frontend to non-interactive (most of the time)
156 <li>Preload debconf answers based on profile choice
157 <li>Automatically install packages for the given profiles
158 <li>Rewrite/replace config files based on profile and language
159 <li>Configure XFree86
160 <li>Restart servers (except kdm)
161 <li>Check installation
165 <h2>Some solved problems
</h2>
168 <li>Preloading debconf answers need a dummy question template
170 <li>Packages with insufficient install configuration support
171 get their config files rewritten using cfengine.
173 <li>Selecting packages to install using meta-packages.
180 <li>The current debian-installer is extendible and can do
181 automated installation, with the hooks needed by Skolelinux.
183 <li>The current base-config is is flexible enough for
184 Skolelinux, but could use more hooks to reduce the amount of
185 Skolelinux specific code.
192 <li><a href=
"http://www.skolelinux.no/">Skolelinux web site
</a>
193 <li><a href=
"http://developer.skolelinux.no/">Skolelinux
194 developers web site
</a>
195 <li><a href=
"http://developer.skolelinux.no/arkitektur/arkitektur.html.en">The Skolelinux architeture description
</a>
196 <li><a href=
"http://people.debian.org/~pere/debian-installer/">debian-installer web page
</a>
197 <li><a href=
"http://people.debian.org/~pere/debian-installer/hooks.html">Available hooks in debian-installer
</a>
200 <h2>Thank you very much
</h2>