4412开发板学习之Linux系统编程(一):最小Linux系统的搭建、tftp服务器搭建与测试、搭建NFS文件系统
前言Linux系统编程是嵌入式从业人员至关重要的技能,无论是应用工程师还是驱动工程师都应该熟练的掌握Linux编程,我也会话更多的时间再它的学习上,通过阅读讯为的《Linux系统编程》以及《Unix环境高级编程》(APUE)来进一步的学习。今天搭建了最小Linux系统;搭建并测试了tftp服务器,便于虚拟机与开发板的文件传输;搭建了NFS根文件系统,更加方便了学习与调试的过...
前言
Linux系统编程是嵌入式从业人员至关重要的技能,无论是应用工程师还是驱动工程师都应该熟练的掌握Linux编程,我也会话更多的时间再它的学习上,通过阅读讯为的《Linux系统编程》以及《Unix环境高级编程》(APUE)来进一步的学习。
今天搭建了最小Linux系统;搭建并测试了tftp服务器,便于虚拟机与开发板的文件传输;搭建了NFS根文件系统,更加方便了学习与调试的过程。
最小Linux系统的搭建
特点:便于学习,但没有图形界面
需要四个文件:
u-boot-iTOP-4412.bin
zImage
ramdisk-uboot.img
system.img
busybox的安装与配置
解压后首先make menuconfig 设置交叉编译工具
然后修改输出目录
最后make make install
完善最小Linux文件系统
创建文件夹:mkdir dev etc lib mnt proc sys tmp var
进入到新创建的etc文件夹:mkdir init.d rc.d
进入新创建的rc.d文件夹
创建文件家mkdir init.d
返回system目录,进入var目录
mkdir lib lock log run tmp
进入etc目录
将eth0-setting passwd profile三个文件拷贝进去,将文件的权限改为755
进入/etc/init.d
将ifconfig-eth0个rcs两个文件拷贝进去,将文件的权限改为755
进入/etc/rc.d/init.d
将netd文件拷贝进去,将文件的权限改为755
返回到system目录下,进入lib文件夹下
将编译器的库文件拷贝进去
cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* ./lib/
安装打包软件和编译
打包工具使用make_ext4fs
进入/minilinux文件夹
make_ext4fs -s -l 314572800 -a root -L linux system.img system
分区并格式化
使用烧写安卓相同的命令
烧写
启动
tftp服务器的搭建与测试
搭建服务器
安装xinetd:apt-get install xinetd
安装tftp和tftpd:apt-get install tftp tftpd
建立TFTP的配置文件 vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/tftpboot
disable = no
per_source = 11
cps = 100 2
flags =IPv4
}
建立服务器的目录:mkdir /var/tftpboot
重启xinetd服务:sudo /etc/init.d/xinetd restart
在tftpboot下创建一个文件hello
打开另外一个终端,输入tftp127.0.0.1连接,get hello来下载hello
下载成功
开发板实现TFTP文件传输
4412的开发板制作的文件系统已经支持TFTP客户端命令了,编译Busybox时默认是支持该命令的
检查虚拟机与开发板在同一网段后就可以开始TFTP文件传输
首先先将要传输的文件复制到服务器端的目录中:cp hello_arm /var/tftpboot/
在开发板上将文件下载到开发板:tftp -g -l hello_arm -r hello_arm 192.168.1.127
改变权限:chmod 777 hello_arm
运行:./hello_arm
实现NFS网络文件系统
通过网络启动文件系统更加方便学习,但是如果是Android或者Qt的文件系统就太打了,启动速度慢,这么做也就没什么意义了
最小Linux文件系统相对其他操作系统小很多,所以使用网络文件系统可以方便用户的调试
搭建NFS服务器
安装Ubuntu NFS服务:apt-get install nfs-kernel-server
创建共享文件夹:mkdir /home/topeet/linux
打开/etc/exports在最后加一句:/home/topeet/linux/ *(rw,sync,no_root_squash)
sync:资料同步写入内存和硬盘
no_root_squash:是Ubuntu NFS客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该用户而言,该客户端就具有root权限
重启portmat服务:/etc/init.d/portmap restart
重启nfs服务:/etc/init.d/nfs-kernel-server restart
测试:mount -t nfs localhost:/home/topeet/minLinux/system /mnt/system
问题解决:mount.nfs: access denied by server while mounting localhost:/home/topeet/minLinux/system
进入要共享的目录然后执行:exportfs -a
挂载成功
配置内核
先修改最小文件系统的/etc/init.d/ifconfig-eth0
接着修改内核配置来支持NFS文件系统
先生成支持linux最小文件系统的内核配置文件
make menuconfig
进入Boot options配置界面,在Default kernel command中输入
root=/dev/nfs rw nfsroot=192.168.1.127:/home/topeet/minLinux/system ip=192.168.1.230:192.168.1.127:192.168.1.1:255.255.255.0:iTop:eth0:off rootfstype=ext4 init=/linuxrc console=ttySAC2,115200
然后按照前面的步骤烧写系统,不要烧写文件系统(system.img)
重启
成功进入
在开发板上创建一个文件:touch hello
看一下虚拟机上的NFS共享文件夹
说明配置NFS文件系统成功!!
更多推荐
所有评论(0)