前言

昨天终于入手了一块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系统的更多相关文章

  1. 制作一个最小Linux系统

    使用的是itop4412开发板(仅记录个人的学习回顾,如有不当之处欢迎指出) ---------致谢 准备:busybox软件.uboot(一般和开发板配套).zImage(kernel内核).ram ...

  2. [转帖]迅为4412开发板最小linux系统的存储空间修改

    本文转自迅为论坛:http://www.topeetboard.com 最小linux系统的存储空间修改以修改成 1G 存储空间为例来修改,如果需要改成其他大小的存储空间,参照此方法修改即可. 首先连 ...

  3. [转载]iTOP-4412开发板搭建最小linux系统

    本文转迅为电子论坛:http://www.topeetboard.com 最小linux系统所需资料下载:http://pan.baidu.com/s/1kTNan0j 开发板不仅可以运行Androi ...

  4. 搭建最小linux系统

    Busybox简介 • 制作文件系统我们需要使用到Busybox 工具 – 版本为busybox-1.21.1.tar.bz2 – 开源网址是http://www.busybox.net/ – Bus ...

  5. bash编程之 ~制作Mini Linux系统~

    说明1:在一个Linux宿主机系统上,通过以上步骤,可以制作一个微小的Linux系统(可以放置在U盘中等),然后在其它的主机(虚拟机或者物理机)上运行,以实现最小化定制系统的目的. 说明2:上图中黑色 ...

  6. 做一个自己的最小Linux系统

     一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...

  7. 「Linux」制作一个Linux系统

    一.前言 Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为我们 ...

  8. 最小LINUX系统下U盘的挂载及卸载

    U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系 ...

  9. 讯为开发板的最小LINUX系统烧写及U盘的挂载及卸载

    fdisk -c 0 fatformat mmc 0:1ext3format mmc 0:2ext3format mmc 0:3ext3format mmc 0:4 fastboot fastboot ...

随机推荐

  1. JqueryEasyUI浅谈---视频教程公布

    http://pan.baidu.com/s/1pJqGXez 前两天我在博客园发了一个关于JqueryEasyUI浅谈本地化应用的博客,我简单的介绍了JqueryEasyUI的应用,今天我录制了了一 ...

  2. 使用NHibernate(9)-- 缓存

    1,对象状态. 作为基础,还是先看一下对象的状态吧.主要涉及到三个名词,瞬时.持久.托管. 瞬时态:对象刚创建,Session还不知道这个对象的存在.可以通过调用ISession的Save等方法可以转 ...

  3. Wix 安装部署(五) Bootstrapper 捆绑安装

    Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Windows Installer中通过配置能很快的弄出来.可惜有很多加了锁的功能在InstallShield Limited E ...

  4. ASP.NET 5系列教程 (二):Hello World

    本篇文章内容比较基础,主要是向大家展示如何创建一个 ASP.NET 5 工程,主要包含内容如下: 创建ASP.NET 5 工程 添加 Todo 控制器 安装 K Version Manager 执行 ...

  5. [BTS] WCF-SAP adapter

    =================================== Exception has been thrown by the target of an invocation. (mscor ...

  6. JavaScript中for..in循环陷阱介绍

    for...in循环中的循环计数器是字符串,而不是数字它包含当前属性的名称或当前数组元素的索引,下面有个不错的示例大家可以参考下   大家都知道在JavaScript中提供了两种方式迭代对象: (1) ...

  7. 减小Chrome的内存占用的参数

    步骤: 1.右击chrome浏览器快捷方式 属性  目标 后面添加 --purge-memory-button 2. 按 shift+esc 查看进程

  8. paip.提升中文分词准确度---新词识别

    paip.提升中文分词准确度---新词识别 近来,中文每年大概出现800---1仟个新的词.. 60%的分词错误是由新词导致的 作者Attilax  艾龙,  EMAIL:1466519819@qq. ...

  9. atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证

    atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表 ...

  10. IOS设计模式浅析之工厂方法模式(Factory Method)

    概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口. 如何隔离出这个易变对象的变化,使得系统中“其它依赖该对象的对 ...