linux 命令: 显示文件属性介绍:文件属性在文件系统的安全管理方面起很重要的作用,linux下lsattr命令用于查看文件属性信息。
南谯网站建设公司创新互联公司,南谯网站设计制作,有大型网站制作公司丰富经验。已为南谯上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的南谯做网站的公司定做!
语法:
lsattr [-adRvV] [文件或目录...]选项介绍:
-a: 显示所有文件和目录,包括隐藏文件;
-d: 显示目录名称,而非其内容;
-R: 递归处理,将指定目录下的所有文件及子目录一并处理;
-v: 显示文件或目录版本;
-V: 显示版本信息。
扩展资料:
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
参考资料:百度百科-linux
Linux文件系统操作命令大全
Linux命令有很多,那么Linux文件系统操作命令又有哪些呢?下面我为你介绍!
文件系统操作命令:
1. cat:可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件。
2. chgrp:用来改变文件或目录所属的用户组,命令的参数以空格分开的要改变属组的文件列表,文件名支持通配符,如果用户不是该文件的所有者,则不能改变该文件的所属组。
3. chmod:用于改变文件或目录的访问权限,该命令有两种用法:一种是使用图形化的方法,另一种是数字设置法。
4. chown:用来将指定用户或组为特定的所有者。用户可以设置为用户名或用户ID,组可以是组名或组ID。特定的文件是以空格分开的可以改变权限的文件列表,文件名支持通配符。
5. clear:用来清除终端屏幕。
6. cmp:用来比较两个文件的大小。
7. cp:(copy)可以将文件或目录复制到其他目录中,就如同Dos下的copy命令一样,功能非常强大。在使用cp命令时,只需要指定源文件名或目标目录即可。
8. cut:用来移除文件的部分内容。
9. diff:用来找出两个文件的不同之处。
10. du: 用来显示磁盘的剩余空间的大小。
11. file:用来显示文件的类型。
12. find:用来在目录中搜索文件,并执行指定的操作。
13. head:只查看文件的头几行内容,而不必浏览整个文件。
14. ln:可以在文件之间创建链接,实际上是给某个文件指定一个访问它的别名。
15. less:用法与more类似,可以查看超过一屏的文件内容,不同的是less除了可以按空格键向下显示文件外,还可以利用方向键来滚动显示文件,要结束浏览,只要在less的提示符“:”后按Q即可。
16. locate:可用于查找文件,且比find命令的搜索速度快。
17. ls(list):用来显示当前目录中的文件和子目录列表。
18. mkdir(make directory):建立子目录。
19. more:用于显示内容超过一屏的文件,为了避免文件内容显示瞬间就消失,可以使用more命令让文件显示满一屏时暂停,在按下任意键的时候继续显示下一屏的内容。
20. rmkdir(remove directory):用来删除“空”的子目录或无用的目录文件。
21. mv(move):可以将文件以及目录移到其他位置,或更改文件以及目录的名称。
22. pico:可指定文本的编辑方式。
23. pwd(print working directory):可显示用户当前所在的目录。
24. rm:用来删除系统中过时或无用的文件,可以删除目录中的文件或目录本身,对于链接文件,原有文件保持不变。
25. sort:将文本文件自动分类。
26. stat:用于显示文件或文件系统的状态。
27. Strings:显示文件中要打印的字符串。
28. tail:输出文件的结尾。
29. touch:改变文件的时间戳。
30. umask:用于启动bash shell。
31. uniq:移除已分类文件中的重复文本行。
32. vi:启动vi文本编辑器。
33. wc:显示文件中字节、词组合文本行的数目。
34. whereis:查找特定目录下的原始程序,二进制程序或用户手册等文件的位置。
35. man:如果用户对某个命令想了解更详细的话,可使用此命令。
36. dd:复制一个文件。
37. df:查看一个文件系统的磁盘空间使用情况。
38. edquoat:设置用户与用户组的磁盘空间限制,即Windows系统中的配额。
39. fdformat:格式化软盘。
40. fdisk:执行Linux下的`磁盘分区。
41. mkfs:建立一个Linux文件系统。
42. mkswap:创建一个Linux交换分区。
43. mount:挂载一个文件系统。
44. quota:限制和显示用户可用的磁盘空间。
45. swapon,swapoff:启用或取消设备和文件的交换页。
46. quotaon,quotaoff:启用或取消quota限制。
47. umount:取消文件系统的装备。
系统管理命令
1. finger:查询用户信息,也能查看默认的用户环境。
2. ftp:标准的文件传输协议的用户接口,是在网络上传输文件最简单有效的方法。
3. host:用于DNS查询。
4. hostname:用于显示或设置系统的主机名。
5. ifconfig:用于配置网卡接口。(可以使用down或up参数来禁用或启用某个网卡接口)
6. mail:发送和接收邮件。
7. netstat:显示网络连接、路由表和网络接口信息,用户可以知道目前那些网络连接正在运行。
8. ping:此命令用于测试本计算机和网络上其它的计算机是否相连。
9. rlogin:远程登陆命令,该命令与telnet命令很相似,允许用户启动远程系统的交互会话。
10. rcp:rcp(remote file copy)命令是远程文件复制命令,该命令用于在计算机之间复制文件,有两中格式,一种格式用于文件动文件的复制,另一种用于把文件或目录复制到其他文件目录中。
11. route:此命令用于显示或设置IP路由表。
12. tcpdump:此命令用于测试网络的通信量。
13. talk:此命令可用于事项网络用户的适时交谈,但是必须将双方系统的信息加入各自的/etc/hosts文件中,以相互识别。
14. telnet:此命令用于通过网络登陆远程计算机,如同操作本地计算机一样。
15. wall:wall(write all)命令可以用于发送消息给登陆本机的用户。在发送消息时,可直接输入要发送的消息,也可以把文件当成消息发送。
16. wget:此命令用于Linux环境下从Internet上下载文件,支持http和ftp协议,支持代理服务器和断点连续传功能,能够递归远程主机上的目录,查找合乎要求的的文件并下载到本地硬盘上。Wget命令可以在后台运行,截获并忽略hantfup信号,因此用户退出登陆后,仍可继续运行。
17. ,bg:,bg命令是后台执行命令,有时候用户执行的程序可能要话很多时间,如果放在前台执行,可能无法继续其他操作,最好将他放在后台执行。
18. fg:fg命令是前台执行命令,如果用户有程序在后台运行,可以通过fg命令将程序从后台移到前台执行。
19. jobs:此命令用于显示正在后台执行的任务清单。Bg,fg,jobs命令都属于bash命令,
20. kill:此命令用于终止一个程序,例如:#[root@rathat9 root]kill 3793
21. ps:此命令用于显示程序的状态。
22. top:此命令用于显示当前CPU进程。
23. at batch atp atrm:这些命令用于排序,检查或删除后台运行的任务。
Linux与用户有关的命令:
1. passwd命令:更改用户口令。
格式:passwd [用户名]
2. su命令:可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级拥护以普通用户的身份做一些事情。
格式:su[选项][?][使用者账号]
说明:若没有指定的使用者账号,则系统预设值为超级用户root。该命令中个选项的含义分别为:
-c:执行一个命令后就结束。
-:加了这个减号的目的是使环境变量和欲转换的用户相同。
-m:保留环境变量不变。
Linux系统管理命令:
1. wall命令:对全部以登陆的用户发送信息。
2. write命令:向系统中某一用户发送信息。
格式:write 用户账号 [终端名称]
3. mesg命令:设定是否允许其他用户用write命令给自己发送信息。
如果允许输入命令:mesg y
如果不允许输入命令:mesg n
4. sync命令:在关闭Linux系统是使用的。Sync是强制把内存中的数据写回硬盘,以免数据丢失。
5. shutdown命令:可以安全的关闭或重启Linux它在系统关闭之前给系统上的所有登陆用户提示一条警告信息。
格式:shutdown [选项][时间][警告信息]
命令中选项的含义:
-k:并不真正关机,而只是发出警告信息给所有用户。
-r:关机后立即重新启动。
-h:关机后不重新启动。
-f快速关机,重新启动时跳过fsck。
-n:快速关机,不经过init程序。
-c:取消一个已经运行的shutdown。
6. free命令:查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
格式:free [-b | -k |-m]
命令中各个选项的含义:
-b:以字节为单位显示。
-k:以K字节为单位显示。
-m:以兆字节为单位显示。
7. uptime命令:显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
8. df命令:检查文件系统的磁盘空间占用情况。
格式:df [选项]
说明:df命令可显示所有文件系统对I节点和磁盘块的使用情况。
命令中各个选项的含义:
-a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统。
-k:以k字节为单位显示。
-i:显示i节点信息,而不是磁盘块。
-t:显示各指定类型的文件系统的磁盘空间使用情况。
-x:列出不是某一指定类型文件系统的磁盘空间使用情况。
-T:显示文件系统类型。
9. du命令:显示磁盘空间的使用情况。统计目录(或文件)所占磁盘的大小。
格式:du [选项] [Names…]
说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。
命令中各个选项的含义:
-s:对每个Names参数只给出占用的数据块总数。
-a:递归的显示指定目录中各文件及子孙目录中个文件占用的数据块数。若既不指定-s,也不指定-a,则显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b:以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。
-k:以1024字节为单位列出磁盘空间的使用情况。
-c:最后再加上一个总计(系统缺省设置)。
-l:计算所有的文件大小,对硬链接文件,则计算多次。
-x:跳过在不同文件系统上的目录不予统计。
10. dd命令:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。
格式:dd [选项]
命令中各个选项的含义:
if = 输入文件(或设备名称)。
of = 输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,及读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,及写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs).
cbs = byte 一次转换bytes字节。
count = blocks 只拷贝输入的block块。
conv = ASCⅡ 把EBCDIC码转换为ASCⅡ。
conv = ebcdic 把ASCⅡ码转换为EBCDIC码。
conv = ibm ibm把ASCⅡ码转换为alternate EBCDIC码。
conv = block 把变动位转换成固定字符。
conv = ublock 把固定位转换成变动位。
conv = ucase 把字母由小写转换为大写。
conv = lcase 把字母由大写转换为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错是不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。
11. fdformat命令:低级格式化软盘。
格式:format [-n] device
说明:-n 软盘格式化后不作检验。
12. echo命令:在显示器上显示一段文字,一般起到一个提示作用。
格式:echo [-n] 字符串
13. cal命令:显示某年某月的日历。
格式:cal [选项] [月 [年]]
命令中各个选项的含义:
-j:显示出给定月中的每一天是一年中的第几天(从1月1日算起)。
-y:显示出整年的日历。
14. date命令:显示和设置系统日期和时间。
格式:date [选项] 显示时间格式 (以 + 开头,后面接格式)
date [选项] 设置时间格式
命令中各个选项的含义:
15. clear命令:清除屏幕上的信息。
Vi的基本命令:
1. 移动光标:
Ctrl + b:上滚一屏
Ctrl + f:下滚一屏
Ctrl + d:下滚半屏
Ctrl + u:上滚半屏
G: 移到文件最后
W:移到下个字的开头
B:跳至上个字的开头
2. 删除
x:删除当前光标所在后面一个字符
#x:删除当前光标所在后面#个字符。例如,5x表示删除5个字符。
dd:删除当前光标所在行
#dd:删除当前光标所在后面#行。例如,5dd表示删除字光标算起的5行。
:l,#d:例如,:1,12d表示删除自行1至行12的文字
X:删当前光标的左字符
D:删至行尾
3. 更改
cw:更改光标处的字到此单字的字尾处
c#w:例如,c3w表示更改3个字
cc:修改行
c:替换到行尾
4. 取代
r:取代光标处的字符
R:取代字符直到按ESC为止
5. 复制
yw:拷贝光标处的字到字尾只缓冲区
P:把缓冲区的资料贴上来
yy:拷贝光标所在之行至缓冲区
#yy:例如:5yy,拷贝光标所在之处以下5行至缓冲区
Linux文件的复制,删除和移动命令
1.cp命令:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的COPY命令一样,功能十分强大。
语法:cp[选项]源文件或目录,目标文件或目录
说明该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各项选项含义如下:
-a:该选项通常在拷贝目录是使用。他保留链接,文件属性,并递归地拷贝目录,其作用等于dpr选项的组合。
-d:拷贝是保留链接
-f:删除已经存在的目标文件而不提示。
-I:和 f选项相反,在覆盖目标文件之前将给出提示要求拥护确认。回答y时目标文件将被覆盖,是交互式拷贝。
-p:此时cp除复制源文件的内容外,还将把其修改时间和反问权限也复制到新文件中。
-r;若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
-L:不作拷贝,只是链接文件。
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp 命令拷贝文件后,这个文件酒会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用I选项。
2.mv命令:用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同MS-DOS下的ren 和 move 的组合。
语法:mv[选项]源文件或目录 目标文件或目录。
说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),他将所给的源文件或目录重命名为给顶的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参加参数可以有很多个,mv命令将个参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
命令中各选项的含义为:
-I:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。
-f:禁止交互操作。在mv操作要覆盖某已有的目标文件是不给任何指示,指定此选项后,I选项将不再起作用。
如果所给目标文件(不是目录)已存在,此时该文件的内容将后备新文件覆盖,为防止用户用mv命令破坏另一个文件,使用mv命令移动文件时,最好使用I选项。
3.rm命令:用户可以用rm命令删除不需要的文件。该命令的功能问删除一个目录中的一个或多个文件或目录,他也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,源文件保持不变。
Rm命令的一般形式为:
Rm [选项]文件……
如果没有使用-r选项,则rm不会删除目录。
该命令的各选项含义如下:
-f:忽略不存在的文件,从不给出提示。
-r:指示rm将参数中列出的全部目录和子目录均递归地删除。
-I:进行交互式删除。
使用rm命令要小心。因为一旦文件被删除,他是不能被恢复的。为了防止这种情况的发生可以使用I选项俩逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。
Linux目录的创建与删除命令:
1. mkdir命令
功能:创建一个目录(类似MS-DOS下的md命令)。
语法:mkdir[选项]dir-name
说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或文件名称。
命令中个选项的含义为:
-m:对新建目录设置存取权限。也可以用chmod命令设置。
-p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
2. rmdir命令
功能:删除空目录。
语法:rmdir[选项]dir-name。/
说明:dir-name表示目录名。该命令从一个目录中删除一个或多个子目录项。需要特别注意的是,一个目录被删除之前必须是空的。Rm-r dir 命令可代替rndir,但是有危险性。删除某目录时也必须具有对父目录的、写权限。
命令中个选项的含义为:
-p递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
3. cd命令
功能:改变工作目录。
语法:cd[directory]
说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。
该命令可以使用通配符(如”*,_”这样的通配符号)。
4. pwd命令
在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录。然而,没有提示符来告知用户目前处于哪一个目录中。想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名。
语法:pwd
说明:此命令显示出当前工作目录的绝对路径。
5. ls命令
ls是list的简写,其功能为列出目录的内容。这是拥护最常用的一个命令之一,因为用户需要不时地查看某个目录的内容,该命令类似于DOS下的dir命令
语法:ls[选项][目录或是文件]
对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。但未给出目录名或是文件名时,就显示当前目录的信息。
命令中各个选项的含义:
-a:显示指定目录下所有子目录与文件,包括隐藏文件。
-A:显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”和“..”.
-b:对文件名中的不可显示字符用把禁止
linux中所有设备都是以文件的形式显示
linux下文件的后缀名无实际意义
命令
pwd 显示路径
man +命令 列出操作说明
ls -l/-help列出 文件目录
cd / 目录做实验
安装步骤 configure make make install?
rm -r dl 递归删除目录
rm -rf 删除所有目录
rm -f 加文件名 删除文件
rmdir +文件地址 删除文件夹所有和rm -rf功能差不多
touch 加名字 创建新文件
cp 复制 mv 移动 rm 删除
vi 文本编辑器 输入a将从命令格式变成输入格式
head tail 查看前面和后面
find 加位置 加文件名 查找
echo $PATH 查询路径
useradd 加名字 添加用户
userdel 加名字 删除用户
su 加用户名 切换用户
chmod +x/-x 加文件名 修改文件权限
chmod 755 加文件名 改变权限在安装程序时
grep 加文本字符 加在那个文件 查找字符存在那行
fdisk -l 查看磁盘信息
命令1|命令2|命令三... 管道
ps -ef查看进程
ifconfig linux查看ip
重定向
linux和其它机器之间共享文件vsftp Windows和linux传输文件15-17
putty远程登录软件ssh
gzip 压缩和解压缩 -d解压 21
service iptables off防火墙关闭
tar -xvf 第二层解压缩
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz ./DirName
压缩:tar zcvf FileName.tar.gz DirName
.tar.bz2
解压:tar xjf FileName.tar.bz2 ./DirName
压缩:tar cjf FileName.tar.bz2 DirName
rpm -ivh 加.rpm文件 安装
安装sudo apt-get install 软件名
;
嵌入式Linux系统的设计与应用
摘要:随着嵌入式Linux系统的迅速发展,嵌入式Linux已发展成为嵌入式操作系统的一个重要分支。本文介绍了嵌入式Linux的设计和几种流行的嵌入式Linux系统。
关键词:嵌入式Linux
一、引言
嵌入式系统(Embedded Systems)是根据应用的要求,将操作系统和功能软件集成于计算机硬件系统之中,从而实现软件与硬件一体化的计算机系统。嵌入式系统出现于60年代晚期,它最初被用于控制机电电话交换机,如今已被广泛的应用于工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等众多领域。嵌入式系统在数量上远远超过了各种通用计算机系统:计算机系统核心CPU,每年在全球范围内的产量大概在二十亿颗左右,其中超过80%应用于各类专用性很强的嵌入式系统。
一般的说,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。和通用的计算平台相比,嵌入式系统往往具有功能单一、体积小、功耗低、可靠性高、剪裁性好、软硬件集成度高、计算能力相对较低等特点。多年来,嵌入式设备中没有操作系统,其主要原因有二:首先,诸如洗衣机、微波炉、电冰箱这样的设备仅仅需要一道简单的控制程序,以管理数量有限的按钮和指示灯,没有使用操作系统的必要;其次,它往往只具有有限的硬件资源,不足以支持一个操作系统。
然而,随着硬件的发展,嵌入式系统变得越来越复杂,最初的控制程序中逐步的加入了许多功能,而这些功能中有很多可以由操作系统提供。于是,在70年代末期出现了嵌入式操作系统(Embedded Operating Systems),它的出现大大简化了应用程序设计,并可以有效的保障软件质量和缩短开发周期。简单的ES一般并不使用操作系统,只包含一些控制流程,但是随着嵌入式操作系统在复杂性上的增长,简单的流程控制就不能满足系统的要求,这是就必须考虑使用操作系统做系统软件。因此,嵌入式操作系统就应运而生。
随着EOS的广泛应用,业界已推出一些应用比较成功的EOS产品。归纳起来EOS应该具有以下几个特点:小巧、实时性、可装卸、固化代码、弱交互性、强稳定性和统一的接口。目前使用最多的EOS产品包括有:Vxwork、QNX、PalmOS、WindowsCE、pSOS、Hopen OS(国内凯思集团公司自主研制开发)等。其中,Vxwork使用最为广泛、市场占有率最高,其突出特点是实时性强(采用优先级抢占和轮转调度等机制),除此之外,其可靠性和可剪裁性也相当不错。QNX是一种伸缩性极佳的系统,其核心加上实时POSIX环境和一个完整的窗口系统还不到一兆。相比之下,Microsoft WinCE的核心体积庞大,实时性能也差强人意,但由于Windows系列友好的用户界面和为程序员所熟悉的API,并捆绑IE、Office等应用程序,正逐渐获得更大的市场份额。而与这些商业化的操作系统相比,Linux已经越来越受到人们的注意。
二、嵌入式Linux概述
Linux是一个成熟而稳定的网络操作系统。将Linux植入嵌入式设备具有众多的优点。首先,Linux的源代码是开放的,任何人都可以获取并修改,用之开发自己的产品。其次,Lirmx是可以定制的,其系统内核最小只有约134kB。一个带有中文系统和图形用户界面的核心程序也可以做到不足1MB,并且同样稳定。另外,它和多数Unix系统兼容,应用程序的开发和移植相当容易。同时,由于具有良好的可移植性,人们已成功使Linux运行于数百种硬件平台之上。
然而,Linux并非专门为实时性应用而设计,因此如果想在对实时性要求较高的嵌入式系统中运行Linux,就必须为之添加实时软件模块。这些模块运行的内核空间正是操作系统实现进程调度、中断处理和程序执行的部分,因此错误的代码可能会破坏操作系统,进而影响整个系统的可靠性和稳定性。Linux的众多优点还是使它在嵌入式领域获得了广泛的应用,并出现了数量可观的嵌入式Linux系统。其中有代表性的包括:uClinux、ETLinux、ThinLinux、LOAF等。ETLinux通常用于在小型工业计算机,尤其是PC/104模块。ThinLinux面向专用的照相机服务器、X-10控制器、MP3播放器和其它类似的嵌入式应用。LOAF是Linux On A Floppy的缩略语,它运行在386平台上。
三、Linux作为嵌入式操作系统的优势
Linux作为嵌入式操作系统的优势主要有以下几点:
1、 可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对于经费,时间受限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发后移植到具体的硬件上,加快了软件与硬件的开发过程。Linux采用一个统一的框架对硬件进行管理,从一个硬件平台到另一个硬件平台的改动与上层应用无关。Linux可以随意地配置,不需要任何的许可证或商家的合作关系,源代码可以免费得到。这使得采用Linux作为操作系统不会遇到任何关于版权的纠纷。毫无疑问,这会节省大量的开发费用。本身内置网络支持,而目前嵌入式系统对网络支持要求越来越高。Linux的高度模块化使添加部件非常容易。
2、 Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等现有的大部分芯片)等特性的一种通用操作系统。其程序源码全部公开,任何人可以修改并在GUN通用公共许可证(GNU General Public License)下发行。这样,开发人员可以对操作系统进行定制,适应其特殊需要。
3、 Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X Windows)。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。
四、嵌入式Linux的建立
完整的嵌入式Linux解决方案应包括嵌入式Linux操作系统内核、运行环境、图形化界面和应用软件等。由于嵌入式设备的特殊要求,嵌入式Linux解决方案中的内核、环境、GUI等都与标准Linux有很大不同,其主要挑战是如何在狭小的FLASH、ROM和内存中实现高质量的任务实时调度、图形化显示、网络通信等功能。
1、 精简内核
Linux内核有自己的结构体系,其中进程管理、内存管理和文件系统是其最基本的3个子系统。图1简单表示了它的框架。用户进程可直接通过系统调用或者函数库来访问内核资源。正因为Linux内核具有这样的结构,因此修改内核时必须注意各个子系统之间的协调。
嵌入式Linux内核一般由标准Linux内核裁剪而来。用户可根据需求配置系统,剔除不需的服务功能、文件系统和设备驱动。经过裁剪、压缩后的系统内核一般只有300k左右,十分适合嵌入式设备。同标准Linux不同的是嵌入式Linux必须要实现从FLASH或ROM的启动。标准Linux启动代码实现了系统初始化和从软盘、硬盘O盘区引导内核。嵌入式Linux一般保存在FLASH或ROM中,标准LILO无法引导。在支持直接从FLASH设备引导的系统中,如华恒公司的uClinux,引导程序主要完成对硬件系统的初始化工作和操作系统的解压、移位工作。在不支持直接从FLASH引导的系统中,FLASH设备只能作为非引导磁盘使用。此时,可采用先从硬盘或软盘加载一个小操作系统,如嵌入式DOS,然后再执行"Loadlin"加载程序从FLASH引导嵌入式Linux。
对标准Linux的修改主要是虚拟内存和调度程序部分的改动。因为标准Linux系统使用虚拟内存管理的目的是为了能同时运行多个进程,但是这样每个待运行的进程所能分配的CPU时间片就受限制,资源的使用效率就低。这样对于实时性要求较高的嵌入式系统来说,实时任务往往要求CPU具有很高的突发处理能力,即在有些时候需要极高的处理效率,因此需要屏蔽内核的虚拟内存管理机制。对于无硬盘设备的嵌入式系统,不必采用虚存管理。强实时需求的嵌入式应用可以通过修改任务调度模块实现,主要是在内核和设备驱动程序中加入了许多切换点。在该点处,系统检测是否存在未处理的紧急中断,有则剥夺内核的运行,及时处理中断。实现实时性服务的一个较好的方法是在标准的Linux内核上增加一个实时内核,标准Linux内核作为一个任务运行于实时内核上,强实时性任务也直接运行在实时内核上,如RT-Linux等。
文件系统是嵌入式Linux操作系统必不可少的。但标准Linux支持大量的文件系统,因此除了满足系统的正常运行需要而保留一种外,其它的全部可以删除,利用原有的设置选项可以移除。一般嵌入式设备文件系统主要使用RamDisk技术和网络文件系统技术。RamDisk可驻留于Flash,运行时加载到内存中。
2、 精简运行环境
Linux通常的运行环境指用户运行任何应用的基础设施,主要包括函数库和基本命令集等。标准Linux系统同时向用户提供了静态和动态函数库。静态函数库在生成应用时直接链接到用户应用中。动态库在应用运行时才链接。由于嵌入式系统应用一般都是在开发平台上预先生成的,因此嵌入式系统只需向应用提供动态函数库。Linux应用运行所需的函数库主要有C库、数学库、线程库、加密库、网络通信库等。其中最基本的是C语言的运行库glib。这个库主要完成基本的输入输出,内存访问,文件处理。一个标准的glib库大约要1200kB存储空间,考虑到嵌入式Linux内核往往很小,这种运行库实在太大,我们做了一些精简的工作,方法有两种:(1)、使用静态连接的方法,完全不使用运行库动态连接;(2)、对这个库的函数进行精简。
在一个桌面系统上,使用动态连接可以带来许多好处。使用动态连接库,可以让应用程序跟函数库的更新、升级分离,便于维护,可以让同时运行的多个程序共享一段代码。但是,在嵌入式系统中,很少有多个程序并行的可能,程序的维护,尤其是库函数的维护更新是不常见的。这时,使用静态连接的优势就极为明显。因为静态连接可以只将库中用到的部分连接进程序。在应用程序较少(小于5)的情况下,静态连接可以达到较好的结果。为了便于将来扩充的需要,我们也采用第二种方法,针对我们的需要,对库函数的内容进行精简,只保留一些基本功能,还有一种方法是采用其它的C语言运行库。但是这些库对兼容性影响很大。
基本命令集同样是运行用户应用的基础,主要包括初始化进程init,终端获取getty、Shell和基本命令等。嵌入式系统的启动过程可能与标准Linux不同,例如跳过登录过程直接启动GUI等。这就要求修改init,getty等。标准Linux命令集同样由于体积问题无法直接应用于嵌入式环境。目前,小命令集的解决方法主要有集成方法和汇编方法两种。集成方法采用集成公共部分减少命令集整体体积,用C实现,有较好的平台移植性;汇编方法则采用汇编编程减少每个命令的体积.这样可使体积很小但其平台移植性较差。
3、 嵌入式Linux下的GUI
GUI在嵌入式系统或者实时系统中的地位越来越重要,比如PDA、DVD播放机、WAP手机等,都需要一个完整.漂亮的图形用户界面。这些系统对GUI的基本要求包括:(1)、轻型、占用资源少;(2)、高性能;(3)、高可靠性;(4)、可配置。这些也成为评价嵌入式系统的重要指标。目前,嵌入式Linux上的GUI主要有winCE、Micro Window、紧缩的X Window、MiniGUI(国内做得较好的自由软件之一)。标准Linux的Xfree86由于体积庞大,运行环境要求高,无法运行于嵌入式环境。嵌入式GUI主要通过削减功能,降低性能来实现体积小和占用资源少。目前嵌入式Linux上的GUI环境主要有两类:X类和win32类。X类GUI分为服务方和客户方两方。服务器方提供鼠标、键盘处理和显示功能,客户方是用户应用,服务方和客户方通过socket接口和X协议通信。采用该方式十分有利于远程网络图形化服务,客户方和服务方可通过网络实现X协议和图形显示。典型的X类GUI有Micro Window、紧缩的X Window等。win32类的GUI不存在客户方和服务方,每个任务都自成一体,任何任务间的切换、事件分发由专门的管理任务负责。如wiCE、MiniGUI就是类似于win32类的GUI。
五、当前流行的几种嵌入式Linux系统
除了智能数字终端领域以外,Linux在移动计算平台、智能工业控制、金融业终端系统,甚至军事领域都有着广泛的应用前景。这些Linux被统称为"嵌入式Linux"。
1、RT-Linux
这是由美国墨西哥理工学院开发的嵌入式Linux操作系统。到目前为止,RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等广泛领域。RT-Linux开发者并没有针对实时操作系统的特性而重写Linux的内核,因为这样做的工作量非常大,而且要保证兼容性也非常困难。为此,RT-Linux提出了精巧的内核,并把标准的Linux核心作为实时核心的一个进程,同用户的实时进程一起调度。这样对Linux内核的改动非常小,并且充分利用了Linux下现有的丰富的软件资源。
2、uClinux
uCLinux是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit) 的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。uCLinux是一种优秀的嵌入式Linux版本,是micro-Conrol-Linux的缩写。它秉承了标准Linux的优良特性,经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,却仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。它专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。
3、Embedix
Embedix是由嵌入式Linux行业主要厂商之一Luneo推出的,是根据嵌入式应用系统的特点重新设计的Linux发行版本。Embedix提供了超过25种的Linux系统服务,包括Web服务器等。系统需要最小8MB内存,3MB ROM或快速闪存。Embedix基于Linux 2.2内核,并已经成功地移植到了Intel x86和PowerPC处理器系列上。像其它的Linux版本一样,Embedix可以免费获得。Luneo还发布了另一个重要的软件产品,它可以让在Windows CE上运行的程序能够在Embedix上运行。Luneo还将计划推出Embedix的开发调试工具包、基于图形界面的浏览器等。可以说,Embedix是一种完整的嵌入式Linux解决方案。
4、Xlinux
XLinux是由美国网虎公司推出,主要开发者是陈盈豪。他在加盟网虎几个月后便开发出了基于XLinux的、号称是世界上最小的嵌入式Linux系统,内核只有143KB,而且还在不断减小。XLinux核心采用了"超字元集"专利技术,让Linux核心不仅可能与标准字符集相容,还含盖了1 2个国家和地区的字符集。因此,XLinux在推广Linux的国际应用方面有独特的优势。
5、PoketLinux
由Agenda公司采用、作为其新产品"VR3PDA"的嵌入式Linux操作系统。它可以提供跨操作系统构造统一的、标准化的和开放的信息通信基础结构,在此结构上实现端到端方案的完整平台。PoketLinux资源框架开放,使普通的软件结构可以为所有用户提供一致的服务。PoketLinux平台使用户的视线从设备、平台和网络上移开,由此引发了信息技术新时代的产生。在PoketLinux中,称之为用户化信息交换(CIE),也就是提供和访问为每个用户需求而定制的"主题"信息的能力,而不管正在使用的设备是什么。
6、MidoriLinux
由Transmeta公司推出的MidoriLinux操作系统代码开放,在GUN普通公共许可(GPL)下发布,可以在http://midori.transmeta.com上立即获得。该公司有个名为"MidoriLinux计划"。"MidoriLinux"这个名字来源于日本的"绿色"---Midori,用来反映其Linux操作系统的环保外观。
7、红旗嵌入式Linux
由北京中科院红旗软件公司推出的嵌入式Linux是国内做得较好的一款嵌入式操作系统。目前,中科院计算所自行开发的开放源码的嵌入式操作系统---Easy Embedded OS(EEOS)也已经开始进入实用阶段了。该款嵌入式操作系统重点支持p-Java。系统目标一方面是小型化,另一方面能重用Linux的驱动和其它模块。由于有中科院计算所的强大科研力量做后盾,EEOS有望发展成为功能完善、稳定、可靠的国产嵌入式操作系统平台。
六、结束语
由于Linux是一个内核源代码开放、具备一整套工具链、有强大的网络支持及成本低廉的操作系统,因此嵌入式Linux自诞生起就秉承了这众多独特优势,这使它正在并越来越多地受到人们的关注。据Even Data数据显示,期望使用嵌入式Linux的用户从2001年的11%增到2002年27%,而同期Vxwork只是从16%到18%,Win CE从9%到14%。另外,在嵌入式Linux的各种应用市场中,通信(语音和数据)名列第一,2000年的销售额是1300万美元,而2005年预计将达到1.26亿美元,可以预见,嵌入式Linux将在未来的通信用嵌入式操作系统中占据强有力的地位
Linux是目前十分火爆的操作系统。它是由芬兰赫尔辛基大学的一个大学生Linus B. Torvolds在1991年首次编写的。标志性图标是一个可爱的小企鹅。
Linux是一种类Unix系统,Linus当时编写它的目的是为了替代一种名叫Minix的操作系统。Minix是由一个名叫Andrew Tannebaum的计算机教授编写的,当时由于Unix是一个商业软件,其源代码是不能拿来进行教学的,Andrew教授就自己编写了一个系统用于教学。最
初的Minix用一张软盘就能装下,麻雀虽小、五脏俱全,Minix具有一般操作系统的特征,它同时兼容Unix系统。
Linux是一个免费的操作系统,用户可以免费获得其源代码,并能够随意修改。它是在共用许可证GPL(General Public License)保护下的自由软件,也有好几种版本,如Red Hat Linux、Slackware,以及国内的Xteam Linux等。
Linux具有许多Unix系统的功能和特点,能够兼容Unix,但无需支付Unix高额的费用。比如一个Unix程序员在单位可以在Unix系统上进行工作,回到家里在Linux系统上也能完成同样的工作,而不必重新购买Unix。要知道Unix的价格比常见的Windows要高出若干倍,和Linux的低廉更是相距甚远。
Linux的应用也十分广泛。Sony最新的PS2游戏机就采用了Linux作为系统软件,使PS2摇身一变,成为了一台Linux工作站。著名的电影《泰坦尼克号》的数字技术合成工作就是利用100多台Linux服务器来完成的。
2001年8月17日,Linux发布了最新的Linux 2.4.9版,它也已经十岁了。
Linux的优点
Linux的流行是因为它具有许多诱人之处。
1、完全免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变。这让Linux吸收了无数程序员的精华,不断壮大。
2、完全兼容POSIX 1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
3、多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
4、良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Windows系统,用户可以使用鼠标对其进行操作。在X-Windows环境中就和在Windows中相似,可以说是一个Linux版的Windows。
5、丰富的网络功能
互联网是在Unix的基础上繁荣起来的,Linux的网络功能当然不会逊色。它的网络功能和其内核紧密相连,在这方面Linux要优于其他操作系统。在Linux中,用户可以轻松实现网页浏览、文件传输、远程登陆等网络工作。并且可以作为服务器提供WWW、FTP、E-Mail等服务。
6、可靠的安全、稳定性能
Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。Linux由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上Linux在这方面也十分出色。
7、支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
Linux的不足
由于在现在的个人电脑操作系统行业中,微软的Windows系统仍然占有大部分的份额,绝大多数的软件公司都支持Windows。这使得Windows上的应用软件应有尽有,而其他的操作系统就要少一些。许多用户在换操作系统的时候都会考虑以前的软件能否继续使用,换了操作系统后是否会不方便。虽然Linux具有DOS、Windows模拟器,可以运行一些Windows程序,但Windows系统极其复杂,模拟器所模拟的运行环境不可能完全与真实的Windows环境一模一样,这就使得一些软件无法正常运行。
许多硬件设备面对Linux的驱动程序也不足,不少硬件厂商是在推出Windows版本的驱动程序后才编写Linux版的。但一些大硬件厂商在这方面做得还不错,他们的Linux版驱动程序一般都推出得比较及时。
软件支持的不足是Linux最大的缺憾,但随着Linux的发展,越来越多的软件厂商会支持Linux,它应用的范围也越来越广。这只小企鹅的前景是十分光明的。