11월 스크랩

Advertisements

ARM Ubuntu 14.04에 최신 docker 설치기

회사 타켓보드에 개발 용이성을 위해서 ARM Ubuntu14.04에 docker를 올리는 시도를 했다

그냥 간단하게는 아래 명령으로 되는데,

$ sudo apt-get install docker.io

Ubuntu 14.04는 너무 오래되서, docker 버전이 너무 낮아서 시도를 하지 않았다. (실제로 저 명령으로 docker 설치가 잘 되는지 모른다는 이야기다)

처음부터 바로 docker ppa에서 바로 최신 버전을 받아서 설치를 진행했다.

https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#upgrade-docker-after-using-the-convenience-script

그리고 실행하니까 커널에 필요한 기능이 추가되어 있지 않아서 데몬이 동작하지 않는다.

첫번째 이슈는 cgroup이었다. 커널에 cgroup 자체는 활성화되어 있었지만, blkio같은 서브모듈이 비활성이어서 전부 활성화 처리 해주었다.

두번째는 network nat기능이었다. 이 부분은 너무 옵션이 많이 필요해서 관련 자료를 참고했다.

스크린샷 2017-11-03 오전 10.49.09.png스크린샷 2017-11-03 오전 10.49.17.png스크린샷 2017-11-03 오전 10.49.23.png

위에는 falinux에서 진행한 docker세미나 자료이다.

https://wiki.gentoo.org/wiki/Docker

위는 gentoo에서 제공하는 docker 커널 옵션이다. 나는 잘 안되서 2개를 다 시도 했다. 따라서 위 2개중에 어떤게 맞는지는 알수없다. 나는 그냥 2가지를 다 활성화시켰다.

그래도 네트워크쪽에서 아래와 같은 오류가 발생했다.

failed to create endpoint vigilant_varahamihira on network bridge: failed to add the host (vethadd7f95)  sandbox (veth63708ff) pair interfaces: operation not supported"

해결책은 아래 커널 옵션을 활성화 해준다

device driver -> network device support -> network core driver support -> virtual ethernet pair device

그래도 아래와 같은 오류가 발생했다.

starting container process caused "process_linux.go:368: container init caused \"rootfs_linux.go:57: mounting \\\"mqueue\\\" to rootfs \\\"/var/lib/docker/devicemapper/mnt/e8d53dff710da9a18279cec3db4fb324ecc1874b5f3fa2e4496b94c31938d715/rootfs\\\" at \\\"/dev/mqueue\\\" caused \\\"no such device\\\"\"".

해결책으로 CONFIG_POSIX_MQUEUE 커널 옵션을 활성화 했다

그래도 아래와 같은 오류가 발생했다.

oci runtime error: container_linux.go:265: starting container process caused \"process_linux.go:368: container init caused \\"open /dev/ptmx: no such file or directory\\"\"

해결책으로 아래와 같이 -v 옵션을 추가해서 실행했다.

$ sudo docker run --rm -it -v "/dev:/dev" arm32v7/ros:kinetic-ros-base /bin/bash

2017년 10월 스크랩✭

2017년 6월 2차 스크랩✭

Device Tree Overlay Notes

원문 : http://lxr.free-electrons.com/source/Documentation/devicetree/overlay-notes.txt

디바이스 트리 오버레이 노트

이 문서는 drivers/of/overlay.c 에 구현된 커널 디바이스 트리 오버레이 기능의 구현에 대해 설명합니다. 이 문서는 Documentation/devicetree/dt-object-internal.txt & Documentation/devicetree/dynamic-resolution-notes.txt 와 같이 보면 좋습니다.

오버레이는 어떻게 동작하는가

디바이스 트리 오버레이의 목적은 커널의 라이브 트리를 수정하기 위함입니다. 또한 커널 상태에 영향을 주는 수정을 반영하고 있습니다. 커널은 주로 장치를 다루기 때문에, 활성화된 장치는 새로운 디바이스 노드를 생성해야 합니다. 비활성화 되었거나 제거된 장치는 등록이 취소되어야 합니다.

아래 예제는 베이스 트리에 있는 foo board 입니다.

---- foo.dts ----------------------
    /* FOO platform */
    / {
        compatible = "corp,foo";

        /* shared resources */
        res: res {
        };

        /* On chip peripherals */
        ocp: ocp {
            /* peripherals that are always instantiated */
            peripheral1 { ... };
        }
    };
---- foo.dts ------------------------

bat.dts 오버레이가 아래와 같이 로딩되었습니다.

---- bar.dts -------------------------
/plugin/;   /* allow undefined label references and record them */
/ {
    ....    /* various properties for loader use; i.e. part id etc. */
    fragment@0 {
        target = ;
        __overlay__ {
            /* bar peripheral */
            bar {
                compatible = "corp,bar";
                ... /* various properties and child nodes */
            }
        };
    };
};
---- bar.dts ---------------------------

결과적으로 foo + bar.dts는 아래와 같습니다.

---- foo+bar.dts ----------------------
    /* FOO platform + bar peripheral */
    / {
        compatible = "corp,foo";

        /* shared resources */
        res: res {
        };

        /* On chip peripherals */
        ocp: ocp {
            /* peripherals that are always instantiated */
            peripheral1 { ... };

            /* bar peripheral */
            bar {
                compatible = "corp,bar";
                ... /* various properties and child nodes */
            }
        }
    };
---- foo+bar.dts -------------------------

오버레이의 결과로, 새로운 장치 노드(bar)가 생성되었습니다. 따라서 bar 플랫폼 장치가 등록되고, 일치하는 디바이스 드라이버가 로드되면 예상되로 생성됩니다.

오버레이 Kernel API

API는 사용하기 매우 쉽습니다.

  1. of_overlay_create ()를 호출하여 오버레이를 만들고 적용합니다. 반환 값 이 오버레이를 식별하는 쿠키입니다.

  2. 이전에 오버레이를 제거하고 정리하는 of_overlay_destroy ()를 호출합니다. of_overlay_create ()에 대한 호출을 통해 생성됩니다. 다른것에 의해 겹쳐진 오버레이를 제거하는 것은 허용되지 않습니다.

마지막으로 한 번에 모든 오버레이를 제거해야하는 경우 of_overlay_destroy_all () : 올바른 순서로 모든 단일 항목을 제거합니다.

오버레이 DTS 포맷

DTS 오버레이는 아래와 같은 형식을 가져야 합니다.

{
    /* ignored properties by the overlay */

    fragment@0 {    /* first child node */

        target=;    /* phandle target of the overlay */
    or
        target-path="/path";    /* target path of the overlay */

        __overlay__ {
            property-a; /* add property-a to the target */
            node-a {/* add to an existing, or create a node-a */
                ...
            };
        };
    }
    fragment@1 {    /* second child node */
        ...
    };
    /* more fragments follow */
}

Using the non-phandle based target method allows one to use a base DT which does
not contain a symbols node, i.e. it was not compiled with the -@ option.
The symbols node is only required for the target= method, since it
contains the information required to map from a phandle to a tree location.

WPF에서 INotifyPropertyChanged 귀차니즘 해결

WPF의  MVVM 구조는 멋지다. GUI 개발에서 glue code를 많이 제거해준다.

특히 Model 의 변화가 자동으로 View 에 반영되는 구조는 매우 유용하다.

다만, 모델의 프로퍼티가 변경 되면 propertyChanged를 이용해서 변경된 사실을 통보해줘야 한다.

요게 은근히 귀찮다.

public class Person : INotifyPropertyChanged
{
    string givenNames;
    public string GivenNames
    {
        get { return givenNames; }
        set
        {
            if (value != givenNames)
            {
                givenNames = value;
                OnPropertyChanged("GivenNames");
            }
        }
    }
}

위 코드처럼 프로퍼티를 일일이 만들어 줘야 하고, set 프로퍼티 안에서 일일이 OnPropertyChanged()를 호출해 줘야 한다. 하나 두개면 상관없지만 많으면 코드도 길어지고 개 귀찮..

하지만 역시 해결책은 있다!

https://github.com/Fody/PropertyChanged

이거 하나면 해결 끝~

ps. fody 라이브러리는 저거 말고도 엄청 다양한 플러그인이 있다

[영화] 성실한 나라의 앨리스

스크린샷 2017-01-01 오후 10.16.33.png

내가 좋아 하는 스타일의 영화다

인디 영화지만 꽤 관객수도 있었고, 특히 이정현이 이 영화로 여우주연상을 받는다!!

비슷한 느낌으로는 일본 영화 불량공주 모모코(시모츠마 이야기), 혐오스런 마츠코의 일생이 있다.

그러고 보니 일본 영화 느낌도 좀 나는듯?

한국 영화로는 지구를 지켜라를 재미있게 본 분이라면 추천~

2016년 12월 스크랩✭