/[d-i]/tags/version_0_046/tools/base-installer/debian/kernel-installer.postinst
ViewVC logotype

Contents of /tags/version_0_046/tools/base-installer/debian/kernel-installer.postinst

Parent Directory Parent Directory | Revision Log Revision Log


Revision 11425 - (show annotations) (download)
Sun Mar 21 06:05:24 2004 UTC (9 years, 3 months ago) by unknown
File size: 9753 byte(s)
This commit was manufactured by cvs2svn to create tag
'version_0_046'.
1 #! /bin/sh -e
2
3 . /usr/share/debconf/confmodule
4
5 logfile=/var/log/messages
6
7 log() {
8 logger -t kernel-installer "$@"
9 }
10 error() {
11 log "error: $*"
12 }
13 warning() {
14 log "warning: $*"
15 }
16 info() {
17 log "info: $*"
18 }
19
20 # =================== Pick the kernel package =========================
21
22 # find all packages implementing 'kernel-image'. Is there a better
23 # way? [pere 2003-02-16]
24
25 chroot="chroot /target"
26
27 db_progress START 0 5 kernel-installer/progress/title
28
29 db_progress INFO kernel-installer/progress/step_locate
30
31 # Fetch the current default
32 if db_get debian-installer/kernel/image && [ "$RET" ] ; then
33 kernel="$RET"
34 fi
35
36 # the busybox do not support 'uniq' and 'sort -r' at
37 # the moment [pere 2003-02-06]
38
39 kernel_list=/tmp/available_kernels.txt
40 kernel_update_list() {
41 # Using 'uniq' to avoid listing the same kernel more then once.
42 $chroot apt-cache search kernel-image | grep ^kernel-image | \
43 cut -d" " -f1 | /target/usr/bin/uniq > $kernel_list
44 }
45
46 kernel_present() {
47 if grep -q "^$1\$" $kernel_list ; then
48 true
49 else
50 false
51 fi
52 }
53
54 # Using 'sort -r' to get the newest kernel version at the start of the
55 # list (ie 2.4.20 above 2.2.20). This is in conflict with getting the
56 # most generic architecture first (386 above 686).
57
58 kernel_update_list
59 kernels=`/target/usr/bin/sort -r $kernel_list| tr '\n' ',' | sed -e 's/,$//'`
60
61 info "Found kernels '$kernels'"
62
63 if [ "$kernels" ] ; then
64 db_subst kernel-installer/which-kernel KERNELS "$kernels"
65 else
66 db_subst kernel-installer/no-kernels-found KERNEL "$kernel"
67 db_input critical kernel-installer/no-kernels-found || [ $? -eq 30 ]
68 db_go
69 db_progress STOP
70 exit 1
71 fi
72
73 db_progress STEP 1
74 db_progress INFO kernel-installer/progress/step_select
75
76 # Try to make current rootskel setting the default, make sure it is
77 # available first.
78 if kernel_present "$kernel" ; then
79 # Current selection is available, nothing to do
80 :
81 else
82 # Pick the first in the list
83 kernel=`echo "$kernels" | cut -d, -f1`
84 fi
85
86 # Pick a good default choice, based on the available kernels and
87 # perhaps /proc/cpuinfo.
88 ARCH=`udpkg --print-architecture`
89
90 # Should this instead be located in small script fragments, named
91 # after their architecture? Something like this:
92 # [ -f /usr/lib/kernel-installer/$ARCH ] && . /usr/lib/kernel-installer/$ARCH
93 trykernel=
94 separate_pcmcia_modules=n
95 case "$ARCH" in
96 i386*)
97 version=2.4
98 separate_pcmcia_modules=y
99 MODEL=`grep 'model name' /proc/cpuinfo | cut -d: -f2`
100 if dmesg | grep -q ^Processors:; then
101 CPUS=`dmesg | grep ^Processors: | cut -d: -f2`
102 else
103 CPUS=1
104 fi
105 case "$MODEL" in
106 " Intel(R) Pentium(R) 4"*)
107 if test $CPUS -eq 1; then
108 trykernel=kernel-image-$version-686
109 else
110 trykernel=kernel-image-$version-686-smp
111 fi
112 ;;
113 " AMD Athlon(tm) Processor"*)
114 if test $CPUS -eq 1; then
115 trykernel=kernel-image-$version-k7
116 else
117 trykernel=kernel-image-$version-k7-smp
118 fi
119 ;;
120 *)
121 trykernel=kernel-image-$version-386
122 ;;
123 esac
124 ;;
125 sparc)
126 version=2.4.21
127 MODEL=`uname -m`
128 CPUS=`grep 'ncpus probed' /proc/cpuinfo | cut -d: -f2`
129 case "$MODEL" in
130 sparc)
131 if [ "$CPUS" -eq 1 ]; then
132 trykernel=kernel-image-$version-sun4cdm
133 else
134 trykernel=kernel-image-$version-sun4dm-smp
135 fi
136 ;;
137 sparc64)
138 if [ "$CPUS" -eq 1 ]; then
139 trykernel=kernel-image-$version-sun4u
140 else
141 trykernel=kernel-image-$version-sun4u-smp
142 fi
143 ;;
144 esac
145 ;;
146 powerpc)
147 version=2.4.22 #hack, hack!
148 MODEL=`/bin/archdetect`
149 case "$MODEL" in
150 "powerpc/powermac_newworld")
151 trykernel=kernel-image-$version-powerpc
152 ;;
153 # what's below is probably nonsense, porters have to start building 2.4 kernels for d-i!
154 # But at least the infrastructure will be there and these are the latest versions in
155 # the archive.
156 "powerpc/powermac_oldworld")
157 trykernel=kernel-image-$version-powerpc
158 ;;
159 "powerpc/prep")
160 trykernel=kernel-image-2.2.20-prep
161 ;;
162 # do we need a special case here for powerpc/chrp_pegasos?
163 "powerpc/chrp")
164 trykernel=kernel-image-2.2.20-chrp
165 ;;
166 "powerpc/amiga")
167 trykernel=kernel-image-2.4.20-apus
168 ;;
169 *)
170 log "warning: Unknown $ARCH subarchitecture '$MODEL'."
171 ;;
172 esac
173 ;;
174 mips*)
175 MODEL=`/bin/archdetect`
176 case "$MODEL" in
177 # big endian
178 mips/r4k-ip22) trykernel=kernel-image-*-r4k-ip22 ;;
179 mips/r5k-ip22) trykernel=kernel-image-*-r5k-ip22 ;;
180
181 # little endian
182 mipsel/r3k-kn02) trykernel=kernel-image-*-r3k-kn02 ;;
183 mipsel/r4k-kn04) trykernel=kernel-image-*-r4k-kn04 ;;
184
185 # sorry, no luck
186 *) log "warning: Unknown $ARCH subarchitecture '$MODEL'." ;;
187 esac
188 ;;
189 ia64)
190 version=2.4.20 #hack, hack!
191 # Running a UP kernel for install atm, so don't know how to detect
192 # whether SMP is needed. Assume SMP for now.
193 if grep -q Itanium /proc/cpuinfo; then
194 family=itanium
195 else
196 family=mckinley
197 fi
198 trykernel=kernel-image-$version-$family-smp
199 ;;
200 *)
201 log "warning: Unknown architecture '$ARCH'."
202 ;;
203 esac
204
205 if kernel_present $trykernel ; then
206 kernel=$trykernel
207 fi
208
209 rm -f $kernel_list
210
211 if [ "$kernel" ] ; then
212 db_set kernel-installer/which-kernel "$kernel"
213 fi
214
215 db_input medium kernel-installer/which-kernel || [ $? -eq 30 ]
216 db_go || true
217
218 db_get kernel-installer/which-kernel
219 kernel=$RET
220
221 info "Using kernel '$kernel'"
222
223 # Pass the kernel name on to kernel-installer
224 db_set debian-installer/kernel/image "$kernel"
225
226 db_progress STEP 1
227 db_progress INFO kernel-installer/progress/step_config
228
229 # =================== Install the kernel =========================
230
231 if db_get debian-installer/kernel/linux/initrd ; then
232 if [ "$RET" = "true" ]; then
233 do_initrd=yes
234 else
235 do_initrd=no
236 fi
237 else
238 warning "Failed to get debconf answer 'debian-installer/kernel/linux/initrd'."
239 warning "Setting default do_initrd='yes'."
240 do_initrd=yes
241 fi
242
243 if db_get debian-installer/kernel/linux/link_in_boot ; then
244 if [ "$RET" = "true" ]; then
245 link_in_boot=yes
246 else
247 link_in_boot=no
248 fi
249 else
250 warning "Failed to get debconf answer 'debian-installer/kernel/linux/link_in_boot'."
251 warning "Setting default link_in_boot='no'."
252 link_in_boot=no
253 fi
254
255 info "Setting do_initrd='$do_initrd'."
256 info "Setting link_in_boot='$link_in_boot'."
257
258 if [ -f /target/etc/kernel-img.conf ]; then
259 # Backup old kernel-img.conf
260 mv /target/etc/kernel-img.conf /target/etc/kernel-img.conf.$$
261 fi
262
263 cat > /target/etc/kernel-img.conf <<EOF
264 # Do not create symbolic links in /
265 do_symlinks = yes
266 relative_links = yes
267 do_bootloader = no
268 do_bootfloppy = no
269 do_initrd = $do_initrd
270 link_in_boot = $link_in_boot
271 EOF
272
273 if [ yes = "$do_initrd" ] ; then
274 # Make sure initrd-tools is installed before we change its configuration
275 if ! apt-install initrd-tools 2>> $logfile ; then
276 error "Failed to download initrd tools!"
277
278 # TODO: This needs a new debconf template after the string freeze.
279 #db_input critical kernel-installer/failed-initrd-tools-install || [ $? -eq 30 ]
280 #db_go
281 db_progress STOP
282 exit 1
283 fi
284
285 # Avoid possible root shell without giving passord while booting
286 # the 2.4 kernel
287 mkinitrdconf=/target/etc/mkinitrd/mkinitrd.conf
288 if [ -f $mkinitrdconf ] ; then
289 sed 's/^DELAY=.*/DELAY=0/' < $mkinitrdconf > $mkinitrdconf.new &&
290 mv $mkinitrdconf.new $mkinitrdconf
291 else
292 echo 'DELAY=0' >> $mkinitrdconf
293 fi
294 fi
295
296 if db_get debian-installer/kernel/image ; then
297 if [ -z "$RET" ] ; then
298 error "Empty value in 'debian-installer/kernel/image'!"
299 error "Unable to install kernel."
300
301 db_input critical kernel-installer/no-kernel || [ $? -eq 30 ]
302 db_go
303 db_progress STOP
304 if [ -f /target/etc/kernel-img.conf.$$ ]; then
305 # Revert old kernel-img.conf
306 mv /target/etc/kernel-img.conf.$$ /target/etc/kernel-img.conf
307 fi
308 exit 1
309 fi
310 kernel="$RET"
311 else
312 warning "Unable to get debconf answer debian-installer/kernel/image."
313 kernel=kernel-image
314 warning "Setting default kernel='$kernel'"
315 fi
316
317 db_progress STEP 1
318 db_subst kernel-installer/progress/step_install KERNEL "$kernel"
319 db_progress INFO kernel-installer/progress/step_install
320
321 info "Installing kernel '$kernel'."
322
323 if ! apt-install "$kernel" 2>> $logfile ; then
324 db_subst kernel-installer/failed-install KERNEL "$kernel"
325 db_input critical kernel-installer/failed-install || [ $? -eq 30 ]
326 db_go
327 db_progress STOP
328 if [ -f /target/etc/kernel-img.conf.$$ ]; then
329 # Revert old kernel-img.conf
330 mv /target/etc/kernel-img.conf.$$ /target/etc/kernel-img.conf
331 fi
332 exit 1
333 fi
334
335 if [ -f /target/etc/kernel-img.conf.$$ ]; then
336 # Revert old kernel-img.conf
337 mv /target/etc/kernel-img.conf.$$ /target/etc/kernel-img.conf
338 fi
339
340 db_progress STEP 1
341 if [ "$separate_pcmcia_modules" = y ]; then
342 pcmcia_package=$(echo "$kernel" | sed 's/^kernel-image/kernel-pcmcia-modules/')
343 info "Installing pcmcia package '$pcmcia_package'."
344 # TODO uncomment this once string freeze is over and
345 # templates file is updated.
346 #db_subst kernel-installer/progress/step_install_pcmcia PACKAGE "$pcmcia_package"
347 #db_progress INFO kernel-installer/progress/step_install_pcmcia
348 if ! apt-install "$pcmcia_package" 2>> $logfile ; then
349 :
350 # TODO uncomment this once string freeze is over and
351 # templates file is updated.
352 #db_subst kernel-installer/failed-pcmcia-install PACKAGE "$pcmcia_package"
353 #db_input critical kernel-installer/failed-pcmcia-install || [ $? -eq 30 ]
354 #db_go
355 #db_progress STOP
356 #exit 1
357 fi
358 fi
359
360 db_progress STEP 1
361 db_progress STOP
362
363 exit 0

  ViewVC Help
Powered by ViewVC 1.1.5