Magellan Linux

Diff of /trunk/mlivecdbuild/mlivecdbuild2.sh

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

revision 1446 by niro, Fri Jul 29 11:14:07 2011 UTC revision 3226 by niro, Tue Sep 19 09:30:48 2023 UTC
# Line 22  GLOBAL_PROFILE="${PROFILES_DIR}/global" Line 22  GLOBAL_PROFILE="${PROFILES_DIR}/global"
22  # get full path to isolinux.bin, may vary on multilib systems  # get full path to isolinux.bin, may vary on multilib systems
23  if [[ -f /usr/share/syslinux/isolinux.bin ]]  if [[ -f /usr/share/syslinux/isolinux.bin ]]
24  then  then
25   ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin   ISOLINUX_BIN="/usr/share/syslinux/isolinux.bin"
26  elif [[ -f /usr/lib64/mkinitrd/isolinux.bin ]]  elif [[ -f /usr/lib64/mkinitrd/isolinux.bin ]]
27  then  then
28   ISOLINUX_BIN=/usr/lib64/mkinitrd/isolinux.bin   ISOLINUX_BIN="/usr/lib64/mkinitrd/isolinux.bin"
29  else  else
30   ISOLINUX_BIN=/usr/lib/mkinitrd/isolinux.bin   ISOLINUX_BIN="/usr/lib/mkinitrd/isolinux.bin"
31    fi
32    
33    if [[ -f /usr/share/syslinux/ldlinux.c32 ]]
34    then
35     LDLINUX_C32="/usr/share/syslinux/ldlinux.c32"
36    else
37     LDLINUX_C32=""
38  fi  fi
39    
40  die() { echo "ERROR: $@"; exit 1; }  die() { echo "ERROR: $@"; exit 1; }
# Line 54  bootstrap_system() Line 61  bootstrap_system()
61   --profile "${MAGE_PROFILE}" \   --profile "${MAGE_PROFILE}" \
62   --toolchain "${TOOLCHAIN}" \   --toolchain "${TOOLCHAIN}" \
63   --basesystem "${BASESYSTEM}" \   --basesystem "${BASESYSTEM}" \
64     --update-tarball \
65   || die "bootstrapping toolchain"   || die "bootstrapping toolchain"
66  }  }
67    
# Line 64  custom_services() Line 72  custom_services()
72   local systemdcmd   local systemdcmd
73    
74   case ${cmd} in   case ${cmd} in
75   add|del|default)   add|del|default|is-enabled)
76   # add given services from profile   # add given services from profile
77   if [[ -n ${services} ]]   if [[ -n ${services} ]]
78   then   then
# Line 72  custom_services() Line 80  custom_services()
80   for i in ${services}   for i in ${services}
81   do   do
82   # systemd   # systemd
83   if [[ -x ${CDCHROOTDIR}/sbin/systemctl ]]   if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
84   then   then
85   case ${cmd} in   case ${cmd} in
86   add) chroot ${CDCHROOTDIR} systemctl enable ${i} ;;   add) chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
87   del) chroot ${CDCHROOTDIR} systemctl disable ${i} ;;   del) chroot ${CDCHROOTDIR} systemctl disable ${i} ;;
88     is-enabled) chroot ${CDCHROOTDIR} systemctl is-enabled ${i} ;;
89     default)
90     # convert targets
91     case ${i} in
92     2|3|multi-user) service="multi-user.target" ;;
93     5|graphical) service="graphical.target" ;;
94     esac
95     chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
96   esac   esac
97   fi   fi
98   # busybox and sysvinit   # busybox and sysvinit
99   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]] && [[ ! -x ${CDCHROOTDIR}/bin/systemctl ]]  && [[ ! -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
100   then   then
101   MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"   MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"
102   fi   fi
# Line 161  prepare_iso() Line 177  prepare_iso()
177   echo Preparing LiveCD ISO Image ...   echo Preparing LiveCD ISO Image ...
178    
179   # fixes some issues with xfree/xorg xkb   # fixes some issues with xfree/xorg xkb
180   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] && [[ -d /usr/X11R6/lib/X11/xkb ]]   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] &&
181     [[ -d ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ]]
182   then   then
183   rm ${CDCHROOTDIR}/etc/X11/xkb || die   rm ${CDCHROOTDIR}/etc/X11/xkb || die
184   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die
185   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die
186   fi   fi
187    
188     # fix issues with >=dracut-014 which drops some default modules like livecd
189     if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
190     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
191     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
192     then
193     install -d ${CDCHROOTDIR}/etc/dracut.conf.d || die
194     echo 'add_dracutmodules+=" dmsquash-live "' > ${CDCHROOTDIR}/etc/dracut.conf.d/02-livecd.conf || die
195     fi
196    
197   # only on sysvinit or busybox systems   # only on sysvinit or busybox systems
198   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
199   then   then
200   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die
201   fi   fi
202   # check lock group on systemd systems   if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
  if [[ -x ${CDCHROOTDIR}/bin/systemctl ]]  
203   then   then
204     # check lock group on systemd systems
205   if [[ -z $(chroot ${CDCHROOTDIR} getent group lock) ]]   if [[ -z $(chroot ${CDCHROOTDIR} getent group lock) ]]
206   then   then
207   chroot ${CDCHROOTDIR}  groupadd -g 54 lock   echo "adding missing group 'lock'"
208     chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 54" lock
209     fi
210     # dbus plugdev group
211     if [[ -z $(chroot ${CDCHROOTDIR} getent group plugdev) ]]
212     then
213     echo "adding missing group 'plugdev'"
214     chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 302" plugdev
215     fi
216     # dbus messagebus group
217     if [[ -z $(chroot ${CDCHROOTDIR} getent group messagebus) ]]
218     then
219     echo "adding missing group 'messagebus'"
220     chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 300" messagebus
221     fi
222     # dbus messagebus user
223     if [[ -z $(chroot ${CDCHROOTDIR} getent passwd messagebus) ]]
224     then
225     echo "adding missing user 'messagebus'"
226     chroot ${CDCHROOTDIR} /usr/lib/mage/museradd -o "-u 300 -g messagebus -d /dev/null -s /bin/false" messagebus
227   fi   fi
228   fi   fi
229   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die
# Line 186  prepare_iso() Line 231  prepare_iso()
231   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die
232   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
233   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die
234     install -d ${CDCHROOTDIR}/mnt/magellan || die
235    
236   echo Setting up services ...   echo Setting up services ...
237    
238     # install systemd default services
239     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]]
240     then
241     # install tmpfs /tmp and /var/tmp
242     install -m 0644 $(get_profile tmp.mount) ${CDCHROOTDIR}/lib/systemd/system/ || die
243     install -m 0644 $(get_profile var-tmp.mount) ${CDCHROOTDIR}/lib/systemd/system/ || die
244     # enable them
245     ln -snf ../tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/tmp.mount || die
246     ln -snf ../var-tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
247     fi
248     # newer systemd goes to /usr/lib
249     if [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
250     then
251     # install tmpfs /tmp and /var/tmp
252     install -m 0644 $(get_profile tmp.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/ || die
253     install -m 0644 $(get_profile var-tmp.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/ || die
254     # enable them
255     ln -snf ../tmp.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/tmp.mount || die
256     ln -snf ../var-tmp.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
257     fi
258    
259     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
260     then
261     install -m 0644 $(get_profile getty) ${CDCHROOTDIR}/etc/conf.d/getty || die
262    
263     custom_services add getty@tty1.service
264     custom_services add remote-fs.target
265     # disable readahead
266     custom_services is-enabled systemd-readahead-replay.service && custom_services del systemd-readahead-replay.service
267     custom_services is-enabled systemd-readahead-collect.service && custom_services del systemd-readahead-collect.service
268     fi
269    
270  # # add hardware detection  # # add hardware detection
271  # if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]  # if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
272  # then  # then
# Line 254  generate_rootfs() Line 332  generate_rootfs()
332   fi   fi
333    
334   echo Generating squashfs compressed rootfs loopfile ...   echo Generating squashfs compressed rootfs loopfile ...
335   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
336     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
337     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
338   then   then
339   install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die   install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die
340    
341   # get the actual size of the chroot   # get the actual size of the chroot
342   size=$(du -s chroot | sed 's:^\(.*\)[[:space:]].*:\1:')   size=$(du -s ${LIVECDROOT}/chroot | sed 's:^\(.*\)[[:space:]].*:\1:')
343    
344   # generate a ext3fs file for devicemapper   # generate a ext3fs file for devicemapper
345   dd if=/dev/zero of=${LIVECDROOT}/loop/LiveOS/ext3fs.img bs=1024 count=$(( ${size} + 10 )) || die   dd if=/dev/zero of=${LIVECDROOT}/loop/LiveOS/ext3fs.img bs=1024 count=$(( ${size} + 10 )) || die
# Line 280  generate_rootfs() Line 360  generate_rootfs()
360    
361   # copy everything to the image file and preserve permissions   # copy everything to the image file and preserve permissions
362   ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )   ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )
363     sleep 3
364    
365   # now umount everything and create the squashfs image   # now umount everything and create the squashfs image
366   umount ${LIVECDROOT}/loop/mnt || die   umount ${LIVECDROOT}/loop/mnt || die
# Line 302  generate_rootfs() Line 383  generate_rootfs()
383    
384   echo Moving rootfs loopfile to isoroot ...   echo Moving rootfs loopfile to isoroot ...
385   install -d ${CDISOROOT}   install -d ${CDISOROOT}
386   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
387     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
388     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
389   then   then
390   install -d ${CDISOROOT}/LiveOS   install -d ${CDISOROOT}/LiveOS
391   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img
# Line 318  install_bootloader() Line 401  install_bootloader()
401   # iso linux binary   # iso linux binary
402   install -d ${CDISOROOT}/isolinux   install -d ${CDISOROOT}/isolinux
403   install ${ISOLINUX_BIN} ${CDISOROOT}/isolinux || die   install ${ISOLINUX_BIN} ${CDISOROOT}/isolinux || die
404     if [[ -n ${LDLINUX_C32} ]]
405     then
406     install ${LDLINUX_C32} ${CDISOROOT}/isolinux || die
407     fi
408    
409   # kernel   # kernel
410   local kimg="$(basename $(readlink ${CDCHROOTDIR}/boot/vmlinuz))"   # support kernel installations without symlinks
411     if [ -L ${CDCHROOTDIR}/boot/vmlinuz ]
412     then
413     local kimg="$(basename $(readlink ${CDCHROOTDIR}/boot/vmlinuz))"
414     else
415     local kimg="$(find ${CDCHROOTDIR}/boot -name kernel-\* -printf '%f\n')"
416     fi
417   install ${CDCHROOTDIR}/boot/${kimg} ${CDISOROOT}/isolinux/${CDKERNELNAME} || die   install ${CDCHROOTDIR}/boot/${kimg} ${CDISOROOT}/isolinux/${CDKERNELNAME} || die
418    
419   install -m 0644 $(get_profile isolinux.cfg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile isolinux.cfg) ${CDISOROOT}/isolinux || die
420   install -m 0644 $(get_profile boot.lss) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile boot.lss) ${CDISOROOT}/isolinux || die
421   install -m 0644 $(get_profile boot.msg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile boot.msg) ${CDISOROOT}/isolinux || die
422   install -m 0644 $(get_profile help.msg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile help.msg) ${CDISOROOT}/isolinux || die
423     # support the new layout too
424     if [[ -f $(get_profile index.msg) ]]
425     then
426     install -m 0644 $(get_profile index.msg) ${CDISOROOT}/isolinux || die
427     fi
428     if [[ -f $(get_profile debug.msg) ]]
429     then
430     install -m 0644 $(get_profile debug.msg) ${CDISOROOT}/isolinux || die
431     fi
432    
433   return 0   return 0
434  }  }
# Line 342  generate_initrd() Line 444  generate_initrd()
444   echo Generating initrd image ...   echo Generating initrd image ...
445   echo '#!/bin/bash' > ${CHROOTSH} || die   echo '#!/bin/bash' > ${CHROOTSH} || die
446   echo 'export LC_ALL=C' >> ${CHROOTSH} || die   echo 'export LC_ALL=C' >> ${CHROOTSH} || die
447   echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die   # support kernel installations without symlinks
448   echo 'kv="${kv/kernel-}/"' >> ${CHROOTSH} || die   if [ -L ${CDCHROOTDIR}/boot/vmlinuz ]
449     then
450     echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die
451     else
452     echo "kv=\$(find /boot -name kernel-\* -printf '%f\n')" >> ${CHROOTSH} || die
453     fi
454     echo 'kv="${kv/kernel-/}"' >> ${CHROOTSH} || die
455   # prefer dracut   # prefer dracut
456   echo 'if [[ -x /sbin/dracut ]]' >> ${CHROOTSH} || die   echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${CHROOTSH} || die
457   echo 'then' >> ${CHROOTSH} || die   echo 'then' >> ${CHROOTSH} || die
458   echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die   echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die
459   echo 'else' >> ${CHROOTSH} || die   echo 'else' >> ${CHROOTSH} || die

Legend:
Removed from v.1446  
changed lines
  Added in v.3226