1.linux的启动过程
任何一台计算机的启动都是上电开机执行bootloader程序,然后操作系统内核初始化,最后执行系统的第一个应用程序。linux也不例外。
它的启动顺序为:(1)电脑开机后硬件电路会产生一个确定的复位时序,保证CPU是最后一个被复位的器件。复位后CPU开始执行第一条指令,该指令所在的地址是固定的,这由CPU的制造者指定,这个固定地址所保存的程序往往被称为“引导程序”bootloader。(2)执行内核程序。如果除bootloader之外的其他程序都成为用户程序的话,内核程序也属于用户程序,用户程序被分为内核程序和应用程序。(3)当内核初始化完毕后就开始运行具体的应用程序了,习惯于第一个应用程序称为home程序。如Windows的系统桌面,android的launcher,linux的terminal窗口。
多数基于arm的硬件系统,会从并口nand Flash芯片的0x00000000地址处装载程序。对于小型的嵌入式系统来说,改地址中的程序就是最终要执行的用户程序,但对于android来说,改地址还不是android程序,而是被称为uboot或者fastboot的程序,起作用是初始化硬件设备,当uboot被装载后便开始运行,它一般会检测用户是否按下某些特别的按键,这些按键检测都是在Uboot编译前事先约定好的,用于进入调试模式。然后uboot会从nandflash中装载linux内核,装载的地址是uboot时预先约定好的。
2.linux的常用命令
(1)man。用来查询某些命令的用法,如man ls
(2)find。查找命令。如:find . -name “*.java”。find后面的“点”表示当前目录
(3)grep。正则表达式匹配命令。如查找“Hello.java”文件中的“Activity”字符串,可以使用:grep “Activity” Hello.java。grep和find的区别在于grep是查找字符串,而find是查找文件或者目录。
(4)xargs。确切的说xargs不是一个命令,而是一个标示符,它代表了一个命令执行的结果作为下一个命令的参数。linux命令可以以流水线执行,也叫做多管道执行,既两个命令用“|”分开,比如列出当前目录下文件名中包含“oa”的所有文件,可以使用以下命令:
ls | grep “oa”
比如想查找当前目录下所有包含“Activity”字符串的java文件,命令如下:
find . -name “*.java” | xargs grep "Activity"
再比如查找当前目录下的res目录下的xml文件,并列出这些xml文件中“status_bar_sizi”字符串的地方:
find ‘find . -name res’ -name "*.xml" | xargs grep status_bar_size
(5)cat。用于连接文件内容,并在终端中显示出来。如:cat main.java
(6)chmod。chmod 777 copy.sh
(7)ps,kill。ps用于列出当前运行的所有进程,kill用于杀死某个进程
(8)export.