1.1 嵌入式Linux基础
1.1.1 Linux发展概述
Linux是指一套免费使用和自由传播的类UNIX操作系统。
1.1.2 Linux作为嵌入式操作系统的优势
1)低成本开发系统
2)可应用于多种硬件平台
3)可定制的内核
4)性能优异
5)良好的网络支持
1.1.3 发行版本
1)Red Hat
2)Debian
1.2 基础概念
1.2.1 文件系统、分区和挂载
文件系统:操作系统中与管理文件有关的软件和数据。Windows文件系统是以驱动器的盘符为基础,而且每一个目录是与相应的分区对应。Linux恰好相反,文件系统是一个文件树,例如"\usr\local"。对于Windows而言,就是指所有分区都是在一些目录下。在Windows下,目录结构属于分区,Linux下,分区属于目录结构。
在Linux中把每一个分区和某一个目录对应,以后在对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载,而这个挂载在文件树中的位置就是挂载点。这种对应关系可以由随时中断和改变。
1.2.2 主分区、扩展分区 和逻辑分区
硬盘分区是针对一个硬盘进行操作的,它可以分为:主分区、扩展分区、逻辑分区。其中主分区就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则该硬盘必须要有一个主分区,而且其主分区的数量可以是1~3个;扩展分区也就是除主分区外的分区,但它不能直接使用,必须再将它划分为若干个逻辑分区才可使用,其数量可以有0或1个;而逻辑分区则在数量上没有什么限制。
对于先装了Windows的用户,则Windows的C盘是装在主分区上的,可以把Linux安装在另一个主分区或者扩展分区上。通常为了安装方便安全起见,一般采用把Linux装在多余的逻辑分区上。
通常在Windows下的盘符和Linux设备文件的对应关系如下:
C盘——/dev/hda1(主分区)
D盘——/dev/hda5(逻辑分区)
E盘——/dev/hda6(逻辑分区)
1.2.3 SWAP交换分区
在硬件条件有限的情况下,为了运行大型的程序,Linux在硬盘上划出一个区域来当作临时的内存,而Windows操作系统把这个区域叫做虚拟内存,Linux把它叫做交换分区swap。在安装Linux建立交换分区时,一般将其设为内存大小的2倍,当然也可以设为更大
1.2.4 分区格式
不同的操作系统选择了不同的格式,同一种操作系统也可能支持多种格式。Windows就选择了FAT32、NTFS两种格式,但是Windows不支持Linux上常见的分区格式。Linux是一个开放的操作系统,它最初使用EXT2格式,后来使用EXT3,但是它同时支持非常多的分区格式,包括很多大型机上UNIX使用XFS格式,也包括FAT以及NTFS格式。
1.2.5 GRUB
GRUB是一种引导装入器,负责装入内核并引导Linux系统,位于硬盘的起始部分。由于GRUB多方面的优越性,如今的Linux一般都默认采用GRUB来引导Linux操作系统。但事实上它还可以引导Windows等多种操作系统。
1.2.6 root权限
Linux也是一个多用户的系统,不同的用户和用户组会有不同的权限,其中把具有超级权限的用户称为root用户。root的默认主目录在"/root"下,而其他普通用户的目录则在"/home"下。root的权限极高,它甚至可以修改Linux的内核。
1.3 Linux文件及文件系统
1.3.1 文件类型及文件属性
1.文件类型
Linux对目录和设备都当作文件来进行处理,这样就简化了对各种不同类型设备的处理,提高了效率。Linux中主要的文件类型分为4种:普通文件,目录文件,链接文件,设备文件
(1)普通文件
普通文件如同Windows中的文件一样,是用户日常使用最多的文件。它包括文本文件、shell脚本、二进制的可执行程序和各种类型的数据。
(2)目录文件
在Linux中,目录也是文件,它们包含文件名和子目录的指针。目录文件是Linux中存储文件名的唯一地方,当把文件和目录相对应时,也就是用指针将其链接起来之后,就构成了目录文件。因此,在对目录文件进行操作时,一般不涉及对文件内容的操作,而只是对目录名和文件名的对应关系进行了操作。
在Linux系统中的每个文件都被赋予了一个唯一的数值,而这个数值被称作索引节点。索引节点存储在一个称作索引节点表中,该表在磁盘格式化时被分配。每个实际的磁盘或分区都有其自己的索引节点表。一个索引点包含文件的所有信息,包含磁盘上数据的地址和文件类型。
Linux文件系统把索引节点号1赋于根目录,这也就是Linux的根目录文件在磁盘上的地址。根目录文件包括文件名、目录名及它们各自的索引节点号的列表,Linux可以通过查找从根目录开始的一个目录链来找到系统中的任何文件。
Linux通过上下链接目录文件系统来实现对整个文件系统的操作。比如把文件从一个磁盘目录移到另一实际磁盘的目录时(实际上是通过读取索引节点表来检测这种行动的),这时,原先文件的磁盘索引号删除,而且在新磁盘上建立相应的索引节点。
(3)链接文件
链接文件有些类似Windows中的"快捷方式",但是它的功能更为强大。它可以实现对不同的目录、文件系统甚至是不同的机器上的文件直接访问,并且不必重新占用磁盘空间。
(4)设备文件
Linux把设备都当作文件一样来进行操作,这样就大大方便了用户的使用。在Linux下与设备相关的文件一般在/dev目录下,它包括两种,一种是块设备文件,另一种是字符设备文件。
块设备文件:指数据的读写,它们是以块(如由柱面和扇区编址的块)为单位的设备,最简单的如硬盘(/dev/hdal)等。
字符设备主要是指串行端口的接口设备。
2.文件属性
Linux中文件的拥有者可以把文件的访问属性设成3种不同的访问权限:可读®、可写(w)、可执行(x)。文件又有3个不同的用户级别:文件拥有者(u)、所属的用户组(g)、系统里的其他用户(o)。
第一个字符显示文件的类型:
“-” 表示普通文件
“d” 表示目录文件
“l” 表示链接文件
“c” 表示字符设备
“b” 表示块设备
“p” 表示命名管道比如FIFO文件(先进先出)
“f” 表示堆栈文件比如LIFO文件(后进先出)
第一个字符之后有3个三位字符组:
第一个三位字符组表示对于文件拥有者(u)对该文件的权限
第二个三位字符组表示文件用户组(g)对该文件的权限
第三个三位字符组表示系统其他用户(o)对该文件的权限
1.3.2 文件系统类型介绍
1. ext2和ext3
ext3是现在Linux常见的默认的文件系统,它是ext2的升级版本。从ext2转换到ext3主要有以下4个理由:可用性、数据完整性、速度、易于转化。ext3中采用了日志式的管理机制,它使文件系统具有很强的快速恢复能力,并且由于从ext2转换到ext3无须进行格式化,因此,更加推进了ext3文件系统的大大推广。
2. swap文件系统
该文件系统是Linux中作为交换分区使用的。在安装Linux的时候,交换分区是必须建立的,并且它所采用的文件系统类型必须是swap而没有其他选择。
3. vfat文件系统
Linux中把DOS中采用的FAT文件系统(FAT12, FAT16, FAT32)都称为vfat文件系统
4. NFS文件系统
NFS文件系统是指网络文件系统,这种文件系统也是Linux的独到之处。它可以很方便地在局域网内实现文件共享,并且使多台主机共享同一主机上的文件系统。而且NFS文件系统访问速度快、稳定性高,已经得到了广泛的应用,尤其在嵌入式领域,使用NFS文件系统可以很方便地实现文件本地修改,而免去了一次次读写flash的忧虑。
5.ISO9660文件系统
这是光盘所使用的文件系统,在Linux中对光盘已有了很好的支持,它不仅可以提供对光盘的读写,还可以实现对光盘的刻录。
1.3.3 Linux目录结构
/bin | bin就是二进制的缩写。在这里存放前面Linux常用操作命令的执行文件,如mv、ls、mkdir等。这个目录的内容和/usr/bin里面的内容一样,它们都是放置一般用户使用的执行文件 |
/boost | 这个目录存放操作系统启动时所要的程序。如启动grub就会用到其下的/boost/grub子目录 |
/dev | 该目录中包含了所有Linux系统中使用外部设备。要注意是,这里并不是存放的外部设备的驱动程序,它实际上是一个访问这些外部设备的端口。由于在Linux中,所有的设备都当作文件一样进行操作,比如:/dev/cdrom代表光驱,用户可以非常方便地像访问文件、目录一样对其进行访问 |
/etc/rc.d | 该目录主要放Linux启动和关闭时要用到的脚本文件 |
/etc/rc.d/init | 该目录存放所有Linux服务默认的启动脚本 |
/home | 该目录是Linux系统中默认的用户工作根目录 |
/lib | 该目录是用来存放系统动态链接共享库的。几乎所有的应用程序都会用这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作 |
/lost+found | 该目录在大多数情况下都是空的,只有当系统产生异常时,会将一些遗失的片段放在此目录下 |
/media | 该目录下时光驱和软驱的挂载点,Fedora Core 4已经可以自动挂载光驱和软驱 |
/misc | 该目录下存放从DOS下进行安装的实用工具,一般为空 |
/mnt | 该目录是软驱、光驱、硬盘的挂载点,也可以临时将别的文件系统挂载此目录下 |
/proc | 该目录是用于放置系统核心与执行程序所需的一些信息。而这些信息是在内存中由系统产生的,故不占硬盘空间 |
/root | 该目录是超级用户登录的主目录 |
/sbin | 该目录是用来存放系统管理员的常用的系统管理程序 |
/tmp | 该目录用来存放不同程序执行时产生的临时文件。一般Linux安装软件的默认安装路径就这里 |
/usr | 这是一个非常重要的目录,用户的很多应用程序和文件都存放在这个目录下,类似与Windows下的Program Files的目录 |
/usr/bin | 系统用户使用的应用程序 |
/usr/sbin | 超级用户使用的比较高级的管理程序和系统守护程序 |
/usr/src | 内核源代码默认的放置目录 |
/srv | 该目录存放一些服务启动之后需要提取的数据 |
/sys | 该目录下安装了2.6内核中新出现的一个系统sysfs。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统、针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建 |
/var | 这也是一个非常重要的目录,很多服务的日志信息都存放在这里 |