Author: byun1114

  • failed to load i915/kbl_dmc_ver1_04.bin

    [    1.893023] i915 0000:00:02.0: firmware: failed to load i915/kbl_dmc_ver1_04.bin (-2)
    [    1.893027] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
    [    1.893029] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_04.bin failed with error -2

    Debian은 기본적으로 펌웨어와 관련된 드라이버를 설치하지 않는 경우가 많다. 그렇기 때문에 이와 관련된 문제가 생기면 수동으로 드라이버를 설치해 주어야 한다. 인텔 i915 칩과 관련된 드라이버를 설치해 주기 위해서는 firmware-misc-nonfree 패키지를 설치해 주면 된다.

    [    1.933844] i915 0000:00:02.0: firmware: direct-loading firmware i915/kbl_dmc_ver1_04.bin
    [    1.934221] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
    [    1.935073] [drm] Initialized i915 1.6.0 20200917 for 0000:00:02.0 on minor 0
    

    이렇게 하면 해당 부분의 오류 메세지가 사라지게 된다.

  • 쉘 스크립트, 파일 존재 여부

    쉘에서 특정 파일이 존재하는지 확인하는 방법은 다음과 같다.

    FILE=/home/byun1114/send_result
    if [[ -f "$FILE" ]]; then
            echo "send_result present"
    else
            echo "send_result not present"
    fi
    

    여기서 -f 와 -e 를 사용할 수 있다. -e 옵션은 장치나 폴더도 인식하는 반면에 -f 옵션은 파일만을 인식한다고 한다.

  • BOINC@HOME

    도커에서 BOINC@HOME을 실행하는 방법. GPU는 사용하는 것으로 한다.

    sudo docker run --privileged --dns=8.8.8.8 -it --gpus all --name boinc debian

    컨테이너 기본 설정은 평소와 같으나 repo에 contrib을 추가한다. 수작업으로 해줘도 되지만 편하게 하려면 apt-add-repository를 이용하면 된다. 사용하려면 software-properties-common 를 설치해야 한다.

    echo 'Acquire::http::Proxy "http://rcc.work:3142";' > /etc/apt/apt.conf
    rm -rf /etc/localtime
    ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 
    
    echo 192.168.126.37 rcc.work >> /etc/hosts
    
    apt -y update && apt -y upgrade
    
    apt -y install software-properties-common
    apt-add-repository contrib
    
    apt -y update && apt -y upgrade
    apt -y install boinc boinc-client-nvidia-cuda

    컨테이너 시작시에 boinc을 시작하게 하기 위해서 .bashrc 에 다음의 내용을 추가한다. 작업 디렉토리는 원하는 것으로 해도 되지만 다른 도커 이미지 설명을 보면 /var/lib/boinc을 이용하는 것 같다. 그래서 이를 이용하도록 한다. 이것을 지정하기 않으면 실행 디렉토리를 기본으로 하여 다시 작업 파일을 받아오기 때문에 중복이 된다.

    cd /root
    boinc --dir /var/lib/boinc &

    이 다음부터는 컨테이너에서 해도 되고 밖에서 명령어를 실행시켜 줘도 된다.

    우선 Project를 추가하기 위해서는 account key를 알아야 한다.

    $ boinccmd --lookup_account https://einstein.phys.uwm.edu/ ID PASSWORD

    프로젝트를 추가한다.

    $ boinccmd --project_attach https://einstein.phys.uwm.edu/ account_key

    처음에 파일 받아오는데 시간이 걸리므로 느긋하게 기다리면 된다.

    주소를 입력할 때 https로 해줘야 한다. http로 하면 2번 등록되어있다는 메세지가 계속 생성된다.

    이렇게 여러 번 시도해 보았는데 CPU로 계산은 할 수 있어도 GPU는 계산을 하지 못했다. OpenCL과 관련된 문제인 것 같았는데 해결책을 찾을 수 없었다. 그래서 boinc 의 docker 이미지를 이용했다.

     sudo docker run -d \
      --gpus all \
      --name boinc2 \
      --net=host \
      --pid=host \
      --dns=8.8.8.8 \
      -v /opt/appdata/boinc:/var/lib/boinc \
      -e BOINC_GUI_RPC_PASSWORD="123" \
      -e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
      boinc/client:nvidia
  • NFS (Network File System) 사용하기

    PACS 데이터를 일단 받아두기 위해서는 큰 용량이 필요하다. 어떻게 구현하는 것이 좋을지 고민하다가 HP ML110 G7을 이용하는 것이 가장 좋을 것 같다는 결론에 이르렀다. iSCSI, NFS, CIFS 등의 프로토콜을 이용할 수 있을 것이다. CIFS는 속도가 느리다는 평이 있다. iSCSI는 작은 파일을 다루는데 좋다고 하지만, 설정이 복잡했다. 오래되고 사용하기 쉬운 NFS를 이용해 보기로 했다.

    NFS를 사용하기 위해서는 NFS를 이용할 수 있는 패키지를 설치해야 한다.

    $ sudo apt install nfs-common

    TrueNAS에서도 NFS를 이용할 수 있도록 설정한다. Services에 들어가서 NFS를 사용하도록 설정하고, Action 버튼을 눌러서 설정을 확인한다. 특별히 더 해주지 않아도 잘 된다.

    다음으로는 Sharin / NFS에서 ADD를 누른 다음 원하는 최상위 디렉토리를 설정해 준다.

    showmount를 통해서 방금 설정했던 디렉토리가 제대로 보이는지 확인해 본다.

    $ showmount -e 10.10.10.99
    Export list for 10.10.10.99:
    /mnt/share/byun1114/PACS (everyone)
    

    마운트를 위한 폴더를 하나 만들고 마운트 시킨다.

    $ sudo mount 10.10.10.99:/mnt/share/byun1114/PACS /home/byun1114/ext