Magellan Linux

Annotation of /trunk/mlivecdbuild/mlivecdbuild.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 219 - (hide annotations) (download) (as text)
Wed Aug 31 17:17:29 2005 UTC (18 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 25963 byte(s)
ver bump to 0.3.6-r8:
- updated sed-static to sed-4.1.4-static with compile target i486
- updated busybox to busybox-1.00-precompiled-i486

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

Properties

Name Value
svn:executable *