Cubieboard2 debian

环境准备

本文所使用的主机环境为kubuntu 12.10,然而一般情况下,下面涉及到的命令对基于Debian的(X)ubuntu系列都应该适用。

为不引起混淆,我们作如下约定:

  • 工作目录为 $WORK_DIR,目标系统 rootfs 目录为 $WORK_DIR/$ROOTFS_DIR
  • 命令均以root用户执行

笔者的设定如下:

WORK_DIR=/home/itviewer/src
ROOTFS_DIR=$WORK_DIR/debian

下载必须的工具软件

apt-get install build-essential libncurses5-dev u-boot-tools qemu-user-static debootstrap git binfmt-support libusb-1.0-0-dev pkg-config
apt-get install gcc-arm-linux-gnueabihf

下载源码

从 github 下载 SPL,U-BOOT,Linux 内核源码。注意 linux-sunxi 超过 3.8G ,耗时最长。如果您曾经下载过这些代码,记得分别用 git pull 更新后再进行后续操作,因为代码仓库每天都有变化。

cd $WORK_DIR
git clone git://github.com/linux-sunxi/u-boot-sunxi.git
git clone git://github.com/cubieboard2/linux-sunxi
git clone git://github.com/linux-sunxi/sunxi-tools.git
git clone git://github.com/linux-sunxi/sunxi-boards.git

下载并配置 Debian 基础系统

mkdir $ROOTFS_DIR
cd $ROOTFS_DIR
debootstrap --foreign --arch armhf wheezy .
cp /usr/bin/qemu-arm-static usr/bin/
LC_ALL=C LANGUAGE=C LANG=C chroot . /debootstrap/debootstrap --second-stage
LC_ALL=C LANGUAGE=C LANG=C chroot . dpkg --configure -a

该过程需要一些时间,到此为止,Debian 基础系统已经配置好了;现在可以把 $ROOTFS_DIR 保存为一个压缩包,以备日后之用。

cd $WORK_DIR
tar zcvf debian-rootfs-armhf-clean.tar.gz ./debian

编译uboot

 cd $WORK_DIR/u-boot-sunximake distclean CROSS_COMPILE=arm-linux-gnueabihf-make Cubieboard2 CROSS_COMPILE=arm-linux-gnueabihf-

得到 u-boot-sunxi-with-spl.bin(同时生成的还有其它几个文件,这里我们只用该文件)

编译kernel

 cd $WORK_DIR/linux-sunximake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- cubieboard2_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 uImage modules

得到内核文件 arch/arm/boot/uImage 及其它内核模块。

注意:这里仅使用官方的默认配置,如需要自行配置内核模块、安装其它驱动程序,可以在上述第一条命令后执行下述命令进行配置:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

建立 ROOTFS

除非特别说明,本节的所有操作都在 $ROOTFS DIR 下面进行,所以我们进入该目录先:

cd $ROOTFS_DIR

设置管理员密码和主机名称

chroot . passwd                        #回车后输入root用户密码
echo "CubieBoard2" > etc/hostname
echo "127.0.0.1 CubieBoard2" >> etc/hosts

内核模块安装

make -C $WORK_DIR/linux-sunxi INSTALL_MOD_PATH=`pwd` ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install

设置串口调试终端参数

echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100 >> etc/inittab

配置并更新软件源:

echo deb http://http.debian.net/debian/ wheezy main contrib non-free > etc/apt/sources.list
echo deb http://security.debian.org/ wheezy/updates main contrib non-free >> etc/apt/sources.list
chroot . apt-get update
chroot . apt-get upgrade

设置网络

编辑 etc/network/interfaces,根据需要添加以下内容:

下面的配置是动态获取 IP 的设置

# set Debian to configure the interface automatically on boot
auto eth0
allow-hotplug eth0
# use IP autoconfiguration
iface eth0 inet dhcp
## set the mac address
#pre-up ifconfig eth0 hw ether "0011aabbccdd"

下面的配置则是固定 IP 的设置(修改成自己对应的ip、子网掩码、网关)

auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1
pre-up ifconfig eth0 hw ether "ca28f0493e7d"

如果需要设定无线网卡,可以再追加如下配置(前提是内核已经支持无线网卡驱动,假定无线网卡的设备名为 wlan0)

auto wlan0
iface wlan0 inet dhcp
pre-up ip link set wlan0 up
pre-up iwconfig wlan0 essid 路由器ssid
wpa-ssid 路由器ssid
wpa-psk 无线密码

可选步骤:

安装 Open SSH Server

chroot . apt-get install openssh-server

安装Vim

chroot . apt-get install vim

安装 locales

chroot . apt-get install locales
echo "en_US.UTF-8 UTF-8" > etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> etc/locale.gen
chroot . locale-gen

生成 boot.scr和script.bin

生成 boot.scr

在$WORK_DIR目录下新建 boot.cmd 文件,添加以下内容:

setenv bootargs console=ttyS0,115200 noinitrd disp.screen0_output_mode=EDID:1280x1024p60 init=/init root=/dev/mmcblk0p2 rootfstype=ext4 rootwait panic=10 ${extra}
fatload mmc 0 0x43000000 boot/script.bin
fatload mmc 0 0x48000000 boot/uImage
bootm 0x48000000

注意:上述disp.screen0_output_mode参数需要根据自己显示器的情况进行设置

然后执行以下命令生成boot.scr:

mkimage -C none -A arm -T script -d boot.cmd boot.scr

生成 script.bin

首先需要编译sunxi-tools:

cd $WORK_DIR/sunxi-tools
make

得到fex2bin、bin2fex等文件,其中fex2bin能把 *.fex 文件生成 *.bin文件。反之bin2fex可以将得到的*.bin文件生成可读的*.fex文件。

然后编译生成script.bin:

cd $WORK_DIR/sunxi-boards/sys_config/a20
$WORK_DIR/sunxi-tools/fex2bin cubieboard2.fex script.bin

安装到 TF 卡

本文采用两个分区方案,其中第一个分区为启动分区,主要包含内核文件uImage和内核参数文件script.bin;第二个分区用于安装rootfs。

将TF卡插到电脑上查看并确认设备名,为不至于混淆,我们使用sdX代替,您需要根据自己的情况修改,如sdb(这步要小心额,看错了也许会导致硬盘被格!):

card=/dev/sdX
dd if=/dev/zero of=${card} bs=1M count=1      # 把SD卡前1M的区域填充为0,预留给 u-boot
sfdisk -R ${card}                             # 重新读取${card}
fdisk ${card}                                 #使用fdisk进行分区

具体分区步骤如下:

建立第一个分区

root@kubuntu:~/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 ${card}1
mkfs.ext4 ${card}2                                        #需要稍等片刻

然后写入bootloader:

cd $WORK_DIR/u-boot-sunxi
dd if=u-boot-sunxi-with-spl.bin of=$card bs=1024 seek=8

之后安装内核 uImage,设置启动参数:

mount ${card}1 /mnt
mkdir /mnt/boot
cp $WORK_DIR/linux-sunxi/arch/arm/boot/uImage /mnt/boot
cp $WORK_DIR/sunxi-boards/sys_config/a20/script.bin /mnt/boot
cp $WORK_DIR/boot.scr /mnt/
sync && umount /mnt

拷贝整个 ROOTFS 到 TF 卡

首先编辑 $ROOTFS_DIR/etc/fstab,添加以下内容:

/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1

然后拷贝整个 ROOTFS 到 TF 卡:

cd $ROOTFS_DIR
mount ${card}2 /mnt
tar --exclude=qemu-arm-static -cf - . | tar -C /mnt -xvf -
sync && umount /mnt

该操作需要稍等片刻

如果没有意外的话——您自己动手丰衣足食得到的 Debian Linux TF 卡版本或许已经可以运行了,只是还没把 TF 卡插到 CubieBoard 上测试而已!

系统配置

成功启动进入shell后需要我们做些简单的配置:

设置时区和日期

rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apt-get install ntpdate

执行以下命令,打开ntpdate配置文件(如果已经安装vim,可以使用vi代替nano命令):

nano -w /etc/default/ntpdate

在后面添加以下内容:

NTPDATE_USE_NTP_CONF=no
NTPSERVERS="0.asia.pool.ntp.org 1.asia.pool.ntp.org 2.asia.pool.ntp.org 3.asia.pool.ntp.org"
NTPOPTIONS=""

先ctrl+O保存,然后需要回车确认,最后ctrl+x退出

然后执行

ntpdate-debian

设置开机启动 ntpdate, 在/etc/rc.local 文件的 exit 0 这一行之前加入:

ntpdate-debian

创建系统镜像[可选]

如果您想把自己制作的系统分享给朋友们,可以参考本节。

创建空镜像文件并写入uboot:

cd $WORK_DIR
dd if=/dev/zero of=disk.img count=4000000 #此处为 2G 大小;您可以自行修改
losetup /dev/loop0 disk.img
dd if=/dev/zero of=/dev/loop0 bs=1k count=1024
cd $WORK_DIR/u-boot-sunxi
dd if=u-boot-sunxi-with-spl.bin of=/dev/loop0 bs=1024 seek=8

分区:

fdisk /dev/loop0

这里分两个区, 第一个分区 64MB, 第二个分区占据所有剩余空间,具体步骤请参考上面内容:建立第一个分区————指定分区类型(无须格式化)

分区挂载,拷贝系统:

cd $WORK_DIR
losetup -d /dev/loop0 && losetup /dev/loop0 disk.img    #(重新关联一次)
losetup -o 1048576 /dev/loop1 /dev/loop0            #(关联第一分区,1048576=512*2048)
losetup -o 68157440 /dev/loop2 /dev/loop0           #(关联第二分区,68157440=512*133120)
mkfs.vfat /dev/loop1
mkfs.ext4 /dev/loop2
mount /dev/loop1 /mnt
cp $WORK_DIR/boot.scr /mnt/
mkdir /mnt/boot
cp $WORK_DIR/linux-sunxi/arch/arm/boot/uImage /mnt/boot
cp $WORK_DIR/sunxi-boards/sys_config/a20/script.bin /mnt/boot
umount /mnt
cd $ROOTFS_DIR
mount /dev/loop2 /mnt
tar --exclude=qemu-arm-static -cf - . | tar -C /mnt -xvf -
sync && umount /mnt
losetup -d /dev/loop2
losetup -d /dev/loop1
losetup -d /dev/loop0

好了,disk.img 已经完成,您可以把它发布到网上了:→ 如果要安装到 TF 卡,执行:

cd $WORK_DIR
dd if=disk.img of=$card bs=4k

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux和python的关系_Python、Linux与我的缘分

是在大二时期,那时候不懂什么技术,所以就选择了 Ubuntu 来学习、 使用, 它好操作、 界面绚丽、 简单易用, 对于我这种 Linux 新手来说知足了。 毕竟没玩过 Linux ,知识有限, 玩不转 Linux 的种种配置&#…

linux 磁盘uuid获取

ls -l /dev/disk/by-uuid/总用量 0lrwxrwxrwx 1 root root 10 2012-08-15 09:28 0af9bc87-c3c9-49eb-829e-caf572298cc7 -> http://www.cnblogs.com/sdb1lrwxrwxrwx 1 root root 10 2012-08-15 09:27 3e8b5c85-3f5b-4864-b45e-03ff0073eb5f -> http://www.cnblogs.com/sd…

tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐

1. 静态页面的乱码问题文件的编码和浏览器要显示的编码不一致。1) 检查文件原始的编码, 可以用记事本打开, 然后选择另存为来看;2) 给当前页面加入一个指令来建议浏览器用指定的编码来显示文件字符内容.3) 如果系统是英文XP,没装东亚字符集支持, 也会显示乱码.2. JSP 页面的乱码…

编译Mysql 5.5时报do_abi_check错误

下载mysql-5.5.3-m3源码后&#xff0c;执行configure无错误&#xff0c;在make的时候却报: make[2]: *** [do_abi_check] 错误 1<br> make[2]: Leaving directory /tmp/mysql-5.5.3-m3<br> make[1]: *** [abi_check] 错误 2<br> make[1]: Leaving directory …

四大开源分布式存储_ipfs分布式存储行业面临着四大主要风险,你知道是哪些吗?...

为了响应国家号召、推动分布式存储技术落地、防御行业风险&#xff0c;中国分布式存储产业联盟启动&#xff0c;全国从事IPFS以及分布式存储从业者对行业风险及联盟成立的必要性达成了高度共识&#xff0c;目前有36家以上的IPFS分布式存储行业企业填写了联盟申请表。几位国内知…

mathematica打包java_从Mathematica到Java的图像

我试图从Mathematica中获取一张图片.我尝试评估一些使用包中的方法生成图形的Mathematica代码.如果我将代码粘贴到Mathematica Notebook,则会正确生成图形.所以我的问题&#xff1a;如何将这些图形转换为Java ???这是我的示例代码&#xff1a;ml MathLinkFactory.createKer…

pjsua帮助手册(中文)

原文地址 : http://www.pjsip.org/pjsua.htm 介绍 PJSUA是一个开源的命令行SIP用户代理&#xff08;软电话&#xff09;&#xff0c;用PJSIP协议&#xff0c;PJNATH&#xff0c;和PJMEDIA实现。 它虽然只有很简单的命令行界面&#xff0c;但是功能齐全。 SIP功能&#xff1a; 多…

c/c++笔试面试题(4)

c/c笔试面试题&#xff08;4&#xff09; 2007-11-08 16:46 749人阅读 评论(0) 收藏 举报Sony笔试题 1&#xff0e;完成下列程序 * *.*. *..*..*.. *...*...*...*... *....*....*....*....*.... *.....*.....*.....*.....*.....*..... *......*......*......*......*......*...…

js date转成 时间字符串_秋招快要开始了,前端笔试中的坑位-JS隐式转换问题

我们在写笔试题的时候&#xff0c;经常碰到涉及隐式转换的题目&#xff0c;例如"1" 2 obj 1 [] ![] [null] false 和 叫做严格运算符&#xff0c;对象类型指向地址相同或原始类型&#xff08; 数值、字符串、布尔值&#xff09;值相同&#xff1b;叫做相等运算…

Java中快速处理集合_简洁又快速地处理集合——Java8 Stream(上)

作者&#xff1a;Howie_Y&#xff0c;系原创投稿主页&#xff1a;www.jianshu.com/u/79638e5f0743Java 8 发布至今也已经好几年过去&#xff0c;如今 Java 也已经向 11 迈去&#xff0c;但是 Java 8 作出的改变可以说是革命性的&#xff0c;影响足够深远&#xff0c;学习 Java …

FTP服务器和客户端源代码编写问题(ftp server client source)

最近关注FTP程序源代码的朋友非常多&#xff0c;这里简单说明一下。 其实FTP也就是普通的Socket程序&#xff0c;只是需要按照FTP协议(RFC959, 1635?可能我记错了)去做&#xff0c;也就是每个消息有固定的结构的&#xff0c;比如头3个字节必须是200,201,300,400之类的数字表示…

eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件

导读&#xff1a; 最近在看 Flink 源码的时候发现到一段实用的代码&#xff0c;该代码实现了 java 动态编译以及生成 jar 文件。将其进行改进后可以应用到我们的平台上&#xff0c;实现在平台页面上编写 java 代码语句&#xff0c;提交后由后台进行编译和打成 Jar 包再上传到指…

Android初级开发第七讲--特效和数据传递处理

博客出自&#xff1a;http://blog.csdn.net/liuxian13183&#xff0c;转载注明出处&#xff01; All Rights Reserved ! 大家好&#xff0c;相信大家对iphone上的特效早有耳闻&#xff0c;特效不仅给人以炫丽的感觉&#xff0c;也给人以性能优越的感觉&#xff1b;但万丈高楼平…

java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...

[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo0 2017-11-14 12:00:29linux查看日志文件内容命令tail、cat、tac、head、echotail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,---------------------------linux 如何…

pjsip简介1

如果你对SIP/VoIP技术感兴趣,哪希望你不要错过:),如果你对写出堪称优美的Code感兴趣,那么你也不可错过:)这期间我想分析一下一个实际的协议栈的设计到实现的相关技术,算是自己的一个学习经历记录.最初选择这个库做分析的原因很简单,文档齐全:),其它良好的特征则是慢慢发现的:) …

Dx11DemoBase 基类(三) 实例应用 【已实现】【附带源码】

现在我已经到哪了? 读书时&#xff0c;尤其是技术知识书籍&#xff0c; 我一般会担忧自己是否陷得太深&#xff0c; 细节关注得太多&#xff0c; 而忘了整体的过程&#xff1b; 一直以来对Direct3D 很畏惧&#xff0c; 因为太多函数和细节&#xff1b;现在我必须暂缓下&#x…

修改 decimal 默认值为0.00 sql_被经理邀请去“爬山”,只是因为我写错了一条SQL语句?...

作者&#xff1a;isysc1链接&#xff1a;https://juejin.im/post/5f06a2156fb9a07e5f5180df来源&#xff1a;掘金前戏SQL 写的妙&#xff0c;涨薪呱呱叫&#xff01;新来的实习生小杨写了一条 SQL 语句SELECT wx_id from user WHERE wx_id 2当小杨迫不及待准备下班回家的时候&…

java课工场面向对象题p题库_面向对象设计(Java)-题库课稿.doc

面向对象程序设计 java 题库抽题规范:此题库共75道题,抽8道作为期末考试题。其中,易8道,较易33道,较难18道,难16道.按题型,第一大题抽4道&#xff0c;每道10分&#xff1b;第二大题抽2道&#xff0c;每道10分&#xff1b;第三大题抽1道&#xff0c;每道20分&#xff1b;第四大题…

opensips简介

1、引入 随着通信IP化的发展&#xff0c;IP传输的高带宽、低成本等优势使得越来越多的企业、电信运营商加快建设基于IP的各种通信应用。在通信协议IP化发展中&#xff0c;SIP协 议毫无争议地成为各大电信运营商构建其未来网络的基础协议&#xff0c;越来越多的SIP软件产品也不…

JS中关于clientWidth、offsetWidth、scrollWidth

网页可见区域宽&#xff1a; document.body.clientWidth;网页可见区域高&#xff1a; document.body.clientHeight;网页可见区域宽&#xff1a; document.body.offsetWidth (包括边线的宽);网页可见区域高&#xff1a; document.body.offsetHeight (包括边线的宽);网页正文全…