Toolbox: glibc-2.32์— ๋งํฌ๋œ /usr/bin/toolbox๋Š” ์ด์ „ glibc์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 08์›” 14์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: containers/toolbox

๋ฒ„๊ทธ ์„ค๋ช…

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋„๊ตฌ ์ƒ์ž๋กœ ๋‹ค๋ฅธ Fedora ๋ฆด๋ฆฌ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# On Fedora 32
$ toolbox create --release 31
Created container: fedora-toolbox-31
Enter with: toolbox enter --release 31
$ toolbox enter --release 31

๊ทธ๋Ÿฌ๋‚˜ Fedora Rawhide ์—์„œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

# On Fedora 33
$ toolbox create --release 32
Created container: fedora-toolbox-32
Enter with: toolbox enter --release 32
$ toolbox enter --release 32
Error: invalid entry point PID of container fedora-toolbox-32

์ „์ฒด ๋””๋ฒ„๊ทธ ์ถœ๋ ฅ:

$ toolbox -v enter -r 32
DEBU Running as real user ID 1000                 
DEBU Resolved absolute path to the executable as /usr/local/bin/toolbox 
DEBU Running on a cgroups v2 host                 
DEBU Checking if /etc/subgid and /etc/subuid have entries for user vagrant 
DEBU TOOLBOX_PATH is /usr/local/bin/toolbox       
DEBU Toolbox config directory is /home/vagrant/.config/toolbox 
DEBU Current Podman version is 2.1.0-dev          
DEBU Old Podman version is 2.1.0-dev              
DEBU Migration not needed: Podman version 2.1.0-dev is unchanged 
DEBU Resolving container and image names          
DEBU Container: ''                                
DEBU Image: ''                                    
DEBU Release: '32'                                
DEBU Resolved container and image names           
DEBU Container: 'fedora-toolbox-32'               
DEBU Image: 'fedora-toolbox:32'                   
DEBU Release: '32'                                
DEBU Checking if container fedora-toolbox-32 exists 
DEBU Calling org.freedesktop.Flatpak.SessionHelper.RequestSession 
DEBU Starting container fedora-toolbox-32         
DEBU Inspecting entry point of container fedora-toolbox-32 
DEBU Entry point PID is a float64                 
DEBU Entry point of container fedora-toolbox-32 is toolbox (PID=0) 
Error: invalid entry point PID of container fedora-toolbox-32

ํ–‰๋™์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋‹จ๊ณ„

  1. Fedora Rawhide/33 ์‹œ์Šคํ…œ์— ๋“ค์–ด๊ฐ€์‹ญ์‹œ์˜ค.
  2. ์†Œ์Šค์—์„œ ํ˜„์žฌ Toolbox ๋ฒ„์ „์„ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ ๋ฆด๋ฆฌ์Šค(32)์—์„œ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
$ toolbox create --release 32
  1. ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์—ฌ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.
$ toolbox enter --release 32
  1. ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
ํ•ด๋‹น ๋„๊ตฌ ์ƒ์ž๋Š” ์ •์ƒ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™
์ปจํ…Œ์ด๋„ˆ์—์„œ enter ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

toolbox --version ์ถœ๋ ฅ (v0.0.90+)
toolbox version 0.0.93

๋„๊ตฌ ์ƒ์ž ํŒจํ‚ค์ง€ ์ •๋ณด( rpm -q toolbox )
๋„๊ตฌ ์ƒ์ž ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์€ ์†Œ์Šค์—์„œ ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

podman version ์ถœ๋ ฅ

Version:      2.1.0-dev
API Version:  1
Go Version:   go1.15rc2
Built:        Thu Jan  1 00:00:00 1970
OS/Arch:      linux/amd64

Podman ํŒจํ‚ค์ง€ ์ •๋ณด( rpm -q podman )
ํฌ๋“œ๋งจ-2.1.0-0.169.dev.git162625f.fc33.x86_64`

OS์— ๋Œ€ํ•œ ์ •๋ณด
Vagrant ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. OS๋Š” ํŽ˜๋„๋ผ 33 ์ž…๋‹ˆ๋‹ค.
์˜ค๋Š˜(8์›” 14์ผ)๋ถ€ํ„ฐ ์ƒˆ๋กœ ์„ค์น˜ํ•˜๊ณ  ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ
๋‚˜๋Š” ๋ฆด๋ฆฌ์Šค 31 ๋ฐ 32๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค 33 (ํ˜ธ์ŠคํŠธ์™€ ๋™์ผ)์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„, ๋ฒ„๊ทธ๋ฅผ ์ œ์™ธํ•˜๊ณ : #523
๋˜ํ•œ Fedora 32๋ฅผ ์‚ฌ์šฉ ํ•˜์—ฌ ๋‹ค๋ฅธ VM์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์—ฐ๊ฒฐํ–ˆ๋Š”๋ฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค 29, 31, 32 ๋ฐ 33์œผ๋กœ F32 VM์—์„œ ๋ฌธ์ œ ์—†์ด ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋ฅ˜์˜ ์ง„์ž…์  PID ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. Rawhide ์‹œ์Šคํ…œ์—์„œ PID๋Š” ํ•ญ์ƒ 0 ์ด์—ˆ์ง€๋งŒ ๋‚ด ์‹œ์Šคํ…œ(Silverblue 32)๊ณผ VM(Fedora 32)์—์„œ๋Š” ํ•ญ์ƒ 0์ด ์•„๋‹Œ ๊ฐ’์ด์—ˆ์Šต๋‹ˆ๋‹ค. PID=32612 ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด(Fedora 32 VM ๋‚ด๋ถ€):

$ toolbox -v enter -r 29
DEBU Running as real user ID 1000                 
DEBU Resolved absolute path to the executable as /usr/local/bin/toolbox 
DEBU Running on a cgroups v2 host                 
DEBU Checking if /etc/subgid and /etc/subuid have entries for user vagrant 
DEBU TOOLBOX_PATH is /usr/local/bin/toolbox       
DEBU Toolbox config directory is /home/vagrant/.config/toolbox 
DEBU Current Podman version is 2.0.2              
DEBU Old Podman version is 2.0.2                  
...
DEBU Starting container fedora-toolbox-29         
DEBU Inspecting entry point of container fedora-toolbox-29 
DEBU Entry point PID is a float64                 
DEBU Entry point of container fedora-toolbox-29 is toolbox (PID=33068) 
DEBU Waiting for container fedora-toolbox-29 to finish initializing 
...
DEBU --                                           
DEBU -c                                           
DEBU exec "$@"                                    
DEBU /bin/sh                                      
DEBU /bin/bash                                    
DEBU -l

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ์‡„.

PR ์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด๋‚˜ ์•„์ง ๊ณ ์žฅ๋‚ฌ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ์ž์œ ๋กญ๊ฒŒ ์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ํ…Œ์ŠคํŠธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ์‚ฌ!

๋ชจ๋“  7 ๋Œ“๊ธ€

์ปจํ…Œ์ด๋„ˆ fedora-toolbox-32์˜ DEBU ์ง„์ž…์ ์€ ๋„๊ตฌ ์ƒ์ž(PID=0)์ž…๋‹ˆ๋‹ค.
์˜ค๋ฅ˜: ์ปจํ…Œ์ด๋„ˆ fedora-toolbox-32์˜ ์ž˜๋ชป๋œ ์ง„์ž…์  PID

์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘์— ์‹คํŒจํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

enter ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์‹คํŒจํ–ˆ๋‹ค๋ฉด ์ด ๋ช…๋ น์„ ์‹œ๋„ํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ podman start --attach fedora-toolbox-32

๋‚˜๋Š”ํ–ˆ๊ณ  ์ด๊ฒƒ์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค :

[vagrant@ci-node-33 ~]$ podman start --attach fedora-toolbox-32
toolbox: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by toolbox)

๋‹ค์Œ์€ debug ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

[vagrant@ci-node-33 ~]$ podman --log-level debug start --attach fedora-toolbox-32
INFO[0000] podman filtering at log level debug          
DEBU[0000] Called start.PersistentPreRunE(podman --log-level debug start --attach fedora-toolbox-32) 
DEBU[0000] Ignoring libpod.conf EventsLogger setting "/home/vagrant/.config/containers/containers.conf". Use "journald" if you want to change this setting and remove libpod.conf files. 
DEBU[0000] Reading configuration file "/usr/share/containers/containers.conf" 
DEBU[0000] Merged system config "/usr/share/containers/containers.conf": &{Containers:{Devices:[] Volumes:[] ApparmorProfile:containers-default-0.18.0 Annotations:[] CgroupNS:private Cgroups:enabled DefaultCapabilities:[CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_FOWNER CAP_FSETID CAP_KILL CAP_MKNOD CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_CHROOT] DefaultSysctls:[] DefaultUlimits:[] DefaultMountsFile: DNSServers:[] DNSOptions:[] DNSSearches:[] EnableLabeling:true Env:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] EnvHost:false HTTPProxy:false Init:false InitPath: IPCNS:private LogDriver:k8s-file LogSizeMax:-1 NetNS:slirp4netns NoHosts:false PidsLimit:2048 PidNS:private SeccompProfile:/usr/share/containers/seccomp.json ShmSize:65536k TZ: Umask:0022 UTSNS:private UserNS:host UserNSSize:65536} Engine:{CgroupCheck:true CgroupManager:systemd ConmonEnvVars:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] ConmonPath:[/usr/libexec/podman/conmon /usr/local/libexec/podman/conmon /usr/local/lib/podman/conmon /usr/bin/conmon /usr/sbin/conmon /usr/local/bin/conmon /usr/local/sbin/conmon /run/current-system/sw/bin/conmon] DetachKeys:ctrl-p,ctrl-q EnablePortReservation:true Env:[] EventsLogFilePath:/run/user/1000/libpod/tmp/events/events.log EventsLogger:file HooksDir:[/usr/share/containers/oci/hooks.d] ImageDefaultTransport:docker:// InfraCommand:/pause InfraImage:k8s.gcr.io/pause:3.2 InitPath:/usr/libexec/podman/catatonit LockType:shm Namespace: NetworkCmdPath: NoPivotRoot:false NumLocks:2048 OCIRuntime:/usr/bin/crun OCIRuntimes:map[crun:[/usr/bin/crun /usr/sbin/crun /usr/local/bin/crun /usr/local/sbin/crun /sbin/crun /bin/crun /run/current-system/sw/bin/crun] kata:[/usr/bin/kata-runtime /usr/sbin/kata-runtime /usr/local/bin/kata-runtime /usr/local/sbin/kata-runtime /sbin/kata-runtime /bin/kata-runtime /usr/bin/kata-qemu /usr/bin/kata-fc] runc:[/usr/bin/runc /usr/sbin/runc /usr/local/bin/runc /usr/local/sbin/runc /sbin/runc /bin/runc /usr/lib/cri-o-runc/sbin/runc /run/current-system/sw/bin/runc]] PullPolicy:missing Remote:false RemoteURI: RemoteIdentity: ActiveService: ServiceDestinations:map[] RuntimePath:[] RuntimeSupportsJSON:[crun runc] RuntimeSupportsNoCgroups:[crun] RuntimeSupportsKVM:[kata kata-runtime kata-qemu kata-fc] SetOptions:{StorageConfigRunRootSet:false StorageConfigGraphRootSet:false StorageConfigGraphDriverNameSet:false StaticDirSet:false VolumePathSet:false TmpDirSet:false} SignaturePolicyPath:/etc/containers/policy.json SDNotify:false StateType:3 StaticDir:/home/vagrant/.local/share/containers/storage/libpod StopTimeout:10 TmpDir:/run/user/1000/libpod/tmp VolumePath:/home/vagrant/.local/share/containers/storage/volumes} Network:{CNIPluginDirs:[/usr/libexec/cni /usr/lib/cni /usr/local/lib/cni /opt/cni/bin] DefaultNetwork:podman NetworkConfigDir:/home/vagrant/.config/cni/net.d}} 
DEBU[0000] Using conmon: "/usr/bin/conmon"              
DEBU[0000] Initializing boltdb state at /home/vagrant/.local/share/containers/storage/libpod/bolt_state.db 
DEBU[0000] Using graph driver overlay                   
DEBU[0000] Using graph root /home/vagrant/.local/share/containers/storage 
DEBU[0000] Using run root /run/user/1000/containers     
DEBU[0000] Using static dir /home/vagrant/.local/share/containers/storage/libpod 
DEBU[0000] Using tmp dir /run/user/1000/libpod/tmp      
DEBU[0000] Using volume path /home/vagrant/.local/share/containers/storage/volumes 
DEBU[0000] Set libpod namespace to ""                   
DEBU[0000] [graphdriver] trying provided driver "overlay" 
DEBU[0000] overlay: mount_program=/usr/bin/fuse-overlayfs 
DEBU[0000] backingFs=xfs, projectQuotaSupported=false, useNativeDiff=false, usingMetacopy=false 
DEBU[0000] Initializing event backend file              
DEBU[0000] using runtime "/usr/bin/runc"                
DEBU[0000] using runtime "/usr/bin/crun"                
WARN[0000] Error initializing configured OCI runtime kata: no valid executable found for OCI runtime kata: invalid argument 
DEBU[0000] using runtime "/usr/bin/crun"                
INFO[0000] Setting parallel job count to 7              
DEBU[0000] overlay: mount_data=lowerdir=/home/vagrant/.local/share/containers/storage/overlay/l/55ZKQ2LAMO7JLCJ4FVOE6E6TBG:/home/vagrant/.local/share/containers/storage/overlay/l/2SIOJSIO6LJDSZJHEL6FUA34V2,upperdir=/home/vagrant/.local/share/containers/storage/overlay/3109f3facec37f0bec076d921731107d23a36c918a3eb24bb03685f10179801f/diff,workdir=/home/vagrant/.local/share/containers/storage/overlay/3109f3facec37f0bec076d921731107d23a36c918a3eb24bb03685f10179801f/work,context="system_u:object_r:container_file_t:s0:c14,c464" 
DEBU[0000] mounted container "e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e" at "/home/vagrant/.local/share/containers/storage/overlay/3109f3facec37f0bec076d921731107d23a36c918a3eb24bb03685f10179801f/merged" 
DEBU[0000] Created root filesystem for container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e at /home/vagrant/.local/share/containers/storage/overlay/3109f3facec37f0bec076d921731107d23a36c918a3eb24bb03685f10179801f/merged 
DEBU[0000] /etc/system-fips does not exist on host, not mounting FIPS mode secret 
DEBU[0000] Setting CGroups for container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e to user.slice:libpod:e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e 
DEBU[0000] set root propagation to "rslave"             
DEBU[0000] reading hooks from /usr/share/containers/oci/hooks.d 
DEBU[0000] Created OCI spec for container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e at /home/vagrant/.local/share/containers/storage/overlay-containers/e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e/userdata/config.json 
DEBU[0000] /usr/bin/conmon messages will be logged to syslog 
DEBU[0000] running conmon: /usr/bin/conmon               args="[--api-version 1 -c e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e -u e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e -r /usr/bin/crun -b /home/vagrant/.local/share/containers/storage/overlay-containers/e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e/userdata -p /run/user/1000/containers/overlay-containers/e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e/userdata/pidfile -n fedora-toolbox-32 --exit-dir /run/user/1000/libpod/tmp/exits --socket-dir-path /run/user/1000/libpod/tmp/socket -s -l k8s-file:/home/vagrant/.local/share/containers/storage/overlay-containers/e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e/userdata/ctr.log --log-level debug --syslog --conmon-pidfile /run/user/1000/containers/overlay-containers/e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e/userdata/conmon.pid --exit-command /usr/bin/podman --exit-command-arg --root --exit-command-arg /home/vagrant/.local/share/containers/storage --exit-command-arg --runroot --exit-command-arg /run/user/1000/containers --exit-command-arg --log-level --exit-command-arg error --exit-command-arg --cgroup-manager --exit-command-arg systemd --exit-command-arg --tmpdir --exit-command-arg /run/user/1000/libpod/tmp --exit-command-arg --runtime --exit-command-arg /usr/bin/crun --exit-command-arg --storage-driver --exit-command-arg overlay --exit-command-arg --storage-opt --exit-command-arg overlay.mount_program=/usr/bin/fuse-overlayfs --exit-command-arg --events-backend --exit-command-arg file --exit-command-arg container --exit-command-arg cleanup --exit-command-arg e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e]"
INFO[0000] Running conmon under slice user.slice and unitName libpod-conmon-e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e.scope 
[conmon:d]: failed to write to /proc/self/oom_score_adj: Permission denied

DEBU[0000] Received: 1684                               
INFO[0000] Got Conmon PID as 1681                       
DEBU[0000] Created container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e in OCI runtime 
DEBU[0000] Attaching to container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e 
DEBU[0000] connecting to socket /run/user/1000/libpod/tmp/socket/e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e/attach 
DEBU[0000] Starting container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e with command [toolbox --verbose init-container --home /home/vagrant --monitor-host --shell /bin/bash --uid 1000 --user vagrant] 
DEBU[0000] Started container e54f97de47f50f5ffc98d514629170dce4decd308861aee4e6bccc017abfd24e 
DEBU[0000] Enabling signal proxying                     
toolbox: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by toolbox)
DEBU[0000] Called start.PersistentPostRunE(podman --log-level debug start --attach fedora-toolbox-32) 

๋„ค, ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Toolbox ์ฝ”๋“œ์—์„œ ๊ฐ€์ ธ์˜จ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” cgo๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” C ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. cgo ๊ฐ€ ๋นŒ๋“œ ์ค‘์— ์‚ฌ์šฉ๋˜๊ณ  ์‹œ์Šคํ…œ์—์„œ libc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” libc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋™์ ์œผ๋กœ ๋งํฌ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ดœ์ฐฎ์ง€๋งŒ Toolbox๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ง„์ž…์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฒ„์ „์˜ libc(resp. glibc)๊ฐ€ ์ด๋ฅผ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ • ์ œ์•ˆ(#531)์ด ์žˆ์ง€๋งŒ @debarshiray์™€ ๋” ๋…ผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, @HarryMichal์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

[vagrant@ci-node-33 ~]$ podman start --attach fedora-toolbox-32
toolbox: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by toolbox)

์ด๋Š” ํ˜ธ์ŠคํŠธ์˜ Fedora 33์˜ glibc-2.32 ์— ๋Œ€ํ•ด ๋งํฌ๋œ /usr/bin/toolbox ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ์ด์ „ Fedora ๋ฆด๋ฆฌ์Šค์˜ ์ด์ „ glibc ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ์˜ ์ง„์ž…์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜ธ์ŠคํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งˆ์šดํŠธ /usr/bin/toolbox ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Toolbox๊ฐ€ POSIX ์…ธ์—์„œ ๊ตฌํ˜„๋˜์—ˆ์„ ๋•Œ ๊ณผ๊ฑฐ์— ์ž˜ ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ํ™˜๊ฒฝ์˜ /bin/sh . ๊ทธ๋Ÿฌ๋‚˜ ELF ๋ฐ”์ด๋„ˆ๋ฆฌ์ผ ๋•Œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” Fedora 33 ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์žก๊ณ  ์••์ถ•์„ ํ’€๊ณ  ์กฐ๊ธˆ ์ฐ”๋ €๋‹ค.

$ rpm2cpio ./toolbox-0.0.93-2.fc33.x86_64.rpm | cpio -idmv
...
...
$ objdump -T ./usr/bin/toolbox | grep GLIBC_2.32
0000000000000000      DO *UND*  0000000000000000  GLIBC_2.32  pthread_sigmask

glibc-2.32 ์— pthread_sigmask ์˜ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

glibc-2.32 ์—์„œ pthread_sigmask ๊ธฐํ˜ธ์˜ ์ƒˆ ๋ฒ„์ „์„ ํ”ผํ•˜๋„๋ก Go ๋„๊ตฌ ๋ชจ์Œ์— ์ง€์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ: https://github.com/containers/toolbox/pull/534

ํ…Œ์ŠคํŠธ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

ํ์‡„.

PR ์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด๋‚˜ ์•„์ง ๊ณ ์žฅ๋‚ฌ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ์ž์œ ๋กญ๊ฒŒ ์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ํ…Œ์ŠคํŠธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ์‚ฌ!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰