'프로그램 사용/yocto project'에 해당되는 글 9건

  1. 2023.09.07 yocto build on i5-3570
  2. 2023.08.29 bitbake --help
  3. 2023.08.28 Do not use Bitbake as root.
  4. 2023.08.28 imx8 yocto
  5. 2023.02.10 imx8 yocto build on ubuntu 22.04
  6. 2015.07.30 라즈베리 파이 with yocto project 2
  7. 2015.07.29 yocto project 구조
  8. 2015.06.08 라즈베리 파이 2 yocto 프로젝트?
  9. 2015.04.29 rpi in yocto project

전체는 아니고 weston 쪽을 기준으로 빌드하는데

소요시간이 1시간

real 62m37.028s
user 0m6.099s
sys 0m0.797s

 

나중에 노트북에서 다시 빌드해 봐야하나?

어째 i7-10510U+ nvme 보다

i5-3570 + sata ssd 가 더 빠른것 같은건 왜지..

 

데스크탑과 노트북이라 차이가 있긴 해도 

벤치상으로는 노트북쪽이 신형이라 빠를텐데..?

'프로그램 사용 > yocto project' 카테고리의 다른 글

bitbake --help  (0) 2023.08.29
Do not use Bitbake as root.  (0) 2023.08.28
imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
Posted by 구차니

명령어 조사중

bitbake -c compile -f recipe 식으로 많이 써왔는데

상세 명령이나 recipre 목록등을 얻는 방법을 찾는 중

 

Usage: bitbake [options] [recipename/target recipe:do_task ...]

    Executes the specified task (default is 'build') for a given set of target recipes (.bb files).
    It is assumed there is a conf/bblayers.conf available in cwd or in BBPATH which
    will provide the layer, BBFILES and other configuration information.

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -b BUILDFILE, --buildfile=BUILDFILE
                        Execute tasks from a specific .bb recipe directly.
                        WARNING: Does not handle any dependencies from other
                        recipes.
  -k, --continue        Continue as much as possible after an error. While the
                        target that failed and anything depending on it cannot
                        be built, as much as possible will be built before
                        stopping.
  -f, --force           Force the specified targets/task to run (invalidating any existing stamp file).
  -c CMD, --cmd=CMD     Specify the task to execute. The exact options
                        available depend on the metadata. Some examples might
                        be 'compile' or 'populate_sysroot' or 'listtasks' may
                        give a list of the tasks available.
  -C INVALIDATE_STAMP, --clear-stamp=INVALIDATE_STAMP
                        Invalidate the stamp for the specified task such as
                        'compile' and then run the default task for the
                        specified target(s).
  -r PREFILE, --read=PREFILE
                        Read the specified file before bitbake.conf.
  -R POSTFILE, --postread=POSTFILE
                        Read the specified file after bitbake.conf.
  -v, --verbose         Enable tracing of shell tasks (with 'set -x'). Also
                        print bb.note(...) messages to stdout (in addition to
                        writing them to ${T}/log.do_<task>).
  -D, --debug           Increase the debug level. You can specify this more
                        than once. -D sets the debug level to 1, where only
                        bb.debug(1, ...) messages are printed to stdout; -DD
                        sets the debug level to 2, where both bb.debug(1, ...)
                        and bb.debug(2, ...) messages are printed; etc.
                        Without -D, no debug messages are printed. Note that
                        -D only affects output to stdout. All debug messages
                        are written to ${T}/log.do_taskname, regardless of the
                        debug level.
  -q, --quiet           Output less log message data to the terminal. You can
                        specify this more than once.
  -n, --dry-run         Don't execute, just go through the motions.
  -S SIGNATURE_HANDLER, --dump-signatures=SIGNATURE_HANDLER
                        Dump out the signature construction information, with
                        no task execution. The SIGNATURE_HANDLER parameter is
                        passed to the handler. Two common values are none and
                        printdiff but the handler may define more/less. none
                        means only dump the signature, printdiff means compare
                        the dumped signature with the cached one.
  -p, --parse-only      Quit after parsing the BB recipes.
  -s, --show-versions   Show current and preferred versions of all recipes.
  -e, --environment     Show the global or per-recipe environment complete
                        with information about where variables were
                        set/changed.
  -g, --graphviz        Save dependency tree information for the specified
                        targets in the dot syntax.
  -I EXTRA_ASSUME_PROVIDED, --ignore-deps=EXTRA_ASSUME_PROVIDED
                        Assume these dependencies don't exist and are already
                        provided (equivalent to ASSUME_PROVIDED). Useful to
                        make dependency graphs more appealing
  -l DEBUG_DOMAINS, --log-domains=DEBUG_DOMAINS
                        Show debug logging for the specified logging domains
  -P, --profile         Profile the command and save reports.
  -u UI, --ui=UI        The user interface to use (knotty, ncurses or teamcity
                        - default knotty).
  --token=XMLRPCTOKEN   Specify the connection token to be used when
                        connecting to a remote server.
  --revisions-changed   Set the exit code depending on whether upstream
                        floating revisions have changed or not.
  --server-only         Run bitbake without a UI, only starting a server
                        (cooker) process.
  -B BIND, --bind=BIND  The name/address for the bitbake xmlrpc server to bind
                        to.
  -T SERVER_TIMEOUT, --idle-timeout=SERVER_TIMEOUT
                        Set timeout to unload bitbake server due to
                        inactivity, set to -1 means no unload, default:
                        Environment variable BB_SERVER_TIMEOUT.
  --no-setscene         Do not run any setscene tasks. sstate will be ignored
                        and everything needed, built.
  --skip-setscene       Skip setscene tasks if they would be executed. Tasks
                        previously restored from sstate will be kept, unlike
                        --no-setscene
  --setscene-only       Only run setscene tasks, don't run any real tasks.
  --remote-server=REMOTE_SERVER
                        Connect to the specified server.
  -m, --kill-server     Terminate any running bitbake server.
  --observe-only        Connect to a server as an observing-only client.
  --status-only         Check the status of the remote bitbake server.
  -w WRITEEVENTLOG, --write-log=WRITEEVENTLOG
                        Writes the event log of the build to a bitbake event
                        json file. Use '' (empty string) to assign the name
                        automatically.
  --runall=RUNALL       Run the specified task for any recipe in the taskgraph
                        of the specified target (even if it wouldn't otherwise
                        have run).
  --runonly=RUNONLY     Run only the specified task within the taskgraph of
                        the specified targets (and any task dependencies those
                        tasks may have).

 

$ bitbake -c listtasks
Nothing to do.  Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.

 

$ bitbake-layers show-recipes

[링크 : https://stackoverflow.com/questions/32850160/bitbake-how-to-list-all-recipe-and-append-files-used-in-an-image]

 

For an updated list for a specific recipe, run:

bitbake -c listtasks <recipe>

fetchall Fetch all source
build
devshell
package_write_ipk
cleansstate Clean the build/sstate-cache directory
configure
clean clean $WORKDIR
cleanall clean $WORKDIR and sstate-cache
populate_lic
package_write
populate_sysroot
buildall
populate_lic_setscene
patch
listtasks list all tasks that can be run for a target
compile
package_setscene
fetch
checkuri
package_write_ipk_setscene
package
unpack
install
populate_sysroot_setscene
checkuriall

[링크 : https://www.openembedded.org/wiki/List_of_Executable_tasks]

'프로그램 사용 > yocto project' 카테고리의 다른 글

yocto build on i5-3570  (0) 2023.09.07
Do not use Bitbake as root.  (0) 2023.08.28
imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
Posted by 구차니

bitbake로 yocto를 빌드 하려고 하는데 에러가 나서 찾아보니

메시지 자체는 root로 bitbake 하지 말란건데, 설정상으로는 sanity를 inherit 하지 않도록 하면 되는 듯.

 

분별을(제정신을) 상속 안받으면 제정신이 아니게 되는건가...(!)

sanity 미국∙영국 [ˈsænəti]  영국식 1. [명사] 온전한 정신 (상태)
2. [명사] 분별 (→sane), (↔insanity)

 

# Sanity checks for common user misconfigurations
#
# See sanity.bbclass
#
# Expert users can confirm their sanity with "touch conf/sanity.conf"
BB_MIN_VERSION = "1.49.2"

SANITY_ABIFILE = "${TMPDIR}/abi_version"

SANITY_VERSION ?= "1"
LOCALCONF_VERSION  ?= "1"
LAYER_CONF_VERSION ?= "7"
SITE_CONF_VERSION  ?= "1"

#INHERIT += "sanity"

[링크 : http://./sources/poky/meta/conf/sanity.conf]

'프로그램 사용 > yocto project' 카테고리의 다른 글

yocto build on i5-3570  (0) 2023.09.07
bitbake --help  (0) 2023.08.29
imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
Posted by 구차니

문서가 개정되어서 하기 쉽게 잘 나와있는 듯.

 

Rev. LF6.1.22_2.0.0 — 30 June 2023

The recommended minimum Ubuntu version is 20.04 or later.

$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev python3- subunit mesa-common-dev zstd liblz4-tool file locales

// lz4c 어쩌구 나오면
$ sudo apt install lz4

// repo 설치
$ mkdir ~/bin (this step may not be needed if the bin folder already exists)
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

// repo 초기화
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore -m imx-6.1.22-2.0.0.xml
$ repo sync

$ DISTRO=<distro name> MACHINE=<machine name> source imx-setup-release.sh -b <build dir>

$ bitbake imx-image-multimedia

[링크 : https://www.nxp.com/docs/en/user-guide/IMX_YOCTO_PROJECT_USERS_GUIDE.pdf]

 

python 패키지 명이 바뀌어서 손을 대보는데 그래도 안되서

혹시나 하는 마음에 3.9를 설치해보니 정상적으로 설치안되었다고 -_-

$ bitbake -c compile -f weston
Traceback (most recent call last):
  File "/home/falinux/work/work/yocto/sources/poky/bitbake/bin/bitbake", line 19, in <module>
    import bb
  File "/home/falinux/work/work/yocto/sources/poky/bitbake/lib/bb/__init__.py", line 128, in <module>
    from bb import fetch2 as fetch
  File "/home/falinux/work/work/yocto/sources/poky/bitbake/lib/bb/fetch2/__init__.py", line 26, in <module>
    import bb.persist_data, bb.utils
  File "/home/falinux/work/work/yocto/sources/poky/bitbake/lib/bb/persist_data.py", line 22, in <module>
    from collections import Mapping
ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)

$ bitbake -c compile -f weston
WARNING: Host distribution "ubuntu-22.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
ERROR:  OE-core's config sanity checker detected a potential misconfiguration.
    Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
    Following is the list of potential problems / advisories:

    Your Python 3 is not a full install. Please install the module distutils.sysconfig (see the Getting Started guide for further information).


Summary: There was 1 WARNING message shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

 

3.10 부터 패키지 명칭이 바뀌어서 그런일이 생기는 듯

For version 3.10 or above –

from collections.abc import MutableMapping
For version 3.9 or lower –

from collections import MutableMapping

[링크 : https://stackoverflow.com/questions/70943244/attributeerror-module-collections-has-no-attribute-mutablemapping]

 

+

걍 docker 쓸까..

[링크 :https://github.com/nxp-imx/imx-docker]

'프로그램 사용 > yocto project' 카테고리의 다른 글

bitbake --help  (0) 2023.08.29
Do not use Bitbake as root.  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
yocto project 구조  (0) 2015.07.29
Posted by 구차니

한줄요약

걍 18.04로 돌아갈래!!!

 

요런게 뜰 때 눈치 챘어야 했는데...

WARNING: Host distribution "ubuntu-22.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.

 

 

ubuntu 22.04에 python3.10이 설치되어 있는데

1. python3.10 이후 패키지 변경으로 인해 아래와 같은 에러가 발생한다.

강제로 python 3.9를 설치하고 /usr/bin/python 과 /usr/bin/python3 심볼릭 링크를 바꾸어 주면 우회는 가능

"ImportError: cannot import name 'Mapping' from 'collections'" with Python 3.10

[링크 : https://github.com/tensorflow/tensorboard/issues/5478]

 

2. SIGSTKSZ 에 (가 어디 있나요... -_-

아무튼 glibc 버전이 2.34 이후 부터 SIGSTKSZ가 상수가 아닌 함수로 변경되었다고.. (니미!)

| In file included from /usr/include/signal.h:328,
|                  from ./signal.h:52,
|                  from ../../m4-1.4.18/lib/c-stack.c:49:
| ../../m4-1.4.18/lib/c-stack.c:55:26: error: missing binary operator before token "("
|    55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
|       |                          ^~~~~~~~

[링크 : https://stackoverflow.com/questions/69719688/buildroot-error-when-building-with-ubuntu-21-10]

$ getconf -a | grep libc
GNU_LIBC_VERSION                   glibc 2.35

[링크 : https://ososoi.tistory.com/79]

'프로그램 사용 > yocto project' 카테고리의 다른 글

Do not use Bitbake as root.  (0) 2023.08.28
imx8 yocto  (0) 2023.08.28
라즈베리 파이 with yocto project  (2) 2015.07.30
yocto project 구조  (0) 2015.07.29
라즈베리 파이 2 yocto 프로젝트?  (0) 2015.06.08
Posted by 구차니


yocto proejct - poky 다운로드

pi@raspberrypi ~/src $ git clone git://git.yoctoproject.org/poky yoctoProject

Cloning into 'yoctoProject'...

remote: Counting objects: 279679, done.

remote: Compressing objects: 100% (68614/68614), done.

Receiving objects: 100% (279679/279679), 112.68 MiB | 1.40 MiB/s, done.

Resolving deltas: 100% (205623/205623), done.

Checking out files: 100% (5101/5101), done. 



meta-raspberrypi layer 다운로드

pi@raspberrypi ~/src $ cd yoctoProject/

pi@raspberrypi ~/src/yoctoProject $ git clone git://git.yoctoproject.org/meta-raspberrypi

Cloning into 'meta-raspberrypi'...

remote: Counting objects: 1924, done.

remote: Compressing objects: 100% (906/906), done.

remote: Total 1924 (delta 841), reused 1924 (delta 841)

Receiving objects: 100% (1924/1924), 351.58 KiB | 255 KiB/s, done.

Resolving deltas: 100% (841/841), done. 


환경변수 및 라즈베리 파이 빌드할 경로 생성

pi@raspberrypi ~/src/yoctoProject $ source oe-init-build-env raspberryPiBuild/

You had no conf/local.conf file. This configuration file has therefore been

created for you with some default values. You may wish to edit it to use a

different MACHINE (target hardware) or enable parallel build options to take

advantage of multiple cores for example. See the file for more information as

common configuration options are commented.


You had no conf/bblayers.conf file. The configuration file has been created for

you with some default values. To add additional metadata layers into your

configuration please add entries to this file.


The Yocto Project has extensive documentation about OE including a reference

manual which can be found at:

    http://yoctoproject.org/documentation


For more information about OpenEmbedded see their website:

    http://www.openembedded.org/



### Shell environment set up for builds. ###


You can now run 'bitbake <target>'


Common targets are:

    core-image-minimal

    core-image-sato

    meta-toolchain

    adt-installer

    meta-ide-support


You can also run generated qemu images with a command like 'runqemu qemux86' 


라즈베리 파이 빌드를 위한 환경 설정 1

pi@raspberrypi ~/src/yoctoProject/raspberryPiBuild $ vim conf/local.conf

MACHINE ?= "raspberrypi" 


라즈베리 파이 빌드를 위한 환경 설정 2

pi@raspberrypi ~/src/yoctoProject/raspberryPiBuild $ vim conf/bblayers.conf

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf

# changes incompatibly

LCONF_VERSION = "6"


BBPATH = "${TOPDIR}"

BBFILES ?= ""


BBLAYERS ?= " \

  /home/pi/src/yoctoProject/meta \

  /home/pi/src/yoctoProject/meta-yocto \

  /home/pi/src/yoctoProject/meta-yocto-bsp \

  /home/pi/src/yoctoProject/meta-raspberrypi \

  "

BBLAYERS_NON_REMOVABLE ?= " \

  /home/pi/src/yoctoProject/meta \

  /home/pi/src/yoctoProject/meta-yocto \

  "


빌드를 위한 패키지 설치(라즈비안에서 한 120메가 다운로드 / 500메가 용량 필요)

pi@raspberrypi ~/src/yoctoProject/raspberryPiBuild $ sudo apt-get install sed wget cvs subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff libtool xterm


빌드 시작

pi@raspberrypi ~/src/yoctoProject/raspberryPiBuild $ bitbake core-sato-image


리부팅후 환경변수 재설정

pi@raspberrypi ~/src/yoctoProject $ source oe-init-build-env 


끄응.. 왜 안되지? 라즈베리에서 라즈베리를 빌드하려고 해서 그런가? ㅋㅋㅋ

pi@raspberrypi ~/src/yoctoProject/raspberryPiBuild $ bitbake core-sato-image

WARNING: Host distribution "Raspbian-GNU-Linux-7" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.

ERROR: Unable to determine endianness for architecture 'armv6l' | ETA:  --:--:--

ERROR: Please add your architecture to siteinfo.bbclass

ERROR: Failed to parse recipe: /home/pi/src/yoctoProject/meta/recipes-core/coreutils/coreutils_8.24.bb


Summary: There was 1 WARNING message shown.

Summary: There were 3 ERROR messages shown, returning a non-zero exit code.



---

pi@raspberrypi ~/src/yoctoProject $ ls -al

합계 92

drwxr-xr-x 12 pi pi  4096  7월 30 06:33 .

drwxr-xr-x 10 pi pi  4096  7월 30 06:29 ..

drwxr-xr-x  8 pi pi  4096  7월 30 06:33 .git

-rw-r--r--  1 pi pi   346  7월 30 06:32 .gitignore

-rw-r--r--  1 pi pi    66  7월 30 06:32 .templateconf

-rw-r--r--  1 pi pi   515  7월 30 06:32 LICENSE

-rw-r--r--  1 pi pi  2458  7월 30 06:32 README

-rw-r--r--  1 pi pi 19318  7월 30 06:32 README.hardware

drwxr-xr-x  6 pi pi  4096  7월 30 06:32 bitbake

drwxr-xr-x 13 pi pi  4096  7월 30 06:32 documentation

drwxr-xr-x 21 pi pi  4096  7월 30 06:32 meta

drwxr-xr-x 13 pi pi  4096  7월 30 06:33 meta-raspberrypi

drwxr-xr-x  5 pi pi  4096  7월 30 06:32 meta-selftest

drwxr-xr-x  7 pi pi  4096  7월 30 06:32 meta-skeleton

drwxr-xr-x  5 pi pi  4096  7월 30 06:32 meta-yocto

drwxr-xr-x  8 pi pi  4096  7월 30 06:32 meta-yocto-bsp

-rwxr-xr-x  1 pi pi  2002  7월 30 06:32 oe-init-build-env

-rwxr-xr-x  1 pi pi  2432  7월 30 06:32 oe-init-build-env-memres

drwxr-xr-x  8 pi pi  4096  7월 30 06:32 scripts


pi@raspberrypi ~/src $ du -h yoctoProject/

178M    yoctoProject/



[링크 : http://ric96.blogspot.in/2014/09/yocto-for-raspberry-pi-build-guide.html]

'프로그램 사용 > yocto project' 카테고리의 다른 글

imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
yocto project 구조  (0) 2015.07.29
라즈베리 파이 2 yocto 프로젝트?  (0) 2015.06.08
rpi in yocto project  (0) 2015.04.29
Posted by 구차니

일단은 yocto 프로젝트의 코어인 poky를 받고(빌드 환경 구성 + 커널 등등?)

하드웨어 의존적인 metadata layer를 다운로드 받는다(meta-raspberrypi)


1.     Clone the Yocto Project Git repo

2.     Get the meta-raspberrypi layer

3.     Setup the build environment

4.     Configure the build

5.     Next up, we need to add the meta-rasperrypi layer we cloned earlier to the file conf/bblayers.conf.

6.     Build a minimal distribution

[링크 : http://ric96.blogspot.in/2014/09/yocto-for-raspberry-pi-build-guide.html]

[링크 : http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/about/]



Poky is a reference system of the Yocto Project - a collection of Yocto Project tools and metadata that serves as a set of working examples. To use the Yocto Project tools, you can download Poky and use it to bootstrap your own distribution.


Poky is the platform-independent, cross-compiling integration layer that utilizes OpenEmbedded Core. It provides the mechanism to build and combine thousands of distributed open source projects together to form a fully customizable, complete, coherent Linux software stack.

[링크 : https://www.yoctoproject.org/tools-resources/projects/poky]



[링크 : http://git.yoctoproject.org/]

[링크 : http://www.yoctoproject.org/docs/1.8/ref-manual/ref-manual.html]


'프로그램 사용 > yocto project' 카테고리의 다른 글

imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
라즈베리 파이 2 yocto 프로젝트?  (0) 2015.06.08
rpi in yocto project  (0) 2015.04.29
Posted by 구차니

헐? 2013년에 이미 완성된게 있으려나? 해봐야겠네 ㄷㄷㄷ


[링크 : http://www.cnx-software.com/2013/07/05/12mb-minimal-image-for-raspberry-pi-using-the-yocto-project/]

'프로그램 사용 > yocto project' 카테고리의 다른 글

imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
yocto project 구조  (0) 2015.07.29
rpi in yocto project  (0) 2015.04.29
Posted by 구차니

라즈베리도 yocto project 적용된게 있나 보네..

다음번에 봐야지.. 귀차나...


[링크 : http://mytechpg.blogspot.kr/2013/06/raspberrypi-and-yocto.html]

[링크 : https://delog.wordpress.com/2014/09/16/embedded-linux-system-for-raspberry-pi-with-yocto-project/]

[링크 : http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/]

'프로그램 사용 > yocto project' 카테고리의 다른 글

imx8 yocto  (0) 2023.08.28
imx8 yocto build on ubuntu 22.04  (0) 2023.02.10
라즈베리 파이 with yocto project  (2) 2015.07.30
yocto project 구조  (0) 2015.07.29
라즈베리 파이 2 yocto 프로젝트?  (0) 2015.06.08
Posted by 구차니