diff options
author | Irina Gómez <irinagomez@us.es> | 2019-08-08 11:51:09 +0200 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2019-08-20 17:26:48 +0200 |
commit | 76901a2eae3703dc97df2f98606a57a8e24ba313 (patch) | |
tree | d05642768a55618435cf6217d0935ec075e6eb0c /client | |
parent | 39720c640adf5d9e16625f24135e5c5a06499a04 (diff) |
#802 #890 ogGrubInstallXx: grub's first stage finds grub.cfg correctly for computers no UEFI.
Diffstat (limited to 'client')
-rwxr-xr-x | client/engine/Boot.lib | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib index 440f65e0..f4743bba 100755 --- a/client/engine/Boot.lib +++ b/client/engine/Boot.lib @@ -784,7 +784,7 @@ function ogGrubInstallMbr () # Variables locales. local PART DISK VERSION FIRSTAGE SECONSTAGE CHECKOS KERNELPARAM BACKUPNAME -local EFIDISK EFIPART EFISECONDSTAGE EFISUBDIR EFIOPTGRUB EFIBOOTDIR +local EFIDISK EFIPART EFISECONDSTAGE EFISUBDIR EFIOPTGRUB # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -822,8 +822,6 @@ PREFIXSECONDSTAGE="/boot/grubMBR" # Instalamos grub para EFI en ESP EFIOPTGRUB="" -# Desde el bootdir uefi y bios buscan el grub.cfg en subdirectorios distintos. -EFIBOOTDIR="" if ogIsEfiActive; then read EFIDISK EFIPART <<< $(ogGetEsp) # Comprobamos que exista ESP y el directorio para ubuntu @@ -837,7 +835,6 @@ if ogIsEfiActive; then [ -d ${EFISECONDSTAGE}/EFI/$EFISUBDIR ] && rm -rf ${EFISECONDSTAGE}/EFI/$EFISUBDIR mkdir -p ${EFISECONDSTAGE}/EFI/$EFISUBDIR/Boot EFIOPTGRUB=" --removable --no-nvram --uefi-secure-boot --target $(ogGetArch)-efi --efi-directory=${EFISECONDSTAGE}/EFI/$EFISUBDIR " - EFIBOOTDIR="/boot" fi # Si Reconfigurar segunda etapa (grub.cfg) == FALSE @@ -847,9 +844,7 @@ then [ -f ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ${SECONDSTAGE}/boot/grub/grub.cfg # Si no se reconfigure se borra los ficheros previos de configuración específicos de opengnsys. [ -d ${SECONDSTAGE}${PREFIXSECONDSTAGE} ] && rm -fr ${SECONDSTAGE}${PREFIXSECONDSTAGE} - # Reactivamos el grub con el grub.cfg original. - grub-install --force ${EFIOPTGRUB} --boot-directory=${SECONDSTAGE}${EFIBOOTDIR} $FIRSTSTAGE - EVAL=$? + PREFIXSECONDSTAGE="" else # SI Reconfigurar segunda etapa (grub.cfg) == TRUE @@ -879,24 +874,25 @@ else #Preparar configuración segunda etapa: crear entrada del sistema operativo grubSyntax "$KERNELPARAM" >> ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/grub.cfg - # Renombramos la configuración de grub antigua [ -f ${SECONDSTAGE}/boot/grub/grub.cfg ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME - #Instalar el grub - grub-install --force ${EFIOPTGRUB} --boot-directory=${SECONDSTAGE}${PREFIXSECONDSTAGE}${EFIBOOTDIR} $FIRSTSTAGE - EVAL=$? fi +#Instalar el grub +grub-install --force ${EFIOPTGRUB} --root-directory=${SECONDSTAGE}${PREFIXSECONDSTAGE} $FIRSTSTAGE +EVAL=$? + # Movemos el grubx64.efi if ogIsEfiActive; then mv ${EFISECONDSTAGE}/EFI/$EFISUBDIR/EFI/BOOT/* ${EFISECONDSTAGE}/EFI/$EFISUBDIR/Boot rm -rf ${EFISECONDSTAGE}/EFI/$EFISUBDIR/EFI cp /usr/lib/shim/shimx64.efi.signed ${EFISECONDSTAGE}/EFI/$EFISUBDIR/Boot # Nombre OpenGnsys para cargador - cp ${EFISECONDSTAGE}/EFI/$EFISUBDIR/Boot/{shimx64.efi,ogloader.efi} + cp ${EFISECONDSTAGE}/EFI/$EFISUBDIR/Boot/{shimx64.efi.signed,ogloader.efi} fi return $EVAL + } @@ -970,8 +966,8 @@ if ogIsEfiActive; then read EFIDISK EFIPART <<< $(ogGetEsp) # Comprobamos que exista ESP y el directorio para ubuntu EFISECONDSTAGE=$(ogMount $EFIDISK $EFIPART) - if [ $? -ne 0 ]; then - ogFormat $EFIDISK $EFIPART FAT32 + if [ $? -ne 0 ]; then + ogFormat $EFIDISK $EFIPART FAT32 EFISECONDSTAGE=$(ogMount $EFIDISK $EFIPART) || ogRaiseError $OG_ERR_PARTITION "ESP" || return $? fi EFISUBDIR=$(printf "Part-%02d-%02d" $DISK $PART) @@ -987,11 +983,10 @@ if [ "${CHECKOS^^}" == "FALSE" ] && [ -f ${SECONDSTAGE}/boot/grub/grub.cfg -o -f then # Si no se reconfigura se utiliza el grub.cfg orginal [ -f ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ${SECONDSTAGE}/boot/grub/grub.cfg - # Si no se reconfigure se borra los ficheros previos de configuración específicos de opengnsys. + # Si no se reconfigure se borra los ficheros previos de configuración específicos de opengnsys. [ -d ${SECONDSTAGE}${PREFIXSECONDSTAGE} ] && rm -fr ${SECONDSTAGE}${PREFIXSECONDSTAGE} # Reactivamos el grub con el grub.cfg original. - grub-install --force ${EFIOPTGRUB} --boot-directory=${SECONDSTAGE}${EFIBOOTDIR} $FIRSTSTAGE - EVAL=$? + PREFIXSECONDSTAGE="" else # SI Reconfigurar segunda etapa (grub.cfg) == TRUE @@ -1013,19 +1008,15 @@ else mkdir -p ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/ #Preparar configuración segunda etapa: crear cabecera del fichero (ingnorar errores) sed -i 's/^set -e/#set -e/' /etc/grub.d/00_header - # Para ogLive 5.0 (no afecta a os demás) - sed -i /quick_boot/i"pkgdatadir=\$\{datarootdir\}\/grub" /etc/grub.d/00_header /etc/grub.d/00_header > ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/grub.cfg 2>/dev/null #Preparar configuración segunda etapa: crear entrada del sistema operativo grubSyntax $DISK $PART "$KERNELPARAM" >> ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/grub.cfg - # Renombramos la configuración de grub antigua - [ -f ${SECONDSTAGE}/boot/grub/grub.cfg ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME - - #Instalar el grub - grub-install --force ${EFIOPTGRUB} --boot-directory=${SECONDSTAGE}${PREFIXSECONDSTAGE}${EFIBOOTDIR} $FIRSTSTAGE - EVAL=$? fi +#Instalar el grub +echo grub-install --force ${EFIOPTGRUB} --root-directory=${SECONDSTAGE}${PREFIXSECONDSTAGE} $FIRSTSTAGE +grub-install --force ${EFIOPTGRUB} --root-directory=${SECONDSTAGE}${PREFIXSECONDSTAGE} $FIRSTSTAGE +EVAL=$? # Movemos el grubx64.efi if ogIsEfiActive; then @@ -2701,7 +2692,7 @@ NEWORDER="$(ogNvramGetOrder|awk '{gsub(",", " "); printf "%x %x %s\n", $2, $1, s ogNvramSetOrder $NEWORDER # Borramos configuración linux -#rm $EFIMNT/boot/refind_linux.conf +[ -f $EFIMNT/boot/refind_linux.conf ] && mv $EFIMNT/boot/refind_linux.conf{,.ogbackup} # Eliminamos punto de motaje (por si ejecutamos más de una vez) umount $EFIMNT/boot/efi |