入手Cubieboard2之制作最小Linux系统
前言
昨天终于入手了一块Cubieboard2板子,今年4月入职从事的就是与之相关的工作,因此趁现在有时间就好好熟悉一下。
一、主机环境
1.PC主机WIN 7旗舰版
1.虚拟机VM7.0
2.ubuntu12.04
3.4G的TF卡,读卡器
二、安装交叉编译器
这个比较关键,试过用自己下载的arm-linux-gnueabihf的4.7版本在构建busybox的根文件系统时会出现经典的错误: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卡分区
将TF卡用读卡器插入PC,ubuntu会识别为sdb(根据具体情况或许会不同),查看原来的TF是否已经有分区:
#sudo fdisk /dev/sdb -l
如果有则将所有分区删除:
#sudo fdisk /dev/sdb
d
分区号
d
分区号
…
直到删除所有分区(p可以查看),接下来分区,继续操作
n
p
1
2048
+100M
n
p
2
回车
回车
w
用命令sudo fdisk /dev/sdb –l查看是否有两个分区。格式化这两个分区:
#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
五、编译内核
下载内核源码:
#git clone https://github.com/cubieboard2/linux-sunxi
修改内核源码根目录下的Makefile,令ARCH=arm,CROSS_COMPILE=arm-linux-gnueabihf-。
配置、编译内核:
#make sun7i_defconfig
#make menuconfig(注:退出时要保存)
#make uImage
六、构建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
七、构建boot.scr文件
新建boot.cmd文件,输入以下内容:
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
八、构建busybox根文件系统
下载busybox源码,http://busybox.net,我下载的是当时最新版本busybox-1.22.1。
修改源码根目录下的Makefile,令ARCH=arm,CROSS_COMPILE=arm-linux-gnueabihf-。
编译、安装:
#make
#make install
目前为止,需要的所有文件已经准备好了。下面将它们放到合适的TF卡分区里。首先将uImage、boot.cmd、boot.scr和script.bin文件放到sdb1分区。挂载TF卡分区到ubuntu:
#sudo mount /dev/sdb1 /mnt/mnt1
拷贝文件进mnt1(自己创建mnt1、mnt2目录):
#sudo cp {内核源码路径}/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
制作根文件系统,将busybox生成的文件放到sdb2分区:
#sudo mount /dev/sdb2 /mnt/mnt2
#sudo cp –Rv {busybox源码路径/_install/*} /mnt/mnt2
#sudo cp –Rv {busybox源码路径/ examples/bootfloppy/etc} /mnt/mnt2
拷贝交叉编译器的库到sdb2分区:
#sudo cp –Rv /usr/arm-linux-gnueabihf/lib /mnt/mnt2
进入/mnt/mnt2目录:
#cd /mnt/mnt2
创建目录:
#sudo mkdir dev proc sys var home tmp mnt run boot boot2 dev/pts
将/mnt/mnt2/etc/fstab文件的内容全部替换为以下内容:
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分区:
#sudo umount /mnt/mnt2
将TF卡插入到cubieboard2,接上自带的USB转TTL线,成功启动如下:

若有什么问题,欢迎交流。
入手Cubieboard2之制作最小Linux系统的更多相关文章
- 制作一个最小Linux系统
使用的是itop4412开发板(仅记录个人的学习回顾,如有不当之处欢迎指出) ---------致谢 准备:busybox软件.uboot(一般和开发板配套).zImage(kernel内核).ram ...
- [转帖]迅为4412开发板最小linux系统的存储空间修改
本文转自迅为论坛:http://www.topeetboard.com 最小linux系统的存储空间修改以修改成 1G 存储空间为例来修改,如果需要改成其他大小的存储空间,参照此方法修改即可. 首先连 ...
- [转载]iTOP-4412开发板搭建最小linux系统
本文转迅为电子论坛:http://www.topeetboard.com 最小linux系统所需资料下载:http://pan.baidu.com/s/1kTNan0j 开发板不仅可以运行Androi ...
- 搭建最小linux系统
Busybox简介 • 制作文件系统我们需要使用到Busybox 工具 – 版本为busybox-1.21.1.tar.bz2 – 开源网址是http://www.busybox.net/ – Bus ...
- bash编程之 ~制作Mini Linux系统~
说明1:在一个Linux宿主机系统上,通过以上步骤,可以制作一个微小的Linux系统(可以放置在U盘中等),然后在其它的主机(虚拟机或者物理机)上运行,以实现最小化定制系统的目的. 说明2:上图中黑色 ...
- 做一个自己的最小Linux系统
一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...
- 「Linux」制作一个Linux系统
一.前言 Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为我们 ...
- 最小LINUX系统下U盘的挂载及卸载
U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系 ...
- 讯为开发板的最小LINUX系统烧写及U盘的挂载及卸载
fdisk -c 0 fatformat mmc 0:1ext3format mmc 0:2ext3format mmc 0:3ext3format mmc 0:4 fastboot fastboot ...
随机推荐
- ASP.NET中的KRE是什么?
KRE的英文全称是K Runtime Environment,其中K是ASP.NET vNext(后来叫ASP.NET 5)的项目代号. KRE是ASP.NET 5运行时环境,它是ASP.NET 5的 ...
- [MSSQL2012]CUME_DIST函数
CUME_DIST函数以某列作为基准,计算其它行相对于基准行数据的比例.差距比例,比较容易理解 先看下测试数据 DECLARE @TestData TABLE( ID INT IDENTITY ...
- Qt 5.3.1 版本应用程序的发布问题
问题描述:用过Qt的朋友,都知道,完成的Qt程序,只能在QT环境里运行.在debug环境里,没有配置环境路线的情况下,必须包含多个dll库,然而每个dll库的大小确实很大的.但有时候还是会失败的,在一 ...
- servlet tomcat servlet debug常见错误404,405,500
404 web服务器根据请求地址找不到对应资源 1,地址错误 2,web.xml文件中的两个<servlet-name>不一致 3,工程没有部署 4,web应用程序部署结构没有遵守serv ...
- Redis教程(九):主从复制配置实例
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/136.html 一.Redis的Replication: 这里首先需要说明 ...
- atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模
)----编辑表单建模 1. 建模语言的选型anno+html...不是uml 1 2. 指定显示模板 @BeanEditForm(tmplt="c:/edit.html") 1 ...
- Oracle 函数中动态执行语句
函数: 1 create or replace function fn_test(tablename in varchar2) return number is sqls ); rtn ):; beg ...
- iOS开发----地图与导航--定位和位置信息获取
要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...
- javaweb学习总结(十六)——JSP指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- Leetcode 19 Remove Nth Node From End of List 链表
删除从后往前数的第n个节点 我的做法是将两个指针first,second 先将first指向第n-1个,然后让first和second一起指向他们的next,直到first->next-> ...