diff --git a/authors/index.html b/authors/index.html index 54095e1..2198eef 100644 --- a/authors/index.html +++ b/authors/index.html @@ -1,4 +1,4 @@ All authors - All about IoT
+
\ No newline at end of file diff --git a/authors/index.xml b/authors/index.xml index 837481d..2ae84cb 100644 --- a/authors/index.xml +++ b/authors/index.xml @@ -1 +1 @@ -Authors - Author - All about IoThttps://blog.humminglab.io/authors/Authors - Author - All about IoTHugo -- gohugo.ioenSun, 23 Jul 2023 09:00:00 +0900YSLeehttps://blog.humminglab.io/authors/yslee/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/authors/yslee/ \ No newline at end of file +Authors - Author - All about IoThttps://blog.humminglab.io/authors/Authors - Author - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900YSLeehttps://blog.humminglab.io/authors/yslee/Wed, 16 Aug 2023 12:00:00 +0900HummingLabhttps://blog.humminglab.io/authors/yslee/ \ No newline at end of file diff --git a/authors/yslee/index.html b/authors/yslee/index.html index 3c9ea76..c81d8a9 100644 --- a/authors/yslee/index.html +++ b/authors/yslee/index.html @@ -1,7 +1,8 @@ YSLee - Author - All about IoT
+04-18
\ No newline at end of file diff --git a/authors/yslee/index.xml b/authors/yslee/index.xml index f0a0e74..01d6adf 100644 --- a/authors/yslee/index.xml +++ b/authors/yslee/index.xml @@ -1,4 +1,6 @@ -YSLee - Author - All about IoThttps://blog.humminglab.io/authors/yslee/YSLee - Author - All about IoTHugo -- gohugo.ioenSun, 23 Jul 2023 09:00:00 +0900HTTP SHA-256 Digest Authenticationhttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/Sun, 23 Jul 2023 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. +YSLee - Author - All about IoThttps://blog.humminglab.io/authors/yslee/YSLee - Author - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.HTTP SHA-256 Digest Authenticationhttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/Sun, 23 Jul 2023 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. 이 글에서는 HTTP Digest Authentication의 전반적인 사항을 정리한다. 목차는 다음과 같다. HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차 Digest Authentication 웹 환경에서 더이상 사용하지 않는 이유 브라우저에서 SHA-256 Digest Authentication 구현 방법 HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차HTTP Authentication은 RFC 표준으로 다음과 같이 정의 되어 있다. RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication RFC 7616 - HTTP Digest Access Authentication 웹 초창기에 사용자 인증이 필요한 페이지를 위하여 RFC 2617 로 표준이 정의 되었다.TLS/암호 알고리즘 쉽게 이해하기(14) - PKI and X.509https://blog.humminglab.io/posts/tls-cryptography-14-x509/Sun, 02 Apr 2023 20:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/tls-cryptography-14-x509/이전글 에서 설명한 Digital Signature 를 사용하면 문서의 서명을 검증할 수 있다. 이 서명을 체이닝으로 이어 나가면 3자 인증 기반의 PKI(Public Key Infrastructure)를 구성할 수 있다. X.509 는 ITU-T 에서 정의한 PKI 표준이다. 우리가 흔히 사용하는 인증서는 X.509 표준을 따른다. @@ -26,7 +28,4 @@ $a$ 와 $b$ 는 임의의 수로 특이점이 없도록 다음과 같은 조건 $$4 a^3 + 27b^2 \neq 0$$ 이와 같은 조건을 만족하는 곡선은 다음과 같은 모양을 가진다. b=1, a=2~-3 일 때의 모양 -만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다.TLS/암호 알고리즘 쉽게 이해하기(10) - Hashhttps://blog.humminglab.io/posts/tls-cryptography-10-hash/Sat, 16 Apr 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/tls-cryptography-10-hash/Hash 함수란 임의의 길이의 데이타를 축약하여 고정된 길이의 데이타로 매핑하는 함수를 말한다. -데이타 검색을 위한 hash 함수, 데이타 손상을 검출하기 위한 CRC32 도 hash 함수 이지만, 이 글에서 언급하는 것은 암호화 해시 함수이다. -각 용도에 따라서 해시 함수의 특성은 다음처럼 다를 수 있다. -데이터 검색용: 모든 입력 데이타에 대해서 hash 결과값이 균등 분포를 가져야 한다. 데이타 손상 검출용: 원하는 비트 개수 까지의 오류에 대해서 정확히 검출되어야 하고, 알고리즘에 따라서 제한된 비트 개수 까지 오류 복원이 가능하여야 한다. \ No newline at end of file +만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다. \ No newline at end of file diff --git a/authors/yslee/page/2/index.html b/authors/yslee/page/2/index.html index e51e393..2633277 100644 --- a/authors/yslee/page/2/index.html +++ b/authors/yslee/page/2/index.html @@ -1,7 +1,8 @@ YSLee - Author - All about IoT
+02-14
\ No newline at end of file diff --git a/authors/yslee/page/3/index.html b/authors/yslee/page/3/index.html index f16f29b..642caef 100644 --- a/authors/yslee/page/3/index.html +++ b/authors/yslee/page/3/index.html @@ -1,7 +1,8 @@ YSLee - Author - All about IoT
+12-10
\ No newline at end of file diff --git a/authors/yslee/page/4/index.html b/authors/yslee/page/4/index.html index 5901c4e..1efddd8 100644 --- a/authors/yslee/page/4/index.html +++ b/authors/yslee/page/4/index.html @@ -1,7 +1,8 @@ YSLee - Author - All about IoT

YSLee
-

2018

Orange Pi 보드용 이미지 수작업으로 만들기 +

2019

2018

Python 비동기 프로그래밍 제대로 이해하기(2/2) - Asyncio, Coroutine diff --git a/categories/development/index.html b/categories/development/index.html index a1cd0dd..641b2af 100644 --- a/categories/development/index.html +++ b/categories/development/index.html @@ -1,6 +1,7 @@ Development - Category - All about IoT
\ No newline at end of file diff --git a/categories/development/index.xml b/categories/development/index.xml index 1d7de72..6615695 100644 --- a/categories/development/index.xml +++ b/categories/development/index.xml @@ -1,4 +1,6 @@ -Development - Category - All about IoThttps://blog.humminglab.io/categories/development/Development - Category - All about IoTHugo -- gohugo.ioenSat, 25 Jun 2022 09:00:00 +0900PlatformIO (2) - STM32Cube Platform 개발https://blog.humminglab.io/posts/platformio-2-stm32-cube/Sat, 25 Jun 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/platformio-2-stm32-cube/Development - Category - All about IoThttps://blog.humminglab.io/categories/development/Development - Category - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.PlatformIO (2) - STM32Cube Platform 개발https://blog.humminglab.io/posts/platformio-2-stm32-cube/Sat, 25 Jun 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/platformio-2-stm32-cube/PlatformIO (1) - 개요 및 특징https://blog.humminglab.io/posts/platformio-1/Fri, 24 Jun 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/platformio-1/Cortex-M series 급을 이용한 임베디드 시스템 개발을 하다 보면, 지속적으로 사용할 수 있는 통합 개발 환경이 마땅치 않다는 문제가 있다. Windows 나 Linux 라면 한번 익혀 두면 수년은 두고 두고 쓸수 있는 개발 환경들이 있지만 임베디드 개발 환경의 경우 MCU 가 바뀔 때마다 개발환경을 바꾸어야만 하는 경우가 생긴다. 개발 환경의 범위를 최소 셋인 컴파일, 다운로드 만이 아닌 디버깅, unit test 까지로 고려한다면 범위가 더 좁아 질 수 밖에 없다. @@ -16,6 +18,4 @@ Partiton 1(fat16): DOS FAT16 의 부팅 디스크로 u-boot 과 부팅에 필요 찾다 보니 Netgear GS108Ev3(8포트), GS105Ev2(5포트) 가 가격도 5~8만원 정도로 비싸지 않고, 포트 미러링 기능이 지원되어 소개한다. 외관은 금속으로 되어 있어 크기에 비하여 무게가 묵직하게 나간다.Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기https://blog.humminglab.io/posts/yocto-project-on-orange-pi-3/Tue, 18 Jan 2022 23:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-project-on-orange-pi-3/Yocto Project 개발 절차는 기본적으로 이미 개발이 완료된 패키지들의 recipe를 만들고, 이를 bitbake로 전체 이미지를 빌드하는 과정이다. 하지만 개발 진행 중인 소프트웨어 패키지를 yocto에 추가하고, 이를 계속 수정 개발을 할 때 어떤 방식으로 관리를 할지 고민을 하여야 한다. 여기에서는 이와 같이 개발 중인 패키지를 yocto 에 추가하여 빌드 하는 방법을 알아본다. -Yocto Project 개발하기(1) - Orange Pi 보드 빌드 Yocto Project 개발하기(2) - Custom Layer 만들기 Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기 Yocto Project 개발하기(4) - Yocto SDK 빌드 Yocto Project 개발하기(5) - Yocto eSDK 이용한 개발 모델 방법들예를 들어 u-boot 를 수정 하는 경우를 예로 들어 보자.Yocto Project 개발하기(2) - Custom Layer 만들기https://blog.humminglab.io/posts/yocto-project-on-orange-pi-2/Fri, 07 Jan 2022 19:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-project-on-orange-pi-2/이전 글 에서 meta-sunxi 를 추가하여 orage pi 용으로 빌드를 만들었고, 이번 과정은 project 용으로 meta layer를 만들어서 관리하는 방법을 설명한다. -실제 개발 과정을 이해하기 좋도록 meta layer 를 만들어 가는 과정을 설명한다. -Yocto Project 개발하기(1) - Orange Pi 보드 빌드 Yocto Project 개발하기(2) - Custom Layer 만들기 Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기 Yocto Project 개발하기(4) - Yocto SDK 빌드 Yocto Project 개발하기(5) - Yocto eSDK 이용한 개발 모델 Layer 및 machine 생성프로젝트를 sc-gateway 라고 명하고(이름에 특별한 의미는 없음), 이를 layer로 만든다. \ No newline at end of file +Yocto Project 개발하기(1) - Orange Pi 보드 빌드 Yocto Project 개발하기(2) - Custom Layer 만들기 Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기 Yocto Project 개발하기(4) - Yocto SDK 빌드 Yocto Project 개발하기(5) - Yocto eSDK 이용한 개발 모델 방법들예를 들어 u-boot 를 수정 하는 경우를 예로 들어 보자. \ No newline at end of file diff --git a/categories/development/page/2/index.html b/categories/development/page/2/index.html index d85643b..cdb58cb 100644 --- a/categories/development/page/2/index.html +++ b/categories/development/page/2/index.html @@ -1,6 +1,7 @@ Development - Category - All about IoT

 Development

2022

2021

2017

GitHub 연결이 제대로 안될 때 proxy 사용하기 diff --git a/categories/index.html b/categories/index.html index 8b565af..86ea385 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,4 +1,4 @@ All Categories - All about IoT
\ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml index 21e4acb..74915bd 100644 --- a/categories/index.xml +++ b/categories/index.xml @@ -1 +1 @@ -Categories - Category - All about IoThttps://blog.humminglab.io/categories/Categories - Category - All about IoTHugo -- gohugo.ioenSun, 23 Jul 2023 09:00:00 +0900Securityhttps://blog.humminglab.io/categories/security/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/security/Developmenthttps://blog.humminglab.io/categories/development/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/development/Embedded Linuxhttps://blog.humminglab.io/categories/embedded-linux/Sun, 06 Jan 2019 09:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/embedded-linux/IoThttps://blog.humminglab.io/categories/iot/Tue, 17 Apr 2018 05:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/iot/Pythonhttps://blog.humminglab.io/categories/python/Fri, 30 Mar 2018 17:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/python/ \ No newline at end of file +Categories - Category - All about IoThttps://blog.humminglab.io/categories/Categories - Category - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Developmenthttps://blog.humminglab.io/categories/development/Wed, 16 Aug 2023 12:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/development/Securityhttps://blog.humminglab.io/categories/security/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/security/Embedded Linuxhttps://blog.humminglab.io/categories/embedded-linux/Sun, 06 Jan 2019 09:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/embedded-linux/IoThttps://blog.humminglab.io/categories/iot/Tue, 17 Apr 2018 05:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/iot/Pythonhttps://blog.humminglab.io/categories/python/Fri, 30 Mar 2018 17:00:00 +0900HummingLabhttps://blog.humminglab.io/categories/python/ \ No newline at end of file diff --git a/index.html b/index.html index fb6b02c..eef20f7 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,9 @@ -All about IoT

Yocto 에서 Go 프로젝트 관리

Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.

HTTP SHA-256 Digest Authentication

일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. 이 글에서는 HTTP Digest Authentication의 전반적인 사항을 정리한다. 목차는 다음과 같다. HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차 Digest Authentication 웹 환경에서 더이상 사용하지 않는 이유 브라우저에서 SHA-256 Digest Authentication 구현 방법 HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차HTTP Authentication은 RFC 표준으로 다음과 같이 정의 되어 있다. @@ -37,9 +40,5 @@ $$4 a^3 + 27b^2 \neq 0$$ 이와 같은 조건을 만족하는 곡선은 다음과 같은 모양을 가진다. b=1, a=2~-3 일 때의 모양 -만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다.

TLS/암호 알고리즘 쉽게 이해하기(10) - Hash

Hash 함수란 임의의 길이의 데이타를 축약하여 고정된 길이의 데이타로 매핑하는 함수를 말한다. -데이타 검색을 위한 hash 함수, 데이타 손상을 검출하기 위한 CRC32 도 hash 함수 이지만, 이 글에서 언급하는 것은 암호화 해시 함수이다. -각 용도에 따라서 해시 함수의 특성은 다음처럼 다를 수 있다. -데이터 검색용: 모든 입력 데이타에 대해서 hash 결과값이 균등 분포를 가져야 한다. 데이타 손상 검출용: 원하는 비트 개수 까지의 오류에 대해서 정확히 검출되어야 하고, 알고리즘에 따라서 제한된 비트 개수 까지 오류 복원이 가능하여야 한다.
\ No newline at end of file diff --git a/index.xml b/index.xml index c5f2bfd..d90f00d 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,6 @@ -All about IoThttps://blog.humminglab.io/All about IoTHugo -- gohugo.ioenSun, 23 Jul 2023 09:00:00 +0900HTTP SHA-256 Digest Authenticationhttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/Sun, 23 Jul 2023 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. +All about IoThttps://blog.humminglab.io/All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.HTTP SHA-256 Digest Authenticationhttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/Sun, 23 Jul 2023 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. 이 글에서는 HTTP Digest Authentication의 전반적인 사항을 정리한다. 목차는 다음과 같다. HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차 Digest Authentication 웹 환경에서 더이상 사용하지 않는 이유 브라우저에서 SHA-256 Digest Authentication 구현 방법 HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차HTTP Authentication은 RFC 표준으로 다음과 같이 정의 되어 있다. RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication RFC 7616 - HTTP Digest Access Authentication 웹 초창기에 사용자 인증이 필요한 페이지를 위하여 RFC 2617 로 표준이 정의 되었다.TLS/암호 알고리즘 쉽게 이해하기(14) - PKI and X.509https://blog.humminglab.io/posts/tls-cryptography-14-x509/Sun, 02 Apr 2023 20:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/tls-cryptography-14-x509/이전글 에서 설명한 Digital Signature 를 사용하면 문서의 서명을 검증할 수 있다. 이 서명을 체이닝으로 이어 나가면 3자 인증 기반의 PKI(Public Key Infrastructure)를 구성할 수 있다. X.509 는 ITU-T 에서 정의한 PKI 표준이다. 우리가 흔히 사용하는 인증서는 X.509 표준을 따른다. @@ -26,7 +28,4 @@ $a$ 와 $b$ 는 임의의 수로 특이점이 없도록 다음과 같은 조건 $$4 a^3 + 27b^2 \neq 0$$ 이와 같은 조건을 만족하는 곡선은 다음과 같은 모양을 가진다. b=1, a=2~-3 일 때의 모양 -만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다.TLS/암호 알고리즘 쉽게 이해하기(10) - Hashhttps://blog.humminglab.io/posts/tls-cryptography-10-hash/Sat, 16 Apr 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/tls-cryptography-10-hash/Hash 함수란 임의의 길이의 데이타를 축약하여 고정된 길이의 데이타로 매핑하는 함수를 말한다. -데이타 검색을 위한 hash 함수, 데이타 손상을 검출하기 위한 CRC32 도 hash 함수 이지만, 이 글에서 언급하는 것은 암호화 해시 함수이다. -각 용도에 따라서 해시 함수의 특성은 다음처럼 다를 수 있다. -데이터 검색용: 모든 입력 데이타에 대해서 hash 결과값이 균등 분포를 가져야 한다. 데이타 손상 검출용: 원하는 비트 개수 까지의 오류에 대해서 정확히 검출되어야 하고, 알고리즘에 따라서 제한된 비트 개수 까지 오류 복원이 가능하여야 한다. \ No newline at end of file +만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다. \ No newline at end of file diff --git a/page/2/index.html b/page/2/index.html index 88d8e68..9ce7871 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -1,6 +1,10 @@ -All about IoT

TLS/암호 알고리즘 쉽게 이해하기(10) - Hash

Hash 함수란 임의의 길이의 데이타를 축약하여 고정된 길이의 데이타로 매핑하는 함수를 말한다. +데이타 검색을 위한 hash 함수, 데이타 손상을 검출하기 위한 CRC32 도 hash 함수 이지만, 이 글에서 언급하는 것은 암호화 해시 함수이다. +각 용도에 따라서 해시 함수의 특성은 다음처럼 다를 수 있다. +데이터 검색용: 모든 입력 데이타에 대해서 hash 결과값이 균등 분포를 가져야 한다. 데이타 손상 검출용: 원하는 비트 개수 까지의 오류에 대해서 정확히 검출되어야 하고, 알고리즘에 따라서 제한된 비트 개수 까지 오류 복원이 가능하여야 한다.

TLS/암호 알고리즘 쉽게 이해하기(9) - Digital Signature

DSA는 Digital Signature Algorothm 의 약자로, 미국 NIST 에서 제정한 디지털 서명 알고리즘이다. 이번 글에서는 이와 같은 디지털 서명에 관한 전반적인 사항을 다음과 같은 순서로 정리한다. RSA 서명 알고리즘 ElGamal 서명 알고리즘 DSA 서명 알고리즘 OpenSSL 을 이용한 동작 확인 RSA SignatureRSA 서명 방식은 앞의 RSA 글에서 언급한 것과 같이 개인키로 문서의 Hash 값을 암호화 하는 것으로 RSA의 동작 원리를 알고 있으면 직관적이다. 관련 표준은 PKCS#1의 8장 을 보면 된다.

TLS/암호 알고리즘 쉽게 이해하기(8) - RSA

이전글 Yocto에 OSTree upgrade 적용(1) - 이미지 생성 에서는 Yocto 빌드 과정을 통한 target 에 write 할 이미지를 만드는 과정까지 설명 하였다. 이번글에서는 부팅 이미지를 이용하여 부팅 절차를 설명한다. 디스크 이미지 파일최종적으로 디스크에 쓰는 이미지를 Yocto 의 wic 툴을 이용하여 확인해 보면 다음과 같이 두개의 partition 으로 구성된다. -Partiton 1(fat16): DOS FAT16 의 부팅 디스크로 u-boot 과 부팅에 필요한 설정 파일이 있다. 파일 중 boot.scr 파일이 있는데, 이 파일로 u-boot 의 script를 대체하여 OSTree 이미지가 로드되도록 한다.

TLS/암호 알고리즘 쉽게 이해하기(2) - Random

암호 알고리즘에서 난수는 중요한 요소이다. 예를 들어 암호 키 생성 시에도 난수로 만드는데, 생성된 난수가 편향성을 가지게 되면 암호 알고리즘이 아무리 좋아도 취약해 질 수 밖에 없다. -한 예로 오래전 일이지만, 2008년 Debian linux OpenSSL 0.9.8 의 잘못된 patch로 seed를 current process ID 로만 사용하여 결과적으로 65,536개의 값 중 하나로 난수가 생성되어 brute force 공격으로 키를 찾을 수 있는 문제가 발생한 적도 있고, 이외에도 CWE(Commn Weakness Enumeration) 에서 random 으로 검색해보면 문제가 되었던 여러 케이스들을 찾아 볼 수 있다.
+Partiton 1(fat16): DOS FAT16 의 부팅 디스크로 u-boot 과 부팅에 필요한 설정 파일이 있다. 파일 중 boot.scr 파일이 있는데, 이 파일로 u-boot 의 script를 대체하여 OSTree 이미지가 로드되도록 한다.
Read more...
 YoctoOSTreeOTA
\ No newline at end of file diff --git a/page/3/index.html b/page/3/index.html index d6cc167..1cf1743 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -1,6 +1,8 @@ -All about IoT

TLS/암호 알고리즘 쉽게 이해하기(2) - Random

암호 알고리즘에서 난수는 중요한 요소이다. 예를 들어 암호 키 생성 시에도 난수로 만드는데, 생성된 난수가 편향성을 가지게 되면 암호 알고리즘이 아무리 좋아도 취약해 질 수 밖에 없다. +한 예로 오래전 일이지만, 2008년 Debian linux OpenSSL 0.9.8 의 잘못된 patch로 seed를 current process ID 로만 사용하여 결과적으로 65,536개의 값 중 하나로 난수가 생성되어 brute force 공격으로 키를 찾을 수 있는 문제가 발생한 적도 있고, 이외에도 CWE(Commn Weakness Enumeration) 에서 random 으로 검색해보면 문제가 되었던 여러 케이스들을 찾아 볼 수 있다.

TLS/암호 알고리즘 쉽게 이해하기(1) - 개요

HTTPS의 SSL/TLS를 이해하는 것은 생각만큼 쉽지 않다. React, kubernetes 같이 오픈 생태계에서 핫 한 분야들은 다양한 시각으로 설명한 자료들이 많아 여러 방법으로 이해할 수도 있겠지만, 수십여년간 수학자, 암호학자들에게서 다듬어진 암호학에 대해서는 말랑말랑한 자료를 찾기가 쉽지는 않다. 좋은 자료라고 찾아 보아도 읽다 보면 이내 수많은 용어들과 수학 이론에 막혀 버리곤 한다. 그렇다고 제대로된 이해없이 SSL/TLS 나 암호화 알고리즘을 사용하게 되면 작은 실수로 인하여 보안에 심각한 문제를 만들 수도 있다. 여기에서는 일반 개발자를 위한 관점으로 암호 알고리즘과 TLS/SSL을 정리해 보기로 한다.

Yocto에 OSTree upgrade 적용(1) - 이미지 생성

Linux PC 의 경우 각 배포본 마다 yum, rpm, dpkg 등의 package manager를 제공하여, 이를 이용하여 패키지를 최신 버전으로 유지 관리할 수 있다. 임베디드의 경우도 Raspberry Pi OS, armbian 은 PC 에서 사용하는 package manager 방식을 제공하고, Yocto 도 rpm 등을 이용하여 패키지 관리가 가능하다. @@ -24,8 +26,5 @@ 개요TLS 채널의 초기 셋업 절차는 크게 보면 다음과 같은 절차로 이루어진다. 서버 인증서를 받아서 검증하기 필요하면 클라이언트 인증서를 받아서 검증하기 암호화 방식을 이용하여 대칭키 교환 대칭키를 이용한 암호화된 데이타 송수신 패킷을 분석하기에 필요한 사항은 결국은 위 세번째 과정에서 교환한 대칭키(Master Secret)를 얻는 것이다.

OCI, WireGuard 로 무료 공인 IPv6 주소 사용하기

IPv6 서비스를 개발하거나 시험하려는 경우 국내에서 기업용 인터넷이 아닌 경우에는 IPv6 주소를 이용하기가 쉽지 않다. IPv4 주소만 제공하는 가정용 인터넷이나 LTE 망에서 Oracle Cloud Infrastruct(OCI) Free Tier 를 사용하여 무료로 공인 IPv6 망을 구성하는 방법을 설명한다. -시스템 구성 다른 방법들공인 IPv6 를 할당받는 가장 쉬운 방법은 IPv6 TunnelBrokwer 를 이용하는 것이다. 미국 ISP 업체인 Hurricane Electric 에서 제공하는 Tunnel Broker는 아래 주소로 접속하여 가입하면 무료로 IPv6 주소를 할당 받아 사용할 수 있다.

Yocto Project History

Yocto Project를 보면 OpenEmbedded, bitbake, poky 와 같은 용어들이 나온다. Bitbake는 Yocto Project의 make 툴이라고 이해하면 되는데, 다른 용어는 어떤 의미 인지 모호할 수 있다. OpenEmbedded와 Yocto Project와의 관계는 어떤 것인지, Poky는 범위가 어떤 것인지 메뉴얼을 보아도 정확히 감을 잡기가 어렵다. -개념적으로 잘 정리된 관계는 Yocto Project Overview and Concepts Manual, 2.1 What is the Yocto Proejct?"에 있는 아래 그림이다. -Yocto Elements 우선은 이를 이해하기 위하여는 Yocto Project가 발전한 변천사를 보는 것이 좋다.
+시스템 구성 다른 방법들공인 IPv6 를 할당받는 가장 쉬운 방법은 IPv6 TunnelBrokwer 를 이용하는 것이다. 미국 ISP 업체인 Hurricane Electric 에서 제공하는 Tunnel Broker는 아래 주소로 접속하여 가입하면 무료로 IPv6 주소를 할당 받아 사용할 수 있다.
Read more...
 OCIWireGuardIPv6
\ No newline at end of file diff --git a/page/4/index.html b/page/4/index.html index 86d958c..bc4fe24 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -1,6 +1,9 @@ -All about IoT

Yocto Project History

Yocto Project를 보면 OpenEmbedded, bitbake, poky 와 같은 용어들이 나온다. Bitbake는 Yocto Project의 make 툴이라고 이해하면 되는데, 다른 용어는 어떤 의미 인지 모호할 수 있다. OpenEmbedded와 Yocto Project와의 관계는 어떤 것인지, Poky는 범위가 어떤 것인지 메뉴얼을 보아도 정확히 감을 잡기가 어렵다. +개념적으로 잘 정리된 관계는 Yocto Project Overview and Concepts Manual, 2.1 What is the Yocto Proejct?"에 있는 아래 그림이다. +Yocto Elements 우선은 이를 이해하기 위하여는 Yocto Project가 발전한 변천사를 보는 것이 좋다.

Orange Pi 보드용 이미지 수작업으로 만들기

Orange Pi 는 Allwinner(SUNXI) 의 application chip으로 만들어진 single board computer이다. Raspberry Pi 와 비슷하다고 볼 수 있는데, 이것과 비교하여 주요 장단점은 다음과 같다. 장점 Cortex A8 single core부터 octa core 까지 라인업 Mali400 GPU 내장 무엇보다도 가격이 저렴. 아래에서 사용하는 Orange Pi R1의 경우 소비자가가 $9.99. 단점 CPU 사양이 제대로 공개가 안됨. 그나마 H3 정도까지는 인터넷 커뮤니티에 어느정도 공개 됨 발열이 심함. Orange Pi R1의 경우도 별도로 방열판을 붙어야 안정적임 이 문서에서는 Orange Pi R1을 제품에 적용하기 위하여 보드 이미지 설정을 하는 과정을 정리한 것이다.

WICED eventloop library

WICED와 같은 임베디드 디바이스용 SDK는 FreeRTOS, ThreadX와 같은 RTOS의 multi tasking 기능을 이용하여 여러개의 task를 생성하여 주변기기를 제어하거나 네트워크로 데이타 송수신 한다. 일반적인 산업용 기기의 센서 동작은 realtime 요구 사항에 맞추어 task로 분리하여 작성하면 된다. 하지만 가정용 IoT 기기를 만들다 보면 이와 같은 multi task 방식 보다는 하나의 task에서 event driven 방식으로 구현을 하는 것이 편리할 때가 있다. diff --git a/posts/httd-sha-256-digest-auth/index.html b/posts/httd-sha-256-digest-auth/index.html index 77ef216..3be9878 100644 --- a/posts/httd-sha-256-digest-auth/index.html +++ b/posts/httd-sha-256-digest-auth/index.html @@ -4,7 +4,7 @@ RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication RFC 7616 - HTTP Digest Access Authentication 웹 초창기에 사용자 인증이 필요한 페이지를 위하여 RFC 2617 로 표준이 정의 되었다.">
+

위 처럼 구현을 해보아도 앞의 그림 처럼 브라우저에서 사용자정보 입력 창을 띄울때는 어떠한 callback도 javascript에서 받지 못한다.

이유는 브라우저 구현에서 다음과 같은 조건이면 브라우저가 자체 사용자 정보 입력창을 띄우기 때문이다.

이를 회피하기 위하여는 다음과 같은 방법 중 하나로 서버에서 수정을 해주어야 한다.

이렇게 하면 브라우저에서 별도의 처리를하지 않아, 위 코드와 같은 방식으로 구현이 가능하다.

서버에서의 응답 수정 없이 대응 하려면 브라우저에 따라 처리를 다르게 하여야 한다.

브라우저의 인증창을 열리고, 이곳에 사용자가 정보를 입력하게 되면 이 정보는 javascript에서는 엑세스가 블가능하므로 사용자 인증 절차가 꼬이게 되므로 충분한 검증을 하여야 할 것이다. 브라우저 종류나 버전마다 특성이 달라질 수 있어, 동작을 보장하기 위하여는 충분한 시험을 하여 검증 할 필요가 있다.

Back | Home
+
+04-18
\ No newline at end of file diff --git a/posts/index.xml b/posts/index.xml index 04ebbf7..1aa7c7c 100644 --- a/posts/index.xml +++ b/posts/index.xml @@ -1,4 +1,6 @@ -All Posts - All about IoThttps://blog.humminglab.io/posts/All Posts | All about IoTHugo -- gohugo.ioenSun, 23 Jul 2023 09:00:00 +0900HTTP SHA-256 Digest Authenticationhttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/Sun, 23 Jul 2023 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. +All Posts - All about IoThttps://blog.humminglab.io/posts/All Posts | All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.HTTP SHA-256 Digest Authenticationhttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/Sun, 23 Jul 2023 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/httd-sha-256-digest-auth/일반 웹 환경에서는 이제는 사양화 되어 거의 사용하지는 않지만, CCTV 표준인 ONVIF나 관련 보안 인증에서는 아직까지 HTTP Digest Authentication 을 사용한다. 이 글에서는 HTTP Digest Authentication의 전반적인 사항을 정리한다. 목차는 다음과 같다. HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차 Digest Authentication 웹 환경에서 더이상 사용하지 않는 이유 브라우저에서 SHA-256 Digest Authentication 구현 방법 HTTP MD5, SHA-2 (SHA-256) Digest 인증 절차HTTP Authentication은 RFC 표준으로 다음과 같이 정의 되어 있다. RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication RFC 7616 - HTTP Digest Access Authentication 웹 초창기에 사용자 인증이 필요한 페이지를 위하여 RFC 2617 로 표준이 정의 되었다.TLS/암호 알고리즘 쉽게 이해하기(14) - PKI and X.509https://blog.humminglab.io/posts/tls-cryptography-14-x509/Sun, 02 Apr 2023 20:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/tls-cryptography-14-x509/이전글 에서 설명한 Digital Signature 를 사용하면 문서의 서명을 검증할 수 있다. 이 서명을 체이닝으로 이어 나가면 3자 인증 기반의 PKI(Public Key Infrastructure)를 구성할 수 있다. X.509 는 ITU-T 에서 정의한 PKI 표준이다. 우리가 흔히 사용하는 인증서는 X.509 표준을 따른다. @@ -26,7 +28,4 @@ $a$ 와 $b$ 는 임의의 수로 특이점이 없도록 다음과 같은 조건 $$4 a^3 + 27b^2 \neq 0$$ 이와 같은 조건을 만족하는 곡선은 다음과 같은 모양을 가진다. b=1, a=2~-3 일 때의 모양 -만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다.TLS/암호 알고리즘 쉽게 이해하기(10) - Hashhttps://blog.humminglab.io/posts/tls-cryptography-10-hash/Sat, 16 Apr 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/tls-cryptography-10-hash/Hash 함수란 임의의 길이의 데이타를 축약하여 고정된 길이의 데이타로 매핑하는 함수를 말한다. -데이타 검색을 위한 hash 함수, 데이타 손상을 검출하기 위한 CRC32 도 hash 함수 이지만, 이 글에서 언급하는 것은 암호화 해시 함수이다. -각 용도에 따라서 해시 함수의 특성은 다음처럼 다를 수 있다. -데이터 검색용: 모든 입력 데이타에 대해서 hash 결과값이 균등 분포를 가져야 한다. 데이타 손상 검출용: 원하는 비트 개수 까지의 오류에 대해서 정확히 검출되어야 하고, 알고리즘에 따라서 제한된 비트 개수 까지 오류 복원이 가능하여야 한다. \ No newline at end of file +만일 위 조건을 만족하지 않는 경우는 아래와 같이 첨 점이거나 교차하는 특이점이 있다. \ No newline at end of file diff --git a/posts/page/2/index.html b/posts/page/2/index.html index e97458a..f73ade3 100644 --- a/posts/page/2/index.html +++ b/posts/page/2/index.html @@ -1,6 +1,7 @@ All Posts - All about IoT
+02-14
\ No newline at end of file diff --git a/posts/page/3/index.html b/posts/page/3/index.html index cd00507..42a1b65 100644 --- a/posts/page/3/index.html +++ b/posts/page/3/index.html @@ -1,6 +1,7 @@ All Posts - All about IoT
+12-10
\ No newline at end of file diff --git a/posts/page/4/index.html b/posts/page/4/index.html index 90181ff..5c29173 100644 --- a/posts/page/4/index.html +++ b/posts/page/4/index.html @@ -1,6 +1,7 @@ All Posts - All about IoT

All Posts

2019

2018

Python 비동기 프로그래밍 제대로 이해하기(2/2) - Asyncio, Coroutine diff --git a/posts/yocto-golang-230816/index.html b/posts/yocto-golang-230816/index.html new file mode 100644 index 0000000..f81e2ac --- /dev/null +++ b/posts/yocto-golang-230816/index.html @@ -0,0 +1,123 @@ +Yocto 에서 Go 프로젝트 관리 - All about IoT

Yocto 에서 Go 프로젝트 관리

Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. +하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. +이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다.

우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다.

2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. +Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. +하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.

 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+
$ find `go env GOPATH` -type d -depth 4
+/Users/yslee/go/src/golang.org/x/sys
+/Users/yslee/go/src/github.com/go-ble/ble
+/Users/yslee/go/src/github.com/sirupsen/logrus
+/Users/yslee/go/src/github.com/JuulLabs-OSS/cbgo
+/Users/yslee/go/src/github.com/raff/goble
+/Users/yslee/go/src/github.com/mattn/go-isatty
+/Users/yslee/go/src/github.com/mattn/go-colorable
+/Users/yslee/go/src/github.com/mgutz/ansi
+/Users/yslee/go/src/github.com/mgutz/logxi
+/Users/yslee/go/src/github.com/pkg/errors
+

이 방식의 가장 큰 단점은 모듈의 버전 관리가 안된다는 것이다. +예를 들어 2개의 go 프로젝트에서 사용하는 모듈의 버전이 다르다면 문제가 발생한다 +(Python의 PIP 패키지 방식의 문제와 유사하다).

2018년 릴리즈된 Go 1.11 부터는 모듈 패키지 관리 기능이 새로 추가되었다. go mod로 시작하는 명령이라고 보면 된다.

패키지를 관리 기능이 지원하면서 프로젝트에는 go.mod 파일이 생성되어 패키지의 버전을 지정 할 수 있고, go get을 하면 아래 처럼 패키지가 설치된다.

 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+
$ find `go env GOPATH` -type d -depth 5
+/Users/yslee/go/pkg/mod/cache/download/sumdb
+/Users/yslee/go/pkg/mod/cache/download/gopkg.in
+/Users/yslee/go/pkg/mod/cache/download/golang.org
+/Users/yslee/go/pkg/mod/cache/download/github.com
+/Users/yslee/go/pkg/mod/golang.org/x/sys@v0.0.0-20211204120058-94396e421777
+/Users/yslee/go/pkg/mod/github.com/!juul!labs-!o!s!s/cbgo@v0.0.1
+/Users/yslee/go/pkg/mod/github.com/go-ble/ble@v0.0.0-20230130210458-dd4b07d15402
+/Users/yslee/go/pkg/mod/github.com/konsorten/go-windows-terminal-sequences@v1.0.1
+/Users/yslee/go/pkg/mod/github.com/sirupsen/logrus@v1.5.0
+/Users/yslee/go/pkg/mod/github.com/raff/goble@v0.0.0-20190909174656-72afc67d6a99
+/Users/yslee/go/pkg/mod/github.com/mattn/go-colorable@v0.1.6
+/Users/yslee/go/pkg/mod/github.com/mattn/go-isatty@v0.0.12
+/Users/yslee/go/pkg/mod/github.com/mgutz/ansi@v0.0.0-20170206155736-9520e82c474b
+/Users/yslee/go/pkg/mod/github.com/mgutz/logxi@v0.0.0-20161027140823-aebf8a7d67ab
+/Users/yslee/go/pkg/mod/github.com/pkg/errors@v0.8.1
+

기존 방식과 달리 pkg/mod 에 설치되고, 디렉토리에 @0.0.12 와 같이 버전명이 추가된 것을 확인할 수 있다. 이렇게 하여 프로젝트들이 다른 모듈 버전을 사용하여도 문제없이 cache로 관리된다.

기존 방식을 사용할지 패키지 방식을 사용할지는 GO111MODULE 환경 변수로 설정할 수 있다. 이 환경 변수 설정도 Go 버전에 따라서 다르다. GO111MODULE 관련 설정은 아래 링크를 보면 Go 버전별로 정리가 된 글을 볼 수 있으나, 최신 버전에서는 계속 변하고 있다.

이 글에서는 패키지 관리 방식을 사용한 것만 대상으로 설명한다.

Yocto에 C/C++ 언어가 아닌 Go 언어를 추가하는 것은 깔끔하지 않다.

이는 Go 언어만의 문제가 아니라 패키지 관리자가 포함된 현대 프로그래밍 언어는 모두 해당되는 것으로 Yocto 가 지향하는 목표와 충돌하기 때문이다.

첫번째로는 패키지 관리자 방식이 Yocto의 Reproducible Builds 방식에 위배 된다.

패키지 방식의 경우 프로젝트에서 참조하는 모든 하위 패키지들 버전이 정확히 패키지 관리자에 명시가 되지 않는 한 빌드 때마다 다른 버전을 참조하여 다른 결과물이 나올 수 있다.

두번째로는 License 관리 문제이다. Yocto에서는 license를 엄격히 관리하여 최종 결과물에 참조된 사항들을 라이센스 조건에 맞도록 구분하여 관리할 수 있다. 하지만 이와 같이 패키지로 줄줄이 딸려 들어간 모듈들의 license 조건이 충돌 될 가능성이 있고, yocto 에서 이들 모듈을 라이센스 별로 분리가 안된다.

Go 프로젝트를 위하여 첫번째 문제를 해결하는 방법은, Vendoring 을 이용하는 것이다.

go mod vendor 명령을 실행하면 아래처럼 참고하는 모든 패키지들이 프로젝트의 vendor 디렉토리 안에 모듈이 설치된다.

 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+
$ go mod vendor 
+$ find . -type d -depth 4
+./vendor/golang.org/x/sys
+./vendor/github.com/go-ble/ble
+./vendor/github.com/konsorten/go-windows-terminal-sequences
+./vendor/github.com/sirupsen/logrus
+./vendor/github.com/JuulLabs-OSS/cbgo
+./vendor/github.com/raff/goble
+./vendor/github.com/mattn/go-isatty
+./vendor/github.com/mattn/go-colorable
+./vendor/github.com/mgutz/ansi
+./vendor/github.com/mgutz/logxi
+./vendor/github.com/pkg/errors
+

이와 같이 vendoring 기능을 이용하여 참조하는 모든 패키지를 repository 안에 포함하게 되면 항상 동일한 결과물을 얻을 수 있게 된다.

이 경우 빌드를 하려면 아래처럼 -mod를 추가해 주어야 한다.

1
+
$ go build -mod=vendor
+

두번째 사항인 라이센스 관련 문제는 아직은 Yocto에서 Go 프로젝트는 해결 방안이 없는 것 같다. 위와 같이 vendoring을 하여 소스를 관리하는 것도 라이센스 조건에 위배될 수 있다.

라이센스 조건은 이 글에서는 고민하지 않는 것으로 하나, Yocto 프로젝트 개발 시에는 이 부분에 대하여 고민을 해보아야 한다.

위에서 언급한 것과 같이 vendoring을 하는 경우에는 특별한 처리가 필요 없다.

BB recipe를 다음과 같이 작성하면 된다.

1
+2
+3
+4
+5
+6
+7
+
SRC_URI = "git://git@${GO_IMPORT};branch=main"
+
+SRCREV = "12345678"
+
+GO_IMPORT = "github.com/humminglab/go-test" 
+
+inherit go-mod
+

Go 언어는 go 패키지 처럼 위와 같이 git repository에서 받는 것만 고려되어 있다. 일반 C 프로젝트와 달리 위의 경우 github.com/humminglab/go-test 처럼 디렉토리가 생성되어 이곳에 소스가 설치된다. +그래서 local 에 있는 압축된 패키지를 사용하려는 경우에는 디렉토리 조정이 필요하다.

만일 vendoring 하지 않은 go 프로젝트를 yocto로 위처럼 만들어 빌드해보면 compile 시 패키지를 다운로드 받지 못한다는 proxy 관련 에러가 발생한다. 이유는 Yocto에서는 compile 시 network 접근은 금지하기 때문이다.

이 부분은 임시로 patch 하려면 다음과 같이 BB 파일에 추가할 수 있다.

1
+2
+3
+4
+
# Workaround for network access issue during compile step
+# this needs to be fixed in the recipes buildsystem to move
+# this such that it can be accomplished during do_fetch task
+do_compile[network] = "1"
+

위 라인을 추가하게 되면 compile 시 네트워크 사용이 가능해져, 의존성 있는 패키지를 다운로드 받을 수 있다. +Yocto 내의 recipe를 찾아보면 meta-openembedded/meta-oe/recipes-dbs/influxdb 같은 경우도 이와 같은 방식으로 패키지를 설치하고 있다.

NPM을 이용하는 NodeJS의 경우에는 패키지 설치에 대해서 yocto의 devtool 로 지원을 하고 있다.

점차 다른 언어들도 embedded system에서도 사용이 늘어나는 추세라 Yocto 에서도 일관된 관리 방식을 제공될 것으로 보인다. +Yocto 프로젝트를 고려하면서 이들 사항에 대해서도 주기적으로 체크가 필요해 보인다.

\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 5c8e01e..cfb895e 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://blog.humminglab.io/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/authentication/2023-07-23T09:00:00+09:00https://blog.humminglab.io/authors/2023-07-23T09:00:00+09:00https://blog.humminglab.io/categories/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/http/2023-07-23T09:00:00+09:00https://blog.humminglab.io/posts/httd-sha-256-digest-auth/2023-07-23T09:00:00+09:00https://blog.humminglab.io/posts/2023-07-23T09:00:00+09:00https://blog.humminglab.io/categories/security/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/sha/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/2023-07-23T09:00:00+09:00https://blog.humminglab.io/authors/yslee/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/pki/2023-04-02T20:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-14-x509/2023-04-02T20:00:00+09:00https://blog.humminglab.io/tags/x.509/2023-04-02T20:00:00+09:00https://blog.humminglab.io/categories/development/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/platformio/2022-06-25T09:00:00+09:00https://blog.humminglab.io/posts/platformio-2-stm32-cube/2022-06-25T09:00:00+09:00https://blog.humminglab.io/series/platformio-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/2022-06-25T09:00:00+09:00https://blog.humminglab.io/series/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/smt32cube/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/stm32/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/vscode/2022-06-25T09:00:00+09:00https://blog.humminglab.io/posts/platformio-1/2022-06-24T09:00:00+09:00https://blog.humminglab.io/tags/journald/2022-06-07T09:00:00+09:00https://blog.humminglab.io/tags/linux/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/systemd/2022-06-07T09:00:00+09:00https://blog.humminglab.io/posts/yocto-systemd/2022-06-07T09:00:00+09:00https://blog.humminglab.io/tags/sysv/2022-06-07T09:00:00+09:00https://blog.humminglab.io/tags/yocto/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/rsyslogs/2022-05-28T09:00:00+09:00https://blog.humminglab.io/tags/syslog/2022-05-28T09:00:00+09:00https://blog.humminglab.io/posts/syslog-journald/2022-05-28T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-mac-ae-aehd-aes-gcm-chacha20-poly1305/2022-04-30T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-13-mac-aead/2022-04-30T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-ecc-ecdh-ecdsa/2022-06-07T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-12-ecc2/2022-06-07T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-11-ecc/2022-04-19T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-md5-sha-blake2/2022-06-16T10:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-10-hash/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/cryptography-elgamal-dsa-rsa/2022-04-12T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-9-dsa/2022-04-12T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-rsa-ecc-pcks/2022-03-21T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-8-rsa/2022-03-21T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-modulo-diffie-hellman-dhe-ecdhe/2022-03-10T16:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-7-diffie-hellman/2022-03-10T16:00:00+09:00https://blog.humminglab.io/tags/cryptography-modulo-rsa-diffie-hellman/2022-03-03T12:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-6-math/2022-03-03T12:00:00+09:00https://blog.humminglab.io/tags/cryptography/2022-03-02T18:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-5-stream-cipher/2022-03-02T18:00:00+09:00https://blog.humminglab.io/tags/cryptography-aes-hmac/2022-04-25T20:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-4-block-cipher-mode/2022-04-25T20:00:00+09:00https://blog.humminglab.io/tags/3des/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/aes/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/des/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/openssl/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/tls/2022-03-02T16:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-3-block-cipher/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/ostree/2022-02-16T22:00:00+09:00https://blog.humminglab.io/tags/ota/2022-02-16T22:00:00+09:00https://blog.humminglab.io/tags/u-boot/2022-02-16T22:00:00+09:00https://blog.humminglab.io/tags/uptane/2022-02-16T22:00:00+09:00https://blog.humminglab.io/posts/yocto-ostree-meta-updater-3/2022-02-16T22:00:00+09:00https://blog.humminglab.io/posts/yocto-ostree-meta-updater-2/2022-02-16T22:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-2-random/2022-02-11T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-1-overview/2022-02-10T09:00:00+09:00https://blog.humminglab.io/posts/yocto-ostree-meta-updater-1/2022-02-14T09:00:00+09:00https://blog.humminglab.io/tags/netgear/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/network/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/port-mirroring/2022-01-19T10:00:00+09:00https://blog.humminglab.io/posts/port-mirroring-network-switch-gs108ev3/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/wireshark/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/orangepi/2022-06-16T10:00:00+09:00https://blog.humminglab.io/series/yocto-project-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/2022-06-16T10:00:00+09:00https://blog.humminglab.io/posts/yocto-project-on-orange-pi-3/2022-01-18T23:00:00+09:00https://blog.humminglab.io/posts/yocto-project-on-orange-pi-2/2022-01-18T22:00:00+09:00https://blog.humminglab.io/tags/c/2021-01-04T19:00:00+09:00https://blog.humminglab.io/tags/javascript/2021-01-04T19:00:00+09:00https://blog.humminglab.io/tags/nearley/2021-01-04T19:00:00+09:00https://blog.humminglab.io/posts/nearley-builder-and-loader/2021-01-04T19:00:00+09:00https://blog.humminglab.io/tags/parser/2021-01-04T19:00:00+09:00https://blog.humminglab.io/posts/yocto-project-on-orange-pi-1/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/mbedtls/2021-12-22T10:00:00+09:00https://blog.humminglab.io/tags/webproxy/2021-12-22T10:00:00+09:00https://blog.humminglab.io/posts/how-to-capture-tls-with-wireshark/2021-12-22T10:00:00+09:00https://blog.humminglab.io/tags/ipv6/2021-12-11T09:00:00+09:00https://blog.humminglab.io/tags/oci/2021-12-11T09:00:00+09:00https://blog.humminglab.io/posts/how-to-oci-wireguard-public-ipv6/2021-12-11T09:00:00+09:00https://blog.humminglab.io/tags/wireguard/2021-12-11T09:00:00+09:00https://blog.humminglab.io/categories/embedded-linux/2019-01-06T09:00:00+09:00https://blog.humminglab.io/posts/yocto-project-history/2019-01-06T09:00:00+09:00https://blog.humminglab.io/posts/orange-pi-based-factory-image/2018-05-30T10:00:00+09:00https://blog.humminglab.io/posts/wiced-event-loop/2018-04-17T17:00:00+09:00https://blog.humminglab.io/posts/wifi-for-iot-product/2018-04-17T05:00:00+09:00https://blog.humminglab.io/tags/iot/2018-04-17T05:00:00+09:00https://blog.humminglab.io/categories/iot/2018-04-17T05:00:00+09:00https://blog.humminglab.io/tags/wi-fi/2018-04-17T05:00:00+09:00https://blog.humminglab.io/tags/python/2022-08-15T15:00:00+09:00https://blog.humminglab.io/categories/python/2022-08-15T15:00:00+09:00https://blog.humminglab.io/posts/python-coroutine-programming-2/2018-03-30T17:00:00+09:00https://blog.humminglab.io/posts/python-coroutine-programming-1/2022-08-15T15:00:00+09:00https://blog.humminglab.io/tags/github/2017-11-10T16:18:00+09:00https://blog.humminglab.io/posts/github-through-proxy/2017-11-10T16:18:00+09:00https://blog.humminglab.io/tags/proxy/2017-11-10T16:18:00+09:00https://blog.humminglab.io/posts/how-to-make-sdcard-disk-image/2017-10-25T18:00:00+09:00https://blog.humminglab.io/tags/coap/2016-12-14T20:26:00+09:00https://blog.humminglab.io/posts/coap-protocol/2016-12-14T20:26:00+09:00https://blog.humminglab.io/tags/mqtt/2016-10-14T09:00:00+09:00https://blog.humminglab.io/posts/mqtt-protocol/2016-10-14T09:00:00+09:00https://blog.humminglab.io/series/tls/%EC%95%94%ED%98%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/ \ No newline at end of file +https://blog.humminglab.io/2023-08-16T12:00:00+09:00https://blog.humminglab.io/authors/2023-08-16T12:00:00+09:00https://blog.humminglab.io/categories/2023-08-16T12:00:00+09:00https://blog.humminglab.io/categories/development/2023-08-16T12:00:00+09:00https://blog.humminglab.io/tags/go/2023-08-16T12:00:00+09:00https://blog.humminglab.io/tags/golang/2023-08-16T12:00:00+09:00https://blog.humminglab.io/posts/2023-08-16T12:00:00+09:00https://blog.humminglab.io/tags/2023-08-16T12:00:00+09:00https://blog.humminglab.io/tags/yocto/2023-08-16T12:00:00+09:00https://blog.humminglab.io/posts/yocto-golang-230816/2023-08-16T12:00:00+09:00https://blog.humminglab.io/authors/yslee/2023-08-16T12:00:00+09:00https://blog.humminglab.io/tags/authentication/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/http/2023-07-23T09:00:00+09:00https://blog.humminglab.io/posts/httd-sha-256-digest-auth/2023-07-23T09:00:00+09:00https://blog.humminglab.io/categories/security/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/sha/2023-07-23T09:00:00+09:00https://blog.humminglab.io/tags/pki/2023-04-02T20:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-14-x509/2023-04-02T20:00:00+09:00https://blog.humminglab.io/tags/x.509/2023-04-02T20:00:00+09:00https://blog.humminglab.io/tags/platformio/2022-06-25T09:00:00+09:00https://blog.humminglab.io/posts/platformio-2-stm32-cube/2022-06-25T09:00:00+09:00https://blog.humminglab.io/series/platformio-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/2022-06-25T09:00:00+09:00https://blog.humminglab.io/series/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/smt32cube/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/stm32/2022-06-25T09:00:00+09:00https://blog.humminglab.io/tags/vscode/2022-06-25T09:00:00+09:00https://blog.humminglab.io/posts/platformio-1/2022-06-24T09:00:00+09:00https://blog.humminglab.io/tags/journald/2022-06-07T09:00:00+09:00https://blog.humminglab.io/tags/linux/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/systemd/2022-06-07T09:00:00+09:00https://blog.humminglab.io/posts/yocto-systemd/2022-06-07T09:00:00+09:00https://blog.humminglab.io/tags/sysv/2022-06-07T09:00:00+09:00https://blog.humminglab.io/tags/rsyslogs/2022-05-28T09:00:00+09:00https://blog.humminglab.io/tags/syslog/2022-05-28T09:00:00+09:00https://blog.humminglab.io/posts/syslog-journald/2022-05-28T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-mac-ae-aehd-aes-gcm-chacha20-poly1305/2022-04-30T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-13-mac-aead/2022-04-30T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-ecc-ecdh-ecdsa/2022-06-07T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-12-ecc2/2022-06-07T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-11-ecc/2022-04-19T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-md5-sha-blake2/2022-06-16T10:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-10-hash/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/cryptography-elgamal-dsa-rsa/2022-04-12T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-9-dsa/2022-04-12T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-rsa-ecc-pcks/2022-03-21T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-8-rsa/2022-03-21T09:00:00+09:00https://blog.humminglab.io/tags/cryptography-modulo-diffie-hellman-dhe-ecdhe/2022-03-10T16:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-7-diffie-hellman/2022-03-10T16:00:00+09:00https://blog.humminglab.io/tags/cryptography-modulo-rsa-diffie-hellman/2022-03-03T12:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-6-math/2022-03-03T12:00:00+09:00https://blog.humminglab.io/tags/cryptography/2022-03-02T18:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-5-stream-cipher/2022-03-02T18:00:00+09:00https://blog.humminglab.io/tags/cryptography-aes-hmac/2022-04-25T20:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-4-block-cipher-mode/2022-04-25T20:00:00+09:00https://blog.humminglab.io/tags/3des/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/aes/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/des/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/openssl/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/tls/2022-03-02T16:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-3-block-cipher/2022-03-02T16:00:00+09:00https://blog.humminglab.io/tags/ostree/2022-02-16T22:00:00+09:00https://blog.humminglab.io/tags/ota/2022-02-16T22:00:00+09:00https://blog.humminglab.io/tags/u-boot/2022-02-16T22:00:00+09:00https://blog.humminglab.io/tags/uptane/2022-02-16T22:00:00+09:00https://blog.humminglab.io/posts/yocto-ostree-meta-updater-3/2022-02-16T22:00:00+09:00https://blog.humminglab.io/posts/yocto-ostree-meta-updater-2/2022-02-16T22:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-2-random/2022-02-11T09:00:00+09:00https://blog.humminglab.io/posts/tls-cryptography-1-overview/2022-02-10T09:00:00+09:00https://blog.humminglab.io/posts/yocto-ostree-meta-updater-1/2022-02-14T09:00:00+09:00https://blog.humminglab.io/tags/netgear/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/network/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/port-mirroring/2022-01-19T10:00:00+09:00https://blog.humminglab.io/posts/port-mirroring-network-switch-gs108ev3/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/wireshark/2022-01-19T10:00:00+09:00https://blog.humminglab.io/tags/orangepi/2022-06-16T10:00:00+09:00https://blog.humminglab.io/series/yocto-project-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/2022-06-16T10:00:00+09:00https://blog.humminglab.io/posts/yocto-project-on-orange-pi-3/2022-01-18T23:00:00+09:00https://blog.humminglab.io/posts/yocto-project-on-orange-pi-2/2022-01-18T22:00:00+09:00https://blog.humminglab.io/tags/c/2021-01-04T19:00:00+09:00https://blog.humminglab.io/tags/javascript/2021-01-04T19:00:00+09:00https://blog.humminglab.io/tags/nearley/2021-01-04T19:00:00+09:00https://blog.humminglab.io/posts/nearley-builder-and-loader/2021-01-04T19:00:00+09:00https://blog.humminglab.io/tags/parser/2021-01-04T19:00:00+09:00https://blog.humminglab.io/posts/yocto-project-on-orange-pi-1/2022-06-16T10:00:00+09:00https://blog.humminglab.io/tags/mbedtls/2021-12-22T10:00:00+09:00https://blog.humminglab.io/tags/webproxy/2021-12-22T10:00:00+09:00https://blog.humminglab.io/posts/how-to-capture-tls-with-wireshark/2021-12-22T10:00:00+09:00https://blog.humminglab.io/tags/ipv6/2021-12-11T09:00:00+09:00https://blog.humminglab.io/tags/oci/2021-12-11T09:00:00+09:00https://blog.humminglab.io/posts/how-to-oci-wireguard-public-ipv6/2021-12-11T09:00:00+09:00https://blog.humminglab.io/tags/wireguard/2021-12-11T09:00:00+09:00https://blog.humminglab.io/categories/embedded-linux/2019-01-06T09:00:00+09:00https://blog.humminglab.io/posts/yocto-project-history/2019-01-06T09:00:00+09:00https://blog.humminglab.io/posts/orange-pi-based-factory-image/2018-05-30T10:00:00+09:00https://blog.humminglab.io/posts/wiced-event-loop/2018-04-17T17:00:00+09:00https://blog.humminglab.io/posts/wifi-for-iot-product/2018-04-17T05:00:00+09:00https://blog.humminglab.io/tags/iot/2018-04-17T05:00:00+09:00https://blog.humminglab.io/categories/iot/2018-04-17T05:00:00+09:00https://blog.humminglab.io/tags/wi-fi/2018-04-17T05:00:00+09:00https://blog.humminglab.io/tags/python/2022-08-15T15:00:00+09:00https://blog.humminglab.io/categories/python/2022-08-15T15:00:00+09:00https://blog.humminglab.io/posts/python-coroutine-programming-2/2018-03-30T17:00:00+09:00https://blog.humminglab.io/posts/python-coroutine-programming-1/2022-08-15T15:00:00+09:00https://blog.humminglab.io/tags/github/2017-11-10T16:18:00+09:00https://blog.humminglab.io/posts/github-through-proxy/2017-11-10T16:18:00+09:00https://blog.humminglab.io/tags/proxy/2017-11-10T16:18:00+09:00https://blog.humminglab.io/posts/how-to-make-sdcard-disk-image/2017-10-25T18:00:00+09:00https://blog.humminglab.io/tags/coap/2016-12-14T20:26:00+09:00https://blog.humminglab.io/posts/coap-protocol/2016-12-14T20:26:00+09:00https://blog.humminglab.io/tags/mqtt/2016-10-14T09:00:00+09:00https://blog.humminglab.io/posts/mqtt-protocol/2016-10-14T09:00:00+09:00https://blog.humminglab.io/series/tls/%EC%95%94%ED%98%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/ \ No newline at end of file diff --git a/tags/go/index.html b/tags/go/index.html new file mode 100644 index 0000000..0037cc6 --- /dev/null +++ b/tags/go/index.html @@ -0,0 +1,5 @@ +Go - Tag - All about IoT
\ No newline at end of file diff --git a/tags/go/index.xml b/tags/go/index.xml new file mode 100644 index 0000000..577ac08 --- /dev/null +++ b/tags/go/index.xml @@ -0,0 +1,3 @@ +Go - Tag - All about IoThttps://blog.humminglab.io/tags/go/Go - Tag - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다. \ No newline at end of file diff --git a/tags/go/page/1/index.html b/tags/go/page/1/index.html new file mode 100644 index 0000000..00ca9b3 --- /dev/null +++ b/tags/go/page/1/index.html @@ -0,0 +1 @@ +https://blog.humminglab.io/tags/go/ \ No newline at end of file diff --git a/tags/golang/index.html b/tags/golang/index.html new file mode 100644 index 0000000..7b74ba7 --- /dev/null +++ b/tags/golang/index.html @@ -0,0 +1,5 @@ +Golang - Tag - All about IoT
\ No newline at end of file diff --git a/tags/golang/index.xml b/tags/golang/index.xml new file mode 100644 index 0000000..412faf1 --- /dev/null +++ b/tags/golang/index.xml @@ -0,0 +1,3 @@ +Golang - Tag - All about IoThttps://blog.humminglab.io/tags/golang/Golang - Tag - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다. \ No newline at end of file diff --git a/tags/golang/page/1/index.html b/tags/golang/page/1/index.html new file mode 100644 index 0000000..d27b261 --- /dev/null +++ b/tags/golang/page/1/index.html @@ -0,0 +1 @@ +https://blog.humminglab.io/tags/golang/ \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index e1da3d4..050f52d 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,4 +1,4 @@ All Tags - All about IoT
\ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml index 5d2eb26..4240d53 100644 --- a/tags/index.xml +++ b/tags/index.xml @@ -1 +1 @@ -Tags - Tag - All about IoThttps://blog.humminglab.io/tags/Tags - Tag - All about IoTHugo -- gohugo.ioenSun, 23 Jul 2023 09:00:00 +0900Authenticationhttps://blog.humminglab.io/tags/authentication/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/authentication/HTTPhttps://blog.humminglab.io/tags/http/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/http/SHAhttps://blog.humminglab.io/tags/sha/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/sha/PKIhttps://blog.humminglab.io/tags/pki/Sun, 02 Apr 2023 20:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/pki/X.509https://blog.humminglab.io/tags/x.509/Sun, 02 Apr 2023 20:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/x.509/PlatformIOhttps://blog.humminglab.io/tags/platformio/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/platformio/SMT32Cubehttps://blog.humminglab.io/tags/smt32cube/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/smt32cube/STM32https://blog.humminglab.io/tags/stm32/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/stm32/VSCodehttps://blog.humminglab.io/tags/vscode/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/vscode/journaldhttps://blog.humminglab.io/tags/journald/Tue, 07 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/journald/ \ No newline at end of file +Tags - Tag - All about IoThttps://blog.humminglab.io/tags/Tags - Tag - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Gohttps://blog.humminglab.io/tags/go/Wed, 16 Aug 2023 12:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/go/Golanghttps://blog.humminglab.io/tags/golang/Wed, 16 Aug 2023 12:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/golang/Yoctohttps://blog.humminglab.io/tags/yocto/Wed, 16 Aug 2023 12:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/yocto/Authenticationhttps://blog.humminglab.io/tags/authentication/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/authentication/HTTPhttps://blog.humminglab.io/tags/http/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/http/SHAhttps://blog.humminglab.io/tags/sha/Sun, 23 Jul 2023 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/sha/PKIhttps://blog.humminglab.io/tags/pki/Sun, 02 Apr 2023 20:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/pki/X.509https://blog.humminglab.io/tags/x.509/Sun, 02 Apr 2023 20:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/x.509/PlatformIOhttps://blog.humminglab.io/tags/platformio/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/platformio/SMT32Cubehttps://blog.humminglab.io/tags/smt32cube/Sat, 25 Jun 2022 09:00:00 +0900HummingLabhttps://blog.humminglab.io/tags/smt32cube/ \ No newline at end of file diff --git a/tags/yocto/index.html b/tags/yocto/index.html index f9eaee7..dc92856 100644 --- a/tags/yocto/index.html +++ b/tags/yocto/index.html @@ -1,6 +1,7 @@ Yocto - Tag - All about IoT

 Yocto

2023

2022

Yocto에 OSTree upgrade 적용(2) - 부팅 절차 diff --git a/tags/yocto/index.xml b/tags/yocto/index.xml index 3e98446..3fa41e9 100644 --- a/tags/yocto/index.xml +++ b/tags/yocto/index.xml @@ -1,4 +1,6 @@ -Yocto - Tag - All about IoThttps://blog.humminglab.io/tags/yocto/Yocto - Tag - All about IoTHugo -- gohugo.ioenTue, 07 Jun 2022 09:00:00 +0900Systemd의 특징과 Yocto에 적용하기https://blog.humminglab.io/posts/yocto-systemd/Tue, 07 Jun 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-systemd/Yocto project에서 기본 설정으로 빌드하면 SysV Init를 사용한다. 개발하는 제품이 이더넷 네트워크로 연결되고, 부팅 이후에는 네트워크 환경이 변하지 않는다면 SysV Init를 이용하는 것이 구조도 단순해서 더 좋을 수 있다. +Yocto - Tag - All about IoThttps://blog.humminglab.io/tags/yocto/Yocto - Tag - All about IoTHugo -- gohugo.ioenWed, 16 Aug 2023 12:00:00 +0900Yocto 에서 Go 프로젝트 관리https://blog.humminglab.io/posts/yocto-golang-230816/Wed, 16 Aug 2023 12:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-golang-230816/Yocto recipe를 작성하다 보면 대부분의 프로젝트가 C, C++ 로 작성된 것들이라 이들은 참조할 것들이 많다. 하지만 Go, Rust, NodeJS 로 작성된 프로젝트는 Yocto에 추가하려다 보면 참고할 자료가 많지는 않은 편이다. 이 글에서는 Go 언어로 작성된 프로젝트를 추가하는 방법을 정리한다. +Go Module우선 간단하게 Go 의 모듈 정책에 대해서 정리 해본다. +2009년에 Go 가 처음 나왔을때는 모듈관리는 단순했다. Go 프로젝트에서 참고하는 모듈은 go get 으로 다운로드하면 $GOPATH/src 디렉토리에 해당 모듈이 설치된다. 하나의 예를 들면 다음과 같이 src 디렉토리에 모듈 경로를 포함해서 설치가 된다.Systemd의 특징과 Yocto에 적용하기https://blog.humminglab.io/posts/yocto-systemd/Tue, 07 Jun 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/yocto-systemd/Yocto project에서 기본 설정으로 빌드하면 SysV Init를 사용한다. 개발하는 제품이 이더넷 네트워크로 연결되고, 부팅 이후에는 네트워크 환경이 변하지 않는다면 SysV Init를 이용하는 것이 구조도 단순해서 더 좋을 수 있다. 하지만 다음과 같은 사항을 고려하고 있다면 systemd를 적용하는 것을 검토해 볼 수 있다. Daemon 이 죽는 경우를 검출하여 재시작 관리가 필요한 경우 Wi-Fi 와 같이 동적으로 변경될 수 있는 네트워크 관리가 필요한 경우 불규칙하게 네트워크가 끊길 수 있는 조건에서 시간 동기화가 필요한 경우 프로그램에 CPU 또는 메모리 자원을 제한하기 위하여 cgroups를 사용하려는 경우 효과적인 로그 관리를 위하여 journald를 사용하고 싶은 경우 부팅 직후 초기 프로세스의 실행 시간을 줄여 보려는 경우 물론 위의 기능을 사용하기 위해서 systemd만 가능한 것은 아니지만, systemd를 사용하는 경우 별도의 프로그램 없이 위 기능을 쉽게 적용할 수 있다.Syslog and Journaldhttps://blog.humminglab.io/posts/syslog-journald/Fri, 27 May 2022 09:00:00 +0900YSLeehttps://www.humminglab.ioinfo@humminglab.iohttps://blog.humminglab.io/posts/syslog-journald/대부분의 최신 linux 배포본에서 systemd를 적용하면서 로그 시스템도 syslog 에서 systemd 의 journald로 변경되었다. PC급 이상의 linux 배포본에서는 journald와 기존 호환성을 고려하여 syslog 데몬이 같이 사용하도록 기본 설정되어 있고, 상대적으로 광활한 저장장치과 메모리를 가지고 있고, 적절한 용량 선에서 log rotate가 되도록 설정되어 있어, 사용자가 설치 후 로그에 대해서는 신경을 쓸 필요가 거의 없다.