Linux核心移植-------操作筆記
Linux核心是什麼?
核心可以簡單的理解為許多模組化程式碼的堆積,通過有機的聯絡構成一個系統。你可以刪除核心模組或增加自己的寫的功能模組,這樣就達到了裁剪系統的操作。
裁剪一個屬於自己的系統分為幾步?
分為以下三步:
第一步:製作uboot
需要準備的資料:原始碼包 (官網提供,如友善之臂的4412,對應uboot_tiny4412-sdk1506.tar.bz2)
SD卡 (需要大的那種,因為介面是MMC)
Securecrt工具 (工具,用於與開發平臺通訊,COM轉USB連線)
SD-Flasher (工具,製作燒寫用SD卡)
交叉編譯器(開發板指定,一般為arm-linux-****)
製作過程描述:解壓原始碼包,make生成bl1.bin 、bl2.bin 、uboot.bin,執行指令碼sd_fusing.sh將其寫入SD卡
(此時,可以在開發板上執行uboot,類似於bios,可以通過SecureCRT進行簡單的命令操作,help檢視所有命令)
第二步:裁剪核心原始碼
需要準備的資料:核心原始碼包 (開原始碼,網上可以找到,如linux-3.5.buildok.tar.gz)
製作過程:解壓原始碼包,通過make menuconfig 的配置選單實現裁剪,然後make生成zImage,最後建立並編寫燒入指令碼sd_fusing.sh
sd_fusing.sh編輯如下
#!/bin/bash if [ -e /dev/sdb ] then echo fusing... dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb seek=1057 else echo /dev/sdb is not find! exit -1 fi echo fused OK!!! |
(核心資料夾lib、include、drivers,我們可以把自己編寫的驅動程式碼放入對應資料夾裡,通過編寫Makefile、Kconfig將我們寫原始碼併入核心程式碼中)(我們也可以看出Makefile 、Kconfig 、 原始碼 三者有機聯絡構成一個模組存在在核心中,並在menuconfig配置選單中顯示,詳情可以看下:https://blog.csdn.net/loongembedded/article/details/39376435)
注意:核心程式碼的燒入時,注意指令碼燒入的seek=1057( bl1.bin +bl2.bin + uboot.bin = 1057 塊 )
sd卡前面一段我們已經存放了uboot程式碼,避免核心原始碼覆蓋uboot。(不同的uboot,seek起點也不一樣,我們可以自己事先du一下三個檔案的大小)
第三步 :檔案系統的製作
我們通過前兩個步驟,基本搭建起了系統,但系統只是“裸機”狀態下執行,我可以通過SecureCRT可以看到系統不停的在刷資料。這時,我需要在這“荒蕪”的基礎之上慢慢建立起東西——檔案系統
需要準備的資料:busybox原始碼包 (如:busybox-1.17.2-20101120.tgz)
主要過程:通過busybox原始碼包make&&make install命令,在主目錄root_fs下生成主要核心資料夾bin/ 、sbin/ 、 usr/ 、linuxrc等,然後在這個基礎之上,複製一些linux系統的一些資料夾來完善所要建立的檔案系統,最後一步就是將檔案系統掛在到開發板上了。
詳情推薦:https://blog.csdn.net/asklw/article/details/52611594