분류 전체보기 288

라즈베리파이, 커널 다운받고 설치 해볼까? ( Crosscompile)

Cross-Compiling the Kernel Install Required Dependencies and Toolchain sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev Install the 32-bit Toolchain for a 32-bit Kernel sudo apt install crossbuild-essential-armhf Install the 64-bit Toolchain for a 64-bit Kernel sudo apt install crossbuild-essential-arm64 Get the Kernel Sources git clone --depth=1 https://github.com/ra..

라즈베리파이, 커널 다운받고 설치 해볼까? (Local )

아주잘된 레퍼런스 사이트 : https://www.raspberrypi.org/documentation/linux/kernel/building.md Raspberry Pi Documentation - The Linux kernel The official documentation for Raspberry Pi computers and microcontrollers www.raspberrypi.com 위 영문 사이트가 가장 정확하는걸 알리면서 시작합니다. Building the Kernel Locally 리눅스 유틸리티 프로그램 설치 sudo apt install git bc bison flex libssl-dev make 리눅스 소스코드 다운로드 git clone --depth=1 https://githu..

멍멍이 소리, 콜 스택 ( Call Stack )

리눅스 커널 공부하다보면 마치 당연히 알아야하는 것처럼 콜스택 콜스택 한다. 뭔 개소리여~ 콜스택의 사전적인 말은 : 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 콜 스택을 사용하는 목적은 여러 가지이지만, 주된 이유는 현재 실행 중인 서브루틴의 실행이 끝났을 때, 제어를 반환할 지점을 보관하기 위해서이다 기가막히게 어렵게 풀어 졌다. 실행중인 서브루틴에 관한 정보를 저장하는 스택 자료 구조? 안되겠다 단어로 쪼개서 이해해보자 서브루틴 이란 : 프로그램이 실행하는 Function 묶음 같은건가 그런것같다. 콜 이란 : 콜 말그래도 부른다 . 뭔가 부른다. 스택 이란 : 부르는걸 저장하는 구조 스택 ( 후입선출 , 데이터의 삽입과 출력이 리스트 한쪽에서만 이루어진..

Unix & Linux 2022.01.21

자꾸보는, 리눅스 커널 소스의 구조

커널 소스 구조는 눈에 잘익지 않는다 그래도 계속 되새겨 보자 ARCH - arm : 32bit arm 아키텍쳐 코드 - arm64 : 64bit arm 아키텍쳐 코드 - x86 : 인텔 x86 include 커널 코드 빌드에 필요한 헤더파일 Kernel 커널 핵심 코드가 있는 디렉토리 1) irq : 인터럽트 관련 코드 2) sched : 스케쥴링 코드 3) power : 커널 파워 매니지먼트 4) locking : 커널 동기화 관련 코드 5) printk : 커널 콘솔 관련 코드 6) trace : ftrace 관련 코드 mm 메모리 매니지먼트 , 가상메모리 및 페이징 관련 코드 아키텍쳐별로 동작하는 메모리 관리 코드는 arch/*/mm 아래 있습니다. drivers 모든 시스템의 다이바스 드라이버 ..

Unix & Linux 2022.01.21

원론적인 이야기를 해보자, 리눅스 인기 비결

리눅스가 인기있는 이유 무엇일까? 누구나 소스코드를 볼 수 있다. : 리눅스는 리눅스 커널과 그위에서 실행하는 리눅스 유틸리티로 구성 : 누구나 리눅스 소스코드를 볼 수 있다. 개방적인 오픈소스 프로젝트다 : 누구나 리눅스 프로젝트에 참가해 자신이 작성한 코드를 배포할 수 있다 : 소스를 분석하닥 버그나 논리적인 오류가 있으면 누구나 자신의 코드를 리눅스 오픈소스 프로젝트에 반영할 수 있다. 리눅스 커뮤니티의 힘이 막강하다. : 리눅스는 각 기능마다 메일링 리스트를 통해 빠른시간에 논의 - 커널 버그 - 커널 개선 패치 다양한 CPU아키텍쳐 지원 이정도만 알면 되겠다

Unix & Linux 2022.01.21

원론적인 이야기를 해보자, 리눅스의 역사 ( UNIX, LINUX ?? )

유닉스? 유닉스의 탄생 리눅스의 역사를 알기위해 유닉스의 탄생과정을 알아야한다. 왜?? 와이? 리눅스의 모태는 유닉스라고합니다. 컴퓨터가 발명된 이후로 한동안은 한가지 프로그램만 실행가능했다. ... 감이온다 멀티로하기위해서 운영체제가 필요? 맞을까? 역시다. 컴퓨팅속도가 빨라지면서 유닉스의 모태가 되는 '멀틱스' 운영체제 가 만들어진다. 즉 하나의 컴퓨터가 여러개의 프로그램을 실행하기 위해서 유닉스가 만들어졌다고 봐도 되겠습니다. 멀티태스킹과 멀티유저를 지원하는 운영체제 : 이과정에서 탄생한 것이 바로 유닉스 (UNIX ) 이정도로 마무리하기엔 누군가에게 설명하기 빈약하다. 최초의 유닉스는 어샘블리어로 제작되어있어서 아주아주 불편했다고한다. 1973년 최초의 유닉스가 완성 이때부터 유닉스는 C언어로 만..

Unix & Linux 2022.01.21

리눅스, 디바이스 드라이버 간단한 예제

참고사이트: https://reakwon.tistory.com/150 디바이스 드라이버(Device Driver) OS가 모르는 장치를 연결하면 컴퓨터는 드라이버를 설치하라고 요청할 것입니다. 컴퓨터는 이 장치가 무엇인지 모르기 때문입니다. 그래서 이장치를 동작할 때 어떻게 동작해야하는지에 대한 프로그램을 따로 설치해야 합니다. 알게모르게 설치되는 것이 디바이스 드라이버 시스템 콜이 호출되면 커널 영역 내부로 호출이 전달 됩니다. 커널 내부에 있는 가상 파일 시스템으로 전달, 디바이스 드라이버가 인터페이스를 통해서 하드웨어를 제어 합니다. 커널 영역이라함은 무엇? 일반 사용자가 접근할 수 없는 커널만의 영역을 말함 커널 영역 메모리를 참조하거나 데이터를 변경할 수 없다. 디바이스 드라이버가 커널 쪽에 ..

Raspberry Pi Zero W, 멀티 가젯 USB Device 만들기

https://ndb796.tistory.com/479 Raspberry Pi Zero W를 이용해 멀티 가젯(Multi-gadget) USB Device 만들기 USB 장치(device)는 태생적으로 하나의 장치가 여러 개의 기능(function)을 제공할 수 있도록 만들어졌다. 참고로 여기에서 기능(function)이란 USB 프로토콜 상에서 인터페이스(interface)를 의미한다. 예를 ndb796.tistory.com 이글을 통해 안경잡이개발자 님께 감사합니다. https://ahyuo79.blogspot.com/2020/11/ Jeonghun (James) Lee 개발에 필요한 지식에 대한 블로그입니다. ahyuo79.blogspot.com USB 장치는 한개의 기능을 제공하도록 되어있다 (D..

Raspberry Pi Zero W, 커널 컴파일 및 빌드

1. Kernel ( 커널 ) ? 운영체제 (OS) 에서 가장 코어 파트에 해당 커널은 컴퓨터의 각종 드라이버, 메모리, 프로세스 등을 관리하는 역할을 수행 일반적으로 배포판으로 제공되는 커널은 이미 일반적인 기능이 포함 라즈베리파이는 Debian 기반의 os를 사용하는데 부품과 적절히 호환될 수 있는 형태로 제공된다. 기본적인 커널에서 제공하지 않는 기능을 사용하고 싶을 때, 커널을 변경하여 컴파일해볼 필요가 있다. 예를들어 특정한 하드웨어를 관리하기 위한 디바이스 드라이버 (Device Driver) 를 작성할 때 커널 모듈 형태로 작성할 수 있다. 1-1 커널의 주요 디렉토리 - linux/kernel : 커널 핵심 소스 코드 - linux/include : 커널 소스코드의 헤더 파일 - linux..

Unix & Linux/Kernel 2022.01.13

우분투 텔레그램 봇 만들기 (UBUNTU / TELEGRAM BOT )

어플리케이션 설치를 위해 타사 저장소를 지원합니다. sudo add-apt-repository ppa:atareao/telegram 이제 텔레그램을 설치합니다. apt-get install telegram /opt/telegram 폴더에 설치된 것을 확인할 수 있다. 봇 설치? Seach 에 BotFather 를 서칭하면 위 그림처럼 보이고 더블클릭한다. /newbot --> 새로운 봇 생성 봇 이름을 생성한다 " leehands" 더보기 Done! Congratulations on your new bot. You will find it at t.me/leehands_bot. You can now add a description, about section and profile picture for you..

Unix & Linux 2022.01.07