編譯U boot和Linux核心的步驟和詳解

2021-08-15 20:40:42 字數 3877 閱讀 6558

linux核心和uboot的原始碼包—- 6818gec.tar.gz 環境:vmware12.0 ubuntu16.04(64位)

(1)先將 6818gec.tar.gz 放在ubuntu的共享目錄下,然後將 6818gec.tar.gz 拷貝到家目錄下進行解壓。

解壓命令:gec@ubuntu:~$ tar -zxvf 6818gec.tar.gz

(2)gec@ubuntu:~/6818gec$ ./mk -u

編譯輸出

ld u-boot —–>鏈結成u-boot可執行映像檔案

objcopy u-boot.srec

objcopy u-boot.bin —>將u-boot可執行映像檔案進行格式轉換,轉換成bin格式的檔案

./tools/mk6818 gecuboot.bin nsih.txt 2ndboot u-boot.bin —->將nsih.txt 2ndboot u-boot.bin打包生成gecuboot.bin–>emmc

nsih : 189 line processed.

nsih : 512 bytes generated.

generate destination file: gecuboot.bin

『/home/gec/6818gec/gec6818uboot/gecuboot.bin』 -> 『/home/gec/6818gec/out/release/gecuboot.bin』

『/home/gec/6818gec/gec6818uboot/readme.txt』 -> 『/home/gec/6818gec/out/release/readme.txt』

『/home/gec/6818gec/gec6818uboot/env.txt』 -> 『/home/gec/6818gec/out/release/env.txt』

『/home/gec/6818gec/gec6818uboot/gec6818-sdmmc.sh』 -> 『/home/gec/6818gec/out/release/gec6818-sdmmc.sh』

^_^ uboot path: /home/gec/6818gec/out/release/gecuboot.bin —->將gecuboot.bin拷貝到out/release/下

(3)gec@ubuntu:~/6818gec$ ./mk -k

編譯輸出:

kernel: arch/arm/boot/image is ready

kernel: arch/arm/boot/zimage is ready

uimage arch/arm/boot/uimage

image name: linux-3.4.39-gec

created: mon feb 26 22:06:56 2018

image type: arm linux kernel image (uncompressed)

data size: 5532568 bytes = 5402.90 kb = 5.28 mb

load address: 40008000

entry point: 40008000

image arch/arm/boot/uimage is ready

boot.img -> /home/gec/6818gec/out/release

『/home/gec/6818gec/kernel/arch/arm/boot/uimage』 -> 『/home/gec/6818gec/out/target/product/gec6818//boot/uimage』

make_ext4fs -s -t -1 -l 67108864 -a boot /home/gec/6818gec/out/target/product/gec6818 /home/gec/6818gec/out/target/product/gec6818//boot

creating filesystem with parameters:

size: 67108864

block size: 4096

blocks per group: 32768

inodes per group: 4096

inode size: 256

journal blocks: 1024

label:

blocks: 16384

block groups: 1

reserved block group size: 7

created filesystem with 18/4096 inodes and 4212/16384 blocks

『/home/gec/6818gec/out/target/product/gec6818』 -> 『/home/gec/6818gec/out/release/boot.img』

核心映像檔案的生成過程:

核心原始碼—>image–>壓縮–>zimage—>使用mkimage工具,在zimage的前面加乙個頭–>uimage—>經過檔案系統打包,生成boot.img

/home/gec/6818gec/out/release/boot.img

1、gec6818uboot

—–>u-boot的原始碼包

gec@ubuntu:~/6818gec$ ls gec6818uboot/

2ndboot board config.mk doc env.txt gec6818-sdmmc.sh kbuild makeall net nsih-2g16b-533m.txt nsih.txt readme.txt system.map u-boot u-boot.map

api boards.cfg credits drivers examples gecuboot.bin lib makefile nsih-1g16b-533m.txt nsih-2g16b-800m.txt post scripts test u-boot.bin u-boot.srec

arch common disk dts fs include licenses mkconfig nsih-1g16b-800m.txt nsih-2g8b.txt readme snapshot.commit tools u-boot.lds

2、kernel

——>linux核心的原始碼

gec@ubuntu:~/6818gec$ ls kernel

android copying documentation fs init kconfig maintainers modules.builtin net samples sound usr vmlinux.o

arch credits drivers gec6818_linux_config ipc kernel makefile modules.order readme scripts system.map virt

block crypto firmware include kbuild lib mm module.symvers reporting-bugs security tools vmlinux

4、out

——>編譯生成的u-boot和kernel的映像檔案

/out/release/gecuboot.bin

/out/release/boot.img

5、prototype

——->linux核心使用的一些韌體程式,這些韌體程式是針對s5p6818底層外設,如:串列埠、看門狗、定時器、usb.、、、、

6、tools

——->編譯u-boot或kernel使用的一些工具

8、buildroot

——->生成跟檔案系統的內容

1、使用fastboot

2、使用恢復卡(micro sd==tf卡)

Linux核心編譯和替換核心

linux核心支援多種架構。該篇小記是筆者第一次針對已有的核心配置檔案來編譯核心的,比如arm系列的博通bcm,海思hisi,恩智浦i.mx6ull 本次是針對博通bcm2709 defconfig來編譯核心的。本次是針對博通bcm2709 defconfig來編譯核心 安裝交叉編譯工具鏈 安裝nc...

Linux公升級和編譯核心

最近幾年linux核心推陳出新,版本迭代的速度明顯加快了很多,由於linux之父對核心版本號的設定的改革,版本號不會再像2.4和2.6時代,很久時間主版本號都不會變動了。給人的感覺就是版本更替的速度加快了很多,除此之外,也會提高關於linux核心的關注度,隨著linux的發展壯大,應用越來越普遍,l...

Linux核心編譯安裝和解除安裝核心

linux開行版的自帶核心不一定能滿足linux學習和某些特殊的要求,這時我們就不得不根據自己的需求重新安裝核心。這裡我介紹一些常用編譯核心的步驟。核心編譯安裝 p.s.學習最新的核心,可以轉殖linus在github的 二 選擇核心配置 p.s.選擇預設選項的話 make defconfig。p....