Embedded : : Linux 20

The Wayland Protocol 개요

0. Intro   오늘날, 리눅스 UX 관련해서 부각되는 것 중에 하나는 바로 WAYLAND 이다. (WAYLAND 는 기존의 윈도우 매니저를 개발하기 위해 사용해왔던 X11 프로토콜을 대체하는 프로토콜이다.) 대다수의 핵심 UX 관련 프로젝트들(GTK+, Qt, Clutter 등등)이 Wayland를 백엔드로 지원하기 위한 작업들을 진행 중이고, 짧은 시간 동안 상당 부분 진척이 이루어졌다..    사실 현재 X11은 Wayland에서 제공하는 기능들을 전혀 제공하지 못하는 것은 아니다. (심지어 X12 프로젝트 또한 진행 중이다.) 하지만 중요한 것은 이와 같은 여러 가지 이유로 모두가 X 를 버리고 새롭게 시작하기를 원한다는 것이다.다음은 기술적인 그리고 구조적인 몇 가지 이유를 설명하도록 하겠다..

Wayland vs X11

0. Wayland란   Wayland는 리눅스 데스크탑 환경을 구현하기 위한 프로토콜로, 데스크탑 환경은 크게 컴포지터와 쉘로 구분합니다.  Wayland는 컴포지터와 쉘의 구현을 돕는 API와, 쉘이 어플리케이션과 통과할 수 있도록 프로토콜을 제공합니다.    1. Wayland의 장점   1.1  성능  Wayland는 X 서버에 비해 대기 시간을 줄이고 전반적인 성능을 향상시키는 것을 목표로 간결하고 효율적으로 설계되었습니다. 이는 X Server에 존재하는 레거시 기능과 오래된 메커니즘 중 일부를 제거하여 더 부드럽고 응답성이 뛰어난 사용자 인터페이스를 제공함으로써 이를 달성합니다.     1.2  보안  Wayland는 처음부터 보안을 염두에 두고 구축되었습니다. 보다 안전한 아키텍처를 채택하..

[리눅스 GUI] 디스플레이 서버-클라이언트 구조

0. Intro - 윈도우 매니저의 서버-클라이언트 구조   주로 사용하는 리눅스 UX 프로토콜로는 Wayland와 X11(X Window Manager)가 있다.  먼저, X11을 통해 윈도우 매니저의 구조를 살펴보자.    1. X11  1.1 X11 서버-클라이언트 구조의 이해     X 서버와 X 클라이언트를 이해하기 위해, 메모장을 예로 들어보자. 메모장은 X 클라이언트가 된다. 웹브라우저, 동영상 재생기, 게임 같은 모든 GUI 프로그램을 X 클라이언트라고 생각해도 무리는 없다. 메모장을 실행하면X 클라이언트 메모장에 실행 명령이 전달되고호출을 받은 메모장은 X 서버에 "가로세로 크기는 이만큼, 배경색과 글자색은 이렇게, 커서는 깜빡일 것." 하고 X 서버로 X 프로토콜을 날린다.이제 X 서버..

윈도우 매니저 (Window Manager) - 리눅스 GUI 개요

Window Manager   윈도우 매니저를 크게 보면 컴포지터와 쉘로 나눌 수 있다.   컴포지터는 각각의 윈도우 화면을 갱신하고, 겹쳐진 윈도우들의 내용을 가져와서 하나의 화면(클라이언트의 화면)으로 실제 스크린에 출력해주는 과정을 담당한다.  쉘은 클라이언트의 윈도우를 옮기거나, 크기를 변경하는 역할과 배경화면과 시작 메뉴, 패널 등을 관리하는 역할을 한다.   그래서 컴포지터는 기능적인 부분에 대한 최적화가 주요 이슈이고, 쉘은 정책적인 부분들에 대한 결정들이 주로 다루어진다. ※ 디스플레이 서버    1.  Compositor (컴포지터)   컴포지터는 화면 위에 겹쳐있는 모든 윈도우들을 하나의 스크린 위에 합쳐서 보여주는 역할을 한다.   예를 들어, 우리가 두 개의 웹브라우저를 겹치게 띄워..

MCU Bootloader

대부분의 임베디드 시스템은 온보드 부트로더와 함께 제공된다. 부트로더(Bootloader)는 컴퓨터 시스템 또는 임베디드 시스템을 시작하는 데 사용하는 프로그램이다. 부트로더는 JTAG과 같은 특수 하드웨어를 사용하지 않고도 시스템을 업데이트할 수 있도록 도와준다. 이를 통해 소프트웨어 업데이트시마다 서비스 센터를 찾아가지 않아도 되는 이점이 있다. 부트로더는 임베디드 시스템의 무결성을 확인하는 가장 빠른 시점이 될 수도 있다. 이는 부트로더가 시스템 이미지를 관리하기 때문이다.   임베디드 부트로더는 다양한 크기와 특징을 가지고 있다. 요구사항에 따라 부트로더 상태도 UART, CAN, I2C, Ethernet, USB와 같은 다양한 프로토콜을 통해 통신할 수 있으며, 두 개 이상의 어플리케이션 이미지..

Linux, 부팅, Swap, Dependency, Boosting

Linux, 부팅, swap, dependency, booting (tistory.com) Linux, 부팅, swap, dependency, bootingLinux 시스템이 너무 빨리 부팅되어 대부분의 출력이 너무 빨리 스크롤되어 콘솔로 전송된 텍스트(시작 중인 서비스 표시)를 읽을 수 없습니다. 따라서 부팅 문제/오류를 관찰하는 것은 우리에게flightsim.tistory.com     0.  Intro   Linux 시스템이 너무 빨리 부팅되어 대부분의 출력이 너무 빨리 스크롤되어 콘솔로 전송된 텍스트(시작 중인 서비스 표시) 를 읽을 수 없습니다. 따라서 부팅 문제 오류를 관찰하는 것은 우리에게 약간의 도전이 됩니다  이 기사에서는 Linux 시스템 부팅 프로세스의 여러 단계를 간략하게 설명한 다..

Partition 1 does not start on physical sector boundary.

노트북에서의 컴파일은 결국 한계를 느끼고,Main PC에 Ubuntu 20.04를 새로 설치하는 중 SSD에선 잘만 깔리더만PC Sub Hard drive는 파티션을 인식하지 못한다. Disk /dev/nvme0n1: 476.96 GiB, 512110190592 bytes, 1000215216 sectorsDisk model: Samsung SSD 970 PRO 512GB Units: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: gpt..

Linux - diff 명령어 사용법 (파일비교)

diff 명령어  : 리눅스에서 파일을 비교하는 명령어. file1과 file2를 비교하여 차이점을 찾아냄$diff [옵션] file1 file2   옵션  -b  : 연속된 공백 무시-i   : 대소문자를 구분하지 않음-t   : 출력 라인에 TAB 문자를 넣음-w  : 두 행의 비교 시 공백을 무시--brief : 파일 비교 후 결과 표시(같은지, 다른지)-d  : 세세한 차이까지 검색-H  : 큰 파일을 빠르게 처리할 때 사용-q  : 두 파일의 차이점만 출력-s   : 두 파일이 같은 지 확인-r   : 두 디렉토리의 차이점 출력-u  : undirectional new file 옵션으로 비교하는 파일/디렉토리가 빠져있을 경우 dummy로 처리해서 출력을 통일시킴-r   : recursive 하위..

리눅스 동적 정적 라이브러리

1.  동적 라이브러리   5.5.1  OCRAM protection 실행 시간에 라이브러리 파일을 찾아 코드를 포함하기 때문에 동적라이브러리라고 부릅니다.즉, 정적 라이브러리는 컴파일 시간에 코드를 결정하기 때문에 소스가 변경되면 새로 컴파일 해야하지만, 동적 라이브러리의 경우 라이브리만 교체하는 것으로도 변경이 가능합니다.$ gcc -c -fPIC test.c$ gcc -c app.c fPIC옵션은 Position-Independent Code의 약자이며 test.o파일을 동적라이브러리로 사용하도록 컴파일 하는 옵션입니다.이렇게 컴파일된 오브젝트 파일을 .so파일로 묶으면 됩니다.$ gcc -shared -fPIC -o libtest.so test.o컴파일은 아래와 같이 하면 됩니다.$ gcc -o ..

Linux C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT

Linux C/C++ shared library 컴파일하기   C++   g++ -shared -fPIC -o g++ -shared fPIC -o lib.so code.cpp    C   gcc -shared [-fPIC] -o gcc -shared [-fPIC] -o lib.so code.c -fPIC 옵션은 생략이 가능하지만, 공유라이브러리를 만들 때는 -fPIC 옵션 사용을 권장합니다.(컴파일 종류에 따라서 -fPIC는 필수 옵션입니다.) fPIC를 사용하지 않을경우 재배치 기법을 사용하게 되는데,간략하게, 라이브러리의 주소를 현재 사용하려는 프로세스 주소에서 접근가능하게 재배치 한다는 개념입니다.    공유 라이브러리의 단점 1. 여러 프로세스가 공유라이브러리를 공유하게되면 각 프로세스가 로드 ..