Toolbox: Les conteneurs ne démarrent pas lorsque /etc/localtime est un lien symbolique absolu sur l'hôte (par exemple, Arch et Ubuntu)

Créé le 9 nov. 2020  ·  10Commentaires  ·  Source: containers/toolbox

Décrivez le bogue
Après la mise à niveau vers la version 0.0.97 de la boîte à outils, je ne peux plus démarrer aucune boîte à outils.

Sortie de toolbox enter work :

DEBU Running as real user ID 1000                 
DEBU Resolved absolute path to the executable as /usr/bin/toolbox 
DEBU Running on a cgroups v1 host                 
DEBU Checking if /etc/subgid and /etc/subuid have entries for user x 
DEBU TOOLBOX_PATH is /usr/bin/toolbox             
DEBU Toolbox config directory is /home/x/.config/toolbox 
DEBU Current Podman version is 2.1.1              
DEBU Old Podman version is 2.1.1                  
DEBU Migration not needed: Podman version 2.1.1 is unchanged 
DEBU Resolving container and image names          
DEBU Container: 'work'                            
DEBU Image: ''                                    
DEBU Release: ''                                  
DEBU Resolved container and image names           
DEBU Container: 'work'                            
DEBU Image: 'fedora-toolbox:31'                   
DEBU Release: '31'                                
DEBU Checking if container work exists            
DEBU Inspecting mounts of container work          
DEBU Starting container work                      
DEBU Inspecting entry point of container work     
DEBU Entry point PID is a float64                 
DEBU Entry point of container work is toolbox (PID=0) 
Error: invalid entry point PID of container work

La sortie est la même pour les conteneurs créés avant et après la mise à jour. Les boîtes à outils peuvent être démarrées après une rétrogradation à 0.0.96 et elles peuvent être entrées en 0.0.97 une fois qu'elles ont été démarrées.

Étapes pour reproduire le comportement

  1. Démarrer la boîte à outils

Comportement attendu
La boîte à outils est lancée

Comportement réel
Une erreur est générée Error: invalid entry point PID of container work et la boîte à outils n'est pas démarrée.

Sortie de toolbox --version (v0.0.90+)
toolbox version 0.0.97

Informations sur le package de la boîte à outils ( rpm -q toolbox )
toolbox-0.0.97-1-x86_64 (arch)

Sortie de podman version

Version:      2.1.1
API Version:  2.0.0
Go Version:   go1.15.2
Git Commit:   9f6d6ba0b314d86521b66183c9ce48eaa2da1de2
Built:        Sat Sep 26 16:50:37 2020
OS/Arch:      linux/amd64

Informations sur le forfait Podman ( rpm -q podman )
podman-2.1.1-1-x86_64 (arch)

Informations sur votre système d'exploitation
Archlinux

1. Bug

Commentaire le plus utile

J'ai exactement le même problème (sur Arch Linux également). La rétrogradation à 0.0.96 a fait l'affaire pour moi.

Voici les journaux Podman pour une boîte à outils Fedora 32 :

$ podman logs fedora-toolbox-32
level=debug msg="Running as real user ID 0"
level=debug msg="Resolved absolute path to the executable as /usr/bin/toolbox"
level=debug msg="TOOLBOX_PATH is /usr/bin/toolbox"
level=debug msg="XDG_RUNTIME_DIR is unset"
level=debug msg="XDG_RUNTIME_DIR set to /run/user/1000"
level=debug msg="Creating /run/.toolboxenv"
level=debug msg="Monitoring host"
level=debug msg="Path /run/host/etc exists"
level=debug msg="Resolved /etc/localtime to /usr/share/zoneinfo/Europe/Amsterdam"
Error: /etc/localtime points to unknown location

Tous les 10 commentaires

J'ai exactement le même problème (sur Arch Linux également). La rétrogradation à 0.0.96 a fait l'affaire pour moi.

Voici les journaux Podman pour une boîte à outils Fedora 32 :

$ podman logs fedora-toolbox-32
level=debug msg="Running as real user ID 0"
level=debug msg="Resolved absolute path to the executable as /usr/bin/toolbox"
level=debug msg="TOOLBOX_PATH is /usr/bin/toolbox"
level=debug msg="XDG_RUNTIME_DIR is unset"
level=debug msg="XDG_RUNTIME_DIR set to /run/user/1000"
level=debug msg="Creating /run/.toolboxenv"
level=debug msg="Monitoring host"
level=debug msg="Path /run/host/etc exists"
level=debug msg="Resolved /etc/localtime to /usr/share/zoneinfo/Europe/Amsterdam"
Error: /etc/localtime points to unknown location

je vois pareil

level=debug msg="Running as real user ID 0"
level=debug msg="Resolved absolute path to the executable as /usr/bin/toolbox"
level=debug msg="TOOLBOX_PATH is /usr/bin/toolbox"
level=debug msg="XDG_RUNTIME_DIR is unset"
level=debug msg="XDG_RUNTIME_DIR set to /run/user/1000"
level=debug msg="Creating /run/.toolboxenv"
level=debug msg="Monitoring host"
level=debug msg="Path /run/host/etc exists"
level=debug msg="Preparing to redirect /etc/localtime to /run/host/etc/localtime"
level=debug msg="/run/host/etc/localtime is a symbolic link"
level=debug msg="Redirecting /etc/localtime to /run/host/etc/localtime"
level=debug msg="Resolved /etc/localtime to /usr/share/zoneinfo/Europe/Copenhagen"
Error: /etc/localtime points to unknown location

Cela pourrait-il être causé par 4c9b80aee2b2ee3162b82e309718a23792d0e103 ?

Je rencontre le même problème sur Manjaro (basé sur arch). En passant par les commits, j'ai trouvé que b9a0bd5f0c2a2421ec15eea286ca20f03b7152d2 était le coupable. 4c9b80aee2b2ee3162b82e309718a23792d0e103 semble être le dernier qui fonctionne correctement.

Quelqu'un a-t-il essayé 0.0.98.1 sur Arch Linux ?

Par curiosité, vos systèmes hôtes Arch n'ont pas de /etc/localtime ?

Oui, les hôtes Arch ont /etc/localtime. C'est un lien symbolique vers /usr/share/zoneinfo/.
Le problème est que la boîte à outils a :

        const zoneInfoRoot = "/run/host/usr/share/zoneinfo"

        if !strings.HasPrefix(localTimeEvaled, zoneInfoRoot) {
                return errors.New("/etc/localtime points to unknown location")
        }

Si je change zoneInfoRoot en "/usr/share/zoneinfo" , la boîte à outils fonctionne bien.

Avant d'appeler updateTimeZoneFromLocalTime() , le lien /etc/localtime est mis à jour pour pointer vers le même chemin que celui vers lequel /run/host/etc/localtime pointe.
Je ne vois pas comment cela devrait faire pointer /etc/localtime dans /run/host, car les fichiers hôtes ne connaissent rien à la boîte à outils.

Donc, à moins que je manque quelque chose, peut-être même évident pour quelqu'un d'autre, zoneInfoRoot devrait simplement être modifié/réparé. S'il y a les deux cas d'utilisation pour /etc/localtime pour pointer vers /run/host/usr/share/zoneinfo/... et /usr/share/zoneinfo/... Je suppose que nous pouvons vérifier les deux possibilités, et résoudre timeZone fonction du préfixe correspondant.

Oui, les hôtes Arch ont /etc/localtime. C'est un lien symbolique vers
/usr/share/zoneinfo/.

Ok, donc ce n'est pas comme la situation sur Fedora CoreOS.

Cela devrait être résolu par https://github.com/containers/toolbox/pull/634

Cependant, je dois mentionner qu'Arch et Ubuntu devraient utiliser des liens symboliques relatifs. S'ils le faisaient, cela continuerait à fonctionner, car les liens symboliques relatifs sont capables de gérer des situations de type chroot, ce qui est mieux. par exemple, sur Fedora Workstation, nous avons :

$ ls -l /etc/localtime 
lrwxrwxrwx. 1 root root 35 Jan  5 18:20 /etc/localtime -> ../usr/share/zoneinfo/Europe/Prague

Alors que, sur Ubuntu 18.04, je vois :

$ ls -l /etc/localtime 
lrwxrwxrwx 1 root root 33 lis 11 16:21 /etc/localtime -> /usr/share/zoneinfo/Europe/Prague

Mais, si j'utilise timedatectl alors c'est corrigé :

$ timedatectl set-timezone Europe/Prague
$ ls -l /etc/localtime 
lrwxrwxrwx 1 root root 35 led 12 20:29 /etc/localtime -> ../usr/share/zoneinfo/Europe/Prague

Oui, changer le lien symbolique /etc/localtime en un absolu est une solution de contournement utilisable. Je vais l'utiliser pour le moment, merci.

Mais je pense que #634 devrait fusionner. Je ne vois pas grand-chose à ne pas prendre en charge de tels liens symboliques absolus.

Fermeture. N'hésitez pas à rouvrir ou à laisser un commentaire si vous pensez que ce n'est toujours pas résolu.

Et merci d'avoir testé Toolbox.

Cette page vous a été utile?
0 / 5 - 0 notes