๋ฒ๊ทธ ์ค๋ช
์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์ํํ์ฌ ๋๊ตฌ ์์๋ก ๋ค๋ฅธ 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
ํ๋์ ์ฌํํ๋ ๋ฐฉ๋ฒ ๋จ๊ณ
$ toolbox create --release 32
$ toolbox enter --release 32
์์๋๋ ํ๋
ํด๋น ๋๊ตฌ ์์๋ ์ ์์ ์ผ๋ก ์ปจํ
์ด๋์ ๋ค์ด๊ฐ๋๋ค.
์ค์ ํ๋
์ปจํ
์ด๋์์ 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
์ปจํ ์ด๋ 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 ์ ๋ํ ์๊ฒฌ์ด๋ ์์ง ๊ณ ์ฅ๋ฌ๋ค๊ณ ์๊ฐ๋๋ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์์ ๋กญ๊ฒ ์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ํ ์คํธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋งค์ฐ ๊ฐ์ฌ!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ์.
PR ์ ๋ํ ์๊ฒฌ์ด๋ ์์ง ๊ณ ์ฅ๋ฌ๋ค๊ณ ์๊ฐ๋๋ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์์ ๋กญ๊ฒ ์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ํ ์คํธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋งค์ฐ ๊ฐ์ฌ!