文件系统怎么启动的|如何使用Initramfs文件系统

文件系统怎么启动的|如何使用Initramfs文件系统的第1张示图

⑴ 文件系统

1,文件管理系统确实是一个管理软件,但是文件系统却是包含了文件管理系统和磁盘上所有的文件。这个管理系统本身属于系统内核,在计算机启动后运行在内存中。但是文件系统中的某些部分,是存放在磁盘上的,这也是磁盘都必须格式化后才能使用的缘故。2.你这个说法有问题,文件从硬盘上读出时都是要在磁盘上寻址的,所以到最后都是归结到扇区,然后读取块。3.bootloader是启动引导器,用来引导操作系统内核,然后内核中的文件管理模块去管理文件系统。实际上文件管理系统管理的就是根文件系统,而它本身是放在内存中运行的。bootloader启动的时候,内核还没加载,根本就不存在文件系统这一说.

⑵ 如何启动分布式文件系统 hdfs

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统回。它和现答有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。

⑶ 操作系统本身是个程序,它是如何启动的

从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: 1. 预引导(Pre-Boot)阶段; 2. 引导阶段; 3. 加载内核阶段; 4. 初始化内核阶段; 5. 登陆。 每个启动阶段的详细介绍 a) 预引导阶段 在按下计算机电源使计算机启动,并且在Windows XP专业版启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。 b) 引导阶段 Windows XP Professional引导阶段包含4个小的阶段。 首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。 接着系统来到了选择阶段,如果计算机安装了不止一个(也就是多系统),而且正确设置了boot.ini使系统提供选择的条件下,计算机显示器会显示一个选单,这是NTLDR读取boot.ini的结果。(至于选单,由于暂时条件不够,没办法截图,但是笔者模拟了一个) 在boot.ini中,主要包含以下内容: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional" 其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。(*本文不会更详细地讲解boot.ini的组成结构,因为其与本主题关系不大,如果想了解,可以到一些专门的网站处查询相关信息。)如果在boot.ini中只有一个选项,或者把timeout值设为0,则系统不出现选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,选择阶段结束,硬件检测阶段开始。 在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。 硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。 引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。 c) 加载内核阶段 在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnl.exe。系统加载了Windows XP内核但是没有将它初始化。接着ntldr加载硬件抽象层(HAL,hal.dll),然后,系统继续加载HKEY_LOCAL_MACHINE\ system键,NTLDR读取select键来决定哪一个Control Set将被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载HKEY_LOCAL_MACHINE\system\service \…下start键值为0的最底层设备驱动。当作为Control Set的镜像的Current Control Set被加载时,ntldr传递控制给内核,初始化内核阶段就开始了。 d) 初始化内核阶段 在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务: 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE \system\CurrentControlSet\service\…下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以 LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行 Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。

⑷ uc/os操作系统是怎样启动的

uc/os和uclinux操作系统是两种性能优良源码公开且被广泛应用的的免费嵌入式操作系统,可以作为研究实时操作系统和非实时操作系统的典范。本文通过对uc/os和uclinux的对比,分析和总结了嵌入式操作系统应用中的若干重要问题,归纳了嵌入式系统开发中操作系统的选型依据。两种开源嵌入式操作系统介绍uc/os和uclinux操作系统,是当前得到广泛应用的两种免费且公开源码的嵌入式操作系统。uc/os适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2k。uclinux则是继承标准linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准linux先验知识等优势。其编译后目标文件可控制在几百k量级。uc/os是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。uclinux是一种优秀的嵌入式linux版本。uclinux是micro-conrol-linux的缩写。同标准linux相比,它集成了标准linux操作系统的稳定性、强大网络功能和出色的文件系统等主要优点。但是由于没有mmu(内存管理单元),其多任务的实现需要一定技巧。两种嵌入式操作系统主要性能比较嵌入式操作系统是嵌入式系统软硬件资源的控制中心,它以尽量合理的有效方法组织多个用户共享嵌入式系统的各种资源。其中用户指的是系统程序之上的所有软件。所谓合理有效的方法,指的就是操作系统如何协调并充分利用硬件资源来实现多任务。复杂的操作系统都支持文件系统,方便组织文件并易于对其规范化操作。嵌入式操作系统还有一个特点就是针对不同的平台,系统不是直接可用的,一般需要经过针对专门平台的移植操作系统才能正常工作。进程调度、文件系统支持和系统移植是在嵌入式操作系统实际应用中最常见的问题,下文就从这几个角度入手对uc/os和uclinux进行分析比较。进程调度任务调度主要是协调任务对计算机系统内资源(如内存、i/o设备、cpu)的争夺使用。进程调度又称为cpu调度,其根本任务是按照某种原则为处于就绪状态的进程分配cpu。由于嵌入式系统中内存和i/o设备一般都和cpu同时归属于某进程,所以任务调度和进程调度概念相近,很多场合不加区分,下文中提到的任务其实就是进程的概念。进程调度可分为"剥夺型调度"和"非剥夺型调度"两种基本方式。所谓"非剥夺型调度"是指:一旦某个进程被调度执行,则该进程一直执行下去直至该进程结束,或由于某种原因自行放弃cpu进入等待状态,才将cpu重新分配给其他进程。所谓"剥夺型调度"是指:一旦就绪状态中出现优先权更高的进程,或者运行的进程已用满了规定的时间片时,便立即剥夺当前进程的运行(将其放回就绪状态),把cpu分配给其他进程。作为实时操作系统,uc/os是采用的可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。uc/os中最多可以支持64个任务,分别对应优先级0"63,其中0为最高优先级。调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。其最高优先级任务的寻找是通过建立就绪任务表来实现的。uc/os中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块tcb(task control block)数据结构,其中第一个成员变量就是保存的任务堆栈指针。任务调度模块首先用变量ostcbhighrdy记录当前最高级就绪任务的tcb地址,然后调用os_task_sw()函数来进行任务切换。uclinux的进程调度沿用了linux的传统,系统每隔一定时间挂起进程,同时系统产生快速和周期性的时钟计时中断,并通过调度函数(定时器处理函数)决定进程什么时候拥有它的时间片。然后进行相关进程切换,这是通过父进程调用fork函数生成子进程来实现的。uclinux系统fork调用完成后,要么子进程代替父进程执行(此时父进程已经sleep),直到子进程调用exit退出;要么调用exec执行一个新的进程,这个时候产生可执行文件的加载,即使这个进程只是父进程的拷贝,这个过程也不可避免。当子进程执行exit或exec后,子进程使用wakeup把父进程唤醒,使父进程继续往下执行。uclinux由于没有mmu管理存储器,其对内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。操作系统队内存空间没有保护,各个进程实际上共享一个运行空间。这就需要实现多进程时进行数据保护,也导致了用户程序使用的空间可能占用到系统内核空间,这些问题在编程时都需要多加注意,否则容易导致系统崩溃。由上述分析可以得知,uc/os内核是针对实时系统的要求设计实现的,相对简单,可以满足较高的实时性要求。而uclinux则在结构上继承了标准linux的多任务实现方式,仅针对嵌入式处理器特点进行改良。其要实现实时性效果则需要使系统在实时内核的控制下运行,rt-linux就是可以实现这一个功能的一种实时内核。文件系统所谓文件系统是指负责存取和管理文件信息的机构,也可以说是负责文件的建立、撤销、组织、读写、修改、复制及对文件管理所需要的资源(如目录表、存储介质等)实施管理的软件部分。uc/os是面向中小型嵌入式系统的,如果包含全部功能(信号量、消息邮箱、消息队列及相关函数),编译后的uc/os内核仅有6"10kb,所以系统本身并没有对文件系统的支持。但是uc/os具有良好的扩展性能,如果需要的话也可自行加入文件系统的内容。uclinux则是继承了linux完善的文件系统性能。其采用的是romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。空间的节约来自于两个方面,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理(ram盘将采用ext2文件系统)。uclinux还继承了linux网络操作系统的优势,可以很方便的支持网络文件系统且内嵌tcp/ip协议,这为uclinux开发网络接入设备提供了便利。由两种操作系统对文件系统的支持可知,在复杂的需要较多文件处理的嵌入式系统中uclinux是一个不错的选择。而uc/os则主要适合一些控制系统。操作系统的移植嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行。uc/os和uclinux都是源码公开的操作系统,且其结构化设计便于把与处理器相关的部分分离出来,所以被移植到新的处理器上是可能的。以下对两种系统的移植分别予以说明。(1)uc/os的移植要移植uc/os,目标处理器必须满足以下要求;·处理器的c编译器能产生可重入代码,且用c语言就可以打开和关闭中断;·处理器支持中断,并能产生定时中断;·处理器支持足够的ram(几k字节),作为多任务环境下的任务堆栈;·处理器有将堆栈指针和其他cpu寄存器读出和存储到堆栈或内存中的指令。在理解了处理器和c编译器的技术细节后,uc/os的移植只需要修改与处理器相关的代码就可以了。具体有如下内容:·os_cpu.h中需要设置一个常量来标识堆栈增长方向;·os_cpu.h中需要声明几个用于开关中断和任务切换的宏;·os_cpu.h中需要针对具体处理器的字长重新定义一系列数据类型;·os_cpu_a.asm需要改写4个汇编语言的函数;·os_cpu_c.c需要用c语言编写6个简单函数;·修改主头文件include.h,将上面的三个文件和其他自己的头文件加入。(2)uclinux的移植由于uclinux其实是linux针对嵌入式系统的一种改良,其结构比较复杂,相对uc/os,uclinux的移植也复杂得多。一般而言要移植uclinux,目标处理器除了应满足上述uc/os应满足的条件外,还需要具有足够容量(几百k字节以上)外部rom和ram。uclinux的移植大致可以分为3个层次:·结构层次的移植,如果待移植处理器的结构不同于任何已经支持的处理器结构,则需要修改linux/arch目录下相关处理器结构的文件。虽然uclinux内核代码的大部分是独立于处理器和其体系结构的,但是其最低级的代码也是特定于各个系统的。这主要表现在它们的中断处理上下文、内存映射的维护、任务上下文和初始化过程都是独特的。这些例行程序位于linux/arch/目录下。由于linux所支持体系结构的种类繁多,所以对一个新型的体系,其低级例程可以模仿与其相似的体系例程编写。·平台层次的移植,如果待移植处理器是某种uclinux已支持体系的分支处理器,则需要在相关体系结构目录下建立相应目录并编写相应代码。如mc68ez328就是基于无mmu的m68k内核的。此时的移植需要创建linux/arch/m68knommu/platform/ mc68ez328目录并在其下编写跟踪程序(实现用户程序到内核函数的接口等功能)、中断控制调度程序和向量初始化程序等。·板级移植,如果你所用处理器已被uclinux支持的话,就只需要板级移植了。板级移植需要在linux/arch/?platform/中建立一个相应板的目录,再在其中建立相应的启动代码crt0_rom.s或crt0_ram.s和链接描述文档rom.ld或ram.ld就可以了。板级移植还包括驱动程序的编写和环境变量设置等内容。通过对uc/os和uclinux的比较,可以看出这两种操作系统在应用方面各有优劣。uc/os占用空间少,执行效率高,实时性能优良,且针对新处理器的移植相对简单。uclinux则占用空间相对较大,实时性能一般,针对新处理器的移植相对复杂。但是,uclinux具有对多种文件系统的支持能力、内嵌了tcp/ip协议,可以借鉴linux丰富的资源,对一些复杂的应用,uclinux具有相当优势。例如cisco公司的 2500/3000/4000 路由器就是基于uclinux操作系统开发的。总之,操作系统的选择是由嵌入式系统的需求决定的。简单的说就是,小型控制系统可充分利用uc/os小巧且实时性强的优势,如果开发pda和互联网连接终端等较为复杂的系统则uclinux是不错的选择。

⑸ 2440 linux 如何在文件系统启动后自动运行我的程序

可以用自袭启动脚步来处理。下面用自启动apache为例:自启动脚本:/usr/local/apache2/bin;./apachectl start文件位于/etc/rc.d/init.d下,名为apached, 注意要可执行。#chmod +x /etc/rc.d/init.d/apached //设置文件的属性为可执行#ln -s /etc/rc.d/init.d/apached /etc/rc3.d/S90apache //建立软连接,快捷方式#ln -s /etc/rc.d/init.d/apached /etc/rc0.d/K20apache 在Red Hat Linux中自动运行程序。

⑹ linux文件系统怎样初始化步骤

System V init启动过程概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式.1) BSD system init2) System V init大多数发行套件的Linux使用了与System V init相仿的init也就是Sys V init,它比传统的BSD system init更容易且更加灵活。System V init的主要思想是定义了不同的"运行级别(runlevel)"。通过配置文件/etc/inittab定义了系统引导时的运行级别, 进入或者切换到一个运行级别时做什么。每个运行级别对应于一个子目录/etc/rc.d/rcX.d。每个rcX.d目录中都是一些以S或K开头的文件链接。这些链接指向的脚本都 可以接收start和stop参数,S开头的链接会传入start参数,一般是开启一项服务,K会传入stop参数,一般是停止某服务。以下是一个大致的System V init过程:(1)init 过程执行的第一个脚本是 /etc/rc.d/rc.sysinit,它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统;加载并初始化硬件模块.(2)执行缺省的运行级别模式。 这一步的内容主要在/etc/inittab中体现, inittab文件会告诉init进程要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件.(3)执行/etc/rc.d/rc.local脚本文件。 这也是init过程中执行的最后一个脚本文件,所以用户可以在这个文件中添加一些需要在登录之前执行的命令.(4)执行/bin/login程序注意:System V init只是一种模式,每个系统初始化都有差异,但大体上不会相差太多。如busybox执行的第一个启动脚本就是/etc/init.d/rcS,而且不可以改变,与上面讲的不同。LFS文件系统初始化示例inittab文件由下内容可以看出,最先执行的是/etc/rc.d/init.d/rc文件,给这个文件传入的参数是一个数字,rc会由传入的数字合成rcX.d目录的路径,然后执行其中的所有脚本链接。当然这只是一部分功能。# Begin /etc/inittabid:3:initdefault:<em><strong>si::sysinit:/etc/rc.d/init.d/rc sysinit</strong></em> #可以设定初始化脚本l0:0:wait:/etc/rc.d/init.d/rc 0l1:S1:wait:/etc/rc.d/init.d/rc 1l2:2:wait:/etc/rc.d/init.d/rc 2…ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r nowsu:S016:once:/sbin/sulogin1:2345:respawn:/sbin/agetty tty1 96002:2345:respawn:/sbin/agetty tty2 9600…# End /etc/inittabetc目录结构只是一部分,有删减。.├── fstab├── <em>inittab</em>├── inputrc├── profile├── rc.d│ ├── init.d│ │ ├── checkfs│ │ ├── cleanfs…│ │ ├── moles│ │ ├── mountfs│ │ ├── mountkernfs│ │ ├── network│ │ ├── rc #when boot, run.│ │ ├── reboot…│ ├── rc0.d│ │ ├── K80network -> ../init.d/network│ │ ├── K90sysklogd -> ../init.d/sysklogd│ │ ├── S60sendsignals -> ../init.d/sendsignals│ │ ├── S70mountfs -> ../init.d/mountfs│ │ ├── S80swap -> ../init.d/swap│ │ ├── S90localnet -> ../init.d/localnet│ │ └── S99halt -> ../init.d/halt│ ├── rc1.d│ │ ├── K80network -> ../init.d/network│ │ └── K90sysklogd -> ../init.d/sysklogd│ ├── rc2.d│ │ ├── K80network -> ../init.d/network│ │ └── K90sysklogd -> ../init.d/sysklogd│ ├── rc3.d│ │ ├── S10sysklogd -> ../init.d/sysklogd│ │ └── S20network -> ../init.d/network│ ├── rc4.d│ │ ├── S10sysklogd -> ../init.d/sysklogd│ │ └── S20network -> ../init.d/network│ ├── rc5.d│ │ ├── S10sysklogd -> ../init.d/sysklogd│ │ └── S20network -> ../init.d/network│ ├── rc6.d│ │ ├── K80network -> ../init.d/network│ │ ├── K90sysklogd -> ../init.d/sysklogd│ │ ├── S60sendsignals -> ../init.d/sendsignals│ │ ├── S70mountfs -> ../init.d/mountfs│ │ ├── S80swap -> ../init.d/swap│ │ ├── S90localnet -> ../init.d/localnet│ │ └── S99reboot -> ../init.d/reboot│ └── rcsysinit.d│ ├── S00mountkernfs -> ../init.d/mountkernfs│ ├── S02consolelog -> ../init.d/consolelog│ ├── S05moles -> ../init.d/moles…├── udev│ ├── rules.d│ │ └── 55-lfs.rules│ └── udev.conf└── vimrcnetwork脚本#!/bin/sh. /etc/sysconfig/rc. ${rc_functions}. /etc/sysconfig/networkcase "${1}" instart)# Start all network interfacesfor file in ${network_devices}/ifconfig.*dointerface=${file##*/ifconfig.}# skip if $file is * (because nothing was found)if [ "${interface}" = "*" ]thencontinuefiIN_BOOT=1 ${network_devices}/ifup ${interface}done;;stop)# Reverse listFILES=""for file in ${network_devices}/ifconfig.*doFILES="${file} ${FILES}"done# Stop all network interfacesfor file in ${FILES}dointerface=${file##*/ifconfig.}# skip if $file is * (because nothing was found)if [ "${interface}" = "*" ]thencontinuefiIN_BOOT=1 ${network_devices}/ifdown ${interface}done;;restart)${0} stopsleep 1${0} start;;*)echo "Usage: ${0} {start|stop|restart}"exit 1;;esac# End /etc/rc.d/init.d/network

⑺ linux如何重启文件系统

你可以在/etc/fstab中加入相应的文件系统挂载项但是这依然需要启动版,你可以用mount手动挂载设备到你想要挂载的地权方比如mount/dev/sdc/mnt然后在下次启动的时候就会根据fstab中的内容自动挂载了。从fstab修改就是修改了init的文件系统启动项

⑻ 在mini2440中把uboot放到norflash,内核,根文件系统,应用程序放在nandflash,系统如何启动

非常简单,mini2440从Nor启动后,CPU运行在0x00000000地址,这片地址实际对应NorFlash,因为NorFlash是一个专Ramlike器件,所以读取数据属方法更内存一样,在Uboot的启动文件start.s中,有一个一段代码实现NorFlash复制到SRAM的功能,复制代码完成后,通过指令,使用CPU跳到内存执行。这时候,Uboot通过另外的代码,实际是Nand subsystem部分,把kernel从Nand读到内存上,再通过指令,然后CPU跳到Kernel入口地址执行。一旦Kernel跑起来,Kernel通过Uboot传递CMDLINE就可发现到根文件系统的分区了。所以根文件再通过一些列复杂的机制,最终把文件系统挂入系统中。要完全了解这个过程,必须要完完整整地把Uboot和Kernel移植一遍才知道。最后补充一下,mini2440上使用Uboot、supervivi,vivi之类的Bootloader实际功能都差不多。

⑼ 如何使用Initramfs文件系统

在2.6kernel启动时,它把rootfs作为它的第一个文件系统挂载(注意:这里的rootfs是真名!!!不是root filesystem的缩写)。rootfs是一个特殊的tmpfs,这个不能被删除或者是unmounted。很多使用2.6内核的系统通常都是挂载rootfs后什么都不做,然后启动另一个文件系统作为root filesystem。但是,这个不能掩盖rootfs存在的事实,你可以“cat /proc/mounts” 来查看,第一个挂载的肯定是rootfs。rootfs被挂载后,kernel立马就解压了那个用gzip压缩的CPIO归档文件到rootfs。每个2.6的内核都会执行这一步,但是默认那个压缩档是空的,所以也就没有往rootfs内添加任何东西。接着kernel会尝试在rootfs去找寻/init,一旦找到init并执行,kernel也就完成了启动工作,然后便是刚刚执行的init程序接管了接下来的工作。如果kernel没法调用"/init"程序,可能就会回过头去,按照便准的做法去解析参数“root=”,试图找到另一个filesystem然后挂载它。这里的使用initramfs是指,提供一个/init程序给rootfs使用,我们可以通过两种途径实现:使用编译进内核的cpio.gz档案,或者是一个独立的cpio.gz档案。以前的initrd就是编译一个独立的档案,很多使用initramfs的方式也是给它提供一个独立的档案。

⑽ 怎样打开文件系统

用NTFS就可以给文件加密, 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。因此,可以说"我有2个文件系统"意思是他有2个分区,一个存文件,或他用 "扩展文件系统",意思是文件系统的种类。 磁盘或分区和它所包括的文件系统的不同是很重要的。少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操作;这可能破坏一个存在的文件系统。大部分程序基于文件系统进行操作,在不同种文件系统上不能工作。 一个分区或磁盘能作为文件系统使用前,需要初始化,并将记录数据结构写到磁盘上。这个过程就叫建立文件系统。 简单说,文件系统就是实现数据“按名存取”。 文件系统屏蔽了底层硬件的处理细节,使得用户可以用“名字”访问数据。文件系统可以分为以下5层: 用户接口层:打开(创建)fopen、关闭fclose、读fread、写fwrite、定位fseek、文件属性fattribute等。所有文件系统,这个部分的接口都是相似的,方便用户使用和应用程序移植。对于用户来说,文件系统就是给出“文件名”,得到对应的数据,至于数据放在哪,如何存放,如何处理,对用户透明。此层只定义了接口形式却没有给出具体实现的规范,设计者在这一层的自由度最大,难点是如何处理多用户并发操作,如何充分发挥所采用的文件数据结构的优点,如何提高效率(缓冲操作,写入时机),如何提供安全保障和恢复等。 文件数据结构层(不是实际的层,而是包含在操作里的抽象数据结构):FAT12/16/32、ext2、NTFS、JFFS等。不同数据结构对安全性、存取效率、扩展性等有不同影响,各有优缺点,请按需选用。 转义层:有些物理介质写次数有限,反复向同一位置写入会造成芯片整体寿命急剧缩短,通过转义层使得实际写入能在整个介质上均匀操作,提高介质寿命。若介质没有此特性,可以取消这一层。另外,有些安全性要求较高的系统,可能会把同一个写入数据存储到多个介质上,这也需要转义层将写命令翻译成实际的操作。 物理接口层:ATA接口(IDE硬盘/CF卡)、SCSI、并行IO口PIO、USB、1394、网络等。这一层一般有标准规范。 物理介质:硬盘、光盘、flash、网络等。实际存储数据的物理设备,各有特色,一般有标准规范。 综上,实现文件系统,就是提供给用户fopen、fclose、fread、fwrite等API,使其能按名字存取位于任意介质(fs over anyting)上的数据,并保证多用户并发访问、高效率、高安全性、故障可恢复。

未经允许不得转载:山九号 » 文件系统怎么启动的|如何使用Initramfs文件系统

赞 (0)