컴파일

2024. 1. 21. 14:23리눅스/쉬운 리눅스

728x90
반응형
sudo apt-get update
sudo apt-get install git bc bison flex libssl-dev libelf-dev
git clone --depth=1 https://github.com/raspberrypi/linux

 

 

#!/bin/bash

echo "configure build output path"

KERNEL_TOP_PATH="$(cd "$(dirname "$)")"; pwd -P)"
OUTPUT="$KERNEL_TOP_PATH/out"
echo "$OUTPUT"

KERNEL=kernel8
BUILD_LOG="$KERNEL_TOP_PATH/rpi_build_log.txt"

echo "move kernel source"
cd linx

echo "make x86_64_defconfig"
make 0=$OUTPUT x86_64_defconfig

echo "kernel build"
# Arm 아키텍처
make 0=$OUTPUT Image moudles dtbs -j4 2>&1 | tee &BUILD_LOG

#아키텍처 x86에서는 아래 dtbs제거 후 진행
make 0=$OUTPUT Image moudles  -j4 2>&1 | tee &BUILD_LOG

 

x86에서는 dtbs가 필요없다. dtb는 Arm 아키텍처에서 사용
[챗gpt 답변]

x86_64 아키텍처에서는 일반적으로 Device Tree Blob (DTB)가 사용되지 않습니다. DTB는 주로 ARM 아키텍처와 같이 리눅스가 다양한 아키텍처에 대응하도록 설계된 시스템에서 사용됩니다.

x86_64 아키텍처에서는 대부분의 경우, BIOS 또는 UEFI가 시스템의 하드웨어 초기화 및 구성을 담당합니다. 따라서 x86_64 아키텍처에서는 Device Tree가 필요하지 않습니다.

만약 x86_64 아키텍처에서 Device Tree와 관련된 작업을 진행 중이라면, 이는 특수한 상황이거나 사용자 정의 빌드 시스템을 사용하는 경우입니다. 이 경우에는 해당 빌드 시스템이나 프로젝트의 문서를 확인하여 더 자세한 정보를 얻어야 합니다.

일반적인 x86_64 시스템에서는 DTB 대신에 ACPI (Advanced Configuration and Power Interface)를 사용하여 하드웨어 정보를 관리합니다. ACPI는 BIOS 또는 UEFI에 의해 제공되는 표준화된 방법으로 시스템의 리소스 및 구성 정보를 운영 체제에 전달합니다.


BIOS 또는 UEFI와 관련된 부분은 일반적으로 빌드된 바이너리에 포함되지 않습니다. 컴파일 시에는 그런 하드웨어 관련 정보나 부트로더가 필요한 부분들을 정의하는 것이지, 실제적인 바이너리에는 들어가지 않습니다.

일반적인 x86_64 시스템에서는 컴파일된 커널 바이너리에는 해당 시스템에서 필요한 코드와 설정이 들어가게 됩니다. 그리고 이런 시스템에서는 주로 BIOS 또는 UEFI가 부팅 프로세스를 제어하고 초기화하는 역할을 합니다.

커널을 빌드하면, 빌드 구성에 따라 여러가지 옵션을 설정할 수 있습니다. 예를 들어, CONFIG_EFI라는 옵션을 통해 EFI (Extensible Firmware Interface) 관련 기능을 커널에 포함시킬 수 있습니다. 하지만 일반적으로는 x86_64 시스템에서는 BIOS 또는 UEFI에서 커널이 부팅될 때 필요한 부분들은 부트로더(일반적으로 GRUB 등)에서 제공하므로 별도로 커널에 모든 부트 관련 코드를 포함시킬 필요가 없습니다.

결론적으로, x86_64 아키텍처에서 커널을 빌드할 때 특별한 설정이나 추가적인 부트로더가 필요한 경우, 해당 설정을 통해 부트로더에 필요한 정보를 포함시킬 수 있습니다. 일반적으로는 BIOS 또는 UEFI에서 부팅 프로세스를 제어하고 초기화하므로 해당 부분은 개발자가 직접 처리할 필요가 없습니다.

적용

# /boot 디렉토리로 커널 이미지 복사
sudo cp arch/x86_64/boot/bzImage /boot/vmlinuz-{YOUR_KERNEL_VERSION}

# 부트 디렉토리에 새로운 initramfs 이미지 생성
sudo update-initramfs -c -k {YOUR_KERNEL_VERSION}

# GRUB 업데이트
sudo update-grub

# 부팅 메뉴에서 새로 컴파일한 커널 선택
sudo reboot

 

 

반응형

'리눅스 > 쉬운 리눅스' 카테고리의 다른 글

set_filter_function  (0) 2024.01.23
바이너리 유틸리티  (1) 2024.01.21