原创 【博客大赛】为AM335x+Linux移植SGX+OpenGL+Qt5之完全开发笔记(5)

2016-6-1 17:18 990 15 15 分类: MCU/ 嵌入式 文集: Qt和Cpp

Step 5: Prepare the Filesystem

 
A. 新建目标文件系统:
[maria@localhost qt]$ mkdir /home/maria/qt/rootfs -p
它相当于目标文件系统的根目录。
 
B. 编译busybox,将输出拷贝到目标文件系统:
make ARCH=arm CROSS_COMPILE=/opt/i686-arago-linux/usr/bin/arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=/opt/i686-arago-linux/usr/bin/arm-linux-gnueabihf- all
make ARCH=arm CROSS_COMPILE=/opt/i686-arago-linux/usr/bin/arm-linux-gnueabihf- install
使用busybox默认配置即可,不用修改它。
之前在《为AM335x移植Linux内核主线代码》系列里,制作busybox的时候使用了静态编译,动态编译无法运行,这是因为动态编译的_install/bin/busybox找不到装载器。
 
[maria@localhost bin]$ /opt/i686-arago-linux/usr/bin/arm-linux-gnueabihf-ldd --root ../../../rootfs.save busybox
libm.so.6 => /lib/libm.so.6 (0xdeadbeef)
ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0xdeadbeef)
libc.so.6 => /lib/libc.so.6 (0xdeadbeef)
 
解决的方法很简单,就是拷贝正确的装载器和库文件,放置在目标文件系统的正确位置即可,见接下来的步骤。
编译完成之后,将_install目录下的所有内容,拷贝到A步骤创建的rootfs下:
bin linuxrc sbin usr
 
C. 创建lib目录,拷贝库文件:
在目标文件系统的根目录下,创建lib目录;
一般这些库文件在交叉编译器安装目录下的libc里面,除了busybox需要的三个库文件之外,还有很多其他的库文件;
将这些库文件拷贝到lib目录中;
 
D. 创建etc目录,编辑需要的内容:
创建rc0.drc1.drc2.drc3.drc4.drc5.drc6.drcS.d八个目录;
SDK开发包提供的文件系统中的etc/groupetc/passwdetc/shadow三个文件拷贝过来;
SDK开发包提供的文件系统中的etc/default/rcS文件拷贝过来;
SDC开发包提供的文件系统中的etc/inittab文件拷贝过来;
SDC开发包提供的文件系统中的etc/fstab文件拷贝过来;
SDC开发包提供的文件系统中的etc/init.d/rc/etc/init.d/rcS文件拷贝过来;
 
E. 创建devhomehome/rootmediamntoptprocsysvar目录:
无需拷贝dev文件,因为内核会生成它们。
将目标文件系统拷贝到SD卡的rootfs分区,然后将SD插入目标板,上电运行,串口终端会出现启动信息,最终出现登陆提示符。这说明,Linuxrunlevel 3已经可以正确运行了。
 
NOTE:将飞凌提供init.sysvinit拷贝到sbin目录下。
NOTE:将飞凌提供的ethtool拷贝到sbin目录下。
NOTE:将Graphics SKD编译出来的devmem2拷贝到sbin目录下。
NOTE:记得在lib下创建modules/3.18.4目录;
NOTE:这里要在rcS文件的倒数第二个非空行添加:
echo "mount -o remount,rw /dev/root"
mount -o remount,rw /dev/root

这样启动的时候就不用手动执行mount命令了。

文章评论0条评论)

登录后参与讨论
我要评论
0
15
关闭 站长推荐上一条 /2 下一条