当前位置:  技术问答>linux和unix

散分+嵌入式+文件系统+问题!

    来源: 互联网  发布时间:2016-08-26

    本文导语:  我最近在做u-boot移植,其中看到文件系统颇为不解: 我的任务就是用u-boot把flash的内容重烧。我是这样认为的:我的机器从flash加载u-boot代码到内存后我就完全运行内存中的u-boot这时跟flash无关了,所以能对其改写(...

我最近在做u-boot移植,其中看到文件系统颇为不解:

我的任务就是用u-boot把flash的内容重烧。我是这样认为的:我的机器从flash加载u-boot代码到内存后我就完全运行内存中的u-boot这时跟flash无关了,所以能对其改写(当然如果u-boot坏了就重新启动不了了)。

我看到一些关于bootloader的说明,大体就是分3部分bootloader(我这具体就是u-boot)、kernel、文件系统1(为了更好的说明我的问题,这里的文件系统我叫做“文件系统1”)。
系统的启动过程简单说就是bootloader初始化环境然后转到kernel执行然后kernel加载文件系统1(其实细节很复杂,我们只是看看流程)。

我的问题也就来了,我认为(可能有错)文件系统就是一些对存储设备设定的数据结构,内核根据这些结构存取存储设备。我认为(可能有错)硬盘的文件系统(数据结构)是对其格式化的时候写入的而且是存在整个硬盘上。那我的flash并没有格式化而且它的内容只是随意组织的(我把bootloader放在一个地方、kernel一个地方、文件系统1一个地方但对地址有一定的要求)。那么对于flash存储设备本身有没有文件系统?

就是说我认为文件系统是对硬件的类似格式化的操作,怎么linux竟然能把文件系统(我上面的文件系统1就是被弄成了可以拷贝的文件)当成文件来随意拷贝呢。

再往细里说就是linux kernel是怎么加载文件系统的(文件系统是一个文件吗)。

|
存储设备本身也是有驱动的,比如硬盘和flash都有扇区的概念,这就是硬件驱动的事,由kernel加载。而文件系统说到底就是如何去读写这些扇区。理论上,没有文件系统,也能访问数据,比如直接读bootloader,又比如oracle的Raw分区等等。
kernel有一个虚拟的文件系统架构,包含了各种系统调用,比如read、write等等,不同的文件系统需要实现这些调用。所以说,文件系统不是一个文件,而是文件在硬件上存储和读取的系统。比如说每个文件占用多少个扇区,改文件占用的每个扇区的索引值等等。可以这么理解,文件系统就是管理这些扇区,将文件按一定规则存放到这些扇区里去。

所以,没有文件系统你也能访问硬件数据。比如说假设flash的设备是/dev/sda,直接去读/dev/sda这个文件的前512字节,就是读到了flash的第一个扇区的数据。

至于格式化,就是针对不同的文件系统,初始化一些扇区,比如预留某些扇区作为索引,某些扇区保留目录等等。

|
加载的是根文件系统,它是一个特殊的文件系统,它主要是为系统提供命令集、配置文件、设备文件等这些系统所需要的东西。而我们一般说的文件系统只是存储设备上数据的一个组织结构,也就是说是用户文件的组织。如果没有那个根文件系统,系统有许多功能实现起来不太方便。大致就是这样...

|
文件系统分为好几种,一种是根文件系统,比如romfs,j2ffs等,这些文件系统提供了许多命令行接口。在内核启动的时候进行挂载。当进入系统后实际上就是进入了根文件系统。
还有一种对文件系统的解释就是一种 如何组织外部存储器上文件存储,访问方式的系统,比如传统的ext2,ext3,ntfs等。一般也称为格式化方式。

|
先说说PC的grub:
stage1 这个前面的446B与MBR前446B是相同的 这个是为了找到boot sector 
xxfs_stage1_5 这个是加载到ram中的文件系统  如果没有它 就无法针对某个由xxfs格式的分区读写
显示开机选项
加载stage2 这个在MBR后32k处(忘记是不是这个数了)  开机后面的事情就都交给stage2了
内核加载运行
文件系统初始化  查找intrd.img(假定是这个名字 这个就是文件系统镜像了也就是你说的文件系统1)
intrd.img做什么呢
挂载 文件系统设备文件  如/proc  /sys
生成相应的设备文件
开户一些系统服务
等等
没有这些 内核是跑不下去的 会panic掉

内核本身实现了一层VFS  对各种文件系统进行了抽象 这样可以支持很多文件系统
比如ext2 ext3现在到ext4了 这里的文件系统是对磁盘的一种组织与管理了  比如数据怎么存放  

flash文件系统有jffs  yaffs(这个是专门针对nand) 等  

当然你直接读取rad data也是可以的  比如u-boot烧到flash就是这样
但是如果你要把block type flash nand flash  mount到某个结点并像一般文件那样访问里面的数据你就得用到文件系统
  



|
散分+嵌入式+文件系统+问题![图片]

x86大哥来了。

呵呵


|
X86全说了,支持。

|
接分。。。
我的“下载”里面有这方面的资料,可能有帮助。。。

|
不懂,突然发现X86神人来了,以前没遇到过。膜拜下

|
x86大哥已经说的很详细了。

散分+嵌入式+文件系统+问题![图片]

|


|
再怎么存储都是一堆二进制数据,这里是把整个文件系统做成一个映像文件,格式化过程太啰嗦,再写数据麻烦,直接烧写一个映像文件,bang!文件管理结构、文件数据。。。都有了

|
不懂,特来支持...

|


散分+嵌入式+文件系统+问题![图片]

主要是这个问题不好说。

|
内核和根文件系统是不能单独用的,楼主学习下linux系统的基本原理就明白了。

|
第一次 这么认真地敲这么多的字  linux有些问题的确令人很纠结  
希望我说的对你有帮助
你不要把它跟kernel中的那个搞混了就是了
搞清楚你说的文件系统1 具体做了什么  会明白一些

|
楼上一堆牛人,膜拜~

    
 
 

您可能感兴趣的文章:

  • 请问在哪下载嵌入式Linux开发平台???想学嵌入式开发!!!
  • 有谁做过嵌入式 Linux开发?是否有嵌入式Linux的JVM?
  • 嵌入式网络编程与非嵌入式网络编程有什么不同
  • 问一个弱弱的问题:做嵌入式开发,宿主机的Linux版本一定要跟目标机上的嵌入式Linux版本一致么?
  • 我怎么糊涂了:想开发嵌入式系统(目标机采用UCLINUX嵌入式操作系统),在RED HAT LINUX下开发,选用什么工具呢?QT还是qt embedded?
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 请问什么是嵌入式数据库?(空)
  • 关于“嵌入式Linux”
  • 嵌入式系统的学习
  • 嵌入式学习方法
  • 请问:构建一个嵌入式开发环境时的疑问?
  • linux 嵌入式开发用买开发板吗?
  • 求嵌入式Linux的入门书籍!
  • 嵌入式应用开发协作系统 Yocto
  • 嵌入式系统的C运行库 Newlib
  • 嵌入式GLIBC EGLIBC
  • 驱动程序开发和嵌入式开发有什么联系吗?
  • 嵌入式 syslog
  • vc++与Linux嵌入式
  • 计算机专业学习 嵌入式可以么 ??
  • 嵌入式Linux下,怎么制作cpio文件系统?
  • 嵌入式linux下线程通信可以用共享文件法吗?
  • 有什么软件可以通过网络把文件从windows发送到嵌入式机的linux
  • 如何添加一个文件到嵌入式linux内核
  • [急]请问在自己做的嵌入式linux中如何加入telnet服务,需要哪些文件?急!在线等!!!
  • 嵌入式板子上调用dirent.h里面的相关函数来读取文件夹内容,如何转为中文???
  • 标准嵌入式linux系统分区/文件系统规划是什么样的?
  • 嵌入式linux中usb host读device的程序在哪个文件中
  • 嵌入式系统中根文件系统是如何和linux内核联系起来的
  • 如何查看嵌入式linux使用的是什么文件系统
  • jar文件里可不可以设置一个 primary class ? and java开发嵌入式系统用的是什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 现在LINUX主要用在哪些嵌入式设备上?
  • 嵌入式系统 Prex
  • web开发和嵌入式开发哪个更有挑战
  • 嵌入式linux 组播接收问题
  • Linux的嵌入式开发,请高手指点
  • 国内有哪些好的嵌入式公司???
  • 开源嵌入式操作系统 Contiki
  • 嵌入式Web服务器 Appweb
  • 实时嵌入式操作系统 NuttX
  • 嵌入式系统虾米意思呀?
  • Linux 用什么工具进行嵌入式开发。
  • 我想学习Linux 嵌入式开发,请大家指教
  • java 还是LINUX嵌入式???
  • 了解嵌入式开发的朋友请进!
  • 是考验还是嵌入式??
  • linux运维转linux嵌入式
  • 嵌入式GUI库 eSWT
  • 嵌入式系统考研请教?
  • ARM 嵌入式系统的仿真器 Softgun
  • 如何开发嵌入式Linux操作系统?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3