所须资源:
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远程拷贝到目标机上
#scpboot.scrroot@192.168.1.203/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