Magellan Linux

Diff of /trunk/mlivecdbuild/mlivecdbuild2.sh

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

revision 1403 by niro, Sun Jun 5 18:27:47 2011 UTC revision 2122 by niro, Thu May 16 13:23:45 2013 UTC
# 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 an multilib systems  # get full path to isolinux.bin, may vary on multilib systems
23  if [[ -f /usr/lib64/mkinitrd/isolinux.bin ]]  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  then
28   ISOLINUX_BIN=/usr/lib64/mkinitrd/isolinux.bin   ISOLINUX_BIN=/usr/lib64/mkinitrd/isolinux.bin
29  else  else
# Line 51  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 69  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     default)
82     # convert targets
83     case ${i} in
84     2|3|multi-user) service="multi-user.target" ;;
85     5|graphical) service="graphical.target" ;;
86     esac
87     chroot ${CDCHROOTDIR} systemctl enable ${i} ;;
88   esac   esac
89   fi   fi
90   # busybox and sysvinit   # busybox and sysvinit
91   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]] && [[ ! -x ${CDCHROOTDIR}/bin/systemctl ]]  && [[ ! -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
92   then   then
93   MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"   MROOT="${CDCHROOTDIR}" rc-config ${cmd} ${i} || die "rc ${cmd} ${i}"
94   fi   fi
# Line 158  prepare_iso() Line 169  prepare_iso()
169   echo Preparing LiveCD ISO Image ...   echo Preparing LiveCD ISO Image ...
170    
171   # fixes some issues with xfree/xorg xkb   # fixes some issues with xfree/xorg xkb
172   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] && [[ -d /usr/X11R6/lib/X11/xkb ]]   if [[ -L ${CDCHROOTDIR}/etc/X11/xkb ]] &&
173     [[ -d ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ]]
174   then   then
175   rm ${CDCHROOTDIR}/etc/X11/xkb || die   rm ${CDCHROOTDIR}/etc/X11/xkb || die
176   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die   mv ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb ${CDCHROOTDIR}/etc/X11 || die
177   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die   ln -s ../../../../etc/X11/xkb ${CDCHROOTDIR}/usr/X11R6/lib/X11/xkb || die
178   fi   fi
179    
180     # fix issues with >=dracut-014 which drops some default modules like livecd
181     if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
182     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
183     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
184     then
185     install -d ${CDCHROOTDIR}/etc/dracut.conf.d || die
186     echo 'add_dracutmodules+=" dmsquash-live "' \
187     > ${CDCHROOTDIR}/etc/dracut.conf.d/02-livecd.conf || die
188     fi
189    
190   # only on sysvinit or busybox systems   # only on sysvinit or busybox systems
191   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]   if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
192   then   then
193   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die   install -m 0644 $(get_profile inittab) ${CDCHROOTDIR}/etc/inittab || die
194   fi   fi
195     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
196     then
197     # check lock group on systemd systems
198     if [[ -z $(chroot ${CDCHROOTDIR} getent group lock) ]]
199     then
200     echo "adding missing group 'lock'"
201     chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 54" lock
202     fi
203     # dbus plugdev group
204     if [[ -z $(chroot ${CDCHROOTDIR} getent group plugdev) ]]
205     then
206     echo "adding missing group 'plugdev'"
207     chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 302" plugdev
208     fi
209     # dbus messagebus group
210     if [[ -z $(chroot ${CDCHROOTDIR} getent group messagebus) ]]
211     then
212     echo "adding missing group 'messagebus'"
213     chroot ${CDCHROOTDIR} /usr/lib/mage/mgroupadd -o "-g 300" messagebus
214     fi
215     # dbus messagebus user
216     if [[ -z $(chroot ${CDCHROOTDIR} getent passwd messagebus) ]]
217     then
218     echo "adding missing user 'messagebus'"
219     chroot ${CDCHROOTDIR} /usr/lib/mage/museradd -o "-u 300 -g messagebus -d /dev/null -s /bin/false" messagebus
220     fi
221     fi
222   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die   install -m 0644 $(get_profile fstab) ${CDCHROOTDIR}/etc/fstab || die
223   install -m 0644 $(get_profile motd) ${CDCHROOTDIR}/etc/motd || die   install -m 0644 $(get_profile motd) ${CDCHROOTDIR}/etc/motd || die
224   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die   install -m 0644 $(get_profile issue) ${CDCHROOTDIR}/etc/issue || die
225   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
226   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die   echo "${CDHOSTNAME}" > ${CDCHROOTDIR}/etc/hostname || die
227     install -d ${CDCHROOTDIR}/mnt/magellan || die
228    
229   echo Setting up services ...   echo Setting up services ...
230    
231     # install systemd default services
232     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]]
233     then
234     # install tmpfs /tmp and /var/tmp
235     install -m 0644 $(get_profile tmp.mount) ${CDCHROOTDIR}/lib/systemd/system/ || die
236     install -m 0644 $(get_profile var-tmp.mount) ${CDCHROOTDIR}/lib/systemd/system/ || die
237     # enable them
238     ln -snf ../tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/tmp.mount || die
239     ln -snf ../var-tmp.mount ${CDCHROOTDIR}/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
240     fi
241     # newer systemd goes to /usr/lib
242     if [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
243     then
244     # install tmpfs /tmp and /var/tmp
245     install -m 0644 $(get_profile tmp.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/ || die
246     install -m 0644 $(get_profile var-tmp.mount) ${CDCHROOTDIR}/usr/lib/systemd/system/ || die
247     # enable them
248     ln -snf ../tmp.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/tmp.mount || die
249     ln -snf ../var-tmp.mount ${CDCHROOTDIR}/usr/lib/systemd/system/local-fs.target.wants/var-tmp.mount || die
250     fi
251    
252     if [[ -x ${CDCHROOTDIR}/bin/systemctl ]] || [[ -x ${CDCHROOTDIR}/usr/bin/systemctl ]]
253     then
254     install -m 0644 $(get_profile getty) ${CDCHROOTDIR}/etc/conf.d/getty || die
255    
256     custom_services add getty@.service
257     custom_services add remote-fs.target
258     # disable readahead
259     custom_services del systemd-readahead-replay.service
260     custom_services del systemd-readahead-collect.service
261     fi
262    
263  # # add hardware detection  # # add hardware detection
264  # if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]  # if [[ -x ${CDCHROOTDIR}/sbin/rc-config ]]
265  # then  # then
# Line 243  generate_rootfs() Line 325  generate_rootfs()
325   fi   fi
326    
327   echo Generating squashfs compressed rootfs loopfile ...   echo Generating squashfs compressed rootfs loopfile ...
328   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
329     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
330     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
331   then   then
332   install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die   install -d ${LIVECDROOT}/loop/{LiveOS,mnt} || die
333    
334   # get the actual size of the chroot   # get the actual size of the chroot
335   size=$(du -s chroot | sed 's:^\(.*\)[[:space:]].*:\1:')   size=$(du -s ${LIVECDROOT}/chroot | sed 's:^\(.*\)[[:space:]].*:\1:')
336    
337   # generate a ext3fs file for devicemapper   # generate a ext3fs file for devicemapper
338   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 269  generate_rootfs() Line 353  generate_rootfs()
353    
354   # copy everything to the image file and preserve permissions   # copy everything to the image file and preserve permissions
355   ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )   ( cd ${CDCHROOTDIR} && tar cpf - . ) | ( cd ${LIVECDROOT}/loop/mnt && tar xvpf - )
356     sleep 3
357    
358   # now umount everything and create the squashfs image   # now umount everything and create the squashfs image
359   umount ${LIVECDROOT}/loop/mnt || die   umount ${LIVECDROOT}/loop/mnt || die
# Line 291  generate_rootfs() Line 376  generate_rootfs()
376    
377   echo Moving rootfs loopfile to isoroot ...   echo Moving rootfs loopfile to isoroot ...
378   install -d ${CDISOROOT}   install -d ${CDISOROOT}
379   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]]   if [[ -x ${CDCHROOTDIR}/sbin/dracut ]] ||
380     [[ -x ${CDCHROOTDIR}/usr/sbin/dracut ]] ||
381     [[ -x ${CDCHROOTDIR}/usr/bin/dracut ]]
382   then   then
383   install -d ${CDISOROOT}/LiveOS   install -d ${CDISOROOT}/LiveOS
384   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img   mv ${LIVECDROOT}/livecdrootfs.sqsh ${CDISOROOT}/LiveOS/squashfs.img
# Line 316  install_bootloader() Line 403  install_bootloader()
403   install -m 0644 $(get_profile boot.lss) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile boot.lss) ${CDISOROOT}/isolinux || die
404   install -m 0644 $(get_profile boot.msg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile boot.msg) ${CDISOROOT}/isolinux || die
405   install -m 0644 $(get_profile help.msg) ${CDISOROOT}/isolinux || die   install -m 0644 $(get_profile help.msg) ${CDISOROOT}/isolinux || die
406     # support the new layout too
407     if [[ -f $(get_profile index.msg) ]]
408     then
409     install -m 0644 $(get_profile index.msg) ${CDISOROOT}/isolinux || die
410     fi
411     if [[ -f $(get_profile debug.msg) ]]
412     then
413     install -m 0644 $(get_profile debug.msg) ${CDISOROOT}/isolinux || die
414     fi
415    
416   return 0   return 0
417  }  }
# Line 334  generate_initrd() Line 430  generate_initrd()
430   echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die   echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die
431   echo 'kv="${kv/kernel-}/"' >> ${CHROOTSH} || die   echo 'kv="${kv/kernel-}/"' >> ${CHROOTSH} || die
432   # prefer dracut   # prefer dracut
433   echo 'if [[ -x /sbin/dracut ]]' >> ${CHROOTSH} || die   echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${CHROOTSH} || die
434   echo 'then' >> ${CHROOTSH} || die   echo 'then' >> ${CHROOTSH} || die
435   echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die   echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die
436   echo 'else' >> ${CHROOTSH} || die   echo 'else' >> ${CHROOTSH} || die

Legend:
Removed from v.1403  
changed lines
  Added in v.2122