入手Cubieboard2之制作最小Linux系统
来源:互联网 发布:网络本科有哪些学校 编辑:程序博客网 时间:2024/05/29 04:59
http://www.th7.cn/system/lin/201403/50580.shtml
http://www.cnblogs.com/88223100/p/cubieboard-a10-debian-nand-system-lnmp-samba.html
http://www.07net01.com/linux/wuxianshiqi_tongguoSDkaweicubieboardanzhuangubuntu_linarodessh_server_46546_1356705592.html
http://linux-sunxi.org/Cubieboard/Images_Ubuntu
http://forum.cubietech.com/forum.php?mod=viewthread&tid=4151&extra=page%3D1
前言
昨天终于入手了一块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系统
- 入手Cubieboard2之制作最小Linux系统
- 【制作最小Linux系统】
- Linux最小系统制作
- 最小的Linux系统制作过程详解
- 最小的Linux系统制作过程详解
- 最小的Linux系统制作过程详解
- 基于stm32f103zet6之最小系统的制作
- cubieboard2移植linux
- [转载]最小的Linux系统制作过程详解
- 最小的Linux系统制作过程详解(转)
- linux最小系统的制作(嵌入式第一节课)
- 入手linux系统(14.04)---杜绝各种不爽
- Linux根文件之系统制作流程
- linux系统之根文件系统树制作
- 制作TMS320F28035最小系统板
- 单片机最小系统制作记录
- Linux入手
- iOS KVC & KVO
- STL map的使用(二)
- SecureZeroMemory和ZeroMemory的区别
- ToolBar居中显示文字或控件
- CSS margin 属性
- 入手Cubieboard2之制作最小Linux系统
- Hibernate – One-to-One example (Annotation)
- hadoop学习之hadoop完全分布式集群安装
- nginx启用php
- ashx入门
- 清除Teleport的tppabs标签
- jsp读取properties配置文件
- java apache commons HttpClient发送get和post请求的学习整理
- 电子签名