Toolbox: Контейнеры не запускаются, когда / etc / localtime является абсолютной символической ссылкой на хосте (например, Arch и Ubuntu)

Созданный на 9 нояб. 2020  ·  10Комментарии  ·  Источник: containers/toolbox

Опишите ошибку
После обновления до версии 0.0.97 Toolbox я больше не могу запускать какие-либо панели инструментов.

Вывод 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

Вывод одинаков для контейнеров, созданных до и после обновления. Наборы инструментов могут быть запущены после перехода на версию 0.0.96, и их можно ввести в 0.0.97 после того, как они были запущены.

Шаги, как воспроизвести поведение

  1. Панель инструментов запуска

Ожидаемое поведение
Toolbox запущен

Фактическое поведение
Выдается ошибка Error: invalid entry point PID of container work и набор инструментов не запускается.

Вывод toolbox --version (v0.0.90 +)
toolbox version 0.0.97

Информация о пакете Toolbox ( rpm -q toolbox )
toolbox-0.0.97-1-x86_64 (arch)

Вывод 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

Информация о пакете Podman ( rpm -q podman )
podman-2.1.1-1-x86_64 (arch)

Информация о вашей ОС
Archlinux

Самый полезный комментарий

У меня такая же проблема (и в Arch Linux). Понижение до 0.0.96 помогло мне.

Это журналы Podman для набора инструментов 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

Все 10 Комментарий

У меня такая же проблема (и в Arch Linux). Понижение до 0.0.96 помогло мне.

Это журналы Podman для набора инструментов 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

Я вижу то же самое

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

Может ли это быть вызвано 4c9b80aee2b2ee3162b82e309718a23792d0e103?

Я сталкиваюсь с той же проблемой на Manjaro (на основе арки). Просматривая коммиты, я обнаружил, что виновником является b9a0bd5f0c2a2421ec15eea286ca20f03b7152d2. 4c9b80aee2b2ee3162b82e309718a23792d0e103 кажется последним, который работает правильно.

Кто-нибудь пробовал 0.0.98.1 на Arch Linux?

Из любопытства, в ваших хост-системах Arch нет /etc/localtime ?

Да, на хостах Arch есть / etc / localtime. Это символическая ссылка на / usr / share / zoneinfo /.
Проблема в том, что в наборе инструментов есть:

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

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

Если я изменю zoneInfoRoot на "/usr/share/zoneinfo" , панель инструментов будет работать нормально.

Перед вызовом updateTimeZoneFromLocalTime() ссылка / etc / localtime обновляется и указывает на тот же путь, на который указывает / run / host / etc / localtime.
Я не понимаю, как это должно сделать / etc / localtime точкой в ​​/ run / host, поскольку файлы хоста ничего не знают о панели инструментов.

Поэтому, если я не пропущу что-то, может быть, даже очевидное для кого-то еще, zoneInfoRoot следует просто изменить / исправить. Если есть оба варианта использования для / etc / localtime, указывающие на / run / host / usr / share / zoneinfo / ... и / usr / share / zoneinfo / ... я думаю, мы можем проверить обе возможности, и разрешить timeZone на основе совпадающего префикса.

Да, на хостах Arch есть / etc / localtime. Это символическая ссылка на
/ usr / share / zoneinfo /.

Хорошо, это не похоже на ситуацию с Fedora CoreOS.

Эту проблему следует решить с помощью https://github.com/containers/toolbox/pull/634.

Однако я должен упомянуть, что и Arch, и Ubuntu должны использовать относительные символические ссылки. Если бы они это сделали, это продолжало бы просто работать, потому что относительные символические ссылки могут обрабатывать ситуации, подобные chroot, а это лучше. например, на рабочей станции Fedora у нас есть:

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

В то время как в Ubuntu 18.04 я вижу:

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

Но если я использую timedatectl это исправляется :

$ 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

Да, изменение символической ссылки / etc / localtime на абсолютную - это полезный обходной путь. Сейчас я воспользуюсь этим, спасибо.

Но я думаю, что # 634 стоит слить. Я не вижу особого смысла не поддерживать такие абсолютные символические ссылки.

Закрытие. Попробуйте открыть страницу повторно или оставьте комментарий, если считаете, что проблема все еще не устранена.

И спасибо за тестирование Toolbox.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги