111 |
{ |
{ |
112 |
local var="$1" |
local var="$1" |
113 |
|
|
114 |
|
if [[ -z ${ADD_INITRC_CHROOT} ]] |
115 |
|
then |
116 |
|
ADD_INITRC_CHROOT="${CDCHROOTDIR}" |
117 |
|
fi |
118 |
|
|
119 |
# sanity checks |
# sanity checks |
120 |
[[ -z ${CDCHROOTDIR} ]] && die "\$CDCHROOTDIR not given." |
[[ -z ${ADD_INITRC_CHROOT} ]] && die "\$ADD_INITRC_CHROOT not given." |
121 |
echo "${var}" >> ${CDCHROOTDIR}/.installrc || die "add_initrc() adding \$var" |
echo "${var}" >> ${ADD_INITRC_CHROOT}/.installrc || die "add_initrc() adding \$var" |
122 |
} |
} |
123 |
|
|
124 |
custom_packages() |
custom_packages() |
126 |
local cmd="$1" |
local cmd="$1" |
127 |
local packages="$2" |
local packages="$2" |
128 |
|
|
129 |
|
if [[ -z ${CUSTOM_PACKAGES_CHROOT} ]] |
130 |
|
then |
131 |
|
CUSTOM_PACKAGES_CHROOT="${CDCHROOTDIR}" |
132 |
|
ADD_INITRC_CHROOT="${CDCHROOTDIR}" |
133 |
|
else |
134 |
|
ADD_INITRC_CHROOT="${CUSTOM_PACKAGES_CHROOT}" |
135 |
|
fi |
136 |
|
|
137 |
case ${cmd} in |
case ${cmd} in |
138 |
install|uninstall) |
install|uninstall) |
139 |
if [[ -n ${packages} ]] |
if [[ -n ${packages} ]] |
140 |
then |
then |
141 |
:> ${CDCHROOTDIR}/.installrc |
:> ${CUSTOM_PACKAGES_CHROOT}/.installrc |
142 |
|
|
143 |
# respect proxies |
# respect proxies |
144 |
[[ -n ${http_proxy} ]] && add_initrc "export http_proxy=${http_proxy}" |
[[ -n ${http_proxy} ]] && add_initrc "export http_proxy=${http_proxy}" |
157 |
add_initrc "mage clean" |
add_initrc "mage clean" |
158 |
|
|
159 |
# now run the .installrc script |
# now run the .installrc script |
160 |
mount -t proc proc ${CDCHROOTDIR}/proc || die "mount proc" |
mount -t proc proc ${CUSTOM_PACKAGES_CHROOT}/proc || die "mount proc" |
161 |
mount -t sysfs sysfs ${CDCHROOTDIR}/sys || die "mount sys" |
mount -t sysfs sysfs ${CUSTOM_PACKAGES_CHROOT}/sys || die "mount sys" |
162 |
mount -o bind /dev ${CDCHROOTDIR}/dev || die "mount dev" |
mount -o bind /dev ${CUSTOM_PACKAGES_CHROOT}/dev || die "mount dev" |
163 |
chroot ${CDCHROOTDIR} /bin/bash -i /.installrc || die "chr00ting" |
chroot ${CUSTOM_PACKAGES_CHROOT} /bin/bash -i /.installrc || die "chr00ting" |
164 |
umount ${CDCHROOTDIR}/dev || die "umount dev" |
umount ${CUSTOM_PACKAGES_CHROOT}/dev || die "umount dev" |
165 |
umount ${CDCHROOTDIR}/proc || die "umount proc" |
umount ${CUSTOM_PACKAGES_CHROOT}/proc || die "umount proc" |
166 |
umount ${CDCHROOTDIR}/sys || die "umount sys" |
umount ${CUSTOM_PACKAGES_CHROOT}/sys || die "umount sys" |
167 |
[ -f ${CDCHROOTDIR}/.installrc ] && rm ${CDCHROOTDIR}/.installrc |
[ -f ${CUSTOM_PACKAGES_CHROOT}/.installrc ] && rm ${CUSTOM_PACKAGES_CHROOT}/.installrc |
168 |
fi |
fi |
169 |
;; |
;; |
170 |
*) die "custom_packages: unkown command ${cmd}";; |
*) die "custom_packages: unkown command ${cmd}";; |
449 |
|
|
450 |
generate_initrd() |
generate_initrd() |
451 |
{ |
{ |
452 |
local CHROOTSH="$(mktemp -p ${CDCHROOTDIR})" |
if [[ -z ${INITRD_CHROOT} ]] |
453 |
|
then |
454 |
|
INITRD_CHROOT="${CDCHROOTDIR}" |
455 |
|
fi |
456 |
|
|
457 |
is_loc_mounted "${CDCHROOTDIR}/sys" || mount -t sysfs sysfs ${CDCHROOTDIR}/sys |
local INITRD_CHROOTSH="$(mktemp -p ${INITRD_CHROOT})" |
458 |
is_loc_mounted "${CDCHROOTDIR}/proc" || mount -t proc proc ${CDCHROOTDIR}/proc |
|
459 |
is_loc_mounted "${CDCHROOTDIR}/dev" || mount -o bind /dev ${CDCHROOTDIR}/dev |
is_loc_mounted "${INITRD_CHROOT}/sys" || mount -t sysfs sysfs ${INITRD_CHROOT}/sys |
460 |
|
is_loc_mounted "${INITRD_CHROOT}/proc" || mount -t proc proc ${INITRD_CHROOT}/proc |
461 |
|
is_loc_mounted "${INITRD_CHROOT}/dev" || mount -o bind /dev ${INITRD_CHROOT}/dev |
462 |
|
|
463 |
echo Generating initrd image ... |
echo Generating initrd image ... |
464 |
echo '#!/bin/bash' > ${CHROOTSH} || die |
echo '#!/bin/bash' > ${INITRD_CHROOTSH} || die |
465 |
echo 'export LC_ALL=C' >> ${CHROOTSH} || die |
echo 'export LC_ALL=C' >> ${INITRD_CHROOTSH} || die |
466 |
# support kernel installations without symlinks |
# support kernel installations without symlinks |
467 |
if [ -L ${CDCHROOTDIR}/boot/vmlinuz ] |
if [ -L ${INITRD_CHROOT}/boot/vmlinuz ] |
468 |
then |
then |
469 |
echo 'kv="$(readlink /boot/vmlinuz)"' >> ${CHROOTSH} || die |
echo 'kv="$(readlink /boot/vmlinuz)"' >> ${INITRD_CHROOTSH} || die |
470 |
else |
else |
471 |
echo "kv=\$(find /boot -name kernel-\* -printf '%f\n')" >> ${CHROOTSH} || die |
echo "kv=\$(find /boot -name kernel-\* -printf '%f\n')" >> ${INITRD_CHROOTSH} || die |
472 |
fi |
fi |
473 |
echo 'kv="${kv/kernel-/}"' >> ${CHROOTSH} || die |
echo 'kv="${kv/kernel-/}"' >> ${INITRD_CHROOTSH} || die |
474 |
# prefer dracut |
# prefer dracut |
475 |
echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${CHROOTSH} || die |
echo 'if [[ -x /sbin/dracut ]] || [[ -x /usr/sbin/dracut ]] || [[ -x /usr/bin/dracut ]]' >> ${INITRD_CHROOTSH} || die |
476 |
echo 'then' >> ${CHROOTSH} || die |
echo 'then' >> ${INITRD_CHROOTSH} || die |
477 |
echo ' dracut -v -f /initrd.gz ${kv}' >> ${CHROOTSH} || die |
echo ' dracut -N -v -f /initrd.gz ${kv}' >> ${INITRD_CHROOTSH} || die |
478 |
echo 'else' >> ${CHROOTSH} || die |
echo 'else' >> ${INITRD_CHROOTSH} || die |
479 |
echo ' mkinitrd-livecd -f --initramfs /initrd.gz ${kv}' >> ${CHROOTSH} || die |
echo ' mkinitrd-livecd -f --initramfs /initrd.gz ${kv}' >> ${INITRD_CHROOTSH} || die |
480 |
echo 'fi' >> ${CHROOTSH} || die |
echo 'fi' >> ${INITRD_CHROOTSH} || die |
481 |
chmod +x ${CHROOTSH} || die |
chmod +x ${INITRD_CHROOTSH} || die |
482 |
chroot ${CDCHROOTDIR} /$(basename ${CHROOTSH}) || die |
chroot ${INITRD_CHROOT} /$(basename ${INITRD_CHROOTSH}) || die |
483 |
[[ -f ${CHROOTSH} ]] && rm ${CHROOTSH} || die |
[[ -f ${INITRD_CHROOTSH} ]] && rm ${INITRD_CHROOTSH} || die |
484 |
|
|
485 |
is_loc_mounted "${CDCHROOTDIR}/dev" && umount ${CDCHROOTDIR}/dev |
is_loc_mounted "${INITRD_CHROOT}/dev" && umount ${INITRD_CHROOT}/dev |
486 |
is_loc_mounted "${CDCHROOTDIR}/proc" && umount ${CDCHROOTDIR}/proc |
is_loc_mounted "${INITRD_CHROOT}/proc" && umount ${INITRD_CHROOT}/proc |
487 |
is_loc_mounted "${CDCHROOTDIR}/sys" && umount ${CDCHROOTDIR}/sys |
is_loc_mounted "${INITRD_CHROOT}/sys" && umount ${INITRD_CHROOT}/sys |
488 |
|
|
489 |
# move initrd to isoroot |
# move initrd to isoroot |
490 |
install -d ${CDISOROOT}/isolinux || die |
install -d ${CDISOROOT}/isolinux || die |
491 |
mv ${CDCHROOTDIR}/initrd.gz ${CDISOROOT}/isolinux || die |
mv ${INITRD_CHROOT}/initrd.gz ${CDISOROOT}/isolinux || die |
492 |
|
chmod 0644 ${CDISOROOT}/isolinux/initrd.gz || die |
493 |
} |
} |
494 |
|
|
495 |
generate_iso() |
generate_iso() |