source: client/engine/UEFI.lib @ 39b84ff

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since 39b84ff was 39b84ff, checked in by Irina Gómez <irinagomez@…>, 6 years ago

#802 UEFI compatibility: allows postconfigure and log in to Ubuntu.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1#!/bin/bash
2# Libreria provisional para uso de UEFI
3# Las funciones se incluirán las librerías ya existentes
4
5#/**
6#         ogGrubUEFIConf int_ndisk int_part str_dir_grub
7#@brief   Genera el fichero grub.cfg de la ESP
8#@param   int_ndisk    nº de orden del disco
9#@param   int_part     nº de partición
10#@param   str_dir_grub nombre del directorio de grub en la partición de sistema. ej: grubPARTITION
11#@return  (nada, por determinar)
12#@exception OG_ERR_FORMAT    formato incorrecto.
13#@exception OG_ERR_NOTFOUND  fichero o dispositivo no encontrado.
14#@TODO    Confirmar si el fichero "$EFIDIR/EFI/$BOOTLABEL/grub.cfg" es necesario.
15#*/ ##
16function ogGrubUEFIConf {
17local EFIDIR BOOTLABEL GRUBEFI UUID DEVICE DIRGRUB
18
19# Si se solicita, mostrar ayuda.
20if [ "$*" == "help" ]; then
21    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_part [ str_dir_grub ]" \
22           "$FUNCNAME 1 2" \
23           "$FUNCNAME 1 3 grubPARTITION/boot/grub" \
24    return
25fi
26
27# Error si no se reciben al menos 2 parámetros.
28[ $# -ge 2 ] || ogRaiseError $OG_ERR_FORMAT "$FUNCNAME int_ndisk int_part [ str_dir_grub ]" || return $?
29
30# Directorio del grub en la partición de sistema
31DIRGRUB="${3:-boot/grub}"
32
33EFIDIR=$(ogMount $(ogGetEsp)) || ogRaiseError $OG_ERR_PARTITION "ESP" || return $?
34BOOTLABEL=$(printf "Part-%02d-%02d" $1 $2)
35GRUBDIR="$EFIDIR/EFI/$BOOTLABEL/boot/grub"
36# Comprobamos que existe directorio
37[ -d "$GRUBDIR" ] || mkdir -p "$GRUBDIR"
38# Parcheamos uuid y particion en grub.cfg
39UUID=$(blkid -o value -s UUID $(ogDiskToDev $1 $2))
40DEVICE="hd$(expr $1 - 1 ),gpt$2"
41
42cat << EOT > $GRUBDIR/grub.cfg
43set root='$DEVICE'
44set prefix=(\$root)'/$DIRGRUB'
45configfile \$prefix/grub.cfg
46EOT
47
48# Provisional: confirmar si el segundo archivo se utiliza
49cp $GRUBDIR/grub.cfg "$EFIDIR/EFI/$BOOTLABEL/grub.cfg"
50}
51
52#/**
53#         ogUUIDChange int_ndisk str_repo
54#@brief   Reemplaza el UUID de un sistema de ficheros.
55#@param   int_ndisk    nº de orden del disco
56#@param   int_part     nº de partición
57#@return  (nada, por determinar)
58#@exception OG_ERR_FORMAT    formato incorrecto.
59#@exception OG_ERR_NOTFOUND  fichero o dispositivo no encontrado.
60#@TODO    Se utiliza el comando uuidgen que no existe en el ogLive
61#*/ ##
62function ogUUIDChange {
63local MNTDIR DEVICE UUID NEWUUID f
64
65# Si se solicita, mostrar ayuda.
66if [ "$*" == "help" ]; then
67    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_part" \
68           "$FUNCNAME 1 2"
69    return
70fi
71
72# Error si no se reciben al menos 2 parámetros.
73[ $# -eq 2 ] || ogRaiseError $OG_ERR_FORMAT "$FUNCNAME int_ndisk int_part" || return $?
74
75# Comprobamos que exista la partición
76MNTDIR=$(ogMount $1 $2) || ogRaiseError $OG_ERR_NOTFOUND "Device $1 $2" || return $?
77DEVICE=$(ogDiskToDev $1 $2)
78UUID=$(blkid -o value -s UUID $DEVICE)
79NEWUUID=$(uuidgen)
80
81# Cambiamos UUID a la partición
82ogUnmount $1 $2
83tune2fs $DEVICE -U $NEWUUID
84
85# Cambiamos UUID en la configuración (fstab y grub)
86ogMount $1 $2
87for f in $MNTDIR/etc/fstab $MNTDIR/{,boot/}{{grubMBR,grubPARTITION}/boot/,}{grub{,2},{,efi/}EFI/*}/{menu.lst,grub.cfg}; do
88        [ -r $f ] && echo sed -i s/$UUID/$NEWUUID/g $f
89        [ -r $f ] && sed -i s/$UUID/$NEWUUID/g $f
90done
91}
Note: See TracBrowser for help on using the repository browser.