天天看點

交叉編譯Raspberry Pi 核心記Raspberry Pi 核心編譯記

Raspberry Pi 核心編譯記

前言

       手中的紅色樹莓派已經買來許久,但還沒怎麼玩。最近想學習核心的知識,是以開始拿出手中的Pi。從核心編譯開始,于是有了這篇文章。核心的編譯主要參考這篇部落格古作坊和官方教程。下面是根據回憶記錄,有錯誤請指出。

準備工作

      1.确定你手中已經有了張燒好系統的SD卡(我燒的是wheezy-raspbian)          2.不可缺少的工具:git          3.一條網線,一台路由(ssh登入)或是USB轉序列槽器和杜邦線。

開始核心編譯

 1.擷取linux核心代碼和工具包

打開termial,mkdir git-version,然後分别用git clone

$ git clone git://github.com/raspberrypi/firmware.git firmware
$ git clone git://github.com/raspberrypi/linux.git linux
$ git clone git://github.com/raspberrypi/tools.git tool
           

2.擷取raspberry Pi中的.config檔案 用ssh或是序列槽的方式登入到你raspberry pi中, 假如是ssh,把你pi中的/proc/config.gz到PC中 raspberry-pi $ scp [email protected]:/proc/config.gz 假如使用序列槽,raspberry pi是沒有裝rz和sz指令的。是以要先在raspberry pi中先安裝lrzsz.這樣才能使用rz指令上檔案

在PC中,将.configz移到用git拉下來的linux目錄中:

izobs$ gunzip config.gz
izobs$ mv config .config
izobs$ cp .config ../linux
           

接下來:

izobs$ make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- oldconfig
           
izobs$ make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- menuconfig
           

配置完自己想要的子產品,接下來就是編譯了。

izobs$ make ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- -j4
           

等待編譯完成後,将zImage 打包成kernel.img

izobs$ cd git-version/tool/mkimage
izobs$ ./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage
           

在mkimage目錄下着會生成kernel.img啦!

接下來需要編譯新的moudle和lib,

izobs$ cd ../git-version
izobs$ mkdir modules
izobs$ cd git-verison/linux
izobs$ make modules_install ARCH=arm CROSS_COMPILE=../tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- INSTALL_MOD_PATH=../modules
           

到此,編譯工作完成,下面進行新核心的安裝。

安裝新核心和更新Firmware,lib

将裝有舊系統的SD卡插到你的PC中,打開termial:$ df -h:

檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda6        19G   11G  7.6G   58% /
none            4.0K     0  4.0K    0% /sys/fs/cgroup
udev            1.9G  4.0K  1.9G    1% /dev
tmpfs           376M  948K  375M    1% /run
none            5.0M     0  5.0M    0% /run/lock
none            1.9G  3.0M  1.9G    1% /run/shm
none            100M   16K  100M    1% /run/user
/dev/sda8        45G   39G  4.0G   91% /home
/dev/sda4       9.1G  7.5G  1.6G   83% /media/izobs/zob
/dev/sda3        21G   19G  2.5G   89% /media/izobs/zob2
/dev/sda1        51G   37G   14G   73% /media/izobs/26608333608308AF
/dev/sda5       140G  126G   14G   91% /media/izobs/軟體
/dev/mmcblk0p1   56M   18M   39M   31% /media/izobs/boot
/dev/mmcblk0p2  7.3G  1.8G  5.2G   26% /media/izobs/41cd5baa-7a62-4706-b8e8-02c43ccee8d9
           

假如你的linux系統能自動挂載的話,df -h後,你将看到上面的東東。如果不能自動挂載,則手動 挂載這後面的兩個盤吧。

/dev/mmcblk0p1 裡是/boot的内容,

izobs-HP# cd /media/izobs/boot 
izobs-HP# ls
bootcode.bin  fixup_cd.dat  issue.txt		  kernel_new.img
cmdline.txt   fixup.dat     kernel_emergency.img  start.elf
config.txt    fixup_x.dat   kernel.img
izobs-HP# 
           

将裡面的*bin *elf移除或備份

izobs$ mv *.elf *.bin
           

将前面編譯把的kernel.im 改名成kernel_new.img移到此處, vim config.txt(這裡等号處不能有空格 = =!不然啟動不了) :

+kernel=kernel_new.img
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16
           

建用git拉下來的firmware中的   bootcode.bin fixup.dat fixup_cd.dat start.elf複制到此處

izobs$ cp /home/izobs/workspace/Ra-Pi/git-version/firmware/boot bootcode.bin fixup.dat fixup_cd.dat start.elf
           

進入/dev/mmcblk0p2的挂載點,将我們前面編譯好的moudles目錄的lib複制到這挂載點的lib目錄中,還有将新的vc庫複制到opt/vc中(framware/hardfp/opt/vc)。 将SD插回去,上電,uname -a。Pi是否有了新心髒了呢?

SSH外記

 用ssh登入SSH的前提是要知道Pi的密碼,沒有螢幕真的沒法看。于是每次都要去路由看= =!

在網上收到有人用email的方式來将pi的ip發送出去。在簡單了解python的email發送後,寫了個腳本。

 git clone https://github.com/iZobs/Email_IP_raspberryPi.git

交叉編譯Raspberry Pi 核心記Raspberry Pi 核心編譯記
交叉編譯Raspberry Pi 核心記Raspberry Pi 核心編譯記

繼續閱讀