busybox編譯與燒寫

2021-07-25 09:26:39 字數 2553 閱讀 9130

一、實驗環境

硬體: jz2440開發板

busybox版本: busybox-1.7.0

交叉工具鏈:  gcc-3.4.5-glibc-2.3.6

二、實驗步驟

1、解壓核心原始碼包

為了方便以後檢視我們對核心原始碼所作的修改可以使用git建立乙個**倉庫,從而記錄修改的點滴

tar   xjfv  busybox-1.7.0.tar.bz2

cd  busybox-1.7.0

git  init              //初始git倉庫

git  add .          //將目錄下的所有新增到暫存區

//將所有提交到倉庫

git  commit  -a  -m "this iis busybox source without any change"

2、配置編譯

進入busybox-1.7.0目錄下執行 make menuconfig 並根據自己需要修改配置選項儲存後退出便會生成

乙個.config配置檔案。編譯前還得修改makefile指定交叉工具鏈

arch        ?= arm

cross_compile    ?= /opt/cross-tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-

修改完之後便可執行make命令進行編譯busybox。最後安裝,執行如下命令:

make config_prefix=dir_path install

eg:make config_prefix=/nfs/sysfs/fs_s3c2440

就可以將busybox安裝到dir_path目錄下。安裝完之後的目錄結構如下圖:

3、安裝glibc庫

在開發板上只需要載入器和動態庫,在此我們構建乙個lib/目錄,命令如下:

mkdir  -p  /nfs/sysfs/s3c2440/lib

cd /opt/cross-tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib   //交叉工具鏈所在目錄

cp *.so* /nfs/sysfs/fs_s3c2440/lib/ -d

4、構建etc目錄

5、構建dev目錄

6、構建其他目錄

如果沒有 /proc、/tmp、/sys則會有以下錯誤提示

mount: mounting proc on /proc failed: no such file or directory

mount: mounting tmpfs on /tmp failed: no such file or directory

mdev: /sys/block: no such file or directory

mdev: /sys/class: no such file or directory

7、製作與燒寫yaffs

製作:  mkyaffs2image  fs_s3c2440  root.yaffs2

在燒寫核心之前得先安裝tftp,具體的安裝和使用這裡不細說(參考ubuntu14.04開發環境搭建),同時還得設定電腦與開發板的

set  ipaddr   200.200.200.66

set  serverip   200.200.200.99

然後使用tftp燒寫:

tftp   30000000  root.yaffs2

nand  erase  root

nand  write.yaffs  30000000  0x00260000  $(filesize)

8、使用nfs啟動根檔案系統

為了方便核心的學習和除錯,作者在此建議使用nfs掛載啟動根檔案,這樣就不用將每次的修改燒寫進flash也能驗證修改的結果。

為了使得系統啟動時能夠通過nfs讀取到本機的檔案系統,首先本機的nfs服務和板子的nfs服務必須的配置好,這裡不細說。在此

主要介紹一下啟動引數的設定具體如下:

格式: nfsroot=[:][,]  ip=::::::

eg:  set bootargs noinitrd root=/dev/nfs nfsroot=200.200.200.99:/nfs/sysfs/fs_s3c2440 ip=200.200.200.88:200.200.200.99:200.200.200.1:

255.255.255.0::eth0:off init=/linuxrc console=ttysac0

如果要恢復從flash啟動可以將引數設定為:

set bootargs  noinitrd  root=/dev/mtdblock3  init=/linuxrc  console=ttysac0

待完善

(一)裸機程式編譯與燒寫

準備 編譯鏈 arm linux gnueabihf gcc 原始檔 led.s 彙編檔案 程式編譯 編譯檔案 arm linux gnueabihf gcc g c led.s o led.o 鏈結檔案 這裡要理解一下 執行位址 和 儲存位址 這兩個概念,儲存位址是可執行程式檔案所在的位置,這個位...

OpenWRT 樹莓派編譯 燒寫

sudo apt get install gcc sudo apt get install binutils sudo apt get install bzip2 sudo apt get install flex sudo apt get install python sudo apt get i...

linux核心編譯及燒寫

本文實現在虛擬機器中的ubuntu系統中編譯能夠在arm晶元上執行的linux系統 給arm晶元裝系統 安裝虛擬機器,裝ubuntu 12.4系統 1 安裝交叉編譯工具 什麼系統用什麼編譯工具,編譯arm晶元核心的編譯器請選擇廠商給的工具,如給的壓縮包為arm.tar.bz2,解壓到指定資料夾後通過...