前言

昨天终于入手了一块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. [异常] openCV安装和配置

    http://blog.csdn.net/mygis2005/article/details/10472717 >_<" 这个链接亲测可行,我试了很多次,找了很多个都不行,最后怀 ...

  2. 转载:APP的上线和推广——线上推广渠道

    本文版权归个人所有,如需转载请注明出处http://www.cnblogs.com/PengLee/p/4637080.html 目录 应用商店 互联网开放平台 软件下载中心 媒体社交平台 刷榜推广 ...

  3. 修复SharePoint 2013 Search 拓扑错误

    Problem 当创建和配置SharePoint 2013 Search Service Application成功之后,进入详细配置页后,在Search Application Topology节点 ...

  4. Working With Taxonomy Field in CSOM

    How to create taxonomy field with CSOM If you need to programmatic create a taxonomy field, you need ...

  5. 通俗易懂的深入理解js闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  6. nginx.conf文件说明

    #Nginx所有用户和组,window下不指定 #user nobody; #工作的子进程数量(通常等于CPU数量或者2倍于CPU) worker_processes 1; #错误日志存放路径 #er ...

  7. mybatis框架demo first

    SqlMapConfig.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE con ...

  8. Android SDK国内代理速度还可以

    Android Android SDK 配置步骤 启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manag ...

  9. 2-MSP430按键输入检测

    为了写一篇文章做铺垫--提醒着自己,,,,,, P1.0的电平,随着P1.1引脚输入的电平变化而变化 #include "io430.h" void delay(void) { u ...

  10. atitit.GMT UTC Catitit.GMT UTC CST DST CET 星期 月份 节日 时间的不同本质and起源

    atitit.GMT UTC Catitit.GMT UTC CST DST CET 星期 月份 节日 时间的不同本质and起源 1. GMT(Greenwich Mean Time)是格林尼治平时 ...