1. 程式人生 > >菜鳥的cubieboard之旅-SD卡映象製作

菜鳥的cubieboard之旅-SD卡映象製作

http://blog.csdn.net/allen6268198/article/details/19068523
http://blog.csdn.net/allen6268198/article/details/19406865
http://blog.csdn.net/andy_wsj/article/details/8515197
http://dl.cubieboard.org/software/a20-cubietruck/lubuntu/ct-lubuntu-card-v2.0/server/nand/
參考了http://mer.jolladev.net/wiki.php?id=%E5%90%AF%E5%8A%A8cubieboard2%E5%88%B0linux_kernel

和tll大神的How to make a cubieboard system文件
第一步:下載kernel程式碼並編譯
git clone git://github.com/linux-sunxi/linux-sunxi
配置並編譯:
Gerneral setup ->Cross Compilter too prefix 這裡填arm-linux-gnueabihf-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- cubieboard2_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 uImage modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf–j4 INSTALL_MOD_PATH=output modules_install
如果成功,在/arch/arm/boot/目錄下會有uImage,在output下會有lib目錄
第二步:下載uboot程式碼並編譯
git clone git://github.com/linux-sunxi/u-boot-sunxi.git
make distclean CROSS_COMPILE=arm-linux-gnueabihf-
make Cubieboard2 CROSS_COMPILE=arm-linux-gnueabihf-
如果成功,會在主目錄下有u-boot.bin,在spl目錄有u-boot-spl.bin
第三步:生成boot.scr
boot.scr是什麼?
根據資料描述(
https://github.com/linux-sunxi/u-boot-sunxi/wiki#bootscr-support
),u-boot在啟動的時候會在第一個分割槽(FAT/extX格式)尋找/boot.scr或者/boot/boot.scr檔案,boot.scr中可以包含用於載入script.bin,kernel,initrd(可選)以及設定核心啟動引數的uboot命令。
boot.cmd如何生成?
WORKDIRboot.cmdsetenvbootargsconsole=ttyS0,115200noinitrddisp.screen0outputmode=EDID:
1280x1024p60init
=/initroot=/dev/mmcblk0p2rootfstype=ext4rootwaitpanic=10
{extra}
fatload mmc 0 0x43000000 boot/script.bin
fatload mmc 0 0x48000000 boot/uImage
bootm 0x48000000
生成boot.scr:
kimage -C none -A arm -T script -d boot.cmd boot.scr
第四步:生成script.bin
git clone git://github.com/linux-sunxi/sunxi-tools.git,這個下載的是生成上次script所需要的工具
git clone git://github.com/linux-sunxi/sunxi-boards.git這個是板子對應的資源列表
編譯工具:
cd WORKDIR/sunxitoolsmakescript.bincdWORK_DIR/sunxi-boards/sys_config/a20
$WORK_DIR/sunxi-tools/fex2bin cubieboard2.fex script.bin

這樣就把製作需要的東西都準備好了,接下來就是把剛才這些拷貝到tf卡中
A20 晶片上電啟動的時候,會讀取SD卡最前面的 1M 內容,從而得到 bootloader,所以我們需要把 u-boot 寫到SD卡的前1M區間。
其中詳細的SD卡布局如下:
起始 大小 用途
0 8KB 存放分割槽表等內容
8 24KB SPL loader
32 512KB u-boot
544 128KB environment
672 352KB 保留
1024 - 用於剩餘分割槽
可以看到,應該把剛uboot編譯產生的u-boot-spl.bin 這個檔案拷貝到8k這個位置,把u-boot.bin 放到32k這個位置
話說要先給tf卡分割槽
具體分割槽步驟如下:
建立第一個分割槽
[email protected]:~/src/u-boot-sunxi# fdisk ${card}
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x911332e8.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n #鍵入n然後回車
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): #直接回車
Using default response p
Partition number (1-4, default 1): #直接回車
Using default value 1
First sector (2048-15278079, default 2048): #直接回車
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15278079, default 15278079): +64M #鍵入+64M後回車,即分割槽大小為64M
建立第二個分割槽
Command (m for help): n #鍵入n然後回車
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): #直接回車
Using default response p
Partition number (1-4, default 2): #直接回車
Using default value 2
First sector (133120-15278079, default 133120): #直接回車
Using default value 133120
Last sector, +sectors or +size{K,M,G} (133120-15278079, default 15278079): #直接回車,即第二個分割槽使用全部剩餘空間
Using default value 15278079
接下來指定分割槽型別:
Command (m for help): t #鍵入t然後回車
Partition number (1-4): 1 #鍵入1然後回車,即指定第一個分割槽
Hex code (type L to list codes): c #鍵入c然後回車,即指定第一個分割槽為vfat
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): w #鍵入w然後回車,儲存分割槽表
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
格式化分割槽:
mkfs.vfat card1mkfs.ext4{card}2
然後寫入bootloader:
cd WORKDIR/ubootsunxiddif=ubootsunxiwithspl.binof=card bs=1024 seek=8
最後安裝核心 uImage,設定啟動引數:
mount card1/mntmkdir/mnt/bootcpWORK_DIR/linux-sunxi/arch/arm/boot/uImage /mnt/boot
cp WORKDIR/sunxiboards/sysconfig/a20/script.bin/mnt/bootcpWORK_DIR/boot.scr /mnt/
sync && umount /mnt

製作檔案系統
wget http://busybox.net/downloads/busybox-1.21.1.tar.bz2
tar -jxvf busybox-1.21.1.tar.bz2
cd busybox-1.21.1
make menuconfig ARCH=arm
這邊設定一下:busybox settings->build option->Cross Compiler prefix arm-linux-gnueabihf-
make
make install

將檔案系統拷貝到tf第二分割槽
mount /dev/sdb2 /mnt
cp -r _instll/* /mnt
cp -r examples/bootfloppy/etc /mnt
cd /mnt
mkdir dev proc sys var home tmp mnt run boot boot2 dev/pts
刪除fstab,並重新編輯
rm etc/fstab;
nano etc/fstab;
chmod 777 etc/fstab;
編輯
proc /proc proc nosuid,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,notime 0 2

相關推薦

cubieboard-SD映象製作

http://blog.csdn.net/allen6268198/article/details/19068523 http://blog.csdn.net/allen6268198/article/details/19406865 http://blog

webservice 探索

unable lib poi style 目錄 使用 void disable 通過 項目背景   接到的任務是通過調用其他平臺廠商提供的webservice接口來獲取他們的圖片數據把圖片下載下來錄入我司平臺。之前沒有接觸過webservice,所以開始了這次webserv

cubieboard(一)--啟動流程

  到手一塊cubieboard2,一直沒怎麼玩過。之前做過一些linux的驅動,但是感覺整體把握不是很好,想借cubieboard這個學習機會,讓自己知識面全面點。   cubieboard的資料比較雜,而且資料沒有樹莓派這麼多,所以找資料這個過程還是比較痛苦的。廢話不多

系列C/C++經典試題(三)

最小 新元素 一道 數據 步驟 時間 name val type 設計包括min函數的棧 題目:定義棧的數據結構,要求加入一個min函數,可以得到棧的最小元素。要求函數min、push以及pop的時間復雜度都是O(1)。 分析:這是2006年google的一道面試題。

教程工具使用(五)——JRebel與Windows服務的Tomcat集成

-m end 個人 再見 proc key pre 安裝 target 之前寫過一篇Tomcat借助JRebel支持熱部署的文章——《借助JRebel使Tomcat支持熱部署 》。介紹的是在開發、測試環境中的配置。可是正式的部署環境。我們不會通過命令行來啟動Tomcat,

上路如何編寫python註冊模塊

當我 sans 切割 username 輸入 see put 註冊 1-1 我們先來確定下需求: 寫一個註冊的程序,輸入username,passwd,confirmpasswd 註冊成功之後,提示註冊成功,程序退出,要求用戶名不能重復 錯誤次數也是3次一.需求分析:需求

系列C/C++經典試題(五)

span data- 復雜 joseph 暫時 color current sep mod 求圓圈中剩下的最後一個數字 題目:n個數字(0,1,…,n-1)形成一個圓圈,從數字0開始。每次從這個圓圈中刪除第m個數字(第一個為當前數字本身。第二個為當前數字的下一個數

畫圖

linux本文出自 “我思故我在” 博客,謝絕轉載!菜鳥畫圖之三

DotNet入門無限極分類(一)設計篇

對數 tar null 擴展 creat nvarchar 鏈表 文章 數據庫設計 寫這個教程的原因,是因為,無限極分類,在許多項目中,都用得到。而對於新手來說,不是很好理解,同時,操作上也有一些誤區或者不當之處。所以我就鬥膽,拋磚引玉一下,已一個常見的後臺左側頻道樹為例子

Linux起飛路【二】Linux基本常識

copy 聯合 das 安裝第三方 所有組 以及 改進 伯克利 版本 一、Unix操作系統基本常識 1.什麽是Unix? Unix是一個計算機操作系統,是一個用來協調、管理和控制計算機硬件與軟件資源的控制程序。 2.Unix操作系統的特點? 多用戶與多任務。多用戶表示在同一

Linux起飛路【七】文件合並、歸檔和壓縮

div 結果 執行 img src gzip 圖片 com .com 一、文件合並操作 1.覆蓋符號與追加符號 a)“>”代表將左邊文件的內容覆蓋右邊文件的內容,如果右邊文件不存在則創建這個文件 b)“>>”代表將左邊文件的內容追加到右邊文件中,如果右邊文

oracle學習 表操作

san 註意 cte type acl zha 復制表 obj num 首發:http://www.arppinging.com/wordpress/?p=96 oracle菜鳥學習之 表操作 1.創建表 在oracle中,創建表使用create table來實現 SQL&

Oralce學習 通配符%和_的使用

-- oralce 字符 acl nging 使用 下劃線 lec ref 首發:http://www.arppinging.com/wordpress/?p=104 Oralce菜鳥學習之 通配符%和_的使用 1、% 在Oracle中,%表示匹配所有,使用通配符前要使用l

Oracle學習 Oracle基礎命令

文本 執行 root 當前 vid ott pre 時間顯示 pic 首發:http://www.arppinging.com/wordpress/?p=93 Oracle菜鳥學習之 Oracle基礎命令 1.connect和show user 連接用戶和查看當前用戶 SQ

Oracle學習在RedHat 6.5上安裝Oracle

ola 信息 nis lease run log version ora- 修改配置文件 Oracle菜鳥學習之在RedHat 6.5上安裝Oracle 11G 首發:http://www.arppinging.com/wordpress/?p=90 安裝前準備工作 上

oracle學習 select case when的使用

com 結束 bstr .com 第一個 rom The 表格 num [toc] oracle菜鳥學習之 select case when的使用 格式語法 case when 條件1 then action1 when 條件2 then action2

oracle學習 複雜的更新語句使用

oracle菜鳥學習之 複雜的更新語句使用 例項與答案 問題:表T1裡有a,b,c...N個欄位,表T2裡有a,b,c三個欄位,然後想在T1中"c"與表T2中"c"相同的情況下,從表T2中將a,b覆蓋表T1中的a,b,怎麼做? 實驗表: create table T1(a int,b int,c in

oracle學習 復雜的更新語句使用

答案 是什麽 where 使用 實例 sele 覆蓋 from 怎麽 oracle菜鳥學習之 復雜的更新語句使用 實例與答案 問題:表T1裏有a,b,c...N個字段,表T2裏有a,b,c三個字段,然後想在T1中"c"與表T2中"c"

oracle學習 分析函式-排序

oracle菜鳥學習之 分析函式-排序 排序函式 1.row_number:返回連續的排序,無論值是否相等2.rank:具有相等值得行排序相同,序數值隨後跳躍3.dense_rank:具有相等值得行排序相同,序號是連續得 實驗表 create table chengji(sno number,km v

oracle學習 分析函數-排序

num 是否 相同 arc 排序 -- creat 排序函數 reat oracle菜鳥學習之 分析函數-排序 排序函數 1.row_number:返回連續的排序,無論值是否相等2.rank:具有相等值得行排序相同,序數值隨後跳躍3.dense_rank:具有相等值得行排序