Tiny6410挂载nfs根目录文件系统

2024-04-19 14:38

本文主要是介绍Tiny6410挂载nfs根目录文件系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        本文专属tiny6410吐槽系列~如有得罪,请多包涵~在此也留个联系方式~291222536@qq.com,欢迎大家一起交流吐槽心得~


        上次好像我们讲到了自己配的内核到挂在完nfs就挂掉了,提示是找不到init是吧~记得好像是,所以今天我们来解决掉这个问题,从新开始制作一个根目录文件系统。

        这里不得不下载的就是busybox啦~这是木有办法的啦,谁叫这是神奇呢~又截止到我码下这些文字的时刻,2013/12/05晚上23:10分,busybox官网发布的最新版本是29 June 2013 -- BusyBox 1.21.1 (stable)

        所以到busybox官网把busybox1.21.1下载下来

        http://www.busybox.net/


        然后tar解压出来~再再然后直接make menuconfig进入配置菜单

        


        1.Busybox Settings --->Build Options --->

        如下配置,编译成静态库,这样会省去一点麻烦,以后我们再编译成动态库的形式~

        然后指定交叉编译器arm-linux-

        

        2.Busybox Settings --->Installation Options --->

这里是编译busybox后的安装位置,这里最好不要选择默认的,我们把busybox的安装路径设置成nfs共享文件系统根目录的,比如说我是这样的设置:

        

        3.其他暂时先保持默认~exit出来后就可以make -j2啦~


        4.在make install busybox之前,首先创建根目录文件夹和根目录下系统常备的文件夹~您可以看一下您linux发行版的根目录下都有哪些文件夹~类似的,我也在根目录也创建这些文件夹~但是这里由于时间关系和不浪费您宝贵的时间,我直接贴出脚本来。

        Creat file脚本文件,脚本不要用sudo去执行,后面你会知道错的

#!/bin/sh
echo "----------   Create rootfs directons start...   ----------"
mkdir rootfs 
cd rootfs 
echo "----------   Create root,dev....   ----------"
mkdir root dev etc boot tmp var sys proc lib mnt home usr opt
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/sbin usr/bin usr/lib usr/modules
mkdir lib/modules
mkdir lib/modules/3.2.53
echo "make node in dev/console dev/null"
mknod -m 660 dev/console c 5 1
mknod -m 660 dev/null c 1 3
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp
chmod 777 tmp
chmod 777 var/tmp
echo "----------   Creat some necessary files   ----------"
touch etc/init.d/rcS etc/sysconfig/HOSTNAME etc/inittab etc/fstab etc/profile
cp /etc/passwd  rootfs/etc
cp /etc/group rootfs/etc
cp /etc/shadow rootfs/etc
echo "----------   make direction done   ----------"

        然后执行完脚本之后用管理员身份创建和复制几个文件

        如果上面的脚本不能执行的话,就手动复制那些necessary files

touch etc/init.d/rcS etc/sysconfig/HOSTNAME etc/inittab etc/fstab etc/profile
cp /etc/passwd  rootfs/etc
cp /etc/group rootfs/etc
cp /etc/shadow rootfs/etc

        然后,比如我建立的根目录是/home/chanfai/workspace/rootfs,那么busybox编译后的安装路径也是这个~

        所以,现在可以切入busybox目录下make install,然后逐个逐个修改根目录的文件


        1.etc/inittab,系统init进程配置文件,参考busybox源码example/inittab文件说明

        Inittab配置

::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh #没有这就不行,就不能打开console控制台。
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a

 

        2.etc/init.d/rcS,系统启动加载项文件

        rcS配置

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts #用于telnet登录时使用echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
/bin/hostname -F /etc/sysconfig/HOSTNAME


        3.etc/fstab 系统挂载文件系统列表文件,

        Fstab配置

#device mount-point type option dump fsck order 
proc /proc proc defaults 0 0 
sysfs /sys sysfs defaults 0 0 
mdev /dev ramfs defaults 0 0
none /var ramfs defaults 0 0
none /tmp ramfs defaults 0 0


        4.etc/profile用户环境配置文件

        Profile配置

# Ash profile
# vim: syntax= sh
# No core file by defaults
# ulimit - S - c 0> / dev/ null 2> & 1USER="id -un" 
LOGNAME=$USER
PS1="[\u@\h \w]#"  #\w 目录将显示全路径
PATH=$PATH
HOSTNAME= '/bin/hostname' 
alias cls="clear"
export USER LOGNAME PS1 PATH


        5.etc/sysconfig/HOSTNAME,填入自己的用户名字,我这里是chanfai


        6.还有一点,为了必须某些bug,rootfs/lib目录要求某些动态库~其实就是交叉编译器里面的一些动态库,说明这个很费时间的,这里我是比较懒,从友善编译好的文件系统中直接抽出lib目录部分~

        cp过去就行,记得带上-a参数保持软连接状态


        好,文件系统暂时就这样先定,最后来一张图结束这一次的吐槽~

        

        下节移植lcd驱动和tslib,然后在文件系统中加入QT库,再然后就真正进入各个驱动的移植,然后顺带在应用层写QT界面去控制各个外设,这样可以达到交叉学习的效果

这篇关于Tiny6410挂载nfs根目录文件系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917825

相关文章

Linux中的缓冲区和文件系统详解

《Linux中的缓冲区和文件系统详解》:本文主要介绍Linux中的缓冲区和文件系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、FILE结构1、fd2、缓冲区二、文件系统1、固态硬盘2、逻辑地址LBA(一)数据块 Data blocks(二)inode表

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

k8s 存储(PV、PVC、SC、本地存储、NFS)

存储持久化相关三个概念: PersistentVolume (PV) 是对具体存储资源的描述,比如NFS、Ceph、GlusterFS等,通过PV可以访问到具体的存储资源;PersistentVolumeClaim (PVC) Pod想要使用具体的存储资源需要对接到PVC,PVC里会定义好Pod希望使用存储的属性,通过PVC再去申请合适的存储资源(PV),匹配到合适的资源后PVC和PV会进行绑定

Kubernetes集群安装、配置glusterfs文件系统

环境介绍: 3台Centos 7.4系统节点,已经部署好Kubernetes,同时复用这3台机器作为gluster存储节点: hostIPK8s roleg1-nasp12.12.10.11master + nodeg3-nasp12.12.10.13nodeg4-nasp12.12.10.14node 安装、配置glusterfs: 在物理主机上采用yum安装的方式,步骤如下: 1

Ubuntu构建只读文件系统

本文介绍Ubuntu构建只读文件系统。 嵌入式系统使用过程中,有时会涉及到非法关机(比如直接关机,或意外断电),这可能造成文件系统损坏,为了提高系统的可靠性,通常将根文件系统设置为只读,将其他需要读写的数据放置在另外开辟的一个磁盘分区,本文针对嵌入式系统常用的Ubuntu操作系统构建只读文件系统。 1.基本原理 1)OverlayFS简介 OverlayFS(Overlay File Sy