본문 바로가기

개발 및 운영125

[golang] CGO Callback 으로 객체 넘길 때 GC 문제 golang 의 장점이 GC 이지만, Windows API 등을 사용하며 Callback 을 사용해야 할 때 참 골치아픈 것이 GC 문제이다. https://groups.google.com/g/golang-nuts/c/yNis7bQG_rY/m/yaJFoSx1hgIJ 위와 같은 논의들도 많고.. package main /* #include #include #include #include extern void goNativeDone(void*); __attribute__((weak)) void* thread_func(void* p) { for (int i=0; i 2023. 12. 11.
pre-decompress linux kernel 디버깅 일반적으로 리눅스 커널을 디버깅 할 때 vmlinux 파일을 사용한다.그런데 이건 decompressed 상태일 때라 pre-decompress 상태를 디버깅 할 수는 없다.decompress 과정이나 efi_stub 을 디버깅 하기 위해서 arch/x86/boot/compressed/Makefile 을 수정하여 compressed vmlinux 를 디버깅 가능하게 빌드해야 한다.위와 같이 Makefile 파일 수정 후 bzImage 을 다시 빌드하면 arch/x86/boot/compressed/vmlinux 파일이 디버그 심볼이 포함된 elf 로 빌드된다. 이 파일을 gdb 에서 로드해 사용할 수 있다.text section 주소 찾기.$ objdump -h arch/x86/boot/compressed.. 2023. 11. 30.
rook-ceph external cluster 사용 시 rook-ceph-mgr-external 생성 실패시 환경: - rook-ceph (rook v1.10.3) - external cluster 로 ceph 연동 이런 상황에서 아래와 같은 오류가 발생한다면 op-mon: failed to check mon health. failed to configure external metrics endpoint: failed to create or update mgr endpoint: failed to create endpoint "rook-ceph-mgr-external". Endpoints "rook-ceph-mgr-external" is invalid: subsets\[0\].ports\[0\].port: Invalid value: 0: must be between 1 and 65535, inclusive Cep.. 2023. 11. 22.
UEFI development with Go-lang tinygo 는 golang 으로 MCU 등 baremetal 펌웨어 개발을 가능하게 만들었습니다. 이런 가능성을 보고 UEFI Application 도 Go 로 만들 수 있지 않을까? 생각이 들어서 구현해봤습니다. 개발 브랜치 : https://github.com/jclab-joseph/tinygo/tree/feat/uefi WIP 중인 PR : https://github.com/tinygo-org/tinygo/pull/3996 기존의 EFI 개발에는 edk2 라는 프레임워크가 있지만 사용하기가 복잡하고 다양한 라이브러리를 효과적으로 사용하기에는 어려움이 있습니다. 한 예로 얼마 전에 HttpDxe 대신 curl 을 구현하려고 했는데 LibC 종속성을 추가하면 OpenSsl 이 빌드가 안되는 등.. 문.. 2023. 11. 14.
kubernetes sysctl bridge 설정 외에 추가적으로 해줄 것 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 fs.file-max = 131072 fs.file-max 가 나는 기본이 65536 이었는데 동작 중 "Too many open files" 이 발생할 때가 있었다. 때문에 이를 높일 필요가 있었다. 2023. 5. 24.
메일서버 (SMAP/IMAP) 종류 기존에 메일서버를 postfix + dovecot 을 사용했다. 그 외에 메일서버를 찾아보았다. SMTP Server postfix 언어 : C | 메모리 안정성 낮음 dovecot 를 통한 인증 지원 virtual domain/alias : sql 지원, socketmap 지원 haraka 언어 : Javascript | 메모리 안정성 O | 타입 안정성 X 플러그인 지원 커스텀 인증 지원 IMAP Server dovecot 언어 : C | 메모리 안정성 낮음 다양한 인증 지원 및 lua script 지원 wildduck 언어 : Javascript | 메모리 안정성 O | 타입 안정성 X 클러스터 : 지원 플러그인 지원 미숙함 커스텀 인증 지원하지 않음 완전체 솔루션 mailu 오픈소스 poste 유.. 2023. 2. 4.
반응형