• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友,商务沟通v:ai_draw
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

CubieBoard install Ubuntu on NAND+SATA

点滴 admin 10年前 (2014-04-25) 1732次浏览 已收录 0个评论 扫描二维码

所须资源:

1,一块cubieboard板子(A10+NAND+SATA);一张TF卡1G以上。

2,一台装有ubuntu系统,4G以上的硬盘剩余空间,root用户权限的宿主机。

制作步骤:

一,纯TF卡制作启动ubuntu

1,配置编译环境

在ubuntu下安装如下软件,主要用于编译源码及基础系统安装

#apt-getinstallbuild-essentialu-boot-toolsqemu-user-staticdebootstrapemdebian-archive-keyringgitlibusb-1.0-0-devpkg-config

#apt-getinstallgcc-arm-linux-gnueabihf;pc交差编译arm系统。

参考:http://blog.chinaunix.net/uid-25120309-id-3501821.html

2,制做TF卡

插上TF卡后用#fdisk-l可以看到卡在系统中的名字,名字不一定一样,一般为:/dev/mmcblk0(我机上显示以这个为例)或者/dev/sda,视自己环境而定。

注意,ubuntu系统默认有TF插入后会自动mount,请弹出不要挂载目录,以免无法进行以下操作。

#ddif=/dev/zeroof=/dev/mmcblk0bs=1Mcount=1

TF卡分区

#fdisk/dev/mmcblk0

fdisk用法参见:http://wenku.baidu.com/view/074760c60c22590102029d48.html

注意:分每一个分区须从2048开始,用a命令改为引导分区,用t命令改变分区类型为c

#fdisk-l/dev/mmcblk0

DeviceBootStartEndBlocksIdSystem

/dev/mmcblk0p1*20483481516384cW95FAT32(LBA)

/dev/mmcblk0p234816311162871554073683Linux

将第一分区格式化成vfat格式

#mkfs.vfat/dev/mmcblk0p1

将第二分区格式化成ext4格式,看你的卡的容量,可能要稍等一会儿。

#mkfs.ext4/dev/mmcblk0p2

3,建立引导

#gitclonehttps://github.com/linux-sunxi/u-boot-sunxi.git

#cdu-boot-sunxi/

#makedistcleanCROSS_COMPILE=arm-linux-gnueabihf-

#makecubieboardCROSS_COMPILE=arm-linux-gnueabihf-

结束后写入

#ddif=spl/sunxi-spl.binof=/dev/mmcblk0bs=1024seek=8

#ddif=u-boot.binof=/dev/mmcblk0bs=1024seek=32

#cd..

4,编译内核

下载内核源码,如果通过git下载可能时间较长。

#gitclonegit://github.com/linux-sunxi/linux-sunxi.git

#cdlinux-sunxi/

注:这里可以用git选择内核版本如(gitcheckout-boringesunxin-3.4)

检查内核源码树,是否纯净。不纯净,则会CLEAN。

#makeARCH=armmrproper

使用sun4i的默认配置(第一次编译时使用)

#makeARCH=armsun4i_defconfig

选择内核编译配置(根据个自的情况而定,选择完成后保存)

#makeARCH=armmenuconfig

这里最主要是要选择加载SATA驱动【DeviceDrivers—–SerialATAandParallelATAdrivers—把这MSoftWinnerPlatformAHCISATAsupport按’y’改成*SoftWinnerPlatformAHCISATAsupport】

编译内核,时间较长,请耐心等待

#makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-uImage

注:请确认编译无误。正确应该看到Imagearch/arm/boot/uImageisready。否则请根据提示再执行#makeARCH=armmenuconfig;#makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-uImage

直至正确。一些选项可能造成编译无法编译通过,可以如果不是重要功能可以取消或与维护者联系。

#makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-modules

请确保编译无误,正确应该看到类似LD[M]XXXX/XXXX/XXX.ko。否则请根据提示再执行#makeARCH=armmenuconfig;#makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-uImage;#make

ARCH=armCROSS_COMPILE=arm-linux-gnueabihf-modules直至正确。一些选项可能造成编译无法编译通过,可以如果不是重要功能可以取消或与维护者联系。

#cd..

5,制做script.bin

#gitclonehttps://github.com/linux-sunxi/sunxi-tools.git

#cdsunxi-tools

#make

得到fex2bin文件,这个是能把*.fex文件生成*.bin文件。

#cd..

#gitclonehttps://github.com/linux-sunxi/sunxi-boards.git

#cdsunxi-boards/sys_config/a10/

在sys_config/a10目录下,我们能找到cubieboard.fex文件,这就是我们需要的

编译,得到script.bin

#../../../sunxi-tools/fex2bincubieboard.fexscript.bin

6,建立引导

建立引导区挂载点(注,此时应在a10#目录下,主要为了拷贝方便)

#mkdir-p/mnt/1

#mkdir-p/mnt/2

#mount/dev/mmcblk0p1/mnt/1

#mount/dev/mmcblk0p2/mnt/2

#cpscript.bin/mnt/1/

进入内核目录

#cd../../../linux-sunxi/

#cparch/arm/boot/uImage/mnt/1/

7,建立rootfs

注意:ubuntu与debain在配置方面略有差别,主要就是tty1.conf与inittab。ubuntu的rootfs,引导时inittab已经不默认引导,安装时默认也无此文件,两者安装是有区别的。如果在ubuntu下直接使用

inittab会循环出现如下信息:

3init:Failedtocreatepty-disablingloggingforjob

[5.140000]init:Failedtocreatepty-disablingloggingforjob

4init:Temporaryprocessspawnerror:Nosuchfileordirectory

[5.150000]init:Temporaryprocessspawnerror:Nosuchfileordirectory

本文主要是以ubunturaring为例,所以执行以下命令

##debootstrap–arch=armhf–variant=buildd–foreignraring/mnt/(如果要安装debain请执行这个命令#debootstrap–arch=armhf–variant=buildd–foreignwheezy/mnt/2/http://ftp.cn.debian.org/debian)

以上是你rootfs中的基本文件。如果还觉得大,请自行处理。

拷贝arm的仿真环境

#cp/usr/bin/qemu-arm-static/mnt/2/usr/bin/

#chroot/mnt/2/(执行这句后你输入的命令就相当于是在你要安装的系统上运行命令了)

此时你将看到,你的提示符,前面已经加上Ihavenoname!。

安装核心包

#/debootstrap/debootstrap–second-stage

………………

I:Basesysteminstalledsuccessfully.

这是成功安装了最简系统。

接下来,可能是你容易忽略的一件事。更改你超级用户(root)的密码。

#chroot.passwd

配置armhfapt-get源

#vi/etc/apt/sources.list(如果没有vi命令,可以在宿主机上编辑好了然后cp到rootfs内)

加入下面两句并保存

debhttp://ports.ubuntu.com/raringmainrestricteduniversemultiverse

deb-srchttp://ports.ubuntu.com/raringmainrestricteduniversemultiverse

然后就可以更新并安装程序

#apt-getupdate

#apt-getinstallXXXX

配置网络

#vi/etc/network/interfaces

添加

#Theprimarynetworkinterface

autoeth0

#ifaceeth0inetdhcp

ifaceeth0inetstatic

address192.168.1.203

netmask255.255.255.0

gateway192.168.1.1

#vi/etc/resolv.conf(dns)

nameserver192.168.1.1

#exit

执行上面命令回到我们宿主中。为什么呢。最小系统里工具比较少,折腾麻烦。而且我们还有工作没有做完。接着来。

现在我们将安装系统的模块。在此之前,请确认你的目录。

#pwd

/root/linux-sunxi

8,系统模块的安装

#makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-INSTALL_MOD_PATH=/mnt/2/modules_install

到此为止,你的系统,基本是安装完了。还需要最后一步。告诉系统,你的rootfs的位置。

#cd/mnt/1

#catEOTboot.cmd

setenvbootargsconsole=ttyS0,115200root=/dev/mmcblk0p2rootwaitpanic=10${extra}

fatloadmmc00x43000000script.bin

fatloadmmc00x48000000uImage

bootm0x48000000

EOT

转换成.scr

#mkimage-Cnone-Aarm-Tscript-dboot.cmdboot.scr

9,更改配置文件

ubuntu系统须更改tty1.conf

#vi/etc/init/tty1.conf

exec/sbin/getty-838400tty1修改为:exec/sbin/getty-8115200ttyS0

debain系统须更改这两个文件编辑inittab及fstab文件

#cd/mnt/2/etc/

#catEOTinittab

T0:2345:respawn:/sbin/getty-LttyS0115200linux

EOT

#catEOTfstab

proc/procprocdefaults00

/dev/mmcblk0p1/bootvfatdefaults02

/dev/mmcblk0p2/ext4defaults,noatime01

EOT

10,系统制做完毕。取卡

再取卡前,请一定注意先执行以下umount命令。否则数据不会写到tf卡里!

#cd

#umount/mnt/1

#umount/mnt/2

二,制作Nand+SATA启动系统

把tf卡插到cubieboard上,通电启动,第一次启动是用是TF卡启动。用ssh连接上。

1,下载NANDbootpartitionandMBRimage

#wgethttp://dl.cubieforums.com/loz/boot_partition/bootloader/cubie_nand_uboot_partition_image.bin

#ddif=./cubie_nand_uboot_partition_image.binof=/dev/nand

#reboot(必须重启,然后看到nand已重新分区并默认生成了引导所须文件)

详细参加:http://linux-sunxi.org/Cubieboard/Installing_on_NAND

2,SATA用fdisk分区分格式化成ext4.建立rootfs

#fdisk/dev/sda

….

#mkfs.ext4/dev/sda1

#mount/dev/sda1/mnt/sda1

#mount/dev/mmcblk0p2/dev/mmc2

#cp-r-P/dev/mmc2/*/mnt/sda1/(一定要用参数-P加属性)

#mount/dev/mmcblk0p1/mnt/mmc1

#cp-P/mnt/mmc1/uImage/mnt/sda1/boot/uImage(cpuImagetorootfs)

#mount/dev/nanda/mnt/nanda

3,修改配置引导到SATA启动

这项工作须在宿主机上做。

#catEOTboot.cmd

setenvbootargsconsole=ttyS0,115200root=/dev/sda1rootwaitpanic=10${extra}

fatloadmmc00x43000000script.bin

fatloadmmc00x48000000uImage

bootm0x48000000

EOT

其中”root=/dev/mmcblk0p2″指定启动位置,这里指的是从tf卡启动。如果要从SATA启动,设置成SATA在系统中的名字。如”root=/dev/sda1″

转换成.scr

#mkimage-Cnone-Aarm-Tscript-dboot.cmdboot.scr

然后把boot.scr远程拷贝到目标机上

#[email protected]/mnt/nanda/

然后输入密码,确定cp成功

4,关机取出TF卡后重启,验证系统是否启动在SATA上。

在目标机上去掉所有mount

#umount-a

#shutdown-hnow

取出tf卡,重启查看

#df-l

5,如果正确启动,可以添加swap.

参见:http://lanlfeng.blog.51cto.com/337014/123130/

#ddif=/dev/zeroof=/mnt/swapbs=1Mcount=1024

#mkswap/mnt/swap

#vi/etc/fstab

添加到文件最后

/mnt/swapswapswapdefaults00

至此,基本完毕。欢迎指正错误或增加新内容一起探讨。

此文最主要参考来源为:http://blog.chinaunix.net/uid-25120309-id-3501821.html

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址