47 local PART TYPE MNTDIR PARAMS KERNEL INITRD APPEND FILE LOADER f
48 local EFIDISK EFIPART EFIDIR BOOTLABEL BOOTLOADER BOOTNO DIRGRUB b
50 # Si se solicita, mostrar ayuda. 51 if [
"$*" ==
"help" ]; then
52 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_nfilesys [str_kernel str_initrd str_kernelparams]" \
53 "$FUNCNAME 1 1" "$FUNCNAME 1 2 \"/boot/vmlinuz /boot/initrd.img root=/dev/sda2 ro\"" 56 # Error si no se reciben 2 o 3 parámetros. 57 [ $# == 2 ] || [ $# == 3 ] ||
ogRaiseError $OG_ERR_FORMAT ||
return $?
59 # Detectar tipo de sistema de archivos y montarlo. 62 # Error si no puede montar sistema de archivos. 63 MNTDIR=$(
ogMount $1 $2) ||
return $?
67 # Si no se indican, obtiene los parámetros de arranque para Linux. 68 PARAMS=
"${3:-$(ogLinuxBootParameters $1 $2 2>/dev/null)}" 69 # Si no existe y el UEFI buscar en particion ESP 70 [ -z
"$PARAMS" ] &&
ogIsEfiActive && PARAMS=
"$(ogLinuxBootParameters $(ogGetEsp))" 71 # Si no existe, buscar sistema de archivo /boot en /etc/fstab. 72 if [ -z
"$PARAMS" -a -e $MNTDIR/etc/fstab ]; then
73 # Localizar S.F. /boot en /etc/fstab del S.F. actual. 74 PART=$(
ogDevToDisk $(
awk '$1!="#" && $2=="/boot" {print $1}' $MNTDIR/etc/fstab))
75 # Montar S.F. de /boot. 76 MNTDIR=$(
ogMount $PART) ||
return $?
77 # Buscar los datos de arranque.
80 read -e KERNEL INITRD APPEND <<<
"$PARAMS" 81 # Si no hay kernel, no hay sistema operativo. 82 [ -n
"$KERNEL" -a -e
"$MNTDIR/$KERNEL" ] ||
ogRaiseError $OG_ERR_NOTOS
"$1 $2 ($TYPE)" ||
return $?
83 # Arrancar de partición distinta a la original. 84 [ -e
"$MNTDIR/etc" ] && APPEND=$(echo $APPEND |
awk -v P=
"$PART " '{sub (/root=[-+=_/a-zA-Z0-9]* /,"root="P);print}')
85 # Comprobar tipo de sistema.
87 # Comprobar si el Kernel está firmado.
88 if ! file -k
"$MNTDIR/$KERNEL" | grep -q
"EFI app"; then
93 BOOTLABEL=$(printf
"Part-%02d-%02d" $1 $2)
94 BOOTLOADER=
"shimx64.efi" 95 # Obtener parcición EFI. 96 read -e EFIDISK EFIPART <<<
"$(ogGetEsp)" 97 # TODO: Comprobamos que existe la BOOTLABEL, si no buscamos por sistema operativo 98 if [
"$(ogGetPath $EFIDISK $EFIPART EFI/$BOOTLABEL)" ==
"" ]; then
99 OSVERSION=
"$(ogGetOsVersion $1 $2)" 111 ogRaiseError $OG_ERR_NOTFOUND
"$EFIDISK $EFIPART Boot loader";
return $?
116 # Crear orden de arranque (con unos valores por defecto). 118 # Marcar próximo arranque y reiniciar. 119 ogNvramSetNext
"$BOOTLABEL" 122 # Arranque BIOS: configurar kernel Linux con los parámetros leídos de su GRUB. 123 kexec -l
"${MNTDIR}${KERNEL}" --append=
"$APPEND" --initrd=
"${MNTDIR}${INITRD}" 124 nohup bash -c
'sleep 2 && pkill ogclient' >/dev/null 2>&1 &
125 nohup bash -c
'sleep 3 && kexec -e' >/dev/null 2>&1 &
129 # Comprobar tipo de sistema.
131 BOOTLABEL=$(printf
"Part-%02d-%02d" $1 $2)
132 # Obtener parcición EFI. 133 read -e EFIDISK EFIPART <<<
"$(ogGetEsp)" 134 [ -n
"$EFIPART" ] ||
ogRaiseError $OG_ERR_PARTITION
"ESP" ||
return $?
135 EFIDIR=$(
ogMount $EFIDISK $EFIPART) || exit $?
136 # Comprobar cargador (si no existe buscar por defecto en ESP).
138 [ -z
"$LOADER" ] && BOOTLABEL=Microsoft && LOADER=$(
ogGetPath $EFIDIR/EFI/Microsoft/
Boot/bootmgfw.efi)
139 [ -n
"$LOADER" ] ||
ogRaiseError $OG_ERR_NOTOS
"$1 $2 ($TYPE, EFI)" ||
return $?
141 # Crear orden de arranque (con unos valores por defecto). 143 # Marcar próximo arranque y reiniciar. 144 ogNvramSetNext
"$BOOTLABEL" 147 # Arranque BIOS: comprueba si hay un cargador de Windows. 148 for f in io.sys ntldr bootmgr;
do 149 FILE=
"$(ogGetPath $1 $2 $f 2>/dev/null)" 150 [ -n
"$FILE" ] && LOADER=
"$f" 152 [ -n
"$LOADER" ] ||
ogRaiseError $OG_ERR_NOTOS
"$1 $2 ($TYPE)" ||
return $?
153 if [
"$winboot" ==
"kexec" ]; then
154 # Modo de arranque en caliente (con kexec). 155 cp $OGLIB/grub4dos (Comentario Doxygen)
156 kexec -l $MNTDIR/grub.exe --append=--config-file=
"root (hd$[$1-1],$[$2-1]); chainloader (hd$[$1-1],$[$2-1])/$LOADER; tpm --init" 157 nohup bash -c
'sleep 2 && pkill ogclient' >/dev/null 2>&1 &
158 nohup bash -c
'sleep 3 && kexec -e' >/dev/null 2>&1 &
160 # Modo de arranque por reinicio (con reboot).
161 dd
if=/dev/zero of=${MNTDIR}/ogboot.me bs=1024 count=3
162 dd
if=/dev/zero of=${MNTDIR}/ogboot.firstboot bs=1024 count=3
163 dd
if=/dev/zero of=${MNTDIR}/ogboot.secondboot bs=1024 count=3
164 if [ -z
"$(ogGetRegistryValue $MNTDIR SOFTWARE '\Microsoft\Windows\CurrentVersion\Run\ogcleannboot')" ]; then
165 ogAddRegistryValue $MNTDIR SOFTWARE
'\Microsoft\Windows\CurrentVersion\Run\ogcleanboot' 166 ogSetRegistryValue $MNTDIR SOFTWARE
'\Microsoft\Windows\CurrentVersion\Run\ogcleanboot' "cmd /c del c:\ogboot.*" 168 # Activar la partición. 175 # Modo de arranque por reinicio.
176 # Nota: el cliente tiene que tener configurado correctamente Grub.
177 touch ${MNTDIR}/boot.mac &>/dev/null
209 # Si se solicita, mostrar ayuda. 210 if [
"$*" ==
"help" ]; then
211 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \
212 "$FUNCNAME 1 1 ==> PRACTICA-PC" 215 # Error si no se reciben 2 parámetros. 218 # Montar el sistema de archivos. 219 MNTDIR=$(
ogMount $1 $2) ||
return $?
221 # Obtener dato del valor de registro.
222 ogGetRegistryValue $MNTDIR system
'\ControlSet001\Control\ComputerName\ComputerName\ComputerName' 252 local MNTDIR CONFDIR CONFFILE f
254 # Si se solicita, mostrar ayuda. 255 if [
"$*" ==
"help" ]; then
256 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_nfilesys" \
257 "$FUNCNAME 1 2 ==> /vmlinuz-3.5.0-21-generic /initrd.img-3.5.0-21-generic root=/dev/sda2 ro splash" 260 # Error si no se reciben 2 parámetros. 263 # Detectar id. de tipo de partición y codificar al mnemonico. 264 MNTDIR=$(
ogMount $1 $2) ||
return $?
266 # Fichero de configuración de GRUB.
267 CONFDIR=$MNTDIR # Sistema de archivos de arranque (/boot).
268 [ -d $MNTDIR/boot ] && CONFDIR=$MNTDIR/boot # Sist. archivos raíz con directorio boot.
269 for f in $MNTDIR/{,boot/}{{grubMBR,grubPARTITION}/boot/,}{grub{2,},{,efi/}EFI
319 local PART MNTDIR NAME
321 # Si se solicita, mostrar ayuda. 322 if [
"$*" ==
"help" ]; then
323 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_name" \
324 "$FUNCNAME 1 1 PRACTICA-PC" 327 # Error si no se reciben 3 parámetros. 329 # Error si el nombre supera los 15 caracteres. 330 [ ${#3} -le 15 ] ||
ogRaiseError $OG_ERR_OUTOFLIMIT
"\"${3:0:15}...\"" ||
return $?
332 # Montar el sistema de archivos. 333 MNTDIR=$(
ogMount $1 $2) ||
return $?
338 # Modificar datos de los valores de registro.
339 ogSetRegistryValue $MNTDIR system
'\ControlSet001\Control\ComputerName\ComputerName\ComputerName' "$NAME" 2>/dev/null
340 ogSetRegistryValue $MNTDIR system
'\ControlSet001\Services\Tcpip\Parameters\Hostname' "$NAME" 2>/dev/null
341 ogSetRegistryValue $MNTDIR system
'\ControlSet001\Services\Tcpip\Parameters\HostName' "$NAME" 2>/dev/null
342 ogSetRegistryValue $MNTDIR system
'\ControlSet001\services\Tcpip\Parameters\Hostname' "$NAME" 2>/dev/null
343 ogSetRegistryValue $MNTDIR system
'\ControlSet001\Services\Tcpip\Parameters\NV Hostname' "$NAME" 2>/dev/null
344 ogSetRegistryValue $MNTDIR system
'\ControlSet001\Services\Tcpip\Parameters\NV HostName' "$NAME" 2>/dev/null
345 ogSetRegistryValue $MNTDIR system
'\ControlSet001\services\Tcpip\Parameters\NV Hostname' "$NAME" 2>/dev/null
366 local PART MNTDIR NAME
368 # Si se solicita, mostrar ayuda. 369 if [
"$*" ==
"help" ]; then
370 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_username" \
371 "$FUNCNAME 1 1 USUARIO" 374 # Error si no se reciben 3 parámetros. 377 # Montar el sistema de archivos. 378 MNTDIR=$(
ogMount $1 $2) ||
return $?
383 # Modificar datos en el registro.
384 ogSetRegistryValue $MNTDIR SOFTWARE
'\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName' "$3" 405 # Si se solicita, mostrar ayuda. 406 if [
"$*" ==
"help" ]; then
407 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk " \
411 # Error si no se recibe 1 parámetro. 414 DISK=
"$(ogDiskToDev $1)" ||
return $?
437 # Si se solicita, mostrar ayuda. 438 if [
"$*" ==
"help" ]; then
439 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk " \
443 # Error si no se recibe 1 parámetro. 444 [ $# == 1 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
446 DISK=
"$(ogDiskToDev $1)" ||
return $?
450 # Firma necesaria para Windows equipos UEFI
451 SIGNATURE=0x$(cat /proc/
sys/kernel/random/uuid | cut -d
'-' -f1)
452 ms-
sys -S $SIGNATURE $DISK
474 local PARTYPE DISK PART FILE
476 # Si se solicita, mostrar ayuda. 477 if [
"$*" ==
"help" ]; then
478 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_partition " \
483 # Error si no se reciben 2 parámetros. 484 [ $# == 2 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
486 #TODO, solo si la particion existe
487 #TODO, solo si es
ntfs o fat
490 1|4|6|7|b|c|e|f|17|700|EF00)
499 #Preparando instruccion
509 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -a -f $FILE
530 # Si se solicita, mostrar ayuda. 531 if [
"$*" ==
"help" ]; then
532 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk " \
537 # Error si no se recibe 1 parámetro. 538 [ $# == 1 ] ||
ogRaiseError $OG_ERR_FORMAT
"$FUNCNAME int_ndisk" ||
return $?
540 DISK=
"$(ogDiskToDev $1)" ||
return $?
573 local PART DISK BOOTLABEL BCDFILE BOOTDISK BOOTPART FILE WINVER MOUNT
575 # Si se solicita, mostrar ayuda. 576 if [
"$*" ==
"help" ]; then
577 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_partition " \
582 # Error si no se reciben 2 parámetros. 583 [ $# == 2 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
587 #Preparando variables adaptadas a sintaxis windows.
592 read BOOTDISK BOOTPART <<< $(
ogGetEsp)
593 ogUnmount $BOOTDISK $BOOTPART ||
ogRaiseError $OG_ERR_PARTITION
"ESP: $BOOTDISK $BOOTPART" ||
return $?
595 let BOOTDISK=$BOOTDISK-1
596 BOOTLABEL=$(printf
"Part-%02d-%02d" $1 $2)
597 BCDFILE=
"boot_BCD_file=/EFI/$BOOTLABEL/Boot/BCD" 605 # Obtener versión de Windows.
606 WINVER=$(ogGetOsVersion $1 $2 |
awk -F
"[: ]" '$1=="Windows" {if ($3=="Server") print $2,$3,$4; else print $2,$3;}')
607 [ -z
"$WINVER" ] &&
return $(
ogRaiseError $OG_ERR_NOTOS
"Windows"; echo $?)
609 # Acciones para Windows XP.
610 if [[
"$WINVER" =~
"XP" ]]; then
612 [ -f ${MOUNT}/boot.ini ] ||
return $(
ogRaiseError $OG_ERR_NOTFOUND
"boot.ini"; echo $?)
613 cat ${MOUNT}/boot.ini | sed s/partition\([0-9]\)/partition\($PART\)/g | sed s/rdisk\([0-9]\)/rdisk\($DISK\)/g > ${MOUNT}/tmp.boot.ini; mv ${MOUNT}/tmp.boot.ini ${MOUNT}/boot.ini
620 #Preparando instruccion Windows Resume Application
623 boot_main_part=$BOOTPART
627 boot_entry=Windows Resume Application
629 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
632 #Preparando instruccion tipo windows
635 boot_main_part=$BOOTPART
641 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
643 ##Preparando instruccion Ramdisk Options
646 boot_main_part=$BOOTPART
650 boot_entry=Ramdisk Options
652 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
654 ##Preparando instruccion Recovery Environment
657 boot_main_part=$BOOTPART
661 boot_entry=Windows Recovery Environment
663 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
665 ##Preparando instruccion Recovery
668 boot_main_part=$BOOTPART
672 boot_entry=Windows Recovery
674 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
676 #Preparando instruccion Windows
Boot Manager
679 boot_main_part=$BOOTPART
683 boot_entry=Windows
Boot Manager
685 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
687 #Preparando instruccion Herramienta de diagnóstico de memoria de Windows
690 boot_main_part=$BOOTPART
694 boot_entry=Herramienta de diagnóstico de memoria de Windows
696 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
698 #Preparando instruccion Herramienta de diagnóstico de memoria de Windows
701 boot_main_part=$BOOTPART
705 boot_entry=Herramienta de diagn<f3>stico de memoria de Windows
707 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -w -f $FILE
732 local PART DISK FILE REGISTREDDISK REGISTREDPART REGISTREDVOL VERSION SYSTEMROOT
734 # Si se solicita, mostrar ayuda. 735 if [
"$*" ==
"help" ]; then
736 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk_TO_registre int_partition_TO_registre str_NewVolume int_disk int_parition " \
737 "$FUNCNAME 1 1 c: 1 1" 741 # Error si no se reciben 5 parámetros. 742 [ $# == 5 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
746 REGISTREDVOL=$(echo $3 | cut -c1 | tr
'[:lower:]' '[:upper:]')
751 ogDiskToDev $REGISTREDDISK $REGISTREDPART ||
return $(
ogRaiseError $OG_ERR_PARTITION
"particion a registrar "; echo $?)
756 VERSION=$(ogGetOsVersion $DISK $PART)
772 let REGISTREDDISK=$REGISTREDDISK-1
773 #Preparando instruccion Windows
Boot Manager
776 windows_main_part=$PART
777 windows_dir=$SYSTEMROOT
779 main_part=$REGISTREDPART
781 part_letter=$REGISTREDVOL
783 timeout --foreground --signal=SIGKILL 5s spartlnx.run -cui -nm -u -f $FILE
822 local PART DISK VERSION FIRSTAGE SECONSTAGE CHECKOS KERNELPARAM BACKUPNAME
823 local EFIDISK EFIPART EFISECONDSTAGE EFISUBDIR EFIOPTGRUB GRUBENTRY NEWORDER
825 # Si se solicita, mostrar ayuda. 826 if [
"$*" ==
"help" ]; then
827 ogHelp "$FUNCNAME" "$FUNCNAME int_ndiskSecondStage int_partitionSecondStage bolean_Configure_2ndStage \"param param \" " \
828 "$FUNCNAME 1 1 FALSE " \
829 "$FUNCNAME 1 1 TRUE \"nomodeset irqpoll pci=noacpi quiet splash \" " 833 # Error si no se reciben 2 parámetros. 834 [ $# -ge 2 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
838 CHECKOS=${3:-
"FALSE"}
840 BACKUPNAME=
".backup.og" 842 #Error si no es linux. 843 #TODO: comprobar si se puede utilizar la particion windows como contenedor de grub. 844 #VERSION=$(ogGetOsVersion $DISK $PART) 845 #echo $VERSION | grep "Linux" || return $(ogRaiseError $OG_ERR_NOTOS "no es linux"; echo $?) 847 #La primera etapa del grub se fija en el primer disco duro 850 #localizar disco segunda etapa del grub
851 SECONDSTAGE=$(
ogMount "$DISK" "$PART") ||
return $?
853 # prepara el directorio principal de la segunda etapa 854 [ -d ${SECONDSTAGE}/boot/grub/ ] || mkdir -p ${SECONDSTAGE}/boot/grub/
856 #Localizar directorio segunda etapa del grub 857 PREFIXSECONDSTAGE=
"/boot/grubMBR" 859 # Instalamos grub para EFI en ESP 862 read EFIDISK EFIPART <<< $(
ogGetEsp)
863 # Comprobamos que exista ESP y el directorio para ubuntu
864 EFISECONDSTAGE=$(
ogMount $EFIDISK $EFIPART)
865 if [ $? -ne 0 ]; then
867 EFISECONDSTAGE=$(
ogMount $EFIDISK $EFIPART) ||
ogRaiseError $OG_ERR_PARTITION
"ESP" ||
return $?
870 # Borramos la configuración anterior
871 [ -d ${EFISECONDSTAGE}/EFI/$EFISUBDIR ] && rm -rf ${EFISECONDSTAGE}/EFI/$EFISUBDIR
872 mkdir -p ${EFISECONDSTAGE}/EFI/$EFISUBDIR/
Boot 873 EFIOPTGRUB=
" --removable --no-nvram --uefi-secure-boot --target $(ogGetArch)-efi --efi-directory=${EFISECONDSTAGE}/EFI/$EFISUBDIR " 876 # Si Reconfigurar segunda etapa (grub.cfg) == FALSE 877 if [
"${CHECKOS^^}" ==
"FALSE" ] && [ -f ${SECONDSTAGE}/boot/grub/grub.cfg -o -f ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ]
879 # Si no se reconfigura se utiliza el grub.cfg orginal 880 [ -f ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ${SECONDSTAGE}/boot/grub/grub.cfg
881 # Si no se reconfigure se borra los ficheros previos de configuración específicos de opengnsys. 882 [ -d ${SECONDSTAGE}${PREFIXSECONDSTAGE} ] && rm -fr ${SECONDSTAGE}${PREFIXSECONDSTAGE}
885 # SI Reconfigurar segunda etapa (grub.cfg) == TRUE 887 #llamada a updateBootCache para que aloje la primera fase del ogLive 891 # UEFI: grubSintax necesita grub.cfg para detectar los kernels: si no existe recupero backup. 892 if ! [ -f ${SECONDSTAGE}/boot/grub/grub.cfg ]; then
893 [ -f ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME ${SECONDSTAGE}/boot/grub/grub.cfg
896 #Evitar detectar modo recovery - mover grub.cfg original a grub.cfg.backup 897 mv ${SECONDSTAGE}/boot/grub/grub.cfg ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME
900 #Configur la sintaxis grub para evitar menus de "recovery" en el OGLive 901 echo
"GRUB_DISABLE_RECOVERY=\"true\"" >> /etc/
default/grub
902 echo
"GRUB_DISABLE_LINUX_UUID=\"true\"" >> /etc/
default/grub
905 #Preparar configuración segunda etapa: crear ubicacion 906 mkdir -p ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/
907 #Preparar configuración segunda etapa: crear cabecera del fichero (ignorar errores) 908 sed -i
's/^set -e/#set -e/' /etc/grub.d/00_header
909 # (ogLive 5.0) Si 'pkgdatadir' está vacía ponemos valor de otros ogLive 910 sed -i
'/grub-mkconfig_lib/i\pkgdatadir=${pkgdatadir:-"${datarootdir}/grub"}' /etc/grub.d/00_header
911 /etc/grub.d/00_header > ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/grub.cfg 2>/dev/null
913 #Preparar configuración segunda etapa: crear entrada del sistema operativo 914 grubSyntax
"$KERNELPARAM" >> ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/grub/grub.cfg
916 # Renombramos la configuración de grub antigua 917 [ -f ${SECONDSTAGE}/boot/grub/grub.cfg ] && mv ${SECONDSTAGE}/boot/grub/grub.cfg ${SECONDSTAGE}/boot/grub/grub.cfg$BACKUPNAME
922 grub-
install --force ${EFIOPTGRUB} --root-directory=${SECONDSTAGE}${PREFIXSECONDSTAGE} $FIRSTSTAGE
925 # Movemos el grubx64.efi 927 mv ${EFISECONDSTAGE}/EFI/$EFISUBDIR/EFI/BOOT
1319 # Configuracion offline si existe parametro 1320 echo "$
@" |grep offline &>/dev/null && STATUS=offline 1321 echo "$
@" |grep online &>/dev/null && STATUS=online 1322 [ -z "$STATUS
" ] || KERNEL="$(echo $KERNEL | sed s/
"ogprotocol=[a-z]* "/
"ogprotocol=local "/g ) ogstatus=$STATUS
" 1324 # Numero de línea de la primera entrada del grub. 1325 NUMLINE=$(grep -n -m 1 "^menuentry
" $GRUBGFC|cut -d: -f1) 1326 # Texto de la entrada de opengnsys 1327 MENUENTRY="menuentry
"OpenGnsys" --
class opengnsys --class gnu --class os { \n \
1328 \tinsmod part_$PARTTABLETYPE \n \
1330 \tset root=
'(hd${NUMDISK},$PARTTABLETYPE${NUMPART})' \n \
1331 \tlinux $KERNEL \n \
1332 \tinitrd /boot/${oglivedir}/oginitrd.img \n \
1336 # Insertamos la entrada de opengnsys antes de la primera entrada existente. 1337 sed -i "${NUMLINE}i\ $MENUENTRY
" $GRUBGFC 1339 # Ponemos que la entrada por defecto sea la primera. 1340 sed -i s/"set.*
default.*$
"/"set default=\
"0\""/g $GRUBGFC
1342 # Si me dan valor para timeout lo cambio en el grub. 1343 [ $TIMEOUT ] && sed -i s/timeout=.*$/timeout=$TIMEOUT/g $GRUBGFC
1351 function ogGrubHidePartitions ()
1353 # Si se solicita, mostrar ayuda. 1354 if [
"$*" ==
"help" ]; then
1355 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition [ num_disk_partdata num_partdata ]" \
1360 ogBootLoaderHidePartitions $@
1369 function ogBurgHidePartitions ()
1371 # Si se solicita, mostrar ayuda. 1372 if [
"$*" ==
"help" ]; then
1373 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition [ num_disk_partdata num_partdata ]" \
1378 ogBootLoaderHidePartitions $@
1406 function ogBootLoaderHidePartitions () 1408 local FUNC DIRMOUNT GFCFILE PARTTABLETYPE WINENTRY WINPART ENTRY LINE PART PARTDATA TEXT PARTHIDDEN HIDDEN
1410 # Si se solicita, mostrar ayuda. 1411 if [
"$*" ==
"help" ]; then
1412 ogHelp "$FUNCNAME" "$MSG_SEE ogGrubHidePartitions ogBurgHidePartitions" 1416 # Nombre de la función que llama a esta. 1417 FUNC=
"${FUNCNAME[@]:1}" 1420 # Error si no se reciben 2 parámetros. 1421 [ $# -lt 2 ] &&
return $(
ogRaiseError session $OG_ERR_FORMAT
"$MSG_FORMAT: $FUNCNAME num_disk num_part [ num_disk_partdata num_partdata ]"; echo $?)
1422 # Si no existe $4 pongo un valor imposible para la partición de datos
1423 [ $# -eq 4 ] && PARTDATA=$(
ogDiskToDev $3 $4) || PARTDATA=0
1425 # Archivo de configuracion del grub 1427 # La función debe ser llamanda desde ogGrubHidePartitions or ogBurgHidePartitions.
1429 ogGrubHidePartitions)
1430 CFGFILE=
"$DIRMOUNT/boot/grubMBR/boot/grub/grub.cfg" 1432 ogBurgHidePartitions)
1433 CFGFILE=
"$DIRMOUNT/boot/burg/burg.cfg" 1436 ogRaiseError $OG_ERR_FORMAT
"Use ogGrubHidePartitions or ogBurgHidePartitions." 1441 # Error si no existe archivo del grub 1442 [ -r $CFGFILE ] ||
return $(
ogRaiseError log session $OG_ERR_NOTFOUND
"$CFGFILE" 1>&2; echo $?)
1444 # Si solo hay una particion de Windows me salgo
1447 # Elimino llamadas a parttool, se han incluido en otras ejecuciones de esta funcion.
1448 sed -i
'/parttool/d' $CFGFILE
1455 (comentario para bloque Doxygen) 1456 # Particiones de Windows, pueden no estar en el grub. 1460 # Modifico todas las entradas de Windows. 1461 for ENTRY in $WINENTRY;
do 1465 # En cada entrada, oculto o muestro cada particion. 1467 for PARTHIDDEN in $WINPART;
do 1468 # Muestro la particion de la entrada actual y la de datos. 1469 [
"$PARTHIDDEN" ==
"$PART" -o
"$PARTHIDDEN" ==
"$PARTDATA" ] && HIDDEN=
"-" || HIDDEN=
"+" 1470 read NUMDISK NUMPART <<< $(
ogDevToDisk $PARTHIDDEN)
1472 TEXT=
"\tparttool (hd$((NUMDISK-1)),$PARTTABLETYPE$NUMPART) hidden$HIDDEN \n$TEXT" 1475 sed -i
"${LINE}a\ $TEXT" $CFGFILE
1478 # Activamos la particion que se inicia en todas las entradas de windows.
1479 sed -i
"/chainloader/i\\\tparttool \$\{root\} boot+" $CFGFILE
1487 function ogGrubDeleteEntry () 1489 # Si se solicita, mostrar ayuda. 1490 if [
"$*" ==
"help" ]; then
1491 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition int_disk_delete int_npartition_delete" \
1495 ogBootLoaderDeleteEntry $@
1504 function ogBurgDeleteEntry () 1506 # Si se solicita, mostrar ayuda. 1507 if [
"$*" ==
"help" ]; then
1508 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition int_disk_delete int_npartition_delete" \
1512 ogBootLoaderDeleteEntry $@
1521 function ogRefindDeleteEntry () 1523 local EFIDISK EFIPART
1524 # Si se solicita, mostrar ayuda. 1525 if [
"$*" ==
"help" ]; then
1526 ogHelp "$FUNCNAME" "$FUNCNAME int_disk_delete int_npartition_delete" \
1530 read EFIDISK EFIPART <<< $(
ogGetEsp)
1531 ogBootLoaderDeleteEntry $EFIDISK $EFIPART $@
1552 function ogBootLoaderDeleteEntry ()
1554 local FUNC DIRMOUNT CFGFILE LABEL MENUENTRY DELETEENTRY ENDENTRY ENTRY
1556 # Si se solicita, mostrar ayuda. 1557 if [
"$*" ==
"help" ]; then
1558 ogHelp "$FUNCNAME" "$MSG_SEE ogBurgDeleteEntry, ogGrubDeleteEntry or ogRefindDeleteEntry" 1562 # Si el número de parámetros menos que 4 nos salimos 1563 [ $# -lt 4 ] &&
return $(
ogRaiseError session $OG_ERR_FORMAT
"$MSG_FORMAT: $FUNCNAME num_disk num_part num_disk_delete num_part_delete"; echo $?)
1566 # Nombre de la función que llama a esta.
1567 FUNC=
"${FUNCNAME[@]:1}" 1570 # Archivo de configuracion del grub
1572 # La función debe ser llamanda desde ogGrubDeleteEntry, ogBurgDeleteEntry or ogRefindDeleteEntry. 1575 CFGFILE=
"$DIRMOUNT/boot/grubMBR/boot/grub/grub.cfg" 1578 CFGFILE=
"$DIRMOUNT/boot/burg/burg.cfg" 1580 ogRefindDeleteEntry)
1581 CFGFILE=
"$DIRMOUNT/EFI/refind/refind.conf" 1584 ogRaiseError $OG_ERR_FORMAT
"Use ogGrubDeleteEntry, ogBurgDeleteEntry or ogRefindDeleteEntry." 1590 if [
"$(basename $CFGFILE)" ==
"refind.conf" ]; then
1591 LABEL=$(printf
"Part-%02d-%02d" $3 $4)
1596 # Error si no existe archivo de configuración 1597 [ -r $CFGFILE ] ||
ogRaiseError log session $OG_ERR_NOTFOUND
"$CFGFILE" ||
return $?
1599 # Numero de linea de cada entrada. 1600 MENUENTRY=
"$(grep -n -e menuentry $CFGFILE| cut -d: -f1 | sed '1!G;h;$!d' )" 1602 # Entradas que hay que borrar. 1603 DELETEENTRY=$(grep -n menuentry.*$LABEL $CFGFILE| cut -d: -f1)
1605 # Si no hay entradas para borrar me salgo con aviso
1606 [
"$DELETEENTRY" !=
"" ] ||
ogRaiseError log session $OG_ERR_NOTFOUND
"Menuentry $LABEL" ||
return $?
1608 # Recorremos el fichero del
final hacia el principio.
1609 ENDENTRY=
"$(wc -l $CFGFILE|cut -d" " -f1)" 1610 for ENTRY in $MENUENTRY;
do 1611 # Comprobamos si hay que borrar la entrada.
1613 let ENDENTRY=$ENDENTRY-1
1614 sed -i -e $ENTRY,${ENDENTRY}d $CFGFILE
1617 # Guardamos el número de línea de la entrada, que sera el final de la siguiente. 1646 function ogBurgInstallMbr ()
1649 # Variables locales. 1650 local BINARYAVAILABLE PART DISK DEVICE MOUNTDISK FIRSTAGE SECONSTAGE PREFIXSECONDSTAGE CHECKOS KERNELPARAM BACKUPNAME FILECFG
1652 # Si se solicita, mostrar ayuda. 1653 if [
"$*" ==
"help" ]; then
1654 ogHelp "$FUNCNAME" "$FUNCNAME int_ndiskSecondStage int_partitionSecondStage bolean_Configure_2ndStage \"param param \" " \
1655 "$FUNCNAME 1 1 FALSE " \
1656 "$FUNCNAME 1 1 TRUE \"nomodeset irqpoll pci=noacpi quiet splash \" " 1660 # Error si no se reciben 2 parametros. 1661 [ $# -ge 2 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
1663 #Error si no tenemos el binario burg
1664 BINARYAVAILABLE=$(burg-
install -v &>/dev/null && echo
"YES" ||echo
"NO")
1665 if [
"$BINARYAVAILABLE" == NO ]; then
1666 if [ -e $OGLIB/burg/burg.tgz ]; then
1667 cd / ; tar xzvf $OGLIB/burg/burg.tgz --strip 1 &>/dev/null
1669 return $(
ogRaiseError $OG_ERR_NOTEXEC
"Binary burg not found"; echo $?)
1674 CHECKOS=${3:-
"FALSE"}
1676 BACKUPNAME=
".backup.og" 1678 #Controlar disco no uefi 1680 #Controlar particionado tipo msdos
1682 #Controlar existencia de disco y particion
1684 MOUNTDISK=$(
ogMount $DISK $PART) ||
ogRaiseError $OG_ERR_PARTITION
"$MSG_ERROR " ||
return $?
1685 #Controlar particion segunda etapa del burg
1687 #Controlar acceso de escritura a la particion segunda etapa del burg
1690 #Asigar la primera etapa del grub en el primer disco duro 1692 #Localizar disco segunda etapa del grub
1693 SECONDSTAGE=$(
ogMount $DISK $PART)
1695 #Preparar el directorio principal de la segunda etapa (y copia los binarios) 1696 [ -d ${SECONDSTAGE}/boot/burg/ ] || mkdir -p ${SECONDSTAGE}/boot/burg/; cp -prv /boot/burg ## (comentario Dogygen) #*/ ## (comentario Dogygen)
1697 #Copiar el tema de opengnsys 1698 mkdir -p ${SECONDSTAGE}/boot/burg/themes/OpenGnsys
1699 cp -prv
"$OGLIB/burg/themes" "${SECONDSTAGE}/boot/burg/" 2>&1>/dev/null
1701 # No configurar la segunda etapa (grub.cfg). Parámetro FALSE 1702 if [ -f ${SECONDSTAGE}/boot/burg/burg.cfg -o -f ${SECONDSTAGE}/boot/burg/burg.cfg$BACKUPNAME ];
1704 if [
"$CHECKOS" ==
"false" -o
"$CHECKOS" ==
"FALSE" ]
1706 burg-
install --force --root-directory=${SECONDSTAGE} $FIRSTSTAGE 2>&1>/dev/null
1711 # Configurrar la segunda etapa (burg.cfg) == tercer parámetro TRUE 1713 #llamar a updateBootCache para que aloje la primera fase del ogLive 1716 #Configur la sintaxis grub para evitar menus de "recovery" en el OGLive 1717 echo
"GRUB_DISABLE_RECOVERY=\"true\"" >> /etc/
default/grub
1718 echo
"GRUB_DISABLE_LINUX_UUID=\"true\"" >> /etc/
default/grub
1720 #Preparar configuración segunda etapa: crear ubicacion 1721 mkdir -p ${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/burg/
1722 #Preparar configuración segunda etapa: crear cabecera del fichero 1723 FILECFG=${SECONDSTAGE}${PREFIXSECONDSTAGE}/boot/burg/burg.cfg
1807 ## (comentario Dogygen) 1809 #Preparar configuración segunda etapa: crear entrada del sistema operativo 1810 grubSyntax
"$KERNELPARAM" >>
"$FILECFG" 1812 burg-
install --force --root-directory=${SECONDSTAGE} $FIRSTSTAGE 2>&1>/dev/null
1820 function ogGrubDefaultEntry ()
1822 # Si se solicita, mostrar ayuda. 1823 if [
"$*" ==
"help" ]; then
1824 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition int_disk_default_entry int_npartition_default_entry" \
1828 ogBootLoaderDefaultEntry $@
1837 function ogBurgDefaultEntry ()
1839 # Si se solicita, mostrar ayuda. 1840 if [
"$*" ==
"help" ]; then
1841 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition int_disk_default_entry int_npartition_default_entry" \
1845 ogBootLoaderDefaultEntry $@
1855 function ogRefindDefaultEntry ()
1857 local EFIDISK EFIPART
1858 # Si se solicita, mostrar ayuda. 1859 if [
"$*" ==
"help" ]; then
1860 ogHelp "$FUNCNAME" "$FUNCNAME int_disk_default_entry int_npartition_default_entry" \
1865 read EFIDISK EFIPART <<< $(
ogGetEsp)
1866 ogBootLoaderDefaultEntry $EFIDISK $EFIPART $@
1889 function ogBootLoaderDefaultEntry ()
1892 # Variables locales. 1893 local PART FUNC DIRMOUNT LABEL CFGFILE DEFAULTENTRY MENUENTRY MSG
1895 # Si se solicita, mostrar ayuda. 1896 if [
"$*" ==
"help" ]; then
1897 ogHelp "$FUNCNAME" "$MSG_SEE ogGrubDefaultEntry, ogBurgDefaultEntry or ogRefindDefaultEntry." 1901 # Nombre de la función que llama a esta. 1902 FUNC=
"${FUNCNAME[@]:1}" 1905 # Error si no se reciben 3 parametros. 1906 [ $# -eq 4 ] ||
ogRaiseError $OG_ERR_FORMAT
"$FUNCNAME int_ndiskSecondStage int_partitionSecondStage int_disk_default_entry int_partitions_default_entry" ||
return $?
1908 # Error si no puede montar sistema de archivos. 1909 DIRMOUNT=$(
ogMount $1 $2) ||
return $?
1911 # Comprobamos que exista fichero de configuración
1912 # La función debe ser llamanda desde ogGrubDefaultEntry, ogBurgDefaultEntry or ogRefindDefaultEntry.
1915 CFGFILE=
"$DIRMOUNT/boot/grubMBR/boot/grub/grub.cfg" 1918 CFGFILE=
"$DIRMOUNT/boot/burg/burg.cfg" 1920 ogRefindDefaultEntry)
1921 CFGFILE=
"$DIRMOUNT/EFI/refind/refind.conf" 1924 ogRaiseError $OG_ERR_FORMAT
"Use ogGrubDefaultEntry, ogBurgDefaultEntry or ogRefindDefaultEntry." 1929 # Error si no existe archivo de configuración 1930 [ -r $CFGFILE ] ||
ogRaiseError $OG_ERR_NOTFOUND
"$CFGFILE" ||
return $?
1933 if [
"$(basename $CFGFILE)" ==
"refind.conf" ]; then
1934 LABEL=$(printf
"Part-%02d-%02d" $3 $4)
1939 # Número de línea de la entrada por defecto en CFGFILE (primera de la partición). 1940 DEFAULTENTRY=$(grep -n -m 1 menuentry.*$LABEL $CFGFILE| cut -d: -f1)
1942 # Si no hay entradas para borrar me salgo con aviso
1943 [
"$DEFAULTENTRY" !=
"" ] ||
ogRaiseError session log $OG_ERR_NOTFOUND
"No menuentry $LABEL" ||
return $?
1945 # Número de la de linea por defecto en el menú de usuario
1946 MENUENTRY=
"$(grep -n -e menuentry $CFGFILE| cut -d: -f1 | grep -n $DEFAULTENTRY |cut -d: -f1)" 1948 if [
"$(basename $CFGFILE)" ==
"refind.conf" ]; then
1949 sed -i /default_selection.*$/d $CFGFILE
1950 sed -i
"1 i\default_selection $MENUENTRY" $CFGFILE
1952 # En grub y burg las líneas empiezan a contar desde cero 1953 let MENUENTRY=$MENUENTRY-1
1954 sed --regexp-extended -i s/
"set default=\"?[0-9]*\"?$"/
"set default=\"$MENUENTRY\""/g $CFGFILE
1956 MSG=
"MSG_HELP_$FUNC" 1957 echo
"${!MSG%%\.}: $@" 1965 function ogGrubOgliveDefaultEntry ()
1967 # Si se solicita, mostrar ayuda. 1968 if [
"$*" ==
"help" ]; then
1969 ogHelp "$FUNCNAME" "$FUNCNAME int_ndiskSecondStage int_partitionSecondStage" \
1973 ogBootLoaderOgliveDefaultEntry $@
1982 function ogBurgOgliveDefaultEntry ()
1984 # Si se solicita, mostrar ayuda. 1985 if [
"$*" ==
"help" ]; then
1986 ogHelp "$FUNCNAME" "$FUNCNAME int_ndiskSecondStage int_partitionSecondStage" \
1990 ogBootLoaderOgliveDefaultEntry $@
2000 function ogRefindOgliveDefaultEntry ()
2002 local EFIDISK EFIPART
2003 # Si se solicita, mostrar ayuda. 2004 if [
"$*" ==
"help" ]; then
2005 ogHelp "$FUNCNAME" "$FUNCNAME" \
2010 read EFIDISK EFIPART <<< $(
ogGetEsp)
2011 ogBootLoaderOgliveDefaultEntry $EFIDISK $EFIPART
2033 function ogBootLoaderOgliveDefaultEntry ()
2036 # Variables locales. 2037 local FUNC PART CFGFILE NUMENTRY MSG
2039 # Si se solicita, mostrar ayuda. 2040 if [
"$*" ==
"help" ]; then
2041 ogHelp "$FUNCNAME" "$MSG_SEE ogGrubOgliveDefaultEntry, ogBurgOgliveDefaultEntry or ogRefindOgliveDefaultEntry" \
2045 # Nombre de la función que llama a esta. 2046 FUNC=
"${FUNCNAME[@]:1}" 2049 # Error si no se reciben 2 parametros. 2050 [ $# -eq 2 ] ||
ogRaiseError $OG_ERR_FORMAT
"$FUNCNAME int_ndiskSecondStage int_partitionSecondStage" ||
return $?
2052 # Error si no puede montar sistema de archivos. 2053 PART=$(
ogMount $1 $2) ||
return $?
2054 # La función debe ser llamanda desde ogGrubOgliveDefaultEntry, ogBurgOgliveDefaultEntry or ogRefindOgliveDefaultEntry.
2056 ogGrubOgliveDefaultEntry)
2057 CFGFILE=
"$PART/boot/grubMBR/boot/grub/grub.cfg" 2059 ogBurgOgliveDefaultEntry)
2060 CFGFILE=
"$PART/boot/burg/burg.cfg" 2062 ogRefindOgliveDefaultEntry)
2063 CFGFILE=
"$PART/EFI/refind/refind.conf" 2066 ogRaiseError $OG_ERR_FORMAT
"Use ogGrubOgliveDefaultEntry, ogBurgOgliveDefaultEntry or ogRefindOgliveDefaultEntry." 2071 # Comprobamos que exista fichero de configuración 2072 [ -f $CFGFILE ] ||
ogRaiseError $OG_ERR_NOTFOUND
"$CFGFILE" ||
return $?
2074 # Detectamos cual es la entrada de ogLive 2075 NUMENTRY=$(grep ^menuentry $CFGFILE| grep -n
"OpenGnsys Live"|cut -d: -f1)
2077 # Si no existe entrada de ogLive nos salimos
2078 [ -z
"$NUMENTRY" ] && (
ogRaiseError $OG_ERR_NOTFOUND
"menuentry OpenGnsys Live in $CFGFILE" ||
return $?)
2080 if [
"$(basename $CFGFILE)" ==
"refind.conf" ]; then
2081 sed -i /default_selection.*$/d $CFGFILE
2083 sed -i
"1 i\default_selection $NUMENTRY" $CFGFILE
2085 let NUMENTRY=$NUMENTRY-1
2086 sed --regexp-extended -i s/
"set default=\"?[0-9]+\"?"/
"set default=\"$NUMENTRY\""/g $CFGFILE
2089 MSG=
"MSG_HELP_$FUNC" 2090 echo
"${!MSG%%\.}: $@" 2108 function ogGrubSecurity ()
2110 # Variables locales. 2111 local SECONDSTAGE GRUBGFC FILE USER PASSWD ENCRYPTPASSWD
2113 # Si se solicita, mostrar ayuda. 2114 if [
"$*" ==
"help" ]; then
2115 ogHelp "$FUNCNAME" "$FUNCNAME int_ndiskSecondStage int_partitionSecondStage [USER] [PASSWORD]" \
2117 "$FUNCNAME 1 2 user clave" 2121 # Error si no se reciben 2 parámetros. 2122 [ $# -ge 2 ] ||
ogRaiseError $OG_ERR_FORMAT
"$FUNCNAME int_ndiskSecondStage int_partitionSecondStage [USER] [PASSWORD]"||
return $?
2124 #localizar disco segunda etapa del grub 2125 SECONDSTAGE=$(
ogMount "$1" "$2") ||
return $?
2127 GRUBGFC=$(ls $SECONDSTAGE/{,boot/}{{grubMBR,grubPARTITION}/boot/,}{grub{,2},{,efi/}EFI
2771 function ogRefindInstall () {
2772 # Variables locales. 2773 local CONFIG EFIDISK EFIPART EFIDEVICE EFIMNT EFIDIR SHIM REFINDDIR
2774 local CACHEDEVICE OGLIVE OGLIVEDIR CMDLINE OGICON CFGFILE DEVICES
2775 local LNXCFGFILE NUMENTRY DIR
2777 # Si se solicita, mostrar ayuda. 2778 if [
"$*" ==
"help" ]; then
2779 ogHelp "$FUNCNAME" "$FUNCNAME boolean_autoconfig " \
2784 # Recogemos parametros 2785 CONFIG=${1:-
"FALSE"}
2787 read -e EFIDISK EFIPART <<< $(
ogGetEsp)
2789 EFIMNT=$(
ogMount $EFIDISK $EFIPART) ||
ogRaiseError $OG_ERR_PARTITION
"$MSG_ERROR mount ESP" ||
return $?
2790 EFIDIR=
"$EFIMNT/EFI" 2791 [ -d $EFIDIR ] || mkdir $EFIDIR
2793 # Comprobamos que exista shimx64
2794 SHIM=$(
ogGetPath /usr/lib/shim/shimx64.efi.signed)
2795 [
"$SHIM" ==
"" ] &&
return $(
ogRaiseError $OG_ERR_NOTFOUND
"shimx64.efi.signed")
2797 # Si existe configuración anterior de refind la borro
2798 [ -d
"$EFIDIR/refind" ] && rm -rf $EFIDIR/refind
2800 # Instalamos rEFInd.
2801 refind-
install --yes --alldrivers --root $EFIMNT --shim $SHIM
2803 # Firmo refind con certificado de OpenGnsys
2804 mv $EFIDIR/refind/grubx64.efi $EFIDIR/refind/grubx64.efi-
unsigned 2805 sbsign --key $OGETC/ssl/
private/opengnsys.key --cert $OGETC/ssl/certs/opengnsys.crt --output $EFIDIR/refind/grubx64.efi $EFIDIR/refind/grubx64.efi-
unsigned 2807 # Copio los certificados
2808 cp /etc/refind.d/keys
2881 echo
" loader /EFI/${DIR##*/}/Boot/ogloader.efi" >> $CFGFILE
2882 [ -f $DIR/
Boot/bootmgfw.efi ] && echo
" icon /EFI/refind/icons/os_win8.png" >> $CFGFILE
2883 [ -f $DIR/
Boot/grubx64.efi ] && echo
" icon /EFI/refind/icons/os_linux.png" >> $CFGFILE
2884 echo
"}" >> $CFGFILE
2886 # Configuración ogLive si secureboot no está activado 2887 if ! dmesg|grep secureboot.*enabled &>/dev/null; then
2888 if [
"$OGLIVE" !=
"" ]; then
2889 echo
"menuentry \"OpenGnsys Live\" {" >> $CFGFILE
2890 echo
" volume CACHE" >> $CFGFILE
2891 echo
" ostype Linux" >> $CFGFILE
2892 echo
" loader /boot/$(basename ${OGLIVE%/*})/ogvmlinuz" >> $CFGFILE
2893 echo
" initrd /boot/$(basename ${OGLIVE%/*})/oginitrd.img" >> $CFGFILE
2894 echo
" options \"$CMDLINE\"" >> $CFGFILE
2895 echo
"}" >> $CFGFILE
2897 # Ponemos ogLive como la entrada por defecto 2898 sed -i
'1 i\default_selection "OpenGnsys Live"' $CFGFILE
2920 function ogGrub4dosInstallMbr ()
2922 # Variables locales. 2923 local DISK PART DEVICE MOUNTDISK GRUBDISK BINBDIR
2925 # Si se solicita, mostrar ayuda. 2926 if [
"$*" ==
"help" ]; then
2927 ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_part " \
2931 # Error si no se recibe 2 parámetros. 2932 [ $# == 2 ] ||
return $(
ogRaiseError $OG_ERR_FORMAT; echo $?)
2937 #Controlar existencia de disco y particion
2939 MOUNTDISK=$(
ogMount $DISK $PART) ||
ogRaiseError $OG_ERR_PARTITION
"$MSG_ERROR " ||
return $?
2940 #Controlar acceso de escritura a la particion
2942 #Controlar disco no uefi 2944 #Controlar particionado tipo msdos
2946 #Controlar la existencia del grub4dos con acceso a
ntfs 2947 BINDIR=
"${OGLIB}/grub4dos/grub4dos-0.4.6a" 2948 [ -f ${BINDIR}/bootlace.com ] ||
ogRaiseError $OG_ERR_NOTFOUND
": ${BINDIR}/bootlace.com" ||
return $?
2950 #instalar el bootloader de grlrd en el MBR 2951 ${BINDIR}/bootlace64.com $DEVICE &>/dev/null
2952 #copiar grld a la particion 2953 cp ${BINDIR}/grldr $MOUNTDISK
2954 #Instalar y configurar grub4dos 2955 if [[ -f $MOUNTDISK/boot/grub/menu.lst ]]; then
2956 rm $MOUNTDISK/boot/grub/menu.lst
2957 rmdir /$MOUNTDISK/boot/grub
2959 if [[ ! -f $MOUNTDISK/boot/grub/menu.lst ]]; then
2960 mkdir -p /$MOUNTDISK/boot/grub
2961 touch /$MOUNTDISK/boot/grub/menu.lst
2965 cat << EOT >/$MOUNTDISK/boot/grub/menu.lst
2966 ##NO-TOCAR-ESTA-LINEA MBR 2969 root (hd$GRUBDISK,0)
2970 chainloader (hd$GRUBDISK,0)+1
function ogDiskToDev()
Devuelve la equivalencia entre el nº de orden del dispositivo (dicso o partición) y el nombre de fich...
function ogIsEfiActive()
Comprueba si el sistema tiene activo el arranque EFI.
function ogIsReadonly()
Comprueba si un sistema de archivos está montado solo de lectura. #.
function ogBootMbrXP()
Genera un nuevo Master Boot Record en el disco duro indicado, compatible con los SO tipo Windows #...
function ogNvramAddEntry()
Crea nueva entrada en el gestor de arranque (NVRAM), opcionalmente la incluye al final del orden de a...
function ogGetFsType()
Devuelve el mnemonico con el tipo de sistema de archivos. #.
function ogDevToDisk()
Devuelve el nº de orden de dicso (y partición) correspondiente al nombre de fichero de dispositivo o ...
function ogWindowsBootParameters()
Configura el gestor de arranque de windows 7 / vista / XP / 2000 #.
function ogGetPartitionId()
Devuelve el mnemónico con el tipo de partición. #.
Funciones para arranque y post-configuración de sistemas de archivos. #.
function ogGetPartitionTableType()
Devuelve el tipo de tabla de particiones del disco (GPT o MSDOS) #.
function ogRaiseError()
Devuelve el mensaje y el código de error correspondiente. #.
function ogSetWinlogonUser()
Establece el nombre de usuario por defecto en la entrada de Windows. #.
function ogWindowsRegisterPartition()
Registra una partición en windows con un determinado volumen. #.
function ogHelp()
Muestra mensaje de ayuda para una función determinda. #.
function ogBootMbrGeneric()
Genera un nuevo Codigo de arranque en el MBR del disco indicado, compatible con los SO tipo Windows...
function ogFixBootSector()
Corrige el boot sector de una particion activa para MS windows/dos -fat-ntfs #.
function ogGetPath()
Inicia el proceso de arranque de un sistema de archivos. #.
function ogGrubInstallMbr()
Instala el grub el el MBR del primer disco duro (FIRSTSTAGE). El fichero de configuración grub...
function ogLinuxBootParameters()
Muestra los parámetros de arranque de un sistema de archivos Linux. #.
function ogSetPartitionActive()
Establece cual es la partición activa de un disco. #.
function ogAddRegistryValue()
Añade un nuevo valor al registro de Windows, indicando su tipo de datos. #.
function ogGetWindowsName()
Muestra el nombre del equipo en el registro de Windows. #.
function ogGetOsType()
Devuelve el tipo del sistema operativo instalado. #.
function ogGetBootMbr()
Obtiene el contenido del sector de arranque de un disco. #.
function ogSetWindowsName()
Establece el nombre del equipo en el registro de Windows. #.
function ogCheckStringInGroup()
Función para determinar si el elemento pertenece a un conjunto #.
function ogBoot()
Inicia el proceso de arranque de un sistema de archivos. #.
function ogSetRegistryValue()
Establece el dato asociado a un valor del registro de Windows. #.
function ogGetEsp()
Devuelve números de disco y partición para la partición EFI (ESP).