SD卡启动tiny4412标准版(1306)的linux系统并挂载网络根文件系统
uboot编译平台环境:64位win8.1的虚拟机vmware10下的ubuntu-12.04.5-64bit
交叉编译工具链为: arm-linux-gcc-4.5.1
uboot压缩包: uboot_tiny4412-20130729.tgz
linux压缩包: linux-3.5-20131028.tgz
busybox压缩包: busybox-1.17.2-20101120.tgz
一、Build uboot
配置并且编译出uboot.bin
解压:
book@book-virtual-machine:/work/tiny4412$ tar -xzf uboot_tiny4412-20130729.tgz
进入解压出来的uboot_tiny4412文件夹:
book@book-virtual-machine:/work/tiny4412$ cd uboot_tiny4412
配置tiny4412config:
book@book-virtual-machine:/work/tiny4412/uboot_tiny4412$ make tiny4412_config
编译:
book@book-virtual-machine:/work/tiny4412/uboot_tiny4412$ make
编译生bl2的工具
进入sd_fuse文件夹:
book@book-virtual-machine:/work/tiny4412/uboot_tiny4412$ cd sd_fuse/
编译:
book@book-virtual-machine:/work/tiny4412/uboot_tiny4412/sd_fuse$ make
make成功会出现以下红框内的两行
二、制作SD卡用来启动uboot
使用的SD卡:SanDISK的SDCH卡(8G)
注:制作SD卡时,SD卡里原有的数据会被损坏,如果SD卡里面包含需要的文件,需要先备份
1)SD卡分区与格式化
下载mkcard.sh脚本,并将其拷贝到/usr/local/bin目录下,使它可以在其它目录里使用;
mkcard.sh脚本下载地址:
http://download.csdn.net/detail/q1302182594/9621827
对SD卡进行分区和格式化,具体可以参考这篇博客《OMAPL138开发板SD系统启动卡制作方法》,完成后会生成boot和rootfs两个分区;
博客地址是:
http://blog.csdn.net/u012091895/article/details/11584869
2)将uboot烧写到SD卡
使用的SD卡被USB识别为/dev/sdc
如何让linux识别到SD卡:
将SD卡放入读卡器,将读卡器插入PC前,将虚拟机ubuntu放在窗口最前面,并将鼠标放在窗口上,插入U盘。U盘正确识别后,会出现/dev/sdc这一行设备文件
运行如下命令:
book@book-virtual-machine:/work/tiny4412/uboot_tiny4412/sd_fuse/tiny4412$ sudo ./sd_fusing.sh /dev/sdc
SD卡制作好后出现的界面:
完成后卸载/dev/sdc
book@book-virtual-machine:/work/tiny4412/uboot_tiny4412/sd_fuse/tiny4412$umount /dev/sdc
注:如果使用df命令没有查看到/dev/sdc,可以使用”ls /dev/sd*”命令查看没有,如果存在则说明没有挂载。没有挂载也可以正常制作SD卡的,只要使用”ls /dev/sd*”命令查看到/dev/sdc。SD卡制作完成后也不需要umount(如下图,会显示/dev/sdc没有挂载),直接拔读卡器就可以了
1)卸将已经制作好的SD卡插到Tiny4412板子上,拨动S2切换到SDBOOT,同时连接串口线到PC
Ps:我的板子有两个九针串口,只有连在靠近电源的那个串口才可以正常打印信息
如何查看打印的信息来判断板子是否正常被启动?
答:通过linux下的minicom,具体的安装和使用参看下面的链接:
http://blog.csdn.net/zy799894671/article/details/16846817
2)开发板上电,然后在串口控制台(minicom)查看打印信息如下:
出现错误是因为没有烧写内核进去,暂时不管。
按任意键进入uboot命令行模式,出现”TINY4412 #”
三、使用SD卡启动linux系统
book@book-virtual-machine:/work/tiny4412/contex-a9$tar zxvf linux-3.5-20131028.tgz
book@book-virtual-machine:/work/tiny4412/contex-a9$cd linux-3.5/
book@book-virtual-machine:/work/tiny4412/contex-a9/linux-3.5$ cp tiny4412_linux_defconfig .config
book@book-virtual-machine:/work/tiny4412/contex-a9/linux-3.5$make
最后出现下面两行则表示编译成功:
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
在book@book-virtual-machine:/work/tiny4412/linux-3.5/arch/arm/boot目录下生成zImage这个镜像文件
内核拷贝到SD卡
book@book-virtual-machine:/work/tiny4412/contex-a9/linux-3.5$ cp arch/arm/boot/zImage /media/boot
四、设置NFS服务
1)在ubuntu12.04上安装NFS Server
book@book-virtual-machine:/work/nfs_root$ sudo apt-get install portmap
book@book-virtual-machine:/work/nfs_root$ sudo apt-get install nfs-kernel-server
book@book-virtual-machine:/work/nfs_root$ sudo apt-get install nfs-common
2)修改/etc/exports文件
book@book-virtual-machine:/work/nfs_root$ sudo vi /etc/exports
在文件的末尾添加这一句:
/work/nfs_root *(rw,sync,no_root_squash,no_subtree_check)
格式说明:
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限。
no_subtree_check:不检查父目录的权限。
注意,*和后面的括号不能出现空格。
然后保存退出。
3)重启NFS服务
book@book-virtual-machine:/work/nfs_root$ sudo /etc/init.d/portmap restart
book@book-virtual-machine:/work/nfs_root$ sudo /etc/init.d/nfs-kernel-server restart
4)测试NFS服务是否成功
把本地的文件夹挂载到mnt上
book@book-virtual-machine:/work/nfs_root$ sudo mount -t nfs localhost:/work/nfs_root /mnt
在nfs_root文件目录下创建一个新的文件“hello”,在mnt文件目录下可查看到“hello”,说明挂载成功
取消挂载
book@book-virtual-machine:/work/nfs_root$ sudo umount /mnt
NFS服务设置完成
五、安装busybox
book@book-virtual-machine:/work/nfs_root$ mkdir filesystem
book@book-virtual-machine:/work$ tar -xzvf busybox-1.17.2-20101120.tgz
book@book-virtual-machine:/work$ cd busybox-1.17.2/
book@book-virtual-machine:/work/busybox-1.17.2$ make menuconfig
配置:
配置完成后,编译和安装busybox:
book@book-virtual-machine:/work/busybox-1.17.2$ make
book@book-virtual-machine:/work/busybox-1.17.2$ make install
成功安装后会在/work/nfs_root/filesystem下生成一下四个文件:
bin
linuxrc
sbin
usr
检测busybox是否成功
book@book-virtual-machine:/work/nfs_root/filesystem$ file bin/busybox
bin/busybox: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
上面显示ARM平台运行,说明安装成功
六、制作根文件系统
book@book-virtual-machine:/work/nfs_root/filesystem$ mkdir etc dev opt sys tmp mnt lib proc
book@book-virtual-machine:/work/nfs_root/filesystem$ mkdir etc/init.d
book@book-virtual-machine:/work/nfs_root/filesystem$ vi etc/init.d/rcS
在rcS里添加如下内容:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
/bin/mount -a # 挂载fstab文件中所有指定的文件系统
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s # 在/dev目录下建立必须的设备节点
/bin/hostname -F /etc/sysconfig/HOSTNAME #设置主机的名字
保存退出
book@book-virtual-machine:/work/nfs_root/filesystem$vi etc/inittab
在inittab里添加如下内容:
::sysinit:/etc/init.d/rcS# 设置内核的热插拔,有mdev接收来自内核的消息并做出响应
ttySAC0::askfirst:-/bin/sh # 在串口启动一个登陆会话
:ctrlaltdel:/bin/umount -a -r# 作为init重启执行程序
::showdown:/bin/mount -a -r# 告诉init在关机时运行umount命令卸载所有文件系统,
如果卸载失败,以只读方式重新挂载
保存退出
book@book-virtual-machine:/work/nfs_root/filesystem$vi etc/fstab
在fstab里添加如下内容:
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
保存退出
注意:
第一列是挂载设备
第二列是挂载目录
第三列是挂载文件系统类型
第四列是挂载选项
book@book-virtual-machine:/work/nfs_root/filesystem$ vi etc/profile
在profile里添加如下内容:
#/etc/profile:system-wide .profile file for the Bourne shells
#!/bin/sh
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[root@tiny4412]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
保存退出
book@book-virtual-machine:/work/nfs_root/filesystem$ sudo chmod +x rcS//rcS添加权限,让其可执行
创建设备文件:
book@book-virtual-machine:/work/nfs_root/filesystem$ sudo mknod /dev/console c 5 1
完善动态链接库:
(1)我们在busybox设置的是动态链接库,而且编译器是arm-linux-gcc,找到安装arm-linux-gcc的安装路径
book@book-virtual-machine:/work/nfs_root/filesystem$ which arm-linux-gcc
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
上面是我的路径,/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib,这个就是要复制出来的动态库的路径,把里面的动态链接文件复制到filesystem文件夹下
(2)复制动态链接文件
book@book-virtual-machine:/work/nfs_root/filesystem$ cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./lib -r
简单小结一下:
1. inittab,rcS,fstab关系
系统启动挂载文件系统--->
--->读取/etc/inittab文件,解析其中定义的动作
--->根据sysinit定义的process执行/etc/init.d/rcS
--->/etc/init.d/rcS中第一条命令 mount -a
--->读取/etc/fstab文件
--->根据文件列表内容逐个挂载其中的设备到指定地
2.profile文件
设置环境变量,根据这里设置命令提示符号相关的环境变量
用户可以根据自己需要添加环境变量
3./etc/init.d/rcS
执行系统初始化时候,想开机启动的程序都可以写在这个文件中
七、在uboot中设置参数和启动命令
TINY4412# set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.123:/work/nfs_root/filesystem ip=192.168.1.17:192.168.1.123:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
格式说明:bootargs noinitrd root=/dev/nfs nfsroot=虚拟机linux系统ip:根文件系统绝对路径 ip=开发板ip:虚拟机linux系统ip:网关:子网掩码::开发板的网卡设备名(一般是eth0,不是虚拟机):off init=/linuxrc console=ttySAC0
TINY4412# set bootcmd fatload mmc 0:1 0x40008000 zImage;bootm 0x40008000
TINY4412# save
八、挂载根文件系统
1)虚拟机、PC、开发板三者互ping成功(三者必须处于同一网段,如192.168.1.xxx)
2)启动开发板
linux系统成功启动,出现“Please press Enter to activate this console”:
网络根文件系统挂载成功:
到这里,从启动uboot,引导linux内核,到挂载网络根文件系统,整个开发环境的搭建就成功了!
SD卡启动tiny4412标准版(1306)的linux系统并挂载网络根文件系统相关推荐
- 制作SD卡启动自己编译的uboot.bin
README for FriendlyARM Tiny4412 ----------------------------------------------------- 1. Build uboot ...
- 【TINY4412】U-BOOT移植笔记:(9)SD卡启动U-BOOT
[TINY4412]U-BOOT移植笔记:(9)SD卡启动U-BOOT 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板 ...
- S5PV210体系结构与接口09:SD卡启动详解
目录 1. MMC技术演进 1.1 NandFlash & NorFlash芯片 1.2 MMC卡 & SD卡 & MicroSD卡(TF卡) 1.2.1 代际关系 1.2.2 ...
- 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)
嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...
- 第十一天: SD卡原理分析及SD卡启动详解
主流的外存设备 内存和外存的区别: 一般是把这种(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存,把ROM(read only memory,只读存储器 ...
- 常见存储介质介绍以及SD卡启动系统方法
主流的外存设备介绍 内存和外存的区别: 一般是把这种RAM(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存: 把ROM(read only memory ...
- [i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统
转自:http://www.07net01.com/linux/2016/02/1232094.html 参照1:http://blog.csdn.net/girlkoo/article/detail ...
- Exynos4412——SD卡启动
实现Tiny4412从SD卡的启动内核与根文件系统. 前面启动开发板时,需要从SD卡启动Uboot,然后从DNW下载内核和根文件系统到RAM,或者NFS挂载根文件系统. Uboot应该是支持SD卡的, ...
- ARM芯片开发(S5PV210芯片)——SD卡启动
1.SD卡启动 顾名思义就是启动代码存放在SD卡中,设备从SD卡中启动.用SD卡启动有一些好处:譬如可以在不借用专用烧录工具(类似Jlink)的情况下对SD卡进行刷机,然后刷机后的SD卡插入卡槽,So ...
最新文章
- 神经网络中参数量parameters和FLOPs计算
- HDOJ 1253 HDU 1253 胜利大逃亡 ACM 1253 IN HDU
- Hacking PostgreSQL
- Sublime text3 Emmet使用
- 动态给a标签赋值_怎样利用Excel制作抖音上的心形动态函数图像?
- wxWidgets:绘制自定义控件
- sas数据导入终极汇总-之一
- linux中常用的shell脚本,Linux常用shell脚本
- FPGA资源不足导致vivado生成bit失败
- turtlebot3 模型没有显示_Turtlebot3新手教程:Open-Manipulator机械臂
- 项目还有哪些优化的地方
- linux 怎么查看谁登过这台服务器,如何查看linux服务器是否被入侵
- 南琼考试系统APP服务器,南琼考试系统
- 服务器搬迁没有搭建文档,云服务器搬迁
- 合并报表编制采用的理论_合并报表的基本逻辑是什么?
- 淘宝新店刚开详情页到底需要怎么做
- 个人技术总结——Unity中角色动画制作及动画切换逻辑的实现
- 2020年下半年湖北软考报名通知
- EAX、ECX、EDX、EBX
- 别样肉客首次针对中国市场独家研发创新植物性猪肉糜产品
热门文章
- java能不能播放mp4_如何在Java Swing应用程序中播放MP4视频
- 【ML4CO论文精读】具有离散拆分送货和取货的车辆路径问题的禁忌搜索算法(Meng Qiu, 2018)
- GetMessage PeekMessage SendMessage PostMessage
- C语言函数大全--h开头的函数
- OpenGL光和材质
- Jetbrains系列软件高版本闪退问题解决
- 【计算机体系】LFU与LRU的区别
- 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)
- 《容忍与自由》读后感
- 最简单的树上染色问题(没有之一)