前言 昨天終于入手了一塊Cubieboard2板子,,今年4月入職從事的就是與之相關(guān)的工作,,因此趁現(xiàn)在有時間就好好熟悉一下。
一,、主機環(huán)境 1.PC主機WIN 7旗艦版 1.虛擬機VM7.0 2.ubuntu12.04 3.4G的TF卡,,讀卡器
二、安裝交叉編譯器 這個比較關(guān)鍵,,試過用自己下載的arm-linux-gnueabihf的4.7版本在構(gòu)建busybox的根文件系統(tǒng)時會出現(xiàn)經(jīng)典的錯誤:kernel panic - not syncing: No init found. Try passing init= option to kernel,,因此用ubuntu源里自帶的交叉編譯器,安裝方法如下: #sudo apt-get install gcc-arm-linux-gnueabihf 目前我安裝到的版本是4.6.3,。
三,、TF卡分區(qū) 將TF卡用讀卡器插入PC,ubuntu會識別為sdb(根據(jù)具體情況或許會不同),,查看原來的TF是否已經(jīng)有分區(qū): #sudo fdisk /dev/sdb -l 如果有則將所有分區(qū)刪除: #sudo fdisk /dev/sdb d 分區(qū)號 d 分區(qū)號 … 直到刪除所有分區(qū)(p可以查看),,接下來分區(qū),繼續(xù)操作 n p 1 2048 +100M n p 2 回車 回車 w 用命令sudo fdisk /dev/sdb –l查看是否有兩個分區(qū),。格式化這兩個分區(qū): #sudo mkfs.ext4 /dev/sdb2 #sudo mkfs.vfat /dev/sdb1
四,、編譯u-boot 下載u-boot源碼: #git clone https://github.com/linux-sunxi/u-boot-sunxi -b wip/a20 編譯: #make cubieboard2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 燒寫u-boot到TF卡: #dd if=spl/sunxi-spl.bin of=/dev/sdb bs=1024 seek=8 #dd if=u-boot.bin of=/dev/sdb bs=1024 seek=32
五、編譯內(nèi)核 下載內(nèi)核源碼: #git clone https://github.com/cubieboard2/linux-sunxi 修改內(nèi)核源碼根目錄下的Makefile,,令A(yù)RCH=arm,,CROSS_COMPILE=arm-linux-gnueabihf-。 配置,、編譯內(nèi)核: #make sun7i_defconfig #make menuconfig(注:退出時要保存) #make uImage
六,、構(gòu)建script.bin腳本 下載源碼: #git clone https://github.com/linux-sunxi/sunxi-boards #git clone https://github.com/linux-sunxi/sunxi-tools 編譯: #cd sunxi-tools #make #./fex2bin ../sunxi-boards/sys_config/a20/cubieboard2.fex ./script.bin
七、構(gòu)建boot.scr文件 新建boot.cmd文件,,輸入以下內(nèi)容: setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 init=/sbin/init rootwait panic=10 ${extra} fatload mmc 0 0x43000000 script.bin fatload mmc 0 0x48000000 uImage bootm 0x48000000 編譯: #mkimage -C none -A arm -T script -d boot.cmd boot.scr
八,、構(gòu)建busybox根文件系統(tǒng) 下載busybox源碼,http://,,我下載的是當(dāng)時最新版本busybox-1.22.1,。 修改源碼根目錄下的Makefile,,令A(yù)RCH=arm,CROSS_COMPILE=arm-linux-gnueabihf-,。 編譯,、安裝: #make #make install
目前為止,需要的所有文件已經(jīng)準備好了,。下面將它們放到合適的TF卡分區(qū)里。首先將uImage,、boot.cmd,、boot.scr和script.bin文件放到sdb1分區(qū)。掛載TF卡分區(qū)到ubuntu: #sudo mount /dev/sdb1 /mnt/mnt1 拷貝文件進mnt1(自己創(chuàng)建mnt1,、mnt2目錄): #sudo cp {內(nèi)核源碼路徑}/arch/arm/boot/uImage /mnt/mnt1 #sudo cp {sunxi-tools路徑}/script.bin /mnt/mnt1 #sudo cp boot.cmd /mnt/mnt1 #sudo cp boot.scr /mnt/mnt1 #sudo umount /mnt/mnt1 制作根文件系統(tǒng),,將busybox生成的文件放到sdb2分區(qū): #sudo mount /dev/sdb2 /mnt/mnt2 #sudo cp –Rv {busybox源碼路徑/_install/*} /mnt/mnt2 #sudo cp –Rv {busybox源碼路徑/ examples/bootfloppy/etc} /mnt/mnt2 拷貝交叉編譯器的庫到sdb2分區(qū): #sudo cp –Rv /usr/arm-linux-gnueabihf/lib /mnt/mnt2 進入/mnt/mnt2目錄: #cd /mnt/mnt2 創(chuàng)建目錄: #sudo mkdir dev proc sys var home tmp mnt run boot boot2 dev/pts 將/mnt/mnt2/etc/fstab文件的內(nèi)容全部替換為以下內(nèi)容: proc /proc proc nosuid,noexec,nodev 0 0 sysfs /sys sysfs nosuid,noexec,nodev 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 tmpfs /tmp tmpfs defaults 0 0 devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 /dev/mmcblk0p1 /boot2 vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 最后卸載sdb2分區(qū): #sudo umount /mnt/mnt2
將TF卡插入到cubieboard2,接上自帶的USB轉(zhuǎn)TTL線,,成功啟動如下: 若有什么問題,,歡迎交流。 |
|
來自: dwlinux_gs > 《A20》