Magellan Linux

Diff of /trunk/mlivecdbuild/mlivecdbuild2.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 348 by niro, Sun Mar 5 02:18:28 2006 UTC revision 1531 by niro, Fri Nov 4 11:34:30 2011 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2    
3  # some default settings - gets overidden with the profile config  # some default settings - gets overidden with the profile config
4  CDPROFILE="$1"  CDPROFILE="$2"
5  [[ -z ${CDPROFILE} ]] && CDPROFILE="default"  [[ -z ${CDPROFILE} ]] && CDPROFILE="default"
6  LIVECDROOT="/mnt/MLIVECDBUILD/${CDPROFILE}"  LIVECDROOT="/mnt/MLIVECDBUILD/${CDPROFILE}"
7  CDCHROOTDIR="${LIVECDROOT}/chroot"  CDCHROOTDIR="${LIVECDROOT}/chroot"
# Line 19  CDID="mlcd-$(date +%F-%k%M)" Line 19  CDID="mlcd-$(date +%F-%k%M)"
19  PROFILES_DIR="/usr/lib/mlivecdbuild/profiles"  PROFILES_DIR="/usr/lib/mlivecdbuild/profiles"
20  GLOBAL_PROFILE="${PROFILES_DIR}/global"  GLOBAL_PROFILE="${PROFILES_DIR}/global"
21    
22    # get full path to isolinux.bin, may vary on multilib systems
23    if [[ -f /usr/share/syslinux/isolinux.bin ]]
24    then
25     ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin
26    elif [[ -f /usr/lib64/mkinitrd/isolinux.bin ]]
27    then
28     ISOLINUX_BIN=/usr/lib64/mkinitrd/isolinux.bin
29    else
30     ISOLINUX_BIN=/usr/lib/mkinitrd/isolinux.bin
31    fi
32    
33  die() { echo "ERROR: $@"; exit 1; }  die() { echo "ERROR: $@"; exit 1; }
34    
35  # get_profile $filename  # get_profile $filename
# Line 46  bootstrap_system() Line 57  bootstrap_system()
57   || die "bootstrapping toolchain"   || die "bootstrapping toolchain"
58  }  }
59    
60    custom_services()
61    {
62     local cmd="$1"
63     local services="$2"
64     local systemdcmd
65    
66     case ${cmd} in
67     add|del|default)
68     # add given services from profile
69     if [[ -n ${services} ]]
70     then
71     local i
72     for i in ${services}
73     do
74     # systemd
75     if [[ -x ${CDCHROOTDIR}/sbin/systemctl ]]
76     then
77     case ${cmd} in
78     add) chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
79     del) chroot ${CDCHROOTDIR} systemctl disable ${i} ;;
80     default)
81     # convert targets
82     case ${i} in
83     2|3) service="multi-user.target" ;;
84     5) service="graphical.target" ;;
85     esac
86     chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
87     esac
88     fi
89     # busybox and sysvinit
90     if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
91     then
92     MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"
93     fi
94     done
95     fi
96     ;;
97     *) die "custom_services: unkown command ${cmd}";;
98     esac
99    }
100    
101    add_initrc()
102    {
103     local var="$1"
104    
105     # sanity checks
106     [[ -z ${CDCHROOTDIR} ]] && die "\$CDCHROOTDIR not given."
107     echo "${var}" >> ${CDCHROOTDIR}/.installrc || die "add_initrc() adding \$var"
108    }
109    
110    custom_packages()
111    {
112     local cmd="$1"
113     local packages="$2"
114    
115     case ${cmd} in
116     install|uninstall)
117     if [[ -n ${packages} ]]
118     then
119     :> ${CDCHROOTDIR}/.installrc
120    
121     # respect proxies
122     [[ -n ${http_proxy} ]] && add_initrc "export http_proxy=${http_proxy}"
123     [[ -n ${ftp_proxy} ]] && add_initrc "export ftp_proxy=${ftp_proxy}"
124     [[ -n ${no_proxy} ]] && add_initrc "export no_proxy=${no_proxy}"
125    
126     # do not auto-start any services!
127     add_initrc "export MAGE_BOOTSTRAP=true"
128     add_initrc 'die() { if [ $? -eq 1 ]; then echo "ERROR: $@"; exit 1; fi; }'
129    
130     local i
131     for i in ${packages}
132     do
133     add_initrc "mage ${cmd} ${i} || die ${i}"
134     done
135     add_initrc "mage clean"
136    
137     # now run the .installrc script
138     mount -t proc proc ${CDCHROOTDIR}/proc || die "mount proc"
139     mount -t sysfs sysfs ${CDCHROOTDIR}/sys || die "mount sys"
140     mount -o bind /dev ${CDCHROOTDIR}/dev || die "mount dev"
141     chroot ${CDCHROOTDIR} /bin/bash -i /.installrc || die "chr00ting"
142     umount ${CDCHROOTDIR}/dev || die "umount dev"
143     umount ${CDCHROOTDIR}/proc || die "umount proc"
144     umount ${CDCHROOTDIR}/sys || die "umount sys"
145     [ -f ${CDCHROOTDIR}/.installrc ] && rm ${CDCHROOTDIR}/.installrc
146     fi
147     ;;
148     *) die "custom_packages: unkown command ${cmd}";;
149     esac
150    }
151    
152    read_config()
153    {
154     local file="$1"
155     local pkg
156    
157     ( cat ${file}; echo ) | while read pkg
158     do
159     case "${pkg}" in
160     \#*|"") continue ;;
161     esac
162     echo "${pkg}"
163     done
164    }
165    
166  prepare_iso()  prepare_iso()
167  {  {
168   echo Preparing LiveCD ISO Image ...   echo Preparing LiveCD ISO Image ...
169    
170   # fixes some issues with xfree/xorg xkb   # fixes some issues with xfree/xorg xkb
171   if [ -L "${CDCHROOTDIR}/etc/X11/xkb" -a -d "/usr/X11R6/lib/X11/xkb" ]   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] && [[ -d /usr/X11R6/lib/X11/xkb ]]
172   then   then
173   rm ${CDCHROOTDIR}/etc/X11/xkb || die   rm ${CDCHROOTDIR}/etc/X11/xkb || die
174   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die
175   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die
176   fi   fi
177    
178   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die   # only on sysvinit or busybox systems
179     if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
180     then
181     install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die
182     fi
183     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]]
184     then
185     # check lock group on systemd systems
186     if [[ -z $(chroot ${CDCHROOTDIR} getent group lock) ]]
187     then
188     echo "adding missing group 'lock'"
189     chroot ${CDCHROOTDIR}  groupadd -g 54 lock
190     fi
191     # dbus plugdev group
192     if [[ -z $(chroot ${CDCHROOTDIR} getent group plugdev) ]]
193     then
194     echo "adding missing group 'plugdev'"
195     chroot ${CDCHROOTDIR}  groupadd -g 302 plugdev
196     fi
197     # dbus messagebus group
198     if [[ -z $(chroot ${CDCHROOTDIR} getent group messagebus) ]]
199     then
200     echo "adding missing group 'messagebus'"
201     chroot ${CDCHROOTDIR}  groupadd -g 300 messagebus
202     fi
203     # dbus messagebus user
204     if [[ -z $(chroot ${CDCHROOTDIR} getent passwd messagebus) ]]
205     then
206     echo "adding missing user 'messagebus'"
207     chroot ${CDCHROOTDIR}  useradd -u 300 -g messagebus -d /dev/null -s /bin/false messagebus
208     fi
209     fi
210   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die
211   install -m 0644 $(get_profile motd) ${CDCHROOTDIR}/etc/motd || die   install -m 0644 $(get_profile motd) ${CDCHROOTDIR}/etc/motd || die
212   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die
213     install -m 0644 $(get_profile net.eth0) ${CDCHROOTDIR}/etc/conf.d/net.eth0 || die
214   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die
215    
216   echo Setting up services ...   echo Setting up services ...
217    
218   # change mountfs with mountfslivecd   # install systemd default services
219   MROOT="${CDCHROOTDIR}" rc-config del mountfs || die "rc del mountfs"   if [[ -x ${CDCHROOTDIR}/bin/systemctl ]]
220   MROOT="${CDCHROOTDIR}" rc-config add mountfslivecd || die "rc add mountfslivecd"   then
221     # install tmpfs /tmp and /var/tmp
222     install -m 0644 $(get_profile tmp.mount) ${CDCHROOTDIR}/lib/systemd/system/ || die
223     install -m 0644 $(get_profile var-tmp.mount) ${CDCHROOTDIR}/lib/systemd/system/ || die
224     # enable them
225     ln -snf ../tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/tmp.mount || die
226     ln -snf ../var-tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
227    
228     install -m 0644 $(get_profile getty) ${CDCHROOTDIR}/etc/conf.d/getty || die
229    
230     custom_services add getty@.service
231     custom_services add remote-fs.target
232     # disable readahead
233     custom_services del systemd-readahead-replay.service
234     custom_services del systemd-readahead-collect.service
235     fi
236    
237   # add hardware detection  # # add hardware detection
238   MROOT="${CDCHROOTDIR}" rc-config add hwdetect || die "rc add hwdetect"  # if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
239    # then
240    # MROOT="${CDCHROOTDIR}" rc-config add hwdetect || die "rc add hwdetect"
241    # fi
242    
243   # del checkfs   # del checkfs
244   MROOT="${CDCHROOTDIR}" rc-config del checkfs || die "rc del checkfs"   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
245     then
246     MROOT="${CDCHROOTDIR}" rc-config del checkfs || die "rc del checkfs"
247     fi
248    
249     # add custom packages
250     [[ -n ${ADD_PACKAGES} ]] && custom_packages install "${ADD_PACKAGES}"
251     [ -f $(get_profile add_packages) ] && custom_packages install "$(read_config $(get_profile add_packages))"
252    
253     # del custom packages
254     [[ -n ${DEL_PACKAGES} ]] && custom_packages uninstall "${DEL_PACKAGES}"
255     [ -f $(get_profile del_packages) ] && custom_packages uninstall "$(read_config $(get_profile del_packages))"
256    
257     # add given services from profile
258     [[ -n ${ADD_SERVICES} ]] && custom_services add "${ADD_SERVICES}"
259     [ -f $(get_profile add_services) ] && custom_services add "$(read_config $(get_profile add_services))"
260    
261     # del given services from profile
262     [[ -n ${DEL_SERVICES} ]] && custom_services del "${DEL_SERVICES}"
263     [ -f $(get_profile del_services) ] && custom_services del "$(read_config $(get_profile del_services))"
264    
265     # setup default runlevel
266     [[ -n ${DEFAULT_RUNLEVEL} ]] && custom_services default "${DEFAULT_RUNLEVEL}"
267    
268     if [ -f $(get_profile prepare_custom) ]
269     then
270     echo Running custom user script ...
271     source $(get_profile prepare_custom) || die "running custom user script"
272     fi
273    
274   echo Cleaning unwanted files ...   echo Cleaning unwanted files ...
275   :> ${CDCHROOTDIR}/etc/mtab || die "whiping /etc/mtab"   # do this only if not a symlink!
276     if [[ ! -L ${CDCHROOTDIR}/etc/mtab ]]
277     then
278     :> ${CDCHROOTDIR}/etc/mtab || die "whiping /etc/mtab"
279     fi
280     [ -f ${CDCHROOTDIR}/root/.bash_history ] && rm ${CDCHROOTDIR}/root/.bash_history
281  }  }
282    
283  generate_rootfs()  generate_rootfs()
284  {  {
285     local loopdev
286     local size
287    
288     if [ -f ${LIVECDROOT}/loop/LiveOS/ext3fs.img ]
289     then
290     rm ${LIVECDROOT}/loop/LiveOS/ext3fs.img || die
291     fi
292     if [ -f ${CDISOROOT}/LiveOS/squashfs.img ]
293     then
294     rm ${CDISOROOT}/LiveOS/squashfs.img
295     fi
296     if [ -f ${CDISOROOT}/livecdrootfs.sqsh ]
297     then
298     rm ${CDISOROOT}/livecdrootfs.sqsh
299     fi
300    
301   echo Generating squashfs compressed rootfs loopfile ...   echo Generating squashfs compressed rootfs loopfile ...
302   mksquashfs ${CDCHROOTDIR} ${LIVECDROOT}/livecdrootfs.sqsh #>/dev/null 2>&1   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]
303     then
304     install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die
305    
306     # get the actual size of the chroot
307     size=$(du -s ${LIVECDROOT}/chroot | sed 's:^\(.*\)[[:space:]].*:\1:')
308    
309     # generate a ext3fs file for devicemapper
310     dd if=/dev/zero of=${LIVECDROOT}/loop/LiveOS/ext3fs.img bs=1024 count=$(( ${size} + 10 )) || die
311     # create a filesystem
312     mkfs.ext3 -L "_${CDID}_EXT3" -m 1 -b 1024 -F ${LIVECDROOT}/loop/LiveOS/ext3fs.img || die
313     # set mount_counts and check_intervals to 0
314     # set dir_index top, to speed up thing with hashed b-trees
315     # allow acls too
316     tune2fs -c0 -i0 -Odir_index -ouser_xattr,acl ${LIVECDROOT}/loop/LiveOS/ext3fs.img || die
317    
318     # losetup the device
319     loopdev=$(losetup -f)
320     [[ -z ${loopdev} ]] && die "No unused loopdev found. Maybe you want 'modprobe loop'?"
321    
322     # mount the image
323     losetup ${loopdev} ${LIVECDROOT}/loop/LiveOS/ext3fs.img || die
324     mount ${loopdev} ${LIVECDROOT}/loop/mnt || die
325    
326     # copy everything to the image file and preserve permissions
327     ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )
328    
329     # now umount everything and create the squashfs image
330     umount ${LIVECDROOT}/loop/mnt || die
331     losetup -d ${loopdev} || die
332     # remove mount to not ending up in the squashfs image
333     if [[ -d ${LIVECDROOT}/loop/mnt ]]
334     then
335     rm -r ${LIVECDROOT}/loop/mnt || die
336     fi
337     mksquashfs ${LIVECDROOT}/loop ${LIVECDROOT}/livecdrootfs.sqsh || die
338    
339     # final cleanup
340     if [[ -d ${LIVECDROOT}/loop ]]
341     then
342     rm -r ${LIVECDROOT}/loop || die
343     fi
344     else
345     mksquashfs ${CDCHROOTDIR} ${LIVECDROOT}/livecdrootfs.sqsh || die
346     fi
347    
348   echo Moving rootfs loopfile to isoroot ...   echo Moving rootfs loopfile to isoroot ...
349   install -d ${CDISOROOT}   install -d ${CDISOROOT}
350   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]
351     then
352     install -d ${CDISOROOT}/LiveOS
353     mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img
354     else
355     mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}
356     fi
357  }  }
358    
359  install_bootloader()  install_bootloader()
# Line 96  install_bootloader() Line 362  install_bootloader()
362    
363   # iso linux binary   # iso linux binary
364   install -d ${CDISOROOT}/isolinux   install -d ${CDISOROOT}/isolinux
365   install /usr/lib/mkinitrd/isolinux.bin ${CDISOROOT}/isolinux || die   install ${ISOLINUX_BIN} ${CDISOROOT}/isolinux || die
366    
367   # kernel   # kernel
368   local kimg="$(basename $(readlink ${CDCHROOTDIR}/boot/vmlinuz))"   local kimg="$(basename $(readlink ${CDCHROOTDIR}/boot/vmlinuz))"
# Line 106  install_bootloader() Line 372  install_bootloader()
372   install -m 0644 $(get_profile boot.lss) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile boot.lss) ${CDISOROOT}/isolinux || die
373   install -m 0644 $(get_profile boot.msg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile boot.msg) ${CDISOROOT}/isolinux || die
374   install -m 0644 $(get_profile help.msg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile help.msg) ${CDISOROOT}/isolinux || die
375     # support the new layout too
376     if [[ -f $(get_profile index.msg) ]]
377     then
378     install -m 0644 $(get_profile index.msg) ${CDISOROOT}/isolinux || die
379     fi
380     if [[ -f $(get_profile debug.msg) ]]
381     then
382     install -m 0644 $(get_profile debug.msg) ${CDISOROOT}/isolinux || die
383     fi
384    
385   return 0   return 0
386  }  }
# Line 113  install_bootloader() Line 388  install_bootloader()
388  generate_initrd()  generate_initrd()
389  {  {
390   local CHROOTSH="$(mktemp -p ${CDCHROOTDIR})"   local CHROOTSH="$(mktemp -p ${CDCHROOTDIR})"
391   echo "DEBUG: ${CHROOTSH}"  
392     is_loc_mounted "${CDCHROOTDIR}/sys" || mount -t sysfs sysfs ${CDCHROOTDIR}/sys
393     is_loc_mounted "${CDCHROOTDIR}/proc" || mount -t proc proc ${CDCHROOTDIR}/proc
394     is_loc_mounted "${CDCHROOTDIR}/dev" || mount -o bind /dev ${CDCHROOTDIR}/dev
395    
396   echo Generating initrd image ...   echo Generating initrd image ...
397   echo '#!/bin/bash' > ${CHROOTSH} || die   echo '#!/bin/bash' > ${CHROOTSH} || die
398     echo 'export LC_ALL=C' >> ${CHROOTSH} || die
399   echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die   echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die
400   echo 'kv="${kv/kernel-}/"' >> ${CHROOTSH} || die   echo 'kv="${kv/kernel-}/"' >> ${CHROOTSH} || die
401   echo 'mkinitrd-livecd -f --initramfs /initrd.gz ${kv}' >> ${CHROOTSH} || die   # prefer dracut
402     echo 'if [[ -x /sbin/dracut ]]' >> ${CHROOTSH} || die
403     echo 'then' >> ${CHROOTSH} || die
404     echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die
405     echo 'else' >> ${CHROOTSH} || die
406     echo ' mkinitrd-livecd -f --initramfs /initrd.gz ${kv}' >> ${CHROOTSH} || die
407     echo 'fi' >> ${CHROOTSH} || die
408   chmod +x ${CHROOTSH} || die   chmod +x ${CHROOTSH} || die
409   chroot ${CDCHROOTDIR} /$(basename ${CHROOTSH}) || die   chroot ${CDCHROOTDIR} /$(basename ${CHROOTSH}) || die
410   [[ -f ${CHROOTSH} ]] && rm ${CHROOTSH} || die   [[ -f ${CHROOTSH} ]] && rm ${CHROOTSH} || die
411    
412     is_loc_mounted "${CDCHROOTDIR}/dev" && umount ${CDCHROOTDIR}/dev
413     is_loc_mounted "${CDCHROOTDIR}/proc" && umount ${CDCHROOTDIR}/proc
414     is_loc_mounted "${CDCHROOTDIR}/sys" && umount ${CDCHROOTDIR}/sys
415    
416   # move initrd to isoroot   # move initrd to isoroot
417   install -d ${CDISOROOT}/isolinux || die   install -d ${CDISOROOT}/isolinux || die
418   mv ${CDCHROOTDIR}/initrd.gz ${CDISOROOT}/isolinux || die   mv ${CDCHROOTDIR}/initrd.gz ${CDISOROOT}/isolinux || die
# Line 151  generate_iso() Line 440  generate_iso()
440    
441  enter_livecd()  enter_livecd()
442  {  {
443   mount -t sysfs sysfs ${CDCHROOTDIR}/proc   is_loc_mounted "${CDCHROOTDIR}/sys" || mount -t sysfs sysfs ${CDCHROOTDIR}/sys
444   mount -t proc proc ${CDCHROOTDIR}/proc   is_loc_mounted "${CDCHROOTDIR}/proc" || mount -t proc proc ${CDCHROOTDIR}/proc
445   mount -o bind /dev ${CDCHROOTDIR}/dev   is_loc_mounted "${CDCHROOTDIR}/dev" || mount -o bind /dev ${CDCHROOTDIR}/dev
446    
447   chroot ${CDCHROOTDIR} \   chroot ${CDCHROOTDIR} \
448   /usr/bin/env -i \   /usr/bin/env -i \
449   HOME=/root \   HOME=/root \
450   TERM=$TERM PS1='\u:\w\$ ' \   TERM=$TERM PS1='\u:\w\$ ' \
451   PATH=/bin:/usr/bin:/sbin:/usr/sbin \   PATH=/bin:/usr/bin:/sbin:/usr/sbin \
452     http_proxy=${http_proxy} \
453     ftp_proxy=${ftp_proxy} \
454     no_proxy=${no_proxy} \
455   /bin/bash -i   /bin/bash -i
456    
457     is_loc_mounted "${CDCHROOTDIR}/dev" && umount ${CDCHROOTDIR}/dev
458     is_loc_mounted "${CDCHROOTDIR}/proc" && umount ${CDCHROOTDIR}/proc
459     is_loc_mounted "${CDCHROOTDIR}/sys" && umount ${CDCHROOTDIR}/sys
460    }
461    
462    is_loc_mounted()
463    {
464     local filesys
465     local i
466     filesys=$1
467    
468     i="$(cat /proc/mounts | grep " ${filesys} " | cut -d ' ' -f2)"
469     [[ ${i} != ${filesys} ]] && return 1
470    
471     return 0
472    }
473    
474    trap_exit()
475    {
476     is_loc_mounted "${CDCHROOTDIR}/dev" && umount ${CDCHROOTDIR}/dev
477     is_loc_mounted "${CDCHROOTDIR}/proc" && umount ${CDCHROOTDIR}/proc
478     is_loc_mounted "${CDCHROOTDIR}/sys" && umount ${CDCHROOTDIR}/sys
479  }  }
480    
481    usage()
482    {
483     echo "Usage: $(basename $0) [command] [profile] ..."
484     echo
485     echo "Commands:"
486     echo "    bootstrap  - bootstraps the rootfs for the livecd"
487     echo "    prepare    - prepare the rootfs to run from a livecd"
488     echo "    rootfs     - generates the squashfs rootfs image"
489     echo "    initrd     - generates a livecd suitable initrd"
490     echo "    bootloader - installs the bootloader"
491     echo "    isogen     - generate the final livecd iso image"
492     echo "    all        - runs all tasks to get a livecd from zero"
493     echo "    enter      - enters the rootfs of a livecd"
494     echo
495     echo "    for example '$(basename $0) all default'"
496     echo "    creates a livecd using the default profile."
497     echo
498    }
499    
500    # set some proper traps
501    trap "trap_exit" SIGINT SIGQUIT
502    
503  # source profile config - overrides all other vars  # source profile config - overrides all other vars
504  [ -f ${PROFILES_DIR}/${CDPROFILE}/config ] && . ${PROFILES_DIR}/${CDPROFILE}/config  [ -f ${PROFILES_DIR}/${CDPROFILE}/config ] && . ${PROFILES_DIR}/${CDPROFILE}/config
505    
506  bootstrap_system  case $1 in
507  prepare_iso   bootstrap) bootstrap_system;;
508  generate_rootfs   prepare) prepare_iso;;
509  generate_initrd   rootfs) generate_rootfs;;
510  install_bootloader   initrd) generate_initrd;;
511  generate_iso   bootloader) install_bootloader;;
512     isogen) generate_iso;;
513     all)
514     bootstrap_system
515     prepare_iso
516     generate_rootfs
517     generate_initrd
518     install_bootloader
519     generate_iso
520     ;;
521     enter) enter_livecd ;;
522     *|'') usage;;
523    esac

Legend:
Removed from v.348  
changed lines
  Added in v.1531