[Golang] 외부 라이브러리 의존없이 Go 정적 빌드(Static Build)하기

go build 명령어 실행 시 아래와 같이 지정해주면, 시스템 라이브러리 (libstdc 등)에 의존하지 않는 정적 프로그램으로 빌드할 수 있다. Environment Variables Build Arguments (Optional) Extra Arguments Advantages 정적 프로그램으로 빌드할 경우 libc를 포함한 외부 라이브러리에 대한 의존이 없어서 단독으로 실행이 가능하다. 예를 들어, 위에서 빌드한 프로그램 ./main을 아래와 같이 Docker scratch 이미지에 넣고 단독으로 실행이 …

jungin500/efinextboot – 멀티부팅을 좀더 간단하게

Windows/Ubuntu를 멀티부팅할 일이 잦아서 자주 사용하던 chengxuncc/booToLinux 유틸리티에는 몇가지 문제점이 존재한다. 해당 레포지토리 소스코드를 살펴본 결과 Golang으로 작성되었으며 생각보다 간단하게 구성되었다. 각 문제의 해결 방법을 찾을 수 있을것 같아 직접 밑바닥부터 다시 구현하였다. Features

[Linux] PyTorch CUDA 오류 해결 – libcudnn_cnn_infer.so, libnvrtc.so

Anaconda/Miniconda로 최신 PyTorch 2.0과 CUDA 라이브러리(pytorch-cuda=11.8)를 설치하고 PyTorch 라이브러리를 로드할 때 이런 오류가 발생하는 경우가 있다. 해당 문제는 pytorch-cuda로 설치된 libnvrtc.so 파일이 제대로 링크되지 않아 발생한 문제이다. 이를 해결하기 위해서는 아래와 같이 기존의 libnvrtc.so.11.2나 libnvrtc.so.11.8 등을 프로그램이 열심히 찾고있는 libnvrtc.so로 링크해주면 된다. 현재 사용중인 conda 환경을 activate하고, 아래 Snippet을 실행하여 링크를 진행하여 문제없이 작동하였다. 위 …

[Kubernetes] PyTorch 학습 시 Pod의 빠른 종료를 위한 yaml 설계 방법

[새로운 방법 발견!] 아래 방법을 계속 사용하다가, yaml에 직접 넣어서 사용할 수 있는 구문을 찾았습니다. 해당 구문을 이용하여 Pod delete시 바로 중단 및 삭제되도록 할 수 있습니다. 기존 방법으로는 kubectl delete 시 –force –grace-period=0 옵션을 주어야만 강제 종료되고, 학습 process에 실제로 Ctrl+C를 주는 것과 동일하게 SIGTERM 을 보낼 수는 없었습니다. 이러한 문제점은 학습 프로세스의 종료시 callback들 (wandb 등)이 정상 작동하지 않는다는 …

Raspberry Pi Compute Module 4 (CM4) I/O Board RTC 사용하기

환경 Raspberry Pi CM4 2GB w/o eMMC/WiFi Raspberry Pi CM4 I/O Board PCF85063A RTC module CR2032 battery Ubuntu Server 20.04 aarch64 (Raspberry Pi build) 사용 방법 /etc/rc.local /lib/systemd/system/rc-local.service /etc/rc.local 권한 설정 crontab 재부팅 후 dmesg로 결과 확인 참고자료 https://tutorials-raspberrypi.com/controlling-the-raspberry-pi-rtc-module-i2c-real-time-clock/ https://forums.raspberrypi.com/viewtopic.php?t=293632

[DSM 7.0] Synology DSM Docker에서 Docker-in-Docker (dind) 실행하기

서론 Docker-in-Docker는 이미 존재하는 Docker Daemon에서 새로운 Container를 구동하고, 그 안에서 새로운 Daemon을 구동하는 기법이다. 기존에는 docker:dind 이미지와 –privileged 플래그를 이용하여 새로운 컨테이너를 생성하면 바로 가능한 간단한 문제였으나, Synology DSM 7.0에서는 기본 docker의 storage-driver가 aufs로 설정되어 있고 overlay2 드라이버를 지원하지 않으므로 이러한 기본적인 접근방식은 불가능하였다. 해결 방법 기존에는 아래와 같이 dind 컨테이너를 생성하였다. 위 명령어는 …

[튜토리얼] Docker로 apt-mirror 미러서버를 구축해보자

결과 확인해보기: https://mirror.limenas.ml 미러 서버는 , 데비안 계열 리눅스에서(Debian, Ubuntu),시스템에 설치할 수 있는 deb 패키지들을 가지고 있는 서버이며,이 서버에 빠르게 접근할 수 있도록 서버를 통째로 복제해둔 로컬 서버입니다. Raspberry Pi나 Jetson Nano와 같은 SBC(Single Board Computer)를 사용하다 보면, 같은 Ubuntu/Debian 계열 Linux임에도 불구하고, CPU 아키텍쳐가 ARM이라는 이유로 카카오에서 제공하는 빠른 미러서버를 사용하기 어려워집니다.(이 미러서버에는 ARM …