Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Problemas del sistema operativo

Harvester se ejecuta en un sistema operativo basado en OpenSUSE. El sistema operativo es un artefacto producido por el elemental-toolkit. Las siguientes secciones contienen información y consejos para ayudar a los usuarios a solucionar problemas relacionados con el sistema operativo.

Cómo iniciar sesión en un nodo de Harvester

Los usuarios pueden iniciar sesión en un nodo de Harvester con el nombre de usuario rancher y la contraseña o el par de claves SSH proporcionado durante la instalación. El usuario rancher puede ejecutar comandos privilegiados sin introducir una contraseña:

# Run a privileged command
rancher@node1:~> sudo blkid

# Or become root
rancher@node1:~> sudo -i
node1:~ # blkid

¿Cómo puedo instalar paquetes? ¿Por qué algunas vías son de solo lectura?

El sistema de archivos del sistema operativo, al igual que una imagen de contenedor, es basado en imágenes e inmutable, excepto en algunos directorios.

Recomendamos utilizar un toolbox container para ejecutar programas que no están empaquetados en el sistema operativo de Harvester con fines de depuración. Por favor, consulte este artículo para aprender cómo construir y ejecutar un toolbox container.

El sistema operativo de Harvester también proporciona una forma de habilitar el modo de lectura-escritura temporalmente. Por favor, siga los siguientes pasos:

Habilitar el modo de lectura-escritura podría romper su sistema si se modifican archivos. Úselo bajo su propio riesgo.

  • Para la versión v0.3.0, necesitamos aplicar primero una solución alternativa para hacer algunos directorios no superpuestos después de habilitar el modo de lectura-escritura. En un nodo de Harvester en funcionamiento, ejecute el siguiente comando como root:

      cat > /oem/91_hack.yaml <<'EOF'
      name: "Rootfs Layout Settings for debugrw"
      stages:
        rootfs:
          - if: 'grep -q root=LABEL=COS_STATE /proc/cmdline && grep -q rd.cos.debugrw /proc/cmdline'
            name: "Layout configuration for debugrw"
            environment_file: /run/cos/cos-layout.env
            environment:
              RW_PATHS: " "
      EOF
  • Reinicie el sistema al menú de GRUB. Presione ESC para permanecer en el menú.

    grub menu
  • Presione e en la primera entrada del menú. Añada rd.cos.debugrw a la línea linux (loop0)$kernel $kernelcmd. Presione Ctrl + x para iniciar el sistema.

    edit boot parameter

Cómo editar permanentemente los parámetros del kernel

Los siguientes pasos son una solución alternativa. Harvester informará a la comunidad una vez que se implemente una resolución permanente.

  • Vuelva a montar el directorio de estado en modo lectura-escritura:

      # blkid -L COS_STATE
      /dev/vda2
      # mount -o remount,rw /dev/vda2 /run/initramfs/cos-state
  • Edite el archivo de configuración de GRUB y añada parámetros a la línea linux (loop0)$kernel $kernelcmd. El siguiente ejemplo añade un parámetro nomodeset:

      # vim /run/initramfs/cos-state/grub2/grub.cfg
      menuentry "${display_name}" --id cos {
        # label is kept around for backward compatibility
        set label=${active_label}
        set img=/cOS/active.img
        loopback $loopdev /$img
        source ($loopdev)/etc/cos/bootargs.cfg
        linux ($loopdev)$kernel $kernelcmd ${extra_cmdline} ${extra_active_cmdline} nomodeset
        initrd ($loopdev)$initramfs
      }
  • Reinicie para que los cambios surtan efecto.

Cómo cambiar la entrada del menú de arranque GRUB por defecto

Para cambiar la entrada por defecto, primero verifique el atributo --id de una entrada del menú. Las entradas del menú de GRUB se encuentran en los siguientes archivos:

  • /run/initramfs/cos-state/grub2/grub.cfg: Contiene las entradas por defecto, de reserva y de recuperación

  • /run/initramfs/cos-state/grubcustom: Contiene la entrada de depuración

En el siguiente ejemplo, el id de la entrada es debug.

# cat \
    /run/initramfs/cos-state/grub2/grub.cfg \
    /run/initramfs/cos-state/grubcustom

<...>
menuentry "${display_name} (debug)" --id debug {
  search --no-floppy --set=root --label COS_STATE
  set img=/cOS/active.img
  set label=COS_ACTIVE
  loopback loop0 /$img
  set root=($root)
  source (loop0)/etc/cos/bootargs.cfg
  linux (loop0)$kernel $kernelcmd ${extra_cmdline} ${extra_passive_cmdline} ${crash_kernel_params}
  initrd (loop0)$initramfs
}

Puede configurar la entrada por defecto ejecutando los siguientes comandos:

# mount -o remount,rw /run/initramfs/cos-state
# grub2-editenv /run/initramfs/cos-state/grub_oem_env set saved_entry=debug

Si es necesario, puede deshacer el cambio ejecutando el comando grub2-editenv /run/initramfs/cos-state/grub_oem_env unset saved_entry.

Cómo depurar un fallo o bloqueo del sistema

Recoger el registro de fallos

Si los rastros de pánico en el kernel no se registran en el registro del sistema cuando un sistema falla, una forma fiable de localizar el registro de fallos es utilizar una consola serie.

Para habilitar la salida de los mensajes del kernel a una consola serie, utilice los siguientes pasos:

  • Arranque el sistema hasta el menú GRUB. Presione ESC para permanecer en el menú.

    grub menu

  • Presione e en la primera entrada del menú. Añada console=ttyS0,115200n8 a la línea linux (loop0)$kernel $kernelcmd. Presione Ctrl + x para iniciar el sistema.

    edit boot parameter serial

    Ajuste las opciones de consola de acuerdo con su entorno. Asegúrese de añadir la cadena console= al final de la línea.

  • Conéctese al puerto serie para capturar los registros.

Recoger volcados de memoria

Para los fallos de pánico en el kernel, puede utilizar kdump para recoger volcados de memoria.

Por defecto, el sistema operativo se arranca sin la función kdump habilitada. Los usuarios pueden habilitar la función seleccionando la entrada de menú debug al arrancar, como en el siguiente ejemplo:

grub menu debug

Cuando un sistema falla, un volcado de memoria se almacenará en el directorio /var/crash/<time>. Proporcionar el volcado de memoria a los desarrolladores les ayuda a solucionar y resolver problemas.