Tiempos de reinicio

Tiempos de reinicio

A menudo hay ocasiones en las que los usuarios de Ubuntu necesitan realizar un reinicio rápido, por ejemplo, después de una actualización del kernel o cuando prueban algunas configuraciones que requieren reiniciar.

Me gustaría tener un método (por ejemplo, un script) que me permita ahorrar el mayor tiempo posible al reiniciar.

Esas son cosas que probablemente se puedan evitar para reducir el tiempo de reinicio hasta que la sesión del usuario esté lista:

  • si es posible, omita la inicialización de BIOS/UEFI/firmware y la POST
  • omitir el menú GRUB (preseleccionar la entrada deseada una vez e iniciarla directamente sin tiempo de espera)
  • omitir la pantalla de inicio de sesión (use el inicio de sesión automático sin contraseña una vez)

Quizás haya incluso más cosas que podrían omitirse para un reinicio rápido.

he visto elReinicio rápidospec en Ubuntu Wiki, pero la página se editó por última vez el 2010-02-03.

Pero incluso si todavía no pudiéramos usar adecuadamente lo descrito kexecpara omitir la inicialización del firmware y demás, debería ser posible preseleccionar temporalmente la entrada de GRUB y usar el inicio de sesión automático para exactamente un reinicio. ¿Cómo puedo configurar esto?

Estoy usando Ubuntu 16.04, 64 bits con Unity DE, lightdm y GRUB en arranque dual con Windows 10 (y pronto algunas distribuciones más de Linux) en una máquina Acer Aspire E5-773G con UEFI.

Respuesta1

Tiempos de reinicio

Podemos posponer el reinicio a veces en este mundo "demasiado ocupado" y no querer perder 5 o 15 segundos. Cuando analicé esta pregunta por primera vez, mis tiempos de arranque habían pasado de 45 segundos a 14 segundos con un SSD y systemdajustes.

Recientemente adquirí una computadora portátil "moderna" con una SSD NVMe M.2 Gen 3.0 x 4 con una increíble velocidad de lectura de Windows de 3,4 GB/s y una velocidad de lectura de Linux de 2 GB/s. Entonces debería ser más rápido ¿verdad? Mmm no. Es dolorosamente más lento:

$ systemd-analyze
Startup finished in 6.823s (firmware) + 4.447s (loader) + 3.467s (kernel) + 8.412s (userspace) = 23.151s

Esta vez es en realidaddespuésretocando. Fueron 80 segundos mucho peores porque nVidia y Dell decidieron cortar la alimentación del audio HDMI en la tarjeta gráfica nVidia GTX970M que controla el puerto HDMI. Como tal, setpcise requirió un comando que provocó el mensaje de "error de gráficos bajos" y tuvo que esperar 20 segundos para que el puntero del mouse continuara. Luego recargaría todos los controladores gráficos y reiniciaría lightdm.

Otro problema con la computadora portátil "moderna" es que la POST del BIOS demoraba 15 segundos. Ajustes en el BIOS para desactivar la verificación de errores de hardware, desactivar la carga de controladores de arranque para NIC y otros ajustes que no recuerdo acaban de cambiar el tiempo de POST del BIOS a 6 segundos. En comparación, el tiempo de POST del BIOS de la computadora portátil "antigua" fue de solo un par de segundos usando Legacy BIOS CSM y sin ajustes del BIOS.


El proyecto de Ubuntu RapidRebootde 2010

el ubuntuReinicio rápidoLa mención del proyecto en la publicación de ByteCommander es de 2010. El fundamento del proyecto se resume así:

Razón fundamental

Hay algunos casos en los que podemos asumir con seguridad que el usuario no quiere ver el gestor de arranque; en estos casos, debemos usar kexec para evitar reinicios prolongados, POST del BIOS y tiempo del cargador de arranque. Esto puede tardar 10 segundos en situaciones óptimas; pero con SCSI o RAID BIOS y roms de arranque en red, el tiempo puede aumentar a 20, 30 o incluso más de 60 segundos, incluso en los casos en que el tiempo entre cargar el kernel y ver la pantalla de inicio de sesión es de 30 a 60 segundos.

Ejemplos de uso del proyecto:

Casos de uso

  • Bob acaba de actualizar su kernel; update-notifier le informa que debe reiniciar para que los cambios surtan efecto, y el botón 'Reiniciar' usa kexec para hacerlo más rápido.
  • Alice acaba de actualizar dbus; update-notifier le dice que reinicie y usa kexec.
  • Seveas ha realizado varias actualizaciones durante el último mes y ahora tiene tres veces más presión de memoria debido a que diferentes programas utilizan diferentes copias de bibliotecas compartidas. Decide reiniciar para solucionar este problema y utiliza un "reinicio rápido" para hacerlo más rápido.
  • Keybuk acaba de instalar Ubuntu Edgy y quiere iniciarlo. El LiveCD carga el kernel de destino e initrd con kexec; desmonta todos los sistemas de archivos basados ​​en disco; sincronización; y luego usa kexec para iniciar el nuevo sistema en lugar de reiniciar.

Usando kexec para reiniciar

kexeces el hechizo mágico que lanzamos para reiniciar sin publicar el BIOS y algunos otros mecanismos de descubrimiento de bajo nivel, como la configuración RAID.

El kernel debe compilarse con CONFIG_KEXECla bandera.

El primer paso es asegurarse de que su kernel haya sido compilado con la CONFIG_KEXEC=yopción:

$ uname -r
4.14.2-041402-generic
$ grep KEXEC= /boot/config-`uname -r`
CONFIG_KEXEC=y

El primer comando uname -res opcional solo para mostrar con qué kernel ha arrancado. Como podemos ver en el segundo comando, el equipo de Ubuntu compila el kernel con el indicador necesario configurado. No estoy seguro de cuándo se agregó, pero probablemente <= año 2012.

Instalarkexec-tools

El siguiente paso es instalar las kexecherramientas para el espacio de usuario:

$sudo apt install kexec-tools

Después de las descargas binarias normales, aparecerá esta pantalla:

kexec-tools instalar.png

Respondí Noen parte debido a este informe de error que la opción no es relevante en systemd.

Luego, la instalación continúa (el fragmento se muestra a continuación):

Unpacking kexec-tools (1:2.0.10-1ubuntu2.4) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for systemd (229-4ubuntu21) ...
Setting up kexec-tools (1:2.0.10-1ubuntu2.4) ...
Generating /etc/default/kexec...
Generating grub configuration file ...
  (... CUT ...)
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done
Processing triggers for systemd (229-4ubuntu21) ...

Configurandokexec

Nuestras cohortes en ArchLinux tienengran documentación para kexecpero necesita masajes para distribuciones Ubuntu/Debian.

El uso básico es con dos comandos:

sudo kexec -l /boot/vmlinuz-`uname -r` --initrd=/boot/initrd.img-`uname -r` --reuse-cmdline
sudo kexec -e

A partir de este momento, aparece cada vez que hace clic en reiniciar y recarga automáticamente el último kernel en modo de reinicio rápido.

Usando Systemd para cargar kexec

Crea el archivo :/etc/systemd/system/[email protected]

[Unit]
Description=load %i kernel into the current kernel
Documentation=man:kexec(8)
DefaultDependencies=no
Before=shutdown.target umount.target final.target

[Service]
Type=oneshot
ExecStart=/usr/bin/kexec -l /boot/vmlinuz-%i --initrd=/boot/initrd.img-%i --reuse-cmdline

[Install]
WantedBy=kexec.target

Luego habilite el archivo de servicio para el kernel que desea cargar, por ejemplo, para simplemente configurar el kernel actual uname -r:

$ sudo systemctl enable kexec-load@`uname -r`
Created symlink from /etc/systemd/system/kexec.target.wants/[email protected] to /etc/systemd/system/[email protected].

Luego a kexec:

$ sudo systemctl kexec

Si lo está youtubeejecutando, es posible que haya un inhibidor del sistema que le impida reiniciar, en cuyo caso utilice:

$ sudo systemctl kexec -i

Si desea cargar un kernel diferente para el próximo kexec, por ejemplo 4.12.2-041202-generic, deshabilite el servicio para el kernel actual y habilite el del nuevo kernel:

$ sudo systemctl disable kexec-load@`uname -r`
$ sudo systemctl enable [email protected]

Más por venir

Tengo que publicar esta respuesta ahora, ya que es hora de arrancar, arreglar, arrancar, arreglar y repetir. Tengo una configuración complicada donde systemdcarga cinco nVidiacontroladores que tengo que descargar, ejecutar setpcipara encender el audio en hdmi, recargar los controladores nVidia y reiniciar lightdm. Puede que tarde un poco en resolverse.

Después de que los climétodos funcionen, crearé un acceso directo en el escritorio para reiniciar con un solo clic y sudosolicitar contraseña. Después de eso, crearé un acceso directo en el escritorio a un yadcuadro de diálogo que le permitirá elegir entre los núcleos instalados para reiniciar. Similar al menú de opciones avanzadas de grub.

Respuesta2

Para reiniciar extremadamente rápido una máquina Linux, llame a la función de reinicio del kernel. Vaciará los discos (al menos en la versión 3.x del kernel) y se reiniciará inmediatamente. No hay nada intermedio, no hay funciones del sistema operativo, scripts, etc... solo las llamadas del kernel.

¿Cómo?

Crea reinicio.c con contenido:

#include <stdio.h>
#include <sys/reboot.h>


int
main (int argc, char **argv)
{
    if (reboot (RB_AUTOBOOT) < 0) {
        fprintf (stderr, "%s: call to reboot() system call failed.\n",
             argv[0]);
    }

    return 0;
}

Compile reiniciar.c para reiniciar:

gcc reboot.c -o reboot

Ejecute el reinicio (vaciará los datos a los discos y reiniciará, ¡eso es todo!):

./reboot

¡Que tengas un buen reinicio!

https://github.com/masikh/reboot

Respuesta3

Si desea reiniciar parcialmente su computadora (y no acelerar el arranque), según tengo entendido: hay 3 partes principales en el arranque de Linux:

  1. Paso 1: Arranque de la computadora hasta la selección del administrador de arranque/sistema operativo (rEFInd, Grub, ...)
  2. Paso 2: Iniciar Linux y servicios principales
  3. Paso 3: Iniciar la sesión
    • inicio de sesión de usuario
    • administrador de ventanas como Cinnamon, KDE, Gnome, ...)

Reinicie solo el paso 3:

  • TipoAlt-F2yR
  • Oreiniciar el servicio sudo $(cat /etc/X11/default-display-manager)

Reinicie solo los pasos 2 y 3:

No sé cómo reiniciar Linux desde tu administrador de arranque.


Reiniciar todos los pasos

  • En el menú principal, elija "Reanudar"
  • Desde la línea de comando, escribareiniciar sudo

información relacionada