TINY4412 自制文件系统启动Qtopia

系统:Ubuntu 18.04.1 LTS amd64
编译工具链: arm-linux-gcc version 4.4.3
硬件:路由器一台,网线一根
一、 准备工作
创建一个文件夹rootfs用来存放所有资源:
在这里插入图片描述
将需要用到的所有源码放在该目录下,包括uboot源码,linux-3.5源码,友善qtopia文件系统镜像,友善qtopia文件系统源码,友善busybox源码包放到该目录下:
在这里插入图片描述
二、 Busybox编译:
解压源码:
TINY4412 自制文件系统启动Qtopia_第1张图片
进入目录:
在这里插入图片描述
make menuconfig
Busybox Settings —>
Build Options —>
[*] Build BusyBox as a static binary (no shared libs)
[ ] Force NOMMU build
[ ] Build with Large File Support (for accessing files > 2 GB)
(arm-linux-) Cross Compiler prefix
() Additional CFLAGS
选择静态变编译库,并配置交叉编译工具链。
TINY4412 自制文件系统启动Qtopia_第2张图片
保存退出。
make –j4
TINY4412 自制文件系统启动Qtopia_第3张图片
make install
TINY4412 自制文件系统启动Qtopia_第4张图片
在busybox顶层目录会有一个_install文件夹,并在目录下如下内容:
bin linuxrc sbin usr
在这里插入图片描述
三、 文件系统初步制作:
进入_install 文件夹并创建其他节点:
mkdir dev etc lib mnt opt proc var tmp sys root

将交叉在这里插入图片描述编译工具链下的库拷贝到lib文件夹下,这些库是基本命令必备的库。
TINY4412 自制文件系统启动Qtopia_第5张图片
删除lib下的.o和.a文件,对库进行瘦身减小文件系统的大小。
TINY4412 自制文件系统启动Qtopia_第6张图片
在etc下添加文件inittab:
gedit etc/inittab
添加如下内容:
TINY4412 自制文件系统启动Qtopia_第7张图片
保存,退出。
在ttc下添加文件fstab
gedit etc/fstab
添加如下内容:
TINY4412 自制文件系统启动Qtopia_第8张图片
注意全都是TAB键缩进。
保存 退出。
在etc下创建init.d目录并创建rcS文件:
在这里插入图片描述
gedit etc/init.d/rcS
在rcS添加内容为:
在这里插入图片描述
具体执行什么内容暂时不填写。
为rcS添加可执行权限:
在这里插入图片描述
在etc下创建profile文件:
gedit etc/profile
添加内容为:
TINY4412 自制文件系统启动Qtopia_第9张图片
保存退出。
在dev下创建console节点:
mknod dev/console c 5 1
在这里插入图片描述
将_install文件夹移动到rootfs文件夹下:
在这里插入图片描述
至此文件系统初步制作完成。
五、 内核编译:
在rootfs打开终端解压内核源码:
tar –xzvf linux-3.5-20170221.tgz
在这里插入图片描述
进入linux源码目录,:
在这里插入图片描述
cp tiny4412_linux_deconfig .config
在这里插入图片描述
make menuconfig
TINY4412 自制文件系统启动Qtopia_第10张图片
关闭trustZone,在systemType下:
TINY4412 自制文件系统启动Qtopia_第11张图片
General setup下:
在这里插入图片描述
返回。
Networking Support:
TINY4412 自制文件系统启动Qtopia_第12张图片
打开File System,选中Network File system并打开:
TINY4412 自制文件系统启动Qtopia_第13张图片
选中这些。
退出保存。

打开/kernel/timeconst.pl修改源码,第373行修改为:
在这里插入图片描述
make –j4
TINY4412 自制文件系统启动Qtopia_第14张图片
生成zImage文件。

六、 配置NFS Server:
安装nfs server:
sudo apt-egt install nfs-kernel-server
TINY4412 自制文件系统启动Qtopia_第15张图片
配置nfs server:
sudo gedit /etc/exports
最后添加如下内容:
TINY4412 自制文件系统启动Qtopia_第16张图片
/TINY4412/rootfs/rootfs_yjp -->共享的文件夹路径
192.168.* -->允许访问的IP号,当然也可以具体指定一个(rw,sync,no_root_squash) -->权限,代表网络设备可以对该文件夹可读可写。
修改自制文件系统的权限,避免因权限问题而出错:
sudo chmod 777 –R /TINY4412/rootfs/rootfs_yjp
在这里插入图片描述
重启nfs server:
在这里插入图片描述
查看是否配置成功:
在这里插入图片描述
成功。
查本机ip:ifconfig:
TINY4412 自制文件系统启动Qtopia_第17张图片
在home下新建文件夹rootfs_test看看能否挂载:
在这里插入图片描述
可以发现可以成功挂载,在rootfs_test文件夹下修改的任何内容都会被同步到rootfs_yjp文件夹下。
卸载:
在这里插入图片描述
七、 使用NFS挂载文件系统:
进入uboot终端:
TINY4412 自制文件系统启动Qtopia_第18张图片
连接usb线,执行fastboot烧写内核:
TINY4412 自制文件系统启动Qtopia_第19张图片
另开一个终端,进入zImage所在目录:
TINY4412 自制文件系统启动Qtopia_第20张图片

打开路由器的配置界面查询板子的ip地址:
在这里插入图片描述
查ip的时候至少要激活网络一次,所以我从EMMC中启动了一次友善的Qtopia系统,查到之后再重启选择sd卡启动。
在uboot终端ctrl+c退出fastboot模式设置板子参数:
minicom存在bug,输入超过屏幕宽度时无法输入,这里换成gtkterm设置:
在这里插入图片描述
这里需要注意一定要指定协议为TCP,默认是UDP协议,该协议丢包严重,导致无法通过网络挂载文件系统。另外ip=本地ip:服务ip:网关:子网掩码::eth0:off
严格按照格式写
eth0:off关闭动态ip
换成minicom。重新启动板子:
TINY4412 自制文件系统启动Qtopia_第21张图片
可以看到成功通过网络挂载了文件系统。
八、 配置启动qtopia:
这里参考友善的文件系统。
定位到rootfs目录下解压rootfs_qtopia
tar –xzvf rootfs_qtopia_qt4_20160514.tgz
TINY4412 自制文件系统启动Qtopia_第22张图片
打开我们制作的文件系统的rcS和友善对应的rcS,在目录etc/init.d下
直接把他的内容复制过来:
TINY4412 自制文件系统启动Qtopia_第23张图片
把第13行FriendlyArm改成自己的名字
在这里插入图片描述
rcS是文件系统启动后执行的第一个文件。然后42-64行删除,不需要这些。
然后删除这些:
在这里插入图片描述
看他的脚本里面有执行/bin/hotplug /bin/usbhotplugd /bin/qtopia &
所以把友善bin目录下的这三个脚本复制到自制文件系统的bin下
在这里插入图片描述
Qtopia运行需要源文件,所将友善的Qtopia目录直接拷贝过来:
在这里插入图片描述
Qtopia和QT的运行依赖于一些库,所以直接将友善的usr
文件也拷贝过来
在这里插入图片描述
还有一个比较重要的文件时mdev.conf用来在dev下生成设备的,也拷贝过来:
在这里插入图片描述
然后重启板子:
TINY4412 自制文件系统启动Qtopia_第24张图片
可以进去了,但是不支持触摸屏。
插入鼠标,发现可以使用,进入系统:
TINY4412 自制文件系统启动Qtopia_第25张图片
成功。

你可能感兴趣的:(嵌入式Linux学习)