1. 程式人生 > >Linux核心移植-------操作筆記

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