오블완(9)
-
Makefile 실습
1. make buildroot-download : buildroot가 없다면 다운로드2. make buildroot-config : buildroot를 설정3. make buildroot : buildroot를 빌드4. make kernel-download : kernel이 없다면 다운로드5. make toolchain-download : toolchain 없다면 다운로드6. make kernel-config : kernel을 설정7. make run : QEMU로 리눅스 실행8. make kernel : kernel을 빌드 buildroot를 빌드하기 위해선 buildroot 설정이 되어있어야하고, buildroot를 설정하기 위해서는 buildroot가 다운로드 되어있어야한다. kernel을 빌드..
2024.11.26 -
리눅스 디바이스 드라이버
디바이스 드라이버를 공부하면서 이 내용을 왜 공부하는지에 대해 궁금해서 작성하는 내용이다. 디바이스 드라이버란?리눅스 디바이스 드라이버는 리눅스 커널의 중요한 구성 요소로, 운영 체제가 하드웨어와 상호 작용을 할 수 있도록 중간 역할을 한다. 디바이스 드라이버는 특정 하드웨어 장치를 제어하는 데 필요한 로직과 인터페이스(서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면)를 제공한다. 리눅스에서는 다양한 유형의 하드웨어를 지원하기 위해 많은 드라이버가 포함되어 있으며, 이를 통해 하드웨어와 소프트웨어가 원활히 통신할 수 있다. 운영 체제는 유저모드와 커널모드라는 두 가지 주요 실행 모드를 가지고 있다. 유저모드는 어플리케이션 (웹 브라우저, 텍스트 편집기 등)이 실행..
2024.11.23 -
리눅스 커널 빌드하기
빌드 루트를 통해 루트파일시스템을 다운받았으니 이번엔 커널을 다운받는다. 빌드 루트와 동일하게 wget 명령어를 통해 압축파일을 다운로드 받은 후 tar xvf 명령어를 통해 압축을 해제한다. 그 다음 빌드에 필요한 툴체인도 설치해준다. 그 다음 Buildroot에서 제공하는 기본 커널 설정 파일(linux.config)을 리눅스 커널 소스 트리의 qemu_defconfig로 복사하여, 커널 빌드 과정에서 QEMU ARM64 가상 머신에 적합한 설정을 할 수 있도록한다. 명령어 ARCH=arm64 make qemu_defconfig 명령어를 통해 리눅스 커널을 ARM64 플랫폼의 QEMU 에뮬레이터에서 사용할 수 있도록 기본 설정을 로드한다. 여기 까지가 리눅스 커널을 빌드하기 위한 기본 준비이다...
2024.11.21 -
Rootfs 빌드 하기
루트파일시스템(Rootfs) 이란?루트 파일 시스템은 운영체제에서 가장 기본이 되는 파일 시스템이다. 리눅스나 유닉스 계열의 운영 체제에서 모든 파일과 디렉터리는 이 루트 파일 시스템 아래에 위치한다. 주요 디렉터리로는 밑과 같다. / : 루트 디렉터리/bin : 사용자와 시스템에서 사용하는 필수 명령어 바이너리 (ls,cp,mv...)/sbin : 시스템 관리자가 사용하는 바이너리 (/lib : 실행 파일에 필요한 공유 라이브러리 ( C 라이브러리, 공유 라이브러리..)/etc : 시스템 설정 파일과 애플리케이션의 설정 파일 ( /etc/fstab, /etc/passwd...)/var : 가변 데이터를 저장/home : 사용자 계정의 개인 파일을 저장 ( /home/user)/usr : 사용자가 설치..
2024.11.20 -
리눅스 개발 환경 이해하기 (2)
그러면 어떻게 해야 example 파일이 실행될까? 방법은 동적으로 라이브러리를 할당하면 된다. example파일이 실행이 되지 않았던 이유는 라이브러리를 정적으로 load했기 때문에 필요한 라이브러리가 없을 경우 실행이 되지 않았다. 하지만 동적(Dynamic)으로 라이브러리를 할당하면 실행하는 중간중간마다 필요한 라이브러리가 있을 경우 load해서 사용한다. 위와 같은 방식으로 동적으로 라이브러리를 할당해주면 example파일이 정상적으로 실행되는 것을 확인할 수 있다. 사실은 gcc 내부에서도 ld를 사용하여 링킹까지 가능하다.gcc *.c -lm과 같은 방식으로 링킹이 가능한데 이는 libc,crt,ld 라이브러리가 자동으로 들어간다. 위와 같이 gcc 명령어만 사용해서 a.out파일을 실행하..
2024.11.19 -
리눅스 개발 환경 이해하기 (1)
빌드 : 소스 코드를 실행할 수 있는 바이너리 파일로 만드는 과정호스트 : 빌드가 실행되는 환경타겟 : 빌드가 된 바이너리가 동작할 환경 우리가 모바일 앱을 만드는데 개개인의 노트북을 사용해서 앱을 만든다면 내가 만든 소스 코드가 기기에서 실행할 수 있는 형태로 변환하는 과정이 빌드이고, 호스트는 개발과 빌드 작업이 이루어지는 시스템인 내 노트북이되고, 타겟은 앱이 실제로 실행될 환경인 스마트폰이 된다. 우리가 만든 소스코드를 기기에서 실행할 수 있는 형태로 변환해주는 편리한 도구들의 모음이 있는데 그것이 바로 툴체인이다. 우리가 소스 코드를 만들면 그 자체로는 컴퓨터가 이해할 수 없다. 즉 바이너리 파일인 목적파일로 변경하는 과정이 필요한데 소스코드를 기계어로 번역하는 과정이 컴파일이다. 컴파일로 생성..
2024.11.15