Magellan Linux

Diff of /trunk/mlivecdbuild/mlivecdbuild2.sh

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

revision 1531 by niro, Fri Nov 4 11:34:30 2011 UTC revision 2319 by niro, Fri Jan 3 08:19:48 2014 UTC
# Line 54  bootstrap_system() Line 54  bootstrap_system()
54   --profile "${MAGE_PROFILE}" \   --profile "${MAGE_PROFILE}" \
55   --toolchain "${TOOLCHAIN}" \   --toolchain "${TOOLCHAIN}" \
56   --basesystem "${BASESYSTEM}" \   --basesystem "${BASESYSTEM}" \
57     --update-tarball \
58   || die "bootstrapping toolchain"   || die "bootstrapping toolchain"
59  }  }
60    
# Line 64  custom_services() Line 65  custom_services()
65   local systemdcmd   local systemdcmd
66    
67   case ${cmd} in   case ${cmd} in
68   add|del|default)   add|del|default|is-enabled)
69   # add given services from profile   # add given services from profile
70   if [[ -n ${services} ]]   if [[ -n ${services} ]]
71   then   then
# Line 72  custom_services() Line 73  custom_services()
73   for i in ${services}   for i in ${services}
74   do   do
75   # systemd   # systemd
76   if [[ -x ${CDCHROOTDIR}/sbin/systemctl ]]   if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
77   then   then
78   case ${cmd} in   case ${cmd} in
79   add) chroot ${CDCHROOTDIR} systemctl enable ${i} ;;   add) chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
80   del) chroot ${CDCHROOTDIR} systemctl disable ${i} ;;   del) chroot ${CDCHROOTDIR} systemctl disable ${i} ;;
81     is-enabled) chroot ${CDCHROOTDIR} systemctl is-enabled ${i} ;;
82   default)   default)
83   # convert targets   # convert targets
84   case ${i} in   case ${i} in
85   2|3) service="multi-user.target" ;;   2|3|multi-user) service="multi-user.target" ;;
86   5) service="graphical.target" ;;   5|graphical) service="graphical.target" ;;
87   esac   esac
88   chroot ${CDCHROOTDIR} systemctl enable ${i} ;;   chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
89   esac   esac
90   fi   fi
91   # busybox and sysvinit   # busybox and sysvinit
92   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]] && [[ ! -x ${CDCHROOTDIR}/bin/systemctl ]]  && [[ ! -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
93   then   then
94   MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"   MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"
95   fi   fi
# Line 168  prepare_iso() Line 170  prepare_iso()
170   echo Preparing LiveCD ISO Image ...   echo Preparing LiveCD ISO Image ...
171    
172   # fixes some issues with xfree/xorg xkb   # fixes some issues with xfree/xorg xkb
173   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] && [[ -d /usr/X11R6/lib/X11/xkb ]]   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] &&
174     [[ -d ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ]]
175   then   then
176   rm ${CDCHROOTDIR}/etc/X11/xkb || die   rm ${CDCHROOTDIR}/etc/X11/xkb || die
177   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die
178   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die
179   fi   fi
180    
181     # fix issues with >=dracut-014 which drops some default modules like livecd
182     if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
183     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
184     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
185     then
186     install -d ${CDCHROOTDIR}/etc/dracut.conf.d || die
187     echo 'add_dracutmodules+=" dmsquash-live "' \
188     > ${CDCHROOTDIR}/etc/dracut.conf.d/02-livecd.conf || die
189     fi
190    
191   # only on sysvinit or busybox systems   # only on sysvinit or busybox systems
192   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
193   then   then
194   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die
195   fi   fi
196   if [[ -x ${CDCHROOTDIR}/bin/systemctl ]]   if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
197   then   then
198   # check lock group on systemd systems   # check lock group on systemd systems
199   if [[ -z $(chroot ${CDCHROOTDIR} getent group lock) ]]   if [[ -z $(chroot ${CDCHROOTDIR} getent group lock) ]]
200   then   then
201   echo "adding missing group 'lock'"   echo "adding missing group 'lock'"
202   chroot ${CDCHROOTDIR}  groupadd -g 54 lock   chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 54" lock
203   fi   fi
204   # dbus plugdev group   # dbus plugdev group
205   if [[ -z $(chroot ${CDCHROOTDIR} getent group plugdev) ]]   if [[ -z $(chroot ${CDCHROOTDIR} getent group plugdev) ]]
206   then   then
207   echo "adding missing group 'plugdev'"   echo "adding missing group 'plugdev'"
208   chroot ${CDCHROOTDIR}  groupadd -g 302 plugdev   chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 302" plugdev
209   fi   fi
210   # dbus messagebus group   # dbus messagebus group
211   if [[ -z $(chroot ${CDCHROOTDIR} getent group messagebus) ]]   if [[ -z $(chroot ${CDCHROOTDIR} getent group messagebus) ]]
212   then   then
213   echo "adding missing group 'messagebus'"   echo "adding missing group 'messagebus'"
214   chroot ${CDCHROOTDIR}  groupadd -g 300 messagebus   chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 300" messagebus
215   fi   fi
216   # dbus messagebus user   # dbus messagebus user
217   if [[ -z $(chroot ${CDCHROOTDIR} getent passwd messagebus) ]]   if [[ -z $(chroot ${CDCHROOTDIR} getent passwd messagebus) ]]
218   then   then
219   echo "adding missing user 'messagebus'"   echo "adding missing user 'messagebus'"
220   chroot ${CDCHROOTDIR}  useradd -u 300 -g messagebus -d /dev/null -s /bin/false messagebus   chroot ${CDCHROOTDIR} /usr/lib/mage/museradd -o "-u 300 -g messagebus -d /dev/null -s /bin/false" messagebus
221   fi   fi
222   fi   fi
223   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die
# Line 212  prepare_iso() Line 225  prepare_iso()
225   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die
226   install -m 0644 $(get_profile net.eth0) ${CDCHROOTDIR}/etc/conf.d/net.eth0 || die   install -m 0644 $(get_profile net.eth0) ${CDCHROOTDIR}/etc/conf.d/net.eth0 || die
227   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die
228     install -d ${CDCHROOTDIR}/mnt/magellan || die
229    
230   echo Setting up services ...   echo Setting up services ...
231    
# Line 224  prepare_iso() Line 238  prepare_iso()
238   # enable them   # enable them
239   ln -snf ../tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/tmp.mount || die   ln -snf ../tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/tmp.mount || die
240   ln -snf ../var-tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die   ln -snf ../var-tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
241     fi
242     # newer systemd goes to /usr/lib
243     if [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
244     then
245     # install tmpfs /tmp and /var/tmp
246     install -m 0644 $(get_profile tmp.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/ || die
247     install -m 0644 $(get_profile var-tmp.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/ || die
248     # enable them
249     ln -snf ../tmp.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/tmp.mount || die
250     ln -snf ../var-tmp.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
251     fi
252    
253     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
254     then
255   install -m 0644 $(get_profile getty) ${CDCHROOTDIR}/etc/conf.d/getty || die   install -m 0644 $(get_profile getty) ${CDCHROOTDIR}/etc/conf.d/getty || die
256    
257   custom_services add getty@.service   custom_services add getty@tty1.service
258   custom_services add remote-fs.target   custom_services add remote-fs.target
259   # disable readahead   # disable readahead
260   custom_services del systemd-readahead-replay.service   custom_services is-enabled systemd-readahead-replay.service && custom_services del systemd-readahead-replay.service
261   custom_services del systemd-readahead-collect.service   custom_services is-enabled systemd-readahead-collect.service && custom_services del systemd-readahead-collect.service
262   fi   fi
263    
264  # # add hardware detection  # # add hardware detection
# Line 299  generate_rootfs() Line 326  generate_rootfs()
326   fi   fi
327    
328   echo Generating squashfs compressed rootfs loopfile ...   echo Generating squashfs compressed rootfs loopfile ...
329   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
330     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
331     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
332   then   then
333   install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die   install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die
334    
# Line 325  generate_rootfs() Line 354  generate_rootfs()
354    
355   # copy everything to the image file and preserve permissions   # copy everything to the image file and preserve permissions
356   ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )   ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )
357     sleep 3
358    
359   # now umount everything and create the squashfs image   # now umount everything and create the squashfs image
360   umount ${LIVECDROOT}/loop/mnt || die   umount ${LIVECDROOT}/loop/mnt || die
# Line 347  generate_rootfs() Line 377  generate_rootfs()
377    
378   echo Moving rootfs loopfile to isoroot ...   echo Moving rootfs loopfile to isoroot ...
379   install -d ${CDISOROOT}   install -d ${CDISOROOT}
380   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
381     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
382     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
383   then   then
384   install -d ${CDISOROOT}/LiveOS   install -d ${CDISOROOT}/LiveOS
385   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img
# Line 365  install_bootloader() Line 397  install_bootloader()
397   install ${ISOLINUX_BIN} ${CDISOROOT}/isolinux || die   install ${ISOLINUX_BIN} ${CDISOROOT}/isolinux || die
398    
399   # kernel   # kernel
400   local kimg="$(basename $(readlink ${CDCHROOTDIR}/boot/vmlinuz))"   # support kernel installations without symlinks
401     if [ -L ${CDCHROOTDIR}/boot/vmlinuz ]
402     then
403     local kimg="$(basename $(readlink ${CDCHROOTDIR}/boot/vmlinuz))"
404     else
405     local kimg="$(find ${CDCHROOTDIR}/boot -name kernel-\* -printf '%f\n')"
406     fi
407   install ${CDCHROOTDIR}/boot/${kimg} ${CDISOROOT}/isolinux/${CDKERNELNAME} || die   install ${CDCHROOTDIR}/boot/${kimg} ${CDISOROOT}/isolinux/${CDKERNELNAME} || die
408    
409   install -m 0644 $(get_profile isolinux.cfg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile isolinux.cfg) ${CDISOROOT}/isolinux || die
# Line 396  generate_initrd() Line 434  generate_initrd()
434   echo Generating initrd image ...   echo Generating initrd image ...
435   echo '#!/bin/bash' > ${CHROOTSH} || die   echo '#!/bin/bash' > ${CHROOTSH} || die
436   echo 'export LC_ALL=C' >> ${CHROOTSH} || die   echo 'export LC_ALL=C' >> ${CHROOTSH} || die
437   echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die   # support kernel installations without symlinks
438   echo 'kv="${kv/kernel-}/"' >> ${CHROOTSH} || die   if [ -L ${CDCHROOTDIR}/boot/vmlinuz ]
439     then
440     echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die
441     else
442     echo "kv=\$(find /boot -name kernel-\* -printf '%f\n')" >> ${CHROOTSH} || die
443     fi
444     echo 'kv="${kv/kernel-/}"' >> ${CHROOTSH} || die
445   # prefer dracut   # prefer dracut
446   echo 'if [[ -x /sbin/dracut ]]' >> ${CHROOTSH} || die   echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${CHROOTSH} || die
447   echo 'then' >> ${CHROOTSH} || die   echo 'then' >> ${CHROOTSH} || die
448   echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die   echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die
449   echo 'else' >> ${CHROOTSH} || die   echo 'else' >> ${CHROOTSH} || die

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