| 45,23 → 45,26 |
| ALCASAR_TARBALL=`ls $RESSOURCES| grep '^alcasar.*gz'` |
| ALCASAR_EXTRACTED_DIR=$(echo $ALCASAR_TARBALL | rev | cut -d '.' -f 3- | rev) |
| ALCASAR_VERSION=`echo $ALCASAR_EXTRACTED_DIR | cut -d"-" -f2` |
| TMP_DIR=/var/tmp |
| MAGEIA_NEW_DIR=$TMP_DIR/mageia_new |
| MAGEIA_OFFICIAL_DIR=$TMP_DIR/mageia_official |
| MAGEIA_OFFICIAL_DIR_EFI=$TMP_DIR/mageia_official_efi |
| MAGEIA_NEW_DIR=/var/tmp/mageia_new |
| MAGEIA_OFFICIAL_DIR=/var/tmp/mageia_official |
| MAGEIA_OFFICIAL_DIR_EFI=/var/tmp/mageia_official_efi |
| coreDir=${MAGEIA_OFFICIAL_DIR}/${ARCH}/media/core |
| nonFreeDir=${MAGEIA_OFFICIAL_DIR}/${ARCH}/media/nonfree |
| coreDirNew=${MAGEIA_NEW_DIR}/${ARCH}/media/core/ |
| nonFreeDirNew=${MAGEIA_NEW_DIR}/${ARCH}/media/nonfree |
| plopFilePath=${MAGEIA_NEW_DIR}/${ARCH}/media/plop.idx |
| ISO_OUT=/var/tmp/iso |
| RPM_DIR=/var/tmp/rpms |
| |
| |
| # Drake installer |
| INSTALLER_DIR="${MAGEIA_NEW_DIR}/${ARCH}/install/alcasar" |
| EFI_GRUB_CFG="${MAGEIA_NEW_DIR}/boot/grub2/grub.cfg" |
| ADVERT_DIR="${MAGEIA_NEW_DIR}/${ARCH}/install/extra/advertising" |
| AUTO_INSTALL_CFG=$TMP_DIR/auto_inst.cfg.pl |
| AUTO_INSTALL_CFG="${ISO_OUT}/auto_inst.cfg.pl" |
| |
| # RPMs needed during an install stage |
| BASE_RPM_LIST="acpi acpid alsa-utils aoss arp-scan basesystem bash-completion coreutils-doc cpupower curl dhcp-client dmraid dnf dnf-plugins-core dosfstools dracut drakx-net-text gpm grub2 grub2-efi grub2-mageia-theme harddrake hdparm hexedit info ldetect lftp lib64alsa-plugins lib64glib-networking-gnutls locales-en locales-fr lsof lvm2 mageia-theme-Default man-db man-pages microcode microcode_ctl mtools ntfs-3g numlock os-prober p11-kit perl-Hal-Cdroms plymouth procmail python3 python3-dbus radeon-firmware ralink-firmware rtlwifi-firmware sharutils shorewall-ipv6 strace sysfsutils tmpwatch tree vim-minimal vnstat xdg-user-dirs-gtk sudo socat mandi mandi-ifw" |
| BASE_RPM_LIST="acpi acpid alsa-utils aoss arp-scan basesystem bash-completion coreutils-doc cpupower curl dhcp-client dmraid dnf dnf-plugins-core dosfstools dracut drakx-net-text gpm grub2 grub2-efi grub2-mageia-theme harddrake hdparm hexedit info iwlwifi-agn-ucode ldetect lftp lib64alsa-plugins lib64glib-networking-gnutls locales-en locales-fr lsof lvm2 mageia-theme-Default man-db mandi-ifw man-pages microcode microcode_ctl mtools ntfs-3g numlock os-prober p11-kit perl-Hal-Cdroms plymouth procmail python3 python3-dbus radeon-firmware ralink-firmware rtlwifi-firmware sharutils shorewall-ipv6 strace sysfsutils tmpwatch tree vim-minimal vnstat xdg-user-dirs-gtk sudo socat" |
| |
| ####################### |
| ###### Main ###### |
| 72,21 → 75,24 |
| [[ $ISO_IN == "" ]] && errorExit "No Mageia iso file in $RESSOURCES" |
| [[ ! -f "$RESSOURCES/auto_inst.cfg.pl_template" ]] && errorExit "No auto_inst.cfg.pl_template file in $RESSOURCES" |
| [[ $ALCASAR_TARBALL == "" ]] && errorExit "No ALCASAR tarball file in $RESSOURCES" |
| |
| for directory in $MAGEIA_NEW_DIR $MAGEIA_OFFICIAL_DIR $MAGEIA_OFFICIAL_DIR_EFI |
| for directory in $MAGEIA_NEW_DIR $MAGEIA_OFFICIAL_DIR $MAGEIA_OFFICIAL_DIR_EFI $ISO_OUT $RPM_DIR |
| do |
| [ -d $directory ] || mkdir -p $directory |
| done |
| printBold "Mageiar will be build with Mageia-$MAGEIA_VERSION-$ARCH and $ALCASAR_EXTRACTED_DIR" |
| |
| # Retrieve list of installed RPM |
| ALCASAR_RPM_LIST="$(dnf list installed | cut -d " " -f1 | rev | cut -d "." -f2- | rev | grep -Ev 'coova-chilli|gammu|lib64gammu8|ipt-netflow|nfdump|wkhtmltopdf' | tail -n +2 | tr '\n' ' ')" |
| # agregate & clean rpm list |
| RPM_LIST=$(echo $BASE_RPM_LIST $ALCASAR_RPM_LIST | sed "s/ /\n/g" | sort | uniq | sed "s/\n/ /g") |
| # Retrieve list of Alcasar dependencies |
| tar -xf $RESSOURCES/$ALCASAR_TARBALL -C /tmp/ || errorExit "could not extract alcasar tar archive" |
| alcasarRpmList="$(grep -oP "(?<=PACKAGES=\").*?(?=\")" /tmp/$ALCASAR_EXTRACTED_DIR/scripts/alcasar-rpm.sh)" |
| alcasarKernel="$(grep -oP "(?<=KERNEL=\").*?(?=\")" /tmp/$ALCASAR_EXTRACTED_DIR/scripts/alcasar-rpm.sh)" |
| alcasarRpmList="$alcasarRpmList $alcasarKernel" |
| |
| # Make clean rpm list |
| rpmList=$(echo $BASE_RPM_LIST $alcasarRpmList | sed "s/ /\n/g" | sort | uniq | sed "s/\n/ /g") |
| |
| # Insert list into AUTO_INSTALL_CFG |
| formattedList=$(echo $RPM_LIST | sed "s/[^ ]*/\'\0\'/g" | sed "s/ /,\n/g") |
| cp -f $RESSOURCES/auto_inst.cfg.pl_template $AUTO_INSTALL_CFG |
| formattedList=$(echo $rpmList | sed "s/[^ ]*/\'\0\'/g" | sed "s/ /,\n/g" | sed "/kernel-server/d") |
| cp $RESSOURCES/auto_inst.cfg.pl_template $AUTO_INSTALL_CFG -f |
| insertLineNumber=$(grep -n "'default_packages' => " "$AUTO_INSTALL_CFG" | cut -d ':' -f1) |
| fileTop=$(head -n "+$insertLineNumber" "$AUTO_INSTALL_CFG") |
| fileBottom=$(tail -n "+$insertLineNumber" "$AUTO_INSTALL_CFG" | tail -n +2) |
| 95,16 → 101,16 |
| echo "$formattedList" >> "$AUTO_INSTALL_CFG" |
| echo "$fileBottom" >> "$AUTO_INSTALL_CFG" |
| |
| # Installing tools to create the iso file |
| printBold "Installing ISO building tools" |
| # Installing tools to create the iso |
| printBold "Installing necessary tools" |
| dnf install 'dnf-command(download)' -y || errorExit "could not install necessary packages" |
| #dnf install 'dnf-command(config-manager)' -y || errorExit "could not install necessary packages" |
| #dnf config-manager --set-enabled mageia-x86_64-nonfree updates-x86_64-nonfree || errorExit "could not install necessary packages" |
| dnf install -y lftp wget cdrkit-genisoimage xorriso rpmtools syslinux || errorExit "could not install necessary packages" |
| |
| # Mounting the ISO image |
| printBold "Mounting the image" |
| if [ `mount |grep $MAGEIA_OFFICIAL_DIR | wc -l` -eq 0 ]; then # if not already mounted |
| mount -o ro,loop $RESSOURCES/$ISO_IN $MAGEIA_OFFICIAL_DIR || errorExit "failed mounting $ISO_IN." |
| fi |
| mount -o ro,loop $RESSOURCES/$ISO_IN $MAGEIA_OFFICIAL_DIR || errorExit "failed mounting $ISO_IN." |
| sleep 1 # wait for mounting process |
| [ -d ${MAGEIA_OFFICIAL_DIR}/x86_64 ] || umount $MAGEIA_OFFICIAL_DIR || errorExit "The ISO file isn't in the target architecture ($ARCH)" |
| |
| 117,30 → 123,51 |
| mkdir -p ${MAGEIA_NEW_DIR}/${ARCH}/{media/{core,nonfree},install/alcasar} |
| |
| # Adding Alcasar image advert to the installer |
| cp -f $RESSOURCES/install_slideshow/* "$ADVERT_DIR" || errorExit "could not copy custom slideshow to $ADVERT_DIR" |
| cp -f $RESSOURCES/install_slideshow/* "$ADVERT_DIR" |
| |
| # Create the installed RPM list excluding those brought with alcasar archive (they aren't in repository) |
| nbInstalled=$(echo $RPM_LIST | wc -w) |
| total=`echo $RPM_LIST | wc -w` |
| installedList="$(dnf list installed | cut -d ' ' -f1 | rev | cut -d . -f2- | rev | grep -Ev 'coova-chilli|gammu|lib64gammu8|ipt-netflow|nfdump|wkhtmltopdf' | tail -n +2 | tr '\n' ' ')" |
| nbInstalled=$(echo $installedList | wc -w) |
| rpmList="$installedList $BASE_RPM_LIST" |
| total=`echo $rpmList | wc -w` |
| count=0 |
| # Copying the RPM in core and clearing the plop.idx file |
| echo "Copying $total RPMS in ISO ..." |
| for rpm in ${RPM_LIST}; do |
| echo "Copying RPMS in ISO ..." |
| echo /dev/null > ${plopFilePath} |
| for rpm in ${rpmList}; do |
| let percent="${count} * 100 / ${total}" |
| dnf download --downloaddir $coreDirNew $rpm 1> /dev/null || errorExit "could not download $rpm" |
| if [[ $count -lt $nbInstalled ]] ; then |
| dnf download -y --downloadonly --downloaddir $coreDirNew $rpm 1> /dev/null || errorExit "could not download $rpm" |
| else |
| dnf install -y --downloadonly --downloaddir $coreDirNew $rpm 1> /dev/null || errorExit "could not download $rpm" |
| fi |
| printProgress ${percent} |
| count=$(expr ${count} + 1) |
| done |
| echo "STOP"; exit 1 |
| |
| # Sorting the plop file alphabetically |
| cat ${plopFilePath} | sort > /tmp/tmpFileMageia && mv /tmp/tmpFileMageia ${plopFilePath} |
| |
| # Informations |
| printBold "$count RPMs copied" |
| |
| # Copying the Alcasar tarball & automatic install option into the ISO |
| # Downloading rpms needed by Alcasar |
| cd "$CURRENT_DIR" |
| printBold "Downloading Alcasar dependencies" |
| tar -xf /var/iso/$ALCASAR_TARBALL |
| |
| # Copying the Alcasar tar to be put into the ISO |
| cp /var/iso/$ALCASAR_TARBALL $INSTALLER_DIR/ |
| |
| # Add automatic install options |
| mkdir -p $INSTALLER_DIR || errorExit "could not create directory $INSTALLER_DIR" |
| cp $RESSOURCES/$ALCASAR_TARBALL $INSTALLER_DIR || errorExit "could not copy $RESSOURCES/$ALCASAR_TARBALL to $INSTALLER_DIR" |
| cp $AUTO_INSTALL_CFG $INSTALLER_DIR || errorExit "could not copy $AUTO_INSTALL_CFG to $INSTALLER_DIR" |
| |
| # Generating media info for core |
| echo "Generating media_info for core..." |
| genhdlist2 ${coreDirNew} --allow-empty-media --quiet |
| |
| echo "Generating media_info for nonfree..." |
| genhdlist2 ${nonFreeDirNew} --allow-empty-media --quiet |
| |
| 170,26 → 197,35 |
| # xorriso -indev Mageia-7-x86_64.iso -report_el_torito as_mkisofs |
| cd ${MAGEIA_NEW_DIR} && xorriso -as mkisofs \ |
| -V 'Mageia-7.1-x86_64' \ |
| --grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt:${ISO_IN} \ |
| -partition_cyl_align off \ |
| -partition_offset 0 \ |
| --mbr-force-bootable \ |
| -append_partition 2 0xef --interval:local_fs:8785156d-8793347d::${ISO_IN} \ |
| -iso_mbr_part_type 0x00 \ |
| -c 'boot.catalog' \ |
| -b 'boot/grub2/eltorito.img' \ |
| -c '/boot.catalog' \ |
| -b '/boot/grub2/eltorito.img' \ |
| -no-emul-boot \ |
| -boot-load-size 4 \ |
| -boot-info-table \ |
| --grub2-boot-info \ |
| -eltorito-alt-boot \ |
| -e '--interval:appended_partition_2_start_2196289s_size_8192d:all::' \ |
| -no-emul-boot \ |
| -boot-load-size 8192 \ |
| -o ${TMP_DIR}/${newIsoName} . |
| -o ${CURRENT_DIR}/${newIsoName} . |
| |
| |
| # Unmounting & Removing temporary dir |
| echo "Umounting..." |
| umount $MAGEIA_OFFICIAL_DIR |
| for directory in $MAGEIA_NEW_DIR $MAGEIA_OFFICIAL_DIR $MAGEIA_OFFICIAL_DIR_EFI |
| for directory in $MAGEIA_NEW_DIR $MAGEIA_OFFICIAL_DIR $MAGEIA_OFFICIAL_DIR_EFI $ISO_OUT $RPM_DIR |
| do |
| [ -d $directory ] && rm -rf $directory |
| done |
| |
| mv ${CURRENT_DIR}/${newIsoName} /var/iso/ |
| |
| # Finished |
| rm -f "$AUTO_INSTALL_CFG" |
| echo "Done." |