Annotation of /trunk/mlivecdbuild/mlivecdbuild.sh
Parent Directory | Revision Log
Revision 26 -
(hide annotations)
(download)
(as text)
Wed Jan 5 05:29:26 2005 UTC (19 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 29737 byte(s)
Wed Jan 5 05:29:26 2005 UTC (19 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 29737 byte(s)
mlivecdbuild-0.3.6-r7 import
1 | niro | 26 | #!/bin/bash |
2 | |||
3 | # | ||
4 | # Builds Magellan Livecd's 0.3.6-r7 | ||
5 | # | ||
6 | |||
7 | source /etc/sysconfig/rc | ||
8 | source $rc_functions | ||
9 | |||
10 | ### setup ### | ||
11 | export LIVECDROOT=/mnt/mlivecdbuild-0.3.6-r7 | ||
12 | export CDCHROOTDIR=${LIVECDROOT}/chroot | ||
13 | export CDISOROOT=${LIVECDROOT}/isoroot | ||
14 | export CDMAGEDIR=${LIVECDROOT}/files/mage-src | ||
15 | export CDMAGERC=${CDMAGEDIR}/mage.rc | ||
16 | export CDISONAME=magellan-livecd-i486.iso | ||
17 | export CDHOSTNAME=magellan-i486 | ||
18 | export CDTOOLCHAIN=${LIVECDROOT}/files/magellan-toolchain-0.3-i486.tar.bz2 | ||
19 | export CDLAYOUTDIR=${LIVECDROOT}/files/ | ||
20 | |||
21 | ###export CDLAYOUTFILE=magellan_layout-i486 | ||
22 | export CDLAYOUTFILE=magellan_layout-i686-mage-0.3.99-r1-kernel26 | ||
23 | |||
24 | |||
25 | #usbstick: vfat doesn't like CAPS and strings longer than 8 chars | ||
26 | export CDID=cdid | ||
27 | export VERSION=0.3.6-r7 | ||
28 | export CDINITRD=${LIVECDROOT}/mntinitrd | ||
29 | export CDISOLOOP=${LIVECDROOT}/isoloop | ||
30 | #export CDISOLOOPSIZE=400000 | ||
31 | #autodeterminate loopsize + 20MB will be used later in script | ||
32 | #export CDISOLOOPSIZE="$(expr 20000 + $(du -Ds ${CDCHROOTDIR}|cut -d 'c' -f1))" | ||
33 | #kernel 2.4.22 needs cloop-1.02, smaller or above will not work >:/ *grrr* | ||
34 | export CLOOPFILE=cloop-1.02-precompiled.tar.bz2 | ||
35 | export CLOOPDIR=cloop-1.02 | ||
36 | |||
37 | #busybox-0.60.3 is official stable | ||
38 | #export BUSYBOXFILE=busybox-0.60.3-precompiled.tar.bz2 | ||
39 | #export BUSYBOXDIR=busybox-0.60.3 | ||
40 | export BUSYBOXFILE=busybox-1.00-precompiled.tar.bz2 | ||
41 | export BUSYBOXDIR=busybox-1.00 | ||
42 | |||
43 | export SEDFILE=sed-4.0.9-static.tar.bz2 | ||
44 | export SEDDIR=sed-4.0.9 | ||
45 | |||
46 | #kernelname must be the same in the isolinux.cfg/syslinux.cfg | ||
47 | CDKERNELNAME=magelive | ||
48 | ############### | ||
49 | |||
50 | #small fix: livecdkernel | ||
51 | |||
52 | #global settings# | ||
53 | ################# | ||
54 | |||
55 | |||
56 | #user settings# | ||
57 | ############### | ||
58 | CDMAGEPROFILE=mage040-26 | ||
59 | |||
60 | #if you want use cloop | ||
61 | #CDCOMPRESS_METHOD=cloop | ||
62 | |||
63 | #if you want use squashfs | ||
64 | CDCOMPRESS_METHOD=squashfs | ||
65 | |||
66 | ### functions ### | ||
67 | |||
68 | die() { | ||
69 | DIE="yes" | ||
70 | } | ||
71 | |||
72 | secho() { | ||
73 | local I | ||
74 | I="$@" | ||
75 | echo -e "\n${COLOREDSTAR}${I}" | ||
76 | } | ||
77 | |||
78 | mecho() { | ||
79 | local I | ||
80 | I="$@" | ||
81 | echo -e "${COLMAGENTA}\t${I}${COLDEFAULT}" | ||
82 | } | ||
83 | |||
84 | showversion() { | ||
85 | echo -en "Magellan LiveCD Generate v${VERSION} " | ||
86 | echo -e "-- Niels Rogalla (niro@magellan-linux.de)" | ||
87 | } | ||
88 | |||
89 | create_chrootdirs() { | ||
90 | #creating directories | ||
91 | mkdir -p ${CDCHROOTDIR}/{bin,boot,dev/shm,etc,home,lib/dev-state,mnt,proc} \ | ||
92 | &>/dev/null || die | ||
93 | mkdir -p ${CDCHROOTDIR}/etc/{opt,env.d} &>/dev/null || die | ||
94 | mkdir -p ${CDCHROOTDIR}/mnt/{floppy,cdrom,magellan} &>/dev/null || die | ||
95 | mkdir -p ${CDCHROOTDIR}/{root,sbin,tmp,usr/local,var,opt} &>/dev/null || die | ||
96 | for dirname in ${CDCHROOTDIR}/usr ${CDCHROOTDIR}/usr/local | ||
97 | do | ||
98 | mkdir $dirname/{bin,etc,include,lib,sbin,share,src} &>/dev/null || die | ||
99 | ln -s share/{man,doc,info} $dirname &>/dev/null || die | ||
100 | mkdir $dirname/share/{dict,doc,info,locale,man} &>/dev/null || die | ||
101 | mkdir $dirname/share/{nls,misc,terminfo,zoneinfo} &>/dev/null || die | ||
102 | mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8} &>/dev/null || die | ||
103 | done | ||
104 | mkdir ${CDCHROOTDIR}/var/{lock,log,mail,run,spool} &>/dev/null || die | ||
105 | mkdir -p ${CDCHROOTDIR}/var/{tmp,opt,cache,lib/misc,local} &>/dev/null || die | ||
106 | mkdir ${CDCHROOTDIR}/opt/{bin,doc,include,info} &>/dev/null || die | ||
107 | mkdir -p ${CDCHROOTDIR}/opt/{lib,man/man{1,2,3,4,5,6,7,8}} &>/dev/null || die | ||
108 | |||
109 | chmod 0750 ${CDCHROOTDIR}/root &> /dev/null || die | ||
110 | chmod 1777 ${CDCHROOTDIR}/tmp &> /dev/null || die | ||
111 | chmod 1777 ${CDCHROOTDIR}/var/tmp &> /dev/null || die | ||
112 | |||
113 | ## creating .keep files | ||
114 | touch ${CDCHROOTDIR}/{bin,boot,dev/shm,etc,home,lib/dev-state,mnt,proc}/.keep \ | ||
115 | &>/dev/null || die | ||
116 | touch ${CDCHROOTDIR}/etc/{opt,env.d}/.keep &>/dev/null || die | ||
117 | touch ${CDCHROOTDIR}/mnt/{floppy,cdrom}/.keep &>/dev/null || die | ||
118 | touch ${CDCHROOTDIR}/dev/.keep &>/dev/null || die | ||
119 | touch ${CDCHROOTDIR}/etc/.keep &>/dev/null || die | ||
120 | touch ${CDCHROOTDIR}/{root,sbin,tmp,usr/local,var,opt}/.keep &>/dev/null || die | ||
121 | touch ${CDCHROOTDIR}/usr/.keep &>/dev/null || die | ||
122 | for dirname in ${CDCHROOTDIR}/usr ${CDCHROOTDIR}/usr/local | ||
123 | do | ||
124 | touch $dirname/{bin,etc,include,lib,sbin,share,src}/.keep &>/dev/null || die | ||
125 | touch $dirname/share/{dict,doc,info,locale,man}/.keep &>/dev/null || die | ||
126 | touch $dirname/share/{nls,misc,terminfo,zoneinfo}/.keep &>/dev/null || die | ||
127 | touch $dirname/share/man/man{1,2,3,4,5,6,7,8}/.keep &>/dev/null || die | ||
128 | done | ||
129 | touch ${CDCHROOTDIR}/var/.keep &>/dev/null || die | ||
130 | touch ${CDCHROOTDIR}/var/{lock,log,mail,run,spool}/.keep &>/dev/null || die | ||
131 | touch ${CDCHROOTDIR}/var/{tmp,opt,cache,lib/misc,local}/.keep &>/dev/null || die | ||
132 | touch ${CDCHROOTDIR}/opt/.keep &>/dev/null || die | ||
133 | touch ${CDCHROOTDIR}/opt/{bin,doc,include,info}/.keep &>/dev/null || die | ||
134 | touch ${CDCHROOTDIR}/opt/{lib,man/man{1,2,3,4,5,6,7,8}}/.keep &>/dev/null || die | ||
135 | touch ${CDCHROOTDIR}/opt/man/.keep &>/dev/null || die | ||
136 | |||
137 | ##Creating the bash and sh symlinks | ||
138 | ln -s /tools/bin/{bash,cat,pwd,stty} ${CDCHROOTDIR}/bin &>/dev/null || die | ||
139 | ln -s /tools/bin/perl ${CDCHROOTDIR}/usr/bin &>/dev/null || die | ||
140 | ln -s /tools/lib/libgcc_s.so.1 ${CDCHROOTDIR}/usr/lib &>/dev/null || die | ||
141 | ln -s bash ${CDCHROOTDIR}/bin/sh &>/dev/null || die | ||
142 | #needed by >=mage-0.3.4-r2 | ||
143 | ln -s /tools/bin/{basename,cut,fgrep,grep} ${CDCHROOTDIR}/bin &>/dev/null || die | ||
144 | ln -s /tools/bin/whoami ${CDCHROOTDIR}/usr/bin &>/dev/null || die | ||
145 | #needed by >=mage-0.3.6-r2 | ||
146 | ln -s /tools/bin/{date,ls,egrep,wc} ${CDCHROOTDIR}/bin &>/dev/null || die | ||
147 | ln -s /tools/sbin/ldconfig ${CDCHROOTDIR}/sbin/ldconfig &>/dev/null || die | ||
148 | |||
149 | #needed by >=mage-0.3.6-r6 | ||
150 | touch ${CDCHROOTDIR}/etc/env.d/dummy || die | ||
151 | touch ${CDCHROOTDIR}/etc/profile || die | ||
152 | ln -s /tools/bin/sed ${CDCHROOTDIR}/bin || die | ||
153 | ln -s /tools/bin/dirname ${CDCHROOTDIR}/usr/bin || die | ||
154 | |||
155 | if [ -n "${DIE}" ] | ||
156 | then | ||
157 | return 1 | ||
158 | else | ||
159 | return 0 | ||
160 | fi | ||
161 | } | ||
162 | |||
163 | chroot_generate() { | ||
164 | secho Generating Chroot ... | ||
165 | |||
166 | mecho Creating chroot directory ... | ||
167 | mkdir -p ${CDCHROOTDIR} || die | ||
168 | evaluate_retval | ||
169 | |||
170 | mecho Unpacking toolchain ... | ||
171 | if [ "${CDTOOLCHAIN##*.}" == "bz2" ] | ||
172 | then | ||
173 | tar xjpmf ${CDTOOLCHAIN} -C ${CDCHROOTDIR} | ||
174 | evaluate_retval | ||
175 | fi | ||
176 | |||
177 | if [ "${CDTOOLCHAIN##*.}" == "gz" ] | ||
178 | then | ||
179 | tar xzpmf ${CDTOOLCHAIN} -C ${CDCHROOTDIR} | ||
180 | evaluate_retval | ||
181 | fi | ||
182 | |||
183 | mecho Changing ownership of the toolchain ... | ||
184 | chown -R 0:0 ${CDCHROOTDIR}/tools | ||
185 | evaluate_retval | ||
186 | |||
187 | mecho Creating directories and symlinks ... | ||
188 | create_chrootdirs | ||
189 | evaluate_retval | ||
190 | |||
191 | mecho Creating needed devices for devfs ... | ||
192 | ( mknod -m 611 ${CDCHROOTDIR}/dev/console c 5 1 &>/dev/null && \ | ||
193 | chgrp 4 ${CDCHROOTDIR}/dev/console &>/dev/null && | ||
194 | mknod -m 666 ${CDCHROOTDIR}/dev/null c 1 3 &>/dev/null ) | ||
195 | evaluate_retval | ||
196 | |||
197 | mecho Creating basic passwd file ... | ||
198 | cat > ${CDCHROOTDIR}/etc/passwd << "EOF" | ||
199 | root:x:0:0:root:/root:/bin/bash | ||
200 | EOF | ||
201 | evaluate_retval | ||
202 | |||
203 | mecho Creating basic groups file ... | ||
204 | cat > ${CDCHROOTDIR}/etc/group << "EOF" | ||
205 | root:x:0: | ||
206 | bin:x:1: | ||
207 | sys:x:2: | ||
208 | kmem:x:3: | ||
209 | tty:x:4: | ||
210 | tape:x:5: | ||
211 | daemon:x:6: | ||
212 | floppy:x:7: | ||
213 | disk:x:8: | ||
214 | lp:x:9: | ||
215 | dialout:x:10: | ||
216 | audio:x:11: | ||
217 | EOF | ||
218 | evaluate_retval | ||
219 | |||
220 | #touch ${LIVECDROOT}/.chrootok | ||
221 | } | ||
222 | |||
223 | enter_chroot() { | ||
224 | secho Entering Chroot ... | ||
225 | mount proc ${CDCHROOTDIR}/proc -t proc | ||
226 | mount devfs ${CDCHROOTDIR}/dev -t devfs | ||
227 | |||
228 | getstate | ||
229 | if [ "${CDSTATE}" != "null" ] | ||
230 | then | ||
231 | chroot ${CDCHROOTDIR} /usr/bin/env -i \ | ||
232 | HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ | ||
233 | PATH=/bin:/usr/bin:/sbin:/usr/sbin \ | ||
234 | /bin/bash -i | ||
235 | else | ||
236 | chroot ${CDCHROOTDIR} /tools/bin/env -i \ | ||
237 | HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ | ||
238 | PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ | ||
239 | /tools/bin/bash -i | ||
240 | fi | ||
241 | |||
242 | secho Unmounting Chroot filesystems ... | ||
243 | ( umount ${CDCHROOTDIR}/proc && \ | ||
244 | umount ${CDCHROOTDIR}/dev ) | ||
245 | evaluate_retval | ||
246 | } | ||
247 | |||
248 | install_mage_bashrc() { | ||
249 | cat >> ${CDCHROOTDIR}/root/.bashrc << "EOF" | ||
250 | #secho Installing MAGE ... | ||
251 | |||
252 | #not needed anymore | ||
253 | #mecho Creating MAGE directories ... | ||
254 | #( source /bootstrap/mage.rc && \ | ||
255 | # install -d ${PKGDIR} && \ | ||
256 | # install -d ${BUILDDIR} && \ | ||
257 | # install -d ${INSTALLDB} && \ | ||
258 | # install -d ${MAGEDIR} && \ | ||
259 | # install -d /etc && \ | ||
260 | # install -d /sbin && \ | ||
261 | # install -d /usr/lib/mage ) | ||
262 | #evaluate_retval | ||
263 | |||
264 | #not needed anymore | ||
265 | #mecho Installing MAGE files ... | ||
266 | #( install -m0755 --owner root --group root \ | ||
267 | # /bootstrap/{depwanderer.sh,mage3.sh,mage3.functions.sh} \ | ||
268 | # /usr/lib/mage && \ | ||
269 | # ln -s /usr/lib/mage/mage3.sh /sbin/mage && \ | ||
270 | # install -m0644 /bootstrap/mage.rc /etc ) | ||
271 | #evaluate_retval | ||
272 | |||
273 | mecho Updating MAGE tree ... | ||
274 | mage update &> /dev/null | ||
275 | evaluate_retval | ||
276 | EOF | ||
277 | } | ||
278 | |||
279 | install_cdlayout_bashrc() { | ||
280 | cat >> ${CDCHROOTDIR}/root/.bashrc << "EOF" | ||
281 | secho Installing CD Layout ... | ||
282 | for package in $(cat /bootstrap/${CDLAYOUTFILE}) | ||
283 | do | ||
284 | if [ -n "$package" ] | ||
285 | then | ||
286 | mecho Installing ${package} | ||
287 | #unset CONFIG_PROTECT and install | ||
288 | CONFIG_PROTECT="-*" /sbin/mage install ${package} #&> /dev/null | ||
289 | #echo "debug: next" | ||
290 | #read | ||
291 | evaluate_retval | ||
292 | fi | ||
293 | done | ||
294 | |||
295 | #needed for >=mage-0.3.6 | ||
296 | mecho Running etc-update ... | ||
297 | etc-update | ||
298 | evaluate_retval | ||
299 | |||
300 | mecho Cleaning MAGE tree ... | ||
301 | /sbin/mage clean &> /dev/null | ||
302 | evaluate_retval | ||
303 | |||
304 | secho CD Layout Installation complete. | ||
305 | EOF | ||
306 | } | ||
307 | |||
308 | import_functions_bashrc() { | ||
309 | cat ${rc_functions} > ${CDCHROOTDIR}/root/.bashrc | ||
310 | cat >> ${CDCHROOTDIR}/root/.bashrc << "EOF" | ||
311 | die() { | ||
312 | DIE="yes" | ||
313 | } | ||
314 | secho() { | ||
315 | local I | ||
316 | I="$@" | ||
317 | echo -e "\n${COLOREDSTAR}${I}" | ||
318 | } | ||
319 | mecho() { | ||
320 | local I | ||
321 | I="$@" | ||
322 | echo -e "${COLMAGENTA}\t${I}${COLDEFAULT}" | ||
323 | } | ||
324 | EOF | ||
325 | echo "export CDLAYOUTFILE=${CDLAYOUTFILE}" \ | ||
326 | >> ${CDCHROOTDIR}/root/.bashrc | ||
327 | echo "export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin" \ | ||
328 | >> ${CDCHROOTDIR}/root/.bashrc | ||
329 | } | ||
330 | |||
331 | cleanup_chrootdir() { | ||
332 | secho Cleaning up Chroot directory ... | ||
333 | |||
334 | mecho Deleting bootstrap files ... | ||
335 | rm -rf ${CDCHROOTDIR}/bootstrap | ||
336 | evaluate_retval | ||
337 | |||
338 | mecho Deleting toolchain ... | ||
339 | rm -rf ${CDCHROOTDIR}/tools | ||
340 | evaluate_retval | ||
341 | |||
342 | mecho Deleting bootstrap scripts ... | ||
343 | ( rm -rf ${CDCHROOTDIR}/root/.bashrc | ||
344 | rm -rf ${CDCHROOTDIR}/root/.bash_history ) | ||
345 | evaluate_retval | ||
346 | |||
347 | touch ${LIVECDROOT}/.chcleanedok | ||
348 | } | ||
349 | |||
350 | build_bootstrap() { | ||
351 | secho Preparing Chroot ... | ||
352 | mecho Copy MAGE files to Chroot ... | ||
353 | #( mkdir ${CDCHROOTDIR}/bootstrap && \ | ||
354 | # cp ${CDMAGEDIR}/{depwanderer.sh,mage3.sh,mage3.functions.sh} \ | ||
355 | # ${CDCHROOTDIR}/bootstrap && \ | ||
356 | # cp ${CDMAGERC} ${CDCHROOTDIR}/bootstrap ) | ||
357 | ( install -d ${CDCHROOTDIR}/bootstrap && \ | ||
358 | cp -R ${CDMAGEDIR}/* ${CDCHROOTDIR}/bootstrap ) | ||
359 | evaluate_retval | ||
360 | |||
361 | #installing mage to CDCHROOTDIR | ||
362 | mecho Installing Mage ... | ||
363 | ( chmod 0755 ${CDCHROOTDIR}/bootstrap/setup_mage.sh && \ | ||
364 | ${CDCHROOTDIR}/bootstrap/setup_mage.sh \ | ||
365 | ${CDCHROOTDIR} ${CDCHROOTDIR}/bootstrap ${CDMAGERC} ${CDMAGEPROFILE} ) | ||
366 | evaluate_retval | ||
367 | |||
368 | mecho Creating taskfile ... | ||
369 | ( import_functions_bashrc && \ | ||
370 | install_mage_bashrc && \ | ||
371 | install_cdlayout_bashrc && \ | ||
372 | echo "exit" >> ${CDCHROOTDIR}/root/.bashrc ) | ||
373 | evaluate_retval | ||
374 | |||
375 | mecho Copy CD layout files ... | ||
376 | cp ${CDLAYOUTDIR}/${CDLAYOUTFILE} ${CDCHROOTDIR}/bootstrap | ||
377 | evaluate_retval | ||
378 | |||
379 | mecho Mounting Chroot filesystems ... | ||
380 | ( mount proc ${CDCHROOTDIR}/proc -t proc && \ | ||
381 | mount devfs ${CDCHROOTDIR}/dev -t devfs ) | ||
382 | evaluate_retval | ||
383 | |||
384 | secho Starting bootstrap ... | ||
385 | chroot ${CDCHROOTDIR} /tools/bin/env -i \ | ||
386 | HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ | ||
387 | PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ | ||
388 | /tools/bin/bash -i | ||
389 | |||
390 | mecho Unmounting Chroot filesystems ... | ||
391 | ( umount ${CDCHROOTDIR}/proc && \ | ||
392 | umount ${CDCHROOTDIR}/dev ) | ||
393 | evaluate_retval | ||
394 | |||
395 | touch ${LIVECDROOT}/.bootstrapok | ||
396 | } | ||
397 | |||
398 | |||
399 | ############# new initrd style with busybox and cloop support ###################### | ||
400 | build_initrd() { | ||
401 | secho Building initrd ... | ||
402 | |||
403 | if [ -e ${LIVECDROOT}/initrd ] | ||
404 | then | ||
405 | mecho Removing old initrd | ||
406 | rm -f ${LIVECDROOT}/initrd | ||
407 | fi | ||
408 | |||
409 | if [ -e ${LIVECDROOT}/initrd.gz ] | ||
410 | then | ||
411 | mecho Removing old initrd.gz | ||
412 | rm -f ${LIVECDROOT}/initrd.gz | ||
413 | fi | ||
414 | |||
415 | if [ -d ${LIVECDROOT}/tmp/${CLOOPDIR} ] | ||
416 | then | ||
417 | mecho Removing old cloop files | ||
418 | rm -rf ${LIVECDROOT}/tmp/${CLOOPDIR} | ||
419 | fi | ||
420 | |||
421 | if [ -d ${LIVECDROOT}/tmp/${BUSYBOXDIR} ] | ||
422 | then | ||
423 | mecho Removing old busybox files | ||
424 | rm -rf ${LIVECDROOT}/tmp/${BUSYBOXDIR} | ||
425 | fi | ||
426 | |||
427 | mecho Unpacking needed files ... | ||
428 | ( mkdir -p ${LIVECDROOT}/tmp && \ | ||
429 | tar xjf ${CDLAYOUTDIR}/${CLOOPFILE} -C ${LIVECDROOT}/tmp && \ | ||
430 | tar xjf ${CDLAYOUTDIR}/${BUSYBOXFILE} -C ${LIVECDROOT}/tmp ) | ||
431 | evaluate_retval | ||
432 | |||
433 | mecho Creating Image file ... | ||
434 | dd if=/dev/zero of=${LIVECDROOT}/initrd bs=1024 count=6144 \ | ||
435 | &> /dev/null | ||
436 | evaluate_retval | ||
437 | |||
438 | mecho Formating Image file ... | ||
439 | mke2fs -m 0 -i 1024 -F ${LIVECDROOT}/initrd &> /dev/null | ||
440 | evaluate_retval | ||
441 | |||
442 | mecho Mounting Image file ... | ||
443 | ( mkdir -p ${CDINITRD} && \ | ||
444 | mount -o loop ${LIVECDROOT}/initrd ${CDINITRD} ) | ||
445 | evaluate_retval | ||
446 | |||
447 | mecho Creating basic filesystem ... | ||
448 | ( mkdir -p ${CDINITRD}/{bin,etc/conf.d,lib/modules/misc,dev/pts,proc,mnt,usr,sys} && \ | ||
449 | cat > ${CDINITRD}/etc/fstab << "EOF" | ||
450 | /dev/ram0 / cramfs defaults | ||
451 | proc /proc proc defaults 0 0 | ||
452 | EOF | ||
453 | #installing cloop | ||
454 | cp ${LIVECDROOT}/tmp/${CLOOPDIR}/cloop.o ${CDINITRD}/lib/modules/misc && \ | ||
455 | |||
456 | #installing busybox | ||
457 | cp ${LIVECDROOT}/tmp/${BUSYBOXDIR}/busybox ${CDINITRD}/bin && \ | ||
458 | chmod 0755 ${CDINITRD}/bin/busybox && \ | ||
459 | for i in '[' ash basename cat cut chroot clear cp dirname echo env false find \ | ||
460 | grep gunzip gzip insmod ln ls loadkmap losetup lsmod mkdir mknod modprobe more mount mv \ | ||
461 | pivot_root ps pwd rm rmdir rmmod sh sleep tar test touch true umount uname \ | ||
462 | xargs yes zcat chmod chown | ||
463 | do | ||
464 | rm -f ${CDINITRD}/bin/$i | ||
465 | ln ${CDINITRD}/bin/busybox ${CDINITRD}/bin/$i | ||
466 | done && \ | ||
467 | #symlink bin to sbin -> init inmod resist normally in sbin | ||
468 | ln -s bin ${CDINITRD}/sbin && \ | ||
469 | ln -s ../bin ${CDINITRD}/usr/bin && \ | ||
470 | ln -s ../bin ${CDINITRD}/usr/sbin && \ | ||
471 | bzcat ${CDLAYOUTDIR}/MAKEDEV-1.7.bz2 > \ | ||
472 | ${CDCHROOTDIR}/dev/MAKEDEV && \ | ||
473 | chmod 754 ${CDCHROOTDIR}/dev/MAKEDEV && \ | ||
474 | cd ${CDCHROOTDIR}/dev && \ | ||
475 | ./MAKEDEV -v generic-nopty &> /dev/null && \ | ||
476 | cd ${LIVECDROOT} && \ | ||
477 | mknod -m 600 ${CDINITRD}/dev/console c 5 1 && \ | ||
478 | mknod -m 666 ${CDINITRD}/dev/null c 1 3 | ||
479 | cp ${CDCHROOTDIR}/etc/conf.d/kernel ${CDINITRD}/etc/conf.d/kernel ) | ||
480 | evaluate_retval | ||
481 | |||
482 | # need udev ? | ||
483 | if [ -f ${CDCHROOTDIR}/sbin/udev.static ] | ||
484 | then | ||
485 | mecho Installing udev support ... | ||
486 | ( cp ${CDCHROOTDIR}/sbin/udev.static ${CDINITRD}/sbin/udev && \ | ||
487 | cp ${CDCHROOTDIR}/sbin/udevd.static ${CDINITRD}/sbin/udevd && \ | ||
488 | cp ${CDCHROOTDIR}/sbin/udevsend.static ${CDINITRD}/sbin/udevsend && \ | ||
489 | cp ${CDCHROOTDIR}/sbin/wait_for_sysfs.static ${CDINITRD}/sbin/wait_for_sysfs && \ | ||
490 | cp ${CDCHROOTDIR}/sbin/scsi_id.static ${CDINITRD}/sbin/scsi_id && \ | ||
491 | cp ${CDCHROOTDIR}/sbin/udev_volume_id.static ${CDINITRD}/sbin/udev_volume_id && \ | ||
492 | cp ${CDCHROOTDIR}/etc/scsi_id.config ${CDINITRD}/etc && \ | ||
493 | mkdir -p ${CDINITRD}/etc/hotplug.d/default && \ | ||
494 | ln -snf ../../../sbin/udevsend ${CDINITRD}/etc/hotplug.d/default/10-udev.hotplug && \ | ||
495 | ln -snf ../../../sbin/wait_for_sysfs ${CDINITRD}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug && \ | ||
496 | ln -s /sbin/udev ${CDINITRD}/sbin/udevstart && \ | ||
497 | cp -a ${CDCHROOTDIR}/etc/udev ${CDINITRD}/etc/ ) | ||
498 | evaluate_retval | ||
499 | fi | ||
500 | |||
501 | #install modules | ||
502 | install -d ${CDINITRD}/modules | ||
503 | source ${CDISOROOT}/isolinux/kernelversion | ||
504 | CDMODDIR=${CDCHROOTDIR}/lib/modules/${KRNLIB}/kernel | ||
505 | |||
506 | if [ -e ${CDLAYOUTDIR}/mods_scsi ] | ||
507 | then | ||
508 | mecho "Installing scsi modules" | ||
509 | install -d ${CDINITRD}/modules/scsi | ||
510 | for i in $(< ${CDLAYOUTDIR}/mods_scsi) | ||
511 | do | ||
512 | #cp -a ${CDMODDIR}/scsi/${i}.* ${CDINITRD}/modules/scsi | ||
513 | find ${CDMODDIR} -type f -name ${i}* -exec cp -a '{}' ${CDINITRD}/modules/scsi ';' | ||
514 | done | ||
515 | cat ${CDLAYOUTDIR}/mods_scsi > ${CDINITRD}/mods_scsi | ||
516 | fi | ||
517 | |||
518 | if [ -e ${CDLAYOUTDIR}/mods_usb ] | ||
519 | then | ||
520 | mecho "Installing usb modules" | ||
521 | install -d ${CDINITRD}/modules/usb | ||
522 | for i in $(< ${CDLAYOUTDIR}/mods_usb) | ||
523 | do | ||
524 | #cp -a ${CDMODDIR}/usb/${i}.* ${CDINITRD}/modules/usb | ||
525 | find ${CDMODDIR} -type f -name ${i}* -exec cp -a '{}' ${CDINITRD}/modules/usb ';' | ||
526 | done | ||
527 | cat ${CDLAYOUTDIR}/mods_usb > ${CDINITRD}/mods_usb | ||
528 | fi | ||
529 | |||
530 | #install insmod | ||
531 | #[ -L ${CDINITRD}/bin/insmod ] && rm ${CDINITRD}/bin/insmod | ||
532 | cp -a ${CDCHROOTDIR}/sbin/insmod.static ${CDINITRD}/bin/insmod.static | ||
533 | cp -a ${CDCHROOTDIR}/sbin/insmod.static.old ${CDINITRD}/bin/insmod.static.old | ||
534 | |||
535 | #install passwd & group file | ||
536 | install -d ${CDINITRD}/etc | ||
537 | cat ${CDCHROOTDIR}/etc/passwd > ${CDINITRD}/etc/passwd | ||
538 | cat ${CDCHROOTDIR}/etc/group > ${CDINITRD}/etc/group | ||
539 | |||
540 | |||
541 | #install static sed | ||
542 | install -d ${CDINITRD}/bin | ||
543 | tar xjf ${CDLAYOUTDIR}/${SEDFILE} -C ${LIVECDROOT}/tmp | ||
544 | cp ${LIVECDROOT}/tmp/${SEDDIR}/sed ${CDINITRD}/bin | ||
545 | |||
546 | mecho Creating linuxrc ... | ||
547 | ( cat ${CDLAYOUTDIR}/linuxrc > ${CDINITRD}/linuxrc && \ | ||
548 | chmod 0755 ${CDINITRD}/linuxrc ) | ||
549 | evaluate_retval | ||
550 | |||
551 | mecho Unmounting Image file ... | ||
552 | umount ${CDINITRD} | ||
553 | evaluate_retval | ||
554 | |||
555 | mecho Compressing Image file | ||
556 | gzip -9 ${LIVECDROOT}/initrd | ||
557 | evaluate_retval | ||
558 | |||
559 | touch ${LIVECDROOT}/.initrdok | ||
560 | } | ||
561 | ######################################################################################### | ||
562 | |||
563 | |||
564 | prepare_iso() { | ||
565 | secho Preparing LiveCD ISO Image ... | ||
566 | |||
567 | if [ -e ${LIVECDROOT}/${CDISONAME} ] | ||
568 | then | ||
569 | mecho Removing old cdimage | ||
570 | rm -f ${LIVECDROOT}/${CDISONAME} | ||
571 | fi | ||
572 | |||
573 | # mecho Preparing Chroot ... | ||
574 | # ( mkdir -p ${CDCHROOTDIR}/fake/{needwrite,ramdisk} && \ | ||
575 | # touch ${CDCHROOTDIR}/fake/{needwrite,ramdisk}/.keep && \ | ||
576 | # for i in dev etc var tmp root home | ||
577 | # do | ||
578 | # mv ${CDCHROOTDIR}/${i} \ | ||
579 | # ${CDCHROOTDIR}/fake/needwrite/ | ||
580 | # ln -s fake/needwrite/${i} ${CDCHROOTDIR}/${i} | ||
581 | # done ) | ||
582 | # evaluate_retval | ||
583 | |||
584 | #fixes some issues with xfree/xorg xkb | ||
585 | if [ -L "${CDCHROOTDIR}/etc/X11/xkb" -a -d "/usr/X11R6/lib/X11/xkb" ] | ||
586 | then | ||
587 | mecho fixing xkb symlink | ||
588 | rm ${CDCHROOTDIR}/etc/X11/xkb | ||
589 | mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 | ||
590 | ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb | ||
591 | fi | ||
592 | |||
593 | mecho Creating missing devices ... | ||
594 | ( bzcat ${CDLAYOUTDIR}/MAKEDEV-1.7.bz2 > \ | ||
595 | ${CDCHROOTDIR}/dev/MAKEDEV && \ | ||
596 | chmod 754 ${CDCHROOTDIR}/dev/MAKEDEV && \ | ||
597 | cd ${CDCHROOTDIR}/dev && \ | ||
598 | ./MAKEDEV -v generic-nopty &> /dev/null && \ | ||
599 | cd ${LIVECDROOT} ) | ||
600 | evaluate_retval | ||
601 | |||
602 | mecho Creating LiveCD Config files ... | ||
603 | ( cat ${CDLAYOUTDIR}/inittab > \ | ||
604 | ${CDCHROOTDIR}/etc/inittab && \ | ||
605 | chmod 0644 ${CDCHROOTDIR}/etc/inittab && \ | ||
606 | cat ${CDLAYOUTDIR}/fstab > \ | ||
607 | ${CDCHROOTDIR}/etc/fstab && \ | ||
608 | chmod 0644 ${CDCHROOTDIR}/etc/fstab && \ | ||
609 | cat ${CDLAYOUTDIR}/motd > \ | ||
610 | ${CDCHROOTDIR}/etc/motd && \ | ||
611 | chmod 0644 ${CDCHROOTDIR}/etc/motd && \ | ||
612 | cat ${CDLAYOUTDIR}/issue > \ | ||
613 | ${CDCHROOTDIR}/etc/issue && \ | ||
614 | chmod 0644 ${CDCHROOTDIR}/etc/issue && \ | ||
615 | # mv ${CDCHROOTDIR}/etc/login.defs \ | ||
616 | # ${CDCHROOTDIR}/etc/login.defs-orig && | ||
617 | # sed \ | ||
618 | # -e 's%#MOTD_FILE%MOTD_FILE%' \ | ||
619 | # ${CDCHROOTDIR}/etc/login.defs-orig > ${CDCROOTDIR}/etc/login.defs && | ||
620 | # rm -f ${CDCHROOTDIR}/etc/login.defs-orig && | ||
621 | # cat ${CDLAYOUTDIR}/create_ramdisk > \ | ||
622 | # ${CDCHROOTDIR}/etc/rc.d/init.d/create_ramdisk && \ | ||
623 | # chmod 0755 ${CDCHROOTDIR}/etc/rc.d/init.d/create_ramdisk && \ | ||
624 | # ln -s ../init.d/create_ramdisk \ | ||
625 | # ${CDCHROOTDIR}/etc/rc.d/rcsysinit.d/S00create_ramdisk && \ | ||
626 | # | ||
627 | # cat ${CDLAYOUTDIR}/network_detect > \ | ||
628 | # ${CDCHROOTDIR}/etc/rc.d/init.d/network_detect && \ | ||
629 | # chmod 0755 ${CDCHROOTDIR}/etc/rc.d/init.d/network_detect && \ | ||
630 | # ln -s ../init.d/network_detect \ | ||
631 | # ${CDCHROOTDIR}/etc/rc.d/rcsysinit.d/S20network_detect && \ | ||
632 | # ln -s ../init.d/hwdetect \ | ||
633 | # ${CDCHROOTDIR}/etc/rc.d/rc3.d/S18hwdetect && \ | ||
634 | # ln -s ../init.d/hwdetect \ | ||
635 | # ${CDCHROOTDIR}/etc/rc.d/rc4.d/S18hwdetect && \ | ||
636 | # ln -s ../init.d/hwdetect \ | ||
637 | # ${CDCHROOTDIR}/etc/rc.d/rc5.d/S18hwdetect && \ | ||
638 | echo "HOSTNAME=\"${CDHOSTNAME}\"" > ${CDCHROOTDIR}/etc/hostname ) | ||
639 | evaluate_retval | ||
640 | |||
641 | mecho Setting up services ... | ||
642 | ( cat >> ${CDCHROOTDIR}/root/.bashrc << "EOF" | ||
643 | |||
644 | #add createramdisk ## not needed anymore -> mountfslivecd does the job | ||
645 | #rc-config add createramdisk | ||
646 | |||
647 | #change mountfs with mountfslivecd | ||
648 | rc-config del mountfs | ||
649 | rc-config add mountfslivecd | ||
650 | |||
651 | #add hardware detection | ||
652 | rc-config add hwdetect | ||
653 | |||
654 | #del checkfs | ||
655 | rc-config del checkfs | ||
656 | |||
657 | #exit | ||
658 | exit | ||
659 | EOF | ||
660 | #run it | ||
661 | enter_chroot | ||
662 | |||
663 | #clean up | ||
664 | if [ -e ${CDCHROOTDIR}/root/.bashrc ] | ||
665 | then | ||
666 | rm ${CDCHROOTDIR}/root/.bashrc | ||
667 | fi | ||
668 | if [ -e ${CDCHROOTDIR}/root/.bash_history ] | ||
669 | then | ||
670 | rm ${CDCHROOTDIR}/root/.bash_history | ||
671 | fi ) | ||
672 | evaluate_retval | ||
673 | |||
674 | mecho Cleaning unwanted files ... | ||
675 | ( if [ -e ${CDCHROOTDIR}/etc/mtab ] | ||
676 | then | ||
677 | rm ${CDCHROOTDIR}/etc/mtab | ||
678 | fi && \ | ||
679 | touch ${CDCHROOTDIR}/etc/mtab #&& \ | ||
680 | # rm ${CDCHROOTDIR}/etc/rc.d/rc3.d/S20network && \ | ||
681 | # rm ${CDCHROOTDIR}/etc/rc.d/rc0.d/K80network && \ | ||
682 | # rm ${CDCHROOTDIR}/etc/rc.d/rc6.d/K80network && \ | ||
683 | # rm ${CDCHROOTDIR}/etc/rc.d/rcsysinit.d/S40mountfs && \ | ||
684 | # rm ${CDCHROOTDIR}/etc/rc.d/rcsysinit.d/S30checkfs && \ | ||
685 | # rm ${CDCHROOTDIR}/bin/pidof && \ | ||
686 | # ln -s /sbin/killall5 ${CDCHROOTDIR}/bin/pidof ) | ||
687 | ) | ||
688 | evaluate_retval | ||
689 | |||
690 | # ########################################### | ||
691 | # # bad fix cause mingetty is not installed # | ||
692 | # #echo "Please enter 'foobar' as root password:" | ||
693 | # cat > ${CDCHROOTDIR}/root/.bashrc << "EOF" | ||
694 | # echo "Please enter 'foobar' as root password:" | ||
695 | # passwd root | ||
696 | # exit | ||
697 | #EOF | ||
698 | # enter_chroot | ||
699 | # rm ${CDCHROOTDIR}/root/.bashrc | ||
700 | # cat >> ${CDCHROOTDIR}/etc/issue << "EOF" | ||
701 | #Login with user:root password:foobar | ||
702 | # | ||
703 | #EOF | ||
704 | # ########################################### | ||
705 | |||
706 | # mingetty needs a passwordless user for autologin | ||
707 | # so we unset the password for 'root' | ||
708 | cat > ${CDCHROOTDIR}/root/.bashrc << "EOF" | ||
709 | passwd -d root | ||
710 | exit | ||
711 | EOF | ||
712 | |||
713 | #run it | ||
714 | enter_chroot | ||
715 | if [ -e ${CDCHROOTDIR}/root/.bashrc ] | ||
716 | then | ||
717 | rm -f ${CDCHROOTDIR}/root/.bashrc | ||
718 | fi | ||
719 | |||
720 | if [ -e ${CDLAYOUTDIR}/clean.sh ] | ||
721 | then | ||
722 | mecho Running User clean sript | ||
723 | ( chmod 0755 ${CDLAYOUTDIR}/clean.sh && \ | ||
724 | ${CDLAYOUTDIR}/clean.sh ) | ||
725 | evaluate_retval | ||
726 | fi | ||
727 | |||
728 | touch ${LIVECDROOT}/.isoprepareok | ||
729 | } | ||
730 | |||
731 | generate_iso() { | ||
732 | secho Creating LiveCD ISO Image ... | ||
733 | |||
734 | if [ -f ${LIVECDROOT}/${CDISONAME} ] | ||
735 | then | ||
736 | mecho Removing old ISO image ... | ||
737 | rm -f ${LIVECDROOT}/${CDISONAME} | ||
738 | evaluate_retval | ||
739 | fi | ||
740 | |||
741 | if [ -f ${CDISOROOT}/$CDID ] | ||
742 | then | ||
743 | mecho Removing old CD ID ... | ||
744 | rm -f ${CDISOROOT}/$CDID | ||
745 | evaluate_retval | ||
746 | fi | ||
747 | |||
748 | #for loopback only | ||
749 | if [ -f ${CDISOROOT}/livecdrootfs ] | ||
750 | then | ||
751 | if [ ! -e ${LIVECDROOT}/noloopcreate ] | ||
752 | then | ||
753 | mecho Removing old CD rootfs ... | ||
754 | rm -f ${CDISOROOT}/livecdrootfs | ||
755 | evaluate_retval | ||
756 | fi | ||
757 | fi | ||
758 | |||
759 | #for cloop loopback only | ||
760 | if [ -f ${CDISOROOT}/livecdrootfs.cloop ] | ||
761 | then | ||
762 | if [ ! -e ${LIVECDROOT}/noloopcreate ] | ||
763 | then | ||
764 | mecho Removing old CD rootfs ... | ||
765 | rm -f ${CDISOROOT}/livecdrootfs.cloop | ||
766 | evaluate_retval | ||
767 | fi | ||
768 | fi | ||
769 | |||
770 | #for squashfs loopback only | ||
771 | if [ -f ${CDISOROOT}/livecdrootfs.sqsh ] | ||
772 | then | ||
773 | if [ ! -e ${LIVECDROOT}/noloopcreate ] | ||
774 | then | ||
775 | mecho Removing old CD rootfs ... | ||
776 | rm -f ${CDISOROOT}/livecdrootfs.sqsh | ||
777 | evaluate_retval | ||
778 | fi | ||
779 | fi | ||
780 | |||
781 | if [ -d ${CDISOROOT}/isolinux ] | ||
782 | then | ||
783 | mecho Removing old Bootloader ... | ||
784 | rm -rf ${CDISOROOT}/isolinux | ||
785 | evaluate_retval | ||
786 | fi | ||
787 | |||
788 | mecho Creating CD ID ... | ||
789 | ( mkdir -p ${CDISOROOT} && \ | ||
790 | touch ${CDISOROOT}/$CDID ) | ||
791 | evaluate_retval | ||
792 | |||
793 | mecho Installing Bootloader ... | ||
794 | ( mkdir -p ${CDISOROOT}/isolinux && \ | ||
795 | tar xjf ${CDLAYOUTDIR}/syslinux-2.08.tar.bz2 \ | ||
796 | -C ${CDCHROOTDIR}/usr/src && \ | ||
797 | cp ${CDCHROOTDIR}/usr/src/syslinux-2.08/isolinux.bin \ | ||
798 | ${CDISOROOT}/isolinux && \ | ||
799 | rm -rf ${CDCHROOTDIR}/usr/src/* && \ | ||
800 | cp -R ${CDCHROOTDIR}/boot/* ${CDISOROOT}/isolinux && \ | ||
801 | #mv ${CDCHROOTDIR}/boot/* ${CDCHROOTDIR}/isolinux && \ | ||
802 | #rm -rf ${CDCHROOTDIR}/boot && \ | ||
803 | #ln -s isolinux ${CDCHROOTDIR}/boot && \ | ||
804 | cp ${CDLAYOUTDIR}/isolinux.cfg ${CDISOROOT}/isolinux && \ | ||
805 | cp ${CDLAYOUTDIR}/boot.lss ${CDISOROOT}/isolinux && \ | ||
806 | cp ${CDLAYOUTDIR}/boot.msg ${CDISOROOT}/isolinux && \ | ||
807 | cp ${CDLAYOUTDIR}/help.msg ${CDISOROOT}/isolinux && \ | ||
808 | cp ${LIVECDROOT}/initrd.gz ${CDISOROOT}/isolinux && \ | ||
809 | source ${CDISOROOT}/isolinux/kernelversion && \ | ||
810 | #mv ${CDCHROOTDIR}/isolinux/${KRNIMG} \ | ||
811 | # ${CDCHROOTDIR}/isolinux/livecdkernel ) | ||
812 | cp ${CDISOROOT}/isolinux/${KRNIMG} \ | ||
813 | ${CDISOROOT}/isolinux/${CDKERNELNAME} ) | ||
814 | evaluate_retval | ||
815 | |||
816 | if [ ! -e ${LIVECDROOT}/noloopcreate ] | ||
817 | then | ||
818 | case ${CDCOMPRESS_METHOD} in | ||
819 | cloop) | ||
820 | mecho Generating rootfs loopfile ... | ||
821 | ( cd ${LIVECDROOT} && \ | ||
822 | export CDISOLOOPSIZE="$(expr 20000 + $(du -Ds chroot|cut -d 'c' -f1))" && \ | ||
823 | dd if=/dev/zero of=${LIVECDROOT}/livecdrootfs bs=1024 count=${CDISOLOOPSIZE} &> /dev/null ) | ||
824 | evaluate_retval | ||
825 | |||
826 | mecho Formating rootfs loopfile ... | ||
827 | mke2fs -m 0 -i 1024 -F ${LIVECDROOT}/livecdrootfs &> /dev/null | ||
828 | evaluate_retval | ||
829 | |||
830 | mecho Mounting Image file ... | ||
831 | ( mkdir -p ${CDISOLOOP} && \ | ||
832 | mount -o loop ${LIVECDROOT}/livecdrootfs ${CDISOLOOP} ) | ||
833 | evaluate_retval | ||
834 | |||
835 | mecho Copying rootfs to loopfile ... | ||
836 | cp -a ${CDCHROOTDIR}/* ${CDISOLOOP} | ||
837 | evaluate_retval | ||
838 | |||
839 | mecho Unmounting Image file ... | ||
840 | umount ${CDISOLOOP} | ||
841 | evaluate_retval | ||
842 | |||
843 | mecho Compressing rootfs loopfile ... | ||
844 | ( cat ${LIVECDROOT}/livecdrootfs | ${LIVECDROOT}/tmp/${CLOOPDIR}/create_compressed_fs - 131072 > livecdrootfs.cloop ) >/dev/null 2>&1 | ||
845 | evaluate_retval | ||
846 | |||
847 | mecho Moving rootfs loopfile to isoroot ... | ||
848 | ( rm -f ${LIVECDROOT}/livecdrootfs && \ | ||
849 | mv ${LIVECDROOT}/livecdrootfs.cloop ${CDISOROOT} ) | ||
850 | evaluate_retval | ||
851 | ;; | ||
852 | |||
853 | squashfs) | ||
854 | mecho Generating squashfs compressed rootfs loopfile ... | ||
855 | mksquashfs ${CDCHROOTDIR} ${LIVECDROOT}/livecdrootfs.sqsh >/dev/null 2>&1 | ||
856 | evaluate_retval | ||
857 | |||
858 | mecho Moving rootfs loopfile to isoroot ... | ||
859 | mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT} | ||
860 | evaluate_retval | ||
861 | ;; | ||
862 | esac | ||
863 | fi | ||
864 | |||
865 | mecho Generating ISO Image ... | ||
866 | ( cd ${CDISOROOT} && \ | ||
867 | mkisofs -R -l -L -D -o ${LIVECDROOT}/${CDISONAME} \ | ||
868 | -b isolinux/isolinux.bin -c isolinux/boot.cat \ | ||
869 | -no-emul-boot -boot-load-size 4 -boot-info-table -V "${CDID}" \ | ||
870 | ${CDISOROOT} &> /dev/null && \ | ||
871 | cd ${LIVECDROOT} ) | ||
872 | evaluate_retval | ||
873 | |||
874 | touch ${LIVECDROOT}/.isoimageok | ||
875 | } | ||
876 | |||
877 | livecddelete() { | ||
878 | secho Deleting *ALL* LiveCD generated files ... | ||
879 | |||
880 | if [ -f ${LIVECDROOT}/.??* ] | ||
881 | then | ||
882 | mecho Deleting state files .. | ||
883 | rm -f ${LIVECDROOT}/.??* | ||
884 | evaluate_retval | ||
885 | fi | ||
886 | |||
887 | if [ -d ${LIVECDROOT}/chroot ] | ||
888 | then | ||
889 | mecho Deleting system dir ... | ||
890 | rm -rf ${LIVECDROOT}/chroot | ||
891 | evaluate_retval | ||
892 | fi | ||
893 | |||
894 | if [ -d ${LIVECDROOT}/mntinitrd ] | ||
895 | then | ||
896 | mecho Deleting initrd mount dir ... | ||
897 | rm -rf ${LIVECDROOT}/mntinitrd | ||
898 | evaluate_retval | ||
899 | fi | ||
900 | |||
901 | if [ -f ${LIVECDROOT}/initrd ] | ||
902 | then | ||
903 | mecho Deleting initrd | ||
904 | rm -f ${LIVECDROOT}/initrd | ||
905 | evaluate_retval | ||
906 | fi | ||
907 | |||
908 | if [ -f ${LIVECDROOT}/initrd.gz ] | ||
909 | then | ||
910 | mecho Deleting initrd.gz | ||
911 | rm -f ${LIVECDROOT}/initrd.gz | ||
912 | evaluate_retval | ||
913 | fi | ||
914 | |||
915 | if [ -f ${LIVECDROOT}/${CDISONAME} ] | ||
916 | then | ||
917 | mecho Deleting isoimage ... | ||
918 | rm -f ${LIVECDROOT}/${CDISONAME} | ||
919 | evaluate_retval | ||
920 | fi | ||
921 | |||
922 | if [ -d ${CDISOLOOP} ] | ||
923 | then | ||
924 | mecho Deleting looptemp ... | ||
925 | rm -rf ${CDISOLOOP} | ||
926 | evaluate_retval | ||
927 | fi | ||
928 | |||
929 | if [ -d ${CDISOROOT} ] | ||
930 | then | ||
931 | mecho Deleting isoroot ... | ||
932 | rm -rf ${CDISOROOT} | ||
933 | evaluate_retval | ||
934 | fi | ||
935 | |||
936 | if [ -d ${LIVECDROOT}/tmp ] | ||
937 | then | ||
938 | mecho Deleting tmp dir ... | ||
939 | rm -rf ${LIVECDROOT}/tmp | ||
940 | evaluate_retval | ||
941 | fi | ||
942 | |||
943 | if [ -e ${LIVECDROOT}/noloopcreate ] | ||
944 | then | ||
945 | rm -f ${LIVECDROOT}/noloopcreate | ||
946 | fi | ||
947 | } | ||
948 | |||
949 | |||
950 | getstate() { | ||
951 | CDSTATE="" | ||
952 | for i in ${LIVECDROOT}/.??* | ||
953 | do | ||
954 | case ${i} in | ||
955 | ${LIVECDROOT}/.bootstrapok) | ||
956 | CDSTATE="bootstrapok" | ||
957 | ;; | ||
958 | ${LIVECDROOT}/.chcleanedok) | ||
959 | CDSTATE="chcleanedok" | ||
960 | ;; | ||
961 | ${LIVECDROOT}/.isoprepareok) | ||
962 | CDSTATE="isoprepareok" | ||
963 | ;; | ||
964 | ${LIVECDROOT}/.initrdok) | ||
965 | CDSTATE="initrdok" | ||
966 | ;; | ||
967 | ${LIVECDROOT}/.isoimageok) | ||
968 | CDSTATE="isoimageok" | ||
969 | ;; | ||
970 | *) | ||
971 | CDSTATE="none" | ||
972 | ;; | ||
973 | esac | ||
974 | done | ||
975 | } | ||
976 | |||
977 | |||
978 | ## running part ## | ||
979 | |||
980 | case "$1" in | ||
981 | bootstrap) | ||
982 | showversion | ||
983 | getstate | ||
984 | if [ "${CDSTATE}" == "none" ] | ||
985 | then | ||
986 | chroot_generate | ||
987 | build_bootstrap | ||
988 | echo -e "\nYou can run now 'cleanchroot' ..." | ||
989 | else | ||
990 | mecho Whipe out old system first | ||
991 | fi | ||
992 | ;; | ||
993 | cleanchroot) | ||
994 | showversion | ||
995 | getstate | ||
996 | if [ "${CDSTATE}" == "bootstrapok" ] | ||
997 | then | ||
998 | cleanup_chrootdir | ||
999 | rm -f ${LIVECDROOT}/.bootstrapok | ||
1000 | echo -e "\nYou can run now 'prepareiso' ..." | ||
1001 | else | ||
1002 | mecho You must run bootstrap first | ||
1003 | fi | ||
1004 | ;; | ||
1005 | prepareiso) | ||
1006 | showversion | ||
1007 | getstate | ||
1008 | if [ "${CDSTATE}" == "chcleanedok" ] | ||
1009 | then | ||
1010 | prepare_iso | ||
1011 | rm -f ${LIVECDROOT}/.chcleanedok | ||
1012 | echo -e "\nYou can run now 'initrd' ..." | ||
1013 | else | ||
1014 | mecho Please clean chroot first | ||
1015 | fi | ||
1016 | ;; | ||
1017 | initrd) | ||
1018 | showversion | ||
1019 | getstate | ||
1020 | if [ "${CDSTATE}" == "isoprepareok" ] || \ | ||
1021 | [ "${CDSTATE}" == "isoimageok" ] | ||
1022 | then | ||
1023 | build_initrd | ||
1024 | if [ -e ${LIVECDROOT}/.isoprepareok ] | ||
1025 | then | ||
1026 | rm -f ${LIVECDROOT}/.isoprepareok | ||
1027 | fi | ||
1028 | if [ -e ${LIVECDROOT}/.isoimageok ] | ||
1029 | then | ||
1030 | rm -f ${LIVECDROOT}/.isoimageok | ||
1031 | fi | ||
1032 | echo -e "\nYou can run now 'isogen' ..." | ||
1033 | else | ||
1034 | mecho Please prepare your iso first | ||
1035 | fi | ||
1036 | ;; | ||
1037 | isogen) | ||
1038 | showversion | ||
1039 | getstate | ||
1040 | if [ "${CDSTATE}" == "initrdok" ] || \ | ||
1041 | [ "${CDSTATE}" == "isoimageok" ] | ||
1042 | then | ||
1043 | generate_iso | ||
1044 | rm -f ${LIVECDROOT}/.initrdok | ||
1045 | else | ||
1046 | mecho Please run initrd first | ||
1047 | fi | ||
1048 | ;; | ||
1049 | enter) | ||
1050 | showversion | ||
1051 | getstate | ||
1052 | if [ "${CDSTATE}" != "none" ] | ||
1053 | then | ||
1054 | enter_chroot | ||
1055 | else | ||
1056 | mecho Please build a system first | ||
1057 | fi | ||
1058 | ;; | ||
1059 | |||
1060 | delete) | ||
1061 | showversion | ||
1062 | livecddelete | ||
1063 | ;; | ||
1064 | makeall) | ||
1065 | showversion | ||
1066 | getstate | ||
1067 | if [ "${CDSTATE}" == "none" ] | ||
1068 | then | ||
1069 | chroot_generate | ||
1070 | build_bootstrap | ||
1071 | cleanup_chrootdir | ||
1072 | rm -f ${LIVECDROOT}/.bootstrapok | ||
1073 | prepare_iso | ||
1074 | rm -f ${LIVECDROOT}/.chcleanedok | ||
1075 | build_initrd | ||
1076 | rm -f ${LIVECDROOT}/.isoprepareok | ||
1077 | generate_iso | ||
1078 | rm -f ${LIVECDROOT}/.initrdok | ||
1079 | else | ||
1080 | mecho Please wipe out your old LiveCD first | ||
1081 | fi | ||
1082 | ;; | ||
1083 | *) | ||
1084 | showversion | ||
1085 | echo -e "Usage: $0 [Option] ..." | ||
1086 | echo -e "\nBuilding Options:" | ||
1087 | echo -e " bootstrap - builds cd system" | ||
1088 | echo -e " cleanchroot - cleans chroot" | ||
1089 | echo -e "\nIso Prepare Options:" | ||
1090 | echo -e " prepareiso - prepares files for isogen" | ||
1091 | echo -e " initrd - builds initrd" | ||
1092 | echo -e " isogen - creates isoimage" | ||
1093 | echo -e "\nOther Options:" | ||
1094 | echo -e " enter - chroot cd system" | ||
1095 | echo -e " delete - deletes all generated files" | ||
1096 | echo -e " makeall - builds stright ahead the livecd\n" | ||
1097 | ;; | ||
1098 | esac | ||
1099 |
Properties
Name | Value |
---|---|
svn:executable | * |