Toolbox: Wadah tidak dimulai ketika /etc/localtime adalah tautan simbolis absolut pada Host (mis., Arch dan Ubuntu)

Dibuat pada 9 Nov 2020  ·  10Komentar  ·  Sumber: containers/toolbox

Jelaskan bugnya
Setelah memutakhirkan ke versi kotak alat 0.0.97 saya tidak dapat memulai lagi kotak alat apa pun.

Keluaran dari 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

Outputnya sama untuk container yang dibuat sebelum dan setelah diperbarui. Kotak alat dapat dimulai setelah diturunkan ke 0.0.96 dan dapat dimasukkan ke dalam 0.0.97 setelah dimulai.

Langkah-langkah bagaimana mereproduksi perilaku

  1. Mulai kotak alat

Perilaku yang diharapkan
Kotak alat dimulai

Perilaku sebenarnya
Kesalahan dilemparkan Error: invalid entry point PID of container work dan kotak alat tidak dimulai.

Keluaran toolbox --version (v0.0.90+)
toolbox version 0.0.97

Info paket kotak alat ( rpm -q toolbox )
toolbox-0.0.97-1-x86_64 (arch)

Keluaran 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

Info paket Podman ( rpm -q podman )
podman-2.1.1-1-x86_64 (arch)

Info tentang OS Anda
Archlinux

1. Bug

Komentar yang paling membantu

Saya mendapatkan masalah yang sama persis (di Arch Linux juga). Menurunkan ke 0.0.96 berhasil untuk saya.

Ini adalah log Podman untuk kotak alat 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

Semua 10 komentar

Saya mendapatkan masalah yang sama persis (di Arch Linux juga). Menurunkan ke 0.0.96 berhasil untuk saya.

Ini adalah log Podman untuk kotak alat 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

Saya melihat hal yang sama

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

Mungkinkah ini disebabkan oleh 4c9b80aee2b2ee3162b82e309718a23792d0e103 ?

Saya mengalami masalah yang sama di Manjaro (berbasis lengkung). Melalui komit, saya menemukan b9a0bd5f0c2a2421ec15eea286ca20f03b7152d2 sebagai pelakunya. 4c9b80aee2b2ee3162b82e309718a23792d0e103 tampaknya menjadi yang terakhir yang berfungsi dengan benar.

Apakah ada yang mencoba 0.0.98.1 di Arch Linux?

Karena penasaran, sistem host Arch Anda tidak memiliki /etc/localtime ?

Ya, host Arch memang memiliki /etc/localtime. Ini adalah symlink ke /usr/share/zoneinfo/.
Masalahnya adalah bahwa kotak alat memiliki:

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

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

Jika saya mengubah zoneInfoRoot menjadi "/usr/share/zoneinfo" , kotak alat berfungsi dengan baik.

Sebelum memanggil updateTimeZoneFromLocalTime() , tautan /etc/localtime diperbarui untuk menunjuk ke jalur yang sama dengan yang ditunjuk /run/Host/etc/localtime.
Saya gagal melihat bagaimana seharusnya membuat /etc/localtime menunjuk ke /run/Host, karena file Host tidak tahu apa-apa tentang kotak alat.

Jadi kecuali saya melewatkan sesuatu, bahkan mungkin jelas bagi orang lain, zoneInfoRoot seharusnya diubah/diperbaiki. Jika ada kedua kasus penggunaan untuk /etc/localtime untuk menunjuk ke /run/Host/usr/share/zoneinfo/... dan /usr/share/zoneinfo/... Saya kira kita dapat memeriksa kedua kemungkinan, dan menyelesaikan timeZone berdasarkan awalan yang cocok.

Ya, host Arch memang memiliki /etc/localtime. Ini adalah symlink ke
/usr/share/zoneinfo/.

Ok, jadi tidak seperti situasi di Fedora CoreOS.

Ini harus ditangani oleh https://github.com/containers/toolbox/pull/634

Namun, saya harus menyebutkan bahwa Arch dan Ubuntu harus menggunakan tautan simbolik relatif. Jika ya, ini akan terus berfungsi, karena symlink relatif mampu menangani situasi seperti chroot, yang mana ini lebih baik. misalnya, di Fedora Workstation kami memiliki:

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

Padahal, di Ubuntu 18.04, saya melihat:

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

Tapi, jika saya menggunakan timedatectl maka itu diperbaiki :

$ 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

Ya, mengubah symlink /etc/localtime menjadi absolut adalah solusi yang dapat digunakan. Saya akan menggunakan ini untuk saat ini, terima kasih.

Tapi saya pikir #634 harus digabungkan. Saya tidak melihat banyak gunanya tidak mendukung symlink absolut seperti itu.

Penutupan. Silakan buka kembali atau tinggalkan komentar jika menurut Anda ini masih belum diperbaiki.

Dan terima kasih telah menguji Toolbox.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat