summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorIrina Gómez <irinagomez@us.es>2019-08-08 11:51:09 +0200
committerRamón M. Gómez <ramongomez@us.es>2019-08-20 17:26:48 +0200
commit76901a2eae3703dc97df2f98606a57a8e24ba313 (patch)
treed05642768a55618435cf6217d0935ec075e6eb0c /client
parent39720c640adf5d9e16625f24135e5c5a06499a04 (diff)
#802 #890 ogGrubInstallXx: grub's first stage finds grub.cfg correctly for computers no UEFI.
Diffstat (limited to 'client')
-rwxr-xr-xclient/engine/Boot.lib43
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