目錄
windows系統和linux系統啟動過程
linux源碼目錄樹
樹莓派linux源碼配置
windows系統和linux系統啟動過程
windows啟動過程:
1.啟動電源,BOIS啟動windows,windows識别C槽,C槽運作APP.
linux啟動過程:
1.啟動電源,bootloader啟動linux核心,linux核心識别根檔案系統,根檔案系統運作APP。
linux源碼目錄樹
使用sudo apt-get install tree安裝tree指令
樹莓派linux源碼配置
驅動代碼的編譯需要一個提前編譯好的核心,編譯核心就需要配置核心。
配置的最終目标會生成。config檔案,該檔案知道Makefile去把有用東西組織成核心
第一種方式:
廠家配linux核心源碼,樹莓派linux核心源碼
cp 廠家.config .config
第二種方式:
make menuconfig 一項項配置,通常是基于廠家的config來配置
第三種方式:
自己配置
配置樹莓派linux核心操作步驟如下:
樹莓派2,3的工程是bcm2709_defconfig
第一種方式使用樹莓派的bcm2709_defconfig:
輸入指令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
第二種方式使用make menuconfig進行配置:
1.安裝必要的庫:
sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
2.輸入指令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig( 說明:ARCH指定架構,CROSS_COMPILE指定編譯器,KERNEL指令核心)
驅動兩種加載方式:
*編譯進核心 zImage包含了驅動
M子產品方式生成驅動檔案 xxx.ko 系統啟動後,通過指令insmod
3.編譯核心指令如下:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs (說明:j4使用了4個核心進行編譯,zImage生成核心鏡像,modules要生成驅動子產品,dtbs生成配置檔案)
4.編譯成功後,看到目錄多了vmlinux,失敗則說明編譯失敗。目标zlmage鏡像在目錄arch/arm/boot底下。
5.打包zImage成樹莓派可用的xxx.img,輸入以下指令:
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
6.将SD卡插入電腦,使用指令dmesg檢視是否挂載成功
7.挂載U盤:
7.1建立兩個檔案夾,輸入指令 :mkdir data1 和mkdir data2
7.2将SD的内容挂載到data1目錄和data2目錄:
輸入如下指令:sudo mount /dev/sdb1 data1(說明:sdb1是fat分區,是boot相關的内容,kernel的img檔案就放在這個分區裡面)
sudo mount /dev/sdb2 data2(說明:sdb2是ext分區,也就是系統的根目錄分區)
8.安裝modules(裝置驅動檔案 HDMI USB WIFI IO .....)
輸入以下指令:
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/lizhiwen/data2 modules_install(說明:安裝的時候要加上絕對路徑)
9.安裝更新的kernel.img ,鏡像名字是kernel7.img
先将原先的鏡像進行備份,輸入以下指令:
cp kernel7.img kernel7OLD.img
10.再把編譯新生成鏡像拷貝到data1,起名為kernel7.img
輸入以下指令:
cp kernel_new.img /home/lizhiwen/data1/kernel7.img
11.使用指令md5sum檢視是否拷貝成功
12.拷貝配置檔案
cp arch/arm/boot/dts/.*dtb* /home/lizhiwen/data1
cp arch/arm/boot/dts/overlays/.*dtb* home/lizhiwen/data1/overlays
cp arch/arm/boot/dts/overlays/README home/lizhiwen/data1/overlays
13.将SD拔下插入樹莓派,啟動樹莓派之後使用uname -r檢視版本号