arm linux 核心生成過程

2021-08-28 20:15:34 字數 2958 閱讀 6372

1. 依據arch/arm/kernel/vmlinux.lds 生成linux核心原始碼根目錄下的vmlinux,這個vmlinux屬於未壓縮,帶除錯資訊、符號表的最初的核心,大小約23mb;

arm-linux-gnu-ld -el  -p --no-undefined -x -o vmlinux -t arch/arm/kernel/vmlinux.lds  

arch/arm/kernel/head.o  

arch/arm/kernel/init_task.o   

init/built-in.o  

--start-group   

usr/built-in.o   

arch/arm/kernel/built-in.o   

arch/arm/mm/built-in.o   

arch/arm/common/built-in.o   

arch/arm/mach-s3c2410/built-in.o   

arch/arm/nwfpe/built-in.o   

kernel/built-in.o          

mm/built-in.o   

fs/built-in.o   

ipc/built-in.o   

security/built-in.o   

crypto/built-in.o   

lib/lib.a   

arch/arm/lib/lib.a   

lib/built-in.o   

arch/arm/lib/built-in.o   

drivers/built-in.o   

sound/built-in.o   

net/built-in.o  

--end-group .tmp_kallsyms2.o

2. 將上面的vmlinux去除除錯資訊、注釋、符號表等內容,生成arch/arm/boot/image,這是不帶多餘資訊的linux核心,image的大小約3.2mb;

命令:arm-linux-gnu-objcopy -o binary -r .note -r .comment -s  vmlinux arch/arm/boot/image

3. 將 arch/arm/boot/image 用gzip -9 壓縮生成arch/arm/boot/compressed/piggy.gz大小約1.5mb;

命令:gzip -f -9 < arch/arm/boot/compressed/../image > arch/arm/boot/compressed/piggy.gz

4. 編譯arch/arm/boot/compressed/piggy.s 生成arch/arm/boot/compressed/piggy.o大小約1.5mb,這裡實際上是將piggy.gz通過piggy.s編譯進piggy.o檔案中。而piggy.s檔案僅有6行,只是包含了檔案piggy.gz;

命令:arm-linux-gnu-gcc -wp,-md,arch/arm/boot/compressed/.piggy.o.d  -nostdinc -isystem /home/justin/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/lib/gcc/arm-linux-gnu/3.4.5/include -d__kernel__ -iinclude  -mlittle-endian -d__assembly__ -wa,-l -gdwarf-2 -mapcs-32 -mno-thumb-interwork -d__linux_arm_arch__=4 -march=armv4 -mtune=arm9tdmi -msoft-float    -c -o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/piggy.s

5. 依據arch/arm/boot/compressed/vmlinux.lds 將arch/arm/boot/compressed/目錄下的檔案head.o 、piggy.o 、misc.o鏈結生成 arch/arm/boot/compressed/vmlinux,這個vmlinux是經過壓縮且含有自解壓**的核心,大小約1.5mb;

命令:arm-linux-gnu-ld -el   --defsym zreladdr=0x30008000 --defsym params_phys=0x30000100 -p --no-undefined -x /home/justin/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/lib/gcc/arm-linux-gnu/3.4.5/libgcc.a -t arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/misc.o -o arch/arm/boot/compressed/vmlinux

6. 將arch/arm/boot/compressed/vmlinux去除除錯資訊、注釋、符號表等內容,生成arch/arm/boot/zimage大小約1.5mb;這已經是乙個可以使用的linux核心映像檔案了;

命令:arm-linux-gnu-objcopy -o binary -r .note -r .comment -s  arch/arm/boot/compressed/vmlinux arch/arm/boot/zimage

7. 將arch/arm/boot/zimage新增64bytes的相關資訊打包為arch/arm/boot/uimage大小約1.5mb;

命令:/bin/sh /home/farsight/resources/kernel/linux-2.6.14/scripts/mkuboot.sh -a arm -o linux -t kernel -c none -a 0x30008000 -e 0x30008000 -n 'linux-2.6.14' -d arch/arm/boot/zimage arch/arm/boot/uimage

編譯arm linux核心

這一次寫一下編譯 arm核心以及根檔案系統的體驗,我使用的是 linux 2.6.30.4 的核心,通過 第一步 解壓原始檔 tar jxvf linux 2.6.30.4.tar.bz2 c opt 下。第二步 更改主目錄下 makefile 檔案,使其支援 arm架構。在 193行的 arch ...

WINCE核心生成過程

生成映像檔案nk.bin是平台建立過程的最後一步,也是配置windows ce的最終目標。makeimg.exe使用全部配置檔案把目標模組和檔案合併成乙個惟一的windows ce映像檔案nk.bin。圖1所示為nk.bin的生成過程。makeimg生成nk.bin的具體步驟 全並配置檔案 所有的....

ARM Linux 2 6 34核心移植

arm linux gcc版本4.3.2.以安裝在 usr local arm 4.3.2下.第一步 修改linux 2.6.34 makefile檔案,在makefile中找到以下兩條資訊並做修改 arch arm cross compile usr local arm 4.3.2 bin arm...