Linux Kernel โ€“ 5 Kernel compilie ๐Ÿ› ๏ธ

2025-05-23ยท1๋ถ„ ์ฝ๊ธฐยท

Linux Kernel โ€“ 5 Kernel compilie ๐Ÿ› ๏ธ

Linux Kernel โ€“ 5 Kernel compilie ๐Ÿ› ๏ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์ปค๋„ ์ปดํŒŒ์ผ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์ปค๋„ ๋นŒ๋“œ(์ปดํŒŒ์ผ), ์ปค๋„ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ * bc bison flex libssl-dev install ์„ค์น˜ apt-get install git bc bison flex libssl-dev ์ถ”๊ฐ€ ํ•„์š” ์˜ˆ์ƒ๋˜๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜ sudo apt-

Linux Kernel โ€“ 5 Kernel compilie๐Ÿ› ๏ธ

๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์ปค๋„ ๋นŒ๋“œ(์ปดํŒŒ์ผ), ์ปค๋„ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

* bc bison flex libssl-dev install ์„ค์น˜

code
apt-get install git bc bison flex libssl-dev

์ถ”๊ฐ€ ํ•„์š” ์˜ˆ์ƒ๋˜๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜

code
sudo apt-get install -y \
    git bc bison flex libssl-dev \
    make gcc libncurses-dev build-essential

Make Project dir + Git clone

code
mkdir -p project/linuxSrc
 git clone --depth=1 https://github.com/raspberrypi/linux

Shell Script vs Makefile ๋ฌธ๋ฒ• ์ฐจ์ด ์š”์•ฝ

๊ตฌ๋ถ„Shell Script (.sh)Makefile (Makefile)
๋ชฉ์ ์ผ๋ฐ˜์ ์ธ ์ž‘์—… ์ž๋™ํ™”์ปดํŒŒ์ผ์„ ์ž๋™ํ™”ํ•  ๋•Œ ์‚ฌ์šฉ
์‹คํ–‰ ๋ฐฉ์‹bash script.sh ๋“ฑ์œผ๋กœ ์ง์ ‘ ์‹คํ–‰make ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ (ํŒŒ์ผ๋ช…์€ Makefile)
๋ฌธ๋ฒ•์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์‹คํ–‰ (if, for, while ๋“ฑ)ํƒ€๊ฒŸ: ์˜์กดํŒŒ์ผ๋“ค\n ๋ช…๋ น์–ด ํ˜•์‹
๋“ค์—ฌ์“ฐ๊ธฐ๊ณต๋ฐฑ ๋˜๋Š” Tab ๊ฐ€๋Šฅ๋ฐ˜๋“œ์‹œ Tab์œผ๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ
๋ณ€์ˆ˜ ์ •์˜VAR=value โ†’ $VARVAR=value โ†’ $(VAR) ๋˜๋Š” ${VAR}
์กฐ๊ฑด๋ฌธ/๋ฐ˜๋ณต๋ฌธif, for, while ๋“ฑ Bash ๋ฌธ๋ฒ•๊ธฐ๋ณธ์ ์œผ๋กœ ์—†์Œ (GNU Make์˜ if, foreach๋Š” ์ œํ•œ์ )

๋ณ€์ˆ˜ ์˜ต์…˜ ํ™•์ธ

์ปค๋„ ์ปดํŒŒ์ผ

* ์ƒ˜ํ”Œ ์ฝ”๋“œ ๋นŒ๋“œ

code
#!/bin/bash
 
echo "configure build output path"
 
KERNEL_TOP_PATH="$( cd "$(dirname "$0")" ; 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 "$KERNEL_TOP_PATH/rpi-linux"  # โ† ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์— ๋งž๊ฒŒ ์ˆ˜์ •
 
# ARCH ๋ฐ CROSS_COMPILE ํ™˜๊ฒฝ ์„ค์ •
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
 
echo "make defconfig"
make O="$OUTPUT" bcm2711_defconfig
 
echo "kernel build"
make O="$OUTPUT" Image modules dtbs -j4 2>&1 | tee "$BUILD_LOG"

๋งˆ์ง€๋ง‰ ๋ผ์ธ (์ปค๋„ ๋นŒ๋“œ ๋ผ์ธ) ์ถ”๊ฐ€ ์„ค๋ช…
make O="$OUTPUT" : ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฌผ์€ $OUTPUT (out ํด๋”)์— ๋„ฃ๋Š”๋‹ค.
make ์— ๋Œ€ํ•œ ์˜ต์…˜ (Image, modules, dtbs)

Image : ์ปดํŒŒ์ผ์„ ๋‹ค ํ•œ ํ›„ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ

Image: ์••์ถ•ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€
zImage: ์••์ถ•ํ•˜์—ฌ ์‚ฌ์šฉ (2MB ์ดํ•˜๋กœ), ์ž์ฒด ์••์ถ• ํ•ด์ œ ๋ฃจํ‹ด์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ (ARM32)

modules : ๋ชจ๋“ˆ ์ปดํŒŒ์ผ ์˜ต์…˜ (๋“œ๋ผ์ด๋ฒ„ ๊ด€๋ จ)
๊ฐ„๋‹จํ•˜๊ฒŒ ๋ชจ๋“ˆ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ make ๋ช…๋ น์–ด๋Š” make modules
make module : ์ปค๋„ ํ™˜๊ฒฝ์„ค์ •์—์„œ ๋ชจ๋“ˆ๋กœ ์„ค์ •ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ปดํŒŒ์ผ

dtbs : dtbs ํ˜•์‹์˜ ํŒŒ์ผ ์ƒ์„ฑ ์˜ต์…˜
/boot/firmware ๊ฒฝ๋กœ ๋‚ด ํŒŒ์ผ ์ƒ์„ฑ

* /boot/firmware ๊ฒฝ๋กœ ๋‚ด dtb ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ

-j4 : CPU ์Šค๋ ˆ๋“œ 4๊ฐœ ์‚ฌ์šฉ ์„ ์–ธ (PI CPU ์ฝ”์–ด ์ˆ˜์™€ ๋™์ผ)

2>&1 : ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ํ‘œ์ค€ ์—๋Ÿฌ๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ ๊ฒฐ๊ณผ์— ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ์ •์˜

๊ตฌ๋ถ„์„ค๋ช…ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ
ํ‘œ์ค€ ์ถœ๋ ฅ์ผ๋ฐ˜์ ์ธ ์ถœ๋ ฅ ๊ฒฐ๊ณผ (์˜ˆ:ย echo)1
ํ‘œ์ค€ ์—๋Ÿฌ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ (์˜ˆ:ย ls ์—†์Œ)2

*ย ์ฆ‰ย stderr(2)๋ฅผย stdout(1)๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ์‹œํ‚ค๊ฒ ๋‹ค. (์—๋Ÿฌ ๋ฉ”์‹œ์ง€์™€ ์ผ๋ฐ˜ ์ถœ๋ ฅ)

๊ทธ ๊ฒฐ๊ณผ๋ฅผย "| tee "$BUILD_LOG"" ์ฆ‰ ๋ชจ๋‹ˆํ„ฐ์™€ ๋กœ๊ทธ ํŒŒ์ผ์— ์ถœ๋ ฅ๊ณผ ์ €์žฅ์„ ์š”์ฒญํ•˜๋Š” ๋ฌธ๊ตฌ

./build.sh ์‹คํ–‰

ShareX

์ด ๊ธ€์ด ๋„์›€์ด ๋๋‚˜์š”?

Related

๊ด€๋ จ ๊ธ€

3๊ฐœ
Linux Kernel โ€“ 1 Linux Kernel Overview ๐Ÿง 
blog

Linux Kernel โ€“ 1 Linux Kernel Overview ๐Ÿง 

Linux Kernel โ€“ 1 Linux Kernel Overview ๐Ÿง  ๋ฆฌ๋ˆ…์Šค๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ  ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ  ์“ฐ์ด๋Š” ๊ณณ ์ปค๋„๊ณผ ์šด์˜์ฒด์ €์™€์˜ ์ฐจ์ด ์ปค๋„์€ ์™œ ์กด์žฌ ํ•˜๋Š”๊ฐ€? ์ปค๋„ ๋‚ด๋ถ€์— ์‹ค์ œ๋กœ ๊ตฌํ˜„๋œ ์ฃผ์š” ๊ธฐ๋Šฅ ํ•ญ๋ชฉ ์ปค๋„ ์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ปค๋„์˜ ์ •์˜์™€ ์—ญํ•  ์ปค๋„์€ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋‹ค. ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋ฉด์„œ ํ•˜๋“œ์›จ์–ด์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ
#EmbeddedAndIoTwithLinux#KernelArchitecture#LinuxAutomationAndOps+3
2025-05-14Blog
Linux Kernel โ€“ 4 Kernel system configuration๐Ÿง 
blog

Linux Kernel โ€“ 4 Kernel system configuration๐Ÿง 

Linux Kernel โ€“ 4 Kernel system configuration๐Ÿง  ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์—์„œ ์ปค๋„ ๊ฐœ๋ฐœ ๋˜๋Š” ์ปดํŒŒ์ผ์— ํ•„์š”ํ•œ ์‹œ์Šคํ…œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด ํ™•์ธ ์ปค๋„ ๋ฒ„์ „ ํ™•์ธ root@raspberrypi:/home/jinho# uname -r 6.12.25+rpt-rpi-v8 ์ „์ฒด ์ปค๋„ ์ •๋ณด (์ปดํŒŒ์ผ๋Ÿฌ ํฌํ•จ) root@raspberrypi:/
#ARMv8#DeviceTree#KernelDevelopment+1
2025-05-22Blog
Linux Kernel โ€“ 2 Kernel vendor, architecture ๐Ÿง 
blog

Linux Kernel โ€“ 2 Kernel vendor, architecture ๐Ÿง 

Linux Kernel โ€“ 2 Kernel vendor, architecture ๐Ÿง  Vendor๋ณ„ ์ปค๋„ ๊ด€์  CPU ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ณ„ ์—ญํ•  ๋ฐ์ดํ„ฐ ์ „์†ก ํ๋ฆ„ (๋น„ํŠธ ๋‹จ์œ„) ์ฃผ์š” ์•„ํ‚คํ…์ฒ˜๋ณ„ ๋น„ํŠธ ๊ตฌ์กฐ ๋น„๊ต CPU, SoC, ๋ณด๋“œ ๋ฒค๋”๋ณ„ ํ•˜๋“œ์›จ์–ด ๊ตฌ์กฐ ์ฐจ์ด๋ฅผ ์ปค๋„ ๊ด€์ ์—์„œ ์„ค๋ช… ๊ฐ ์•„ํ‚คํ…์ฒ˜์˜ ๋น„ํŠธ ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ฆฌ Vendor๋ณ„ ์ปค๋„ ๊ด€
#ARMv7#ARMv8#BitWidth+5
2025-05-15Blog