4.10. Prise en charge du micrologiciel KMM

Les modules du noyau doivent parfois charger des fichiers de microprogrammes à partir du système de fichiers. KMM prend en charge la copie des fichiers de microprogrammes de l'image ModuleLoader vers le système de fichiers du nœud.

Le contenu de .spec.moduleLoader.container.modprobe.firmwarePath est copié dans le chemin /var/lib/firmware sur le nœud avant d'exécuter la commande modprobe pour insérer le module du noyau.

Tous les fichiers et répertoires vides sont supprimés de cet emplacement avant d'exécuter la commande modprobe -r pour décharger le module du noyau, lorsque le pod est terminé.

Ressources supplémentaires

4.10.1. Configuration du chemin de recherche sur les nœuds

Sur les nœuds d'OpenShift Container Platform, l'ensemble des chemins de recherche par défaut pour les firmwares n'inclut pas le chemin /var/lib/firmware.

Procédure

  1. Utilisez l'opérateur Machine Config pour créer une ressource personnalisée (CR) MachineConfig qui contient le chemin d'accès /var/lib/firmware:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker 1
      name: 99-worker-kernel-args-firmware-path
    spec:
      kernelArguments:
        - 'firmware_class.path=/var/lib/firmware'
    1
    Vous pouvez configurer l'étiquette en fonction de vos besoins. Dans le cas d'OpenShift à nœud unique, utilisez les objets control-pane ou master.
  2. En appliquant le CR MachineConfig, les nœuds sont automatiquement redémarrés.

Ressources supplémentaires

4.10.2. Construction d'une image ModuleLoader

Procédure

  • En plus de construire le module du noyau lui-même, il faut inclure le micrologiciel binaire dans l'image du constructeur :

    FROM registry.redhat.io/ubi8/ubi-minimal as builder
    
    # Build the kmod
    
    RUN ["mkdir", "/firmware"]
    RUN ["curl", "-o", "/firmware/firmware.bin", "https://artifacts.example.com/firmware.bin"]
    
    FROM registry.redhat.io/ubi8/ubi-minimal
    
    # Copy the kmod, install modprobe, run depmod
    
    COPY --from=builder /firmware /firmware

4.10.3. Optimisation des ressources du module

Procédure

  • Définir .spec.moduleLoader.container.modprobe.firmwarePath dans la ressource personnalisée (CR) Module:

    apiVersion: kmm.sigs.x-k8s.io/v1beta1
    kind: Module
    metadata:
      name: my-kmod
    spec:
      moduleLoader:
        container:
          modprobe:
            moduleName: my-kmod  # Required
    
            firmwarePath: /firmware 1
    1
    Facultatif : Copie /firmware/* dans /var/lib/firmware/ sur le nœud.