嵌入式Linux学习笔记1
文章目录
Linux系统启动过程
五个阶段
-
内核的引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
-
启动init
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。init 程序首先是需要读取配置文件 /etc/inittab。
Linux系统有7个运行级别:
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
-
系统初始化
在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
-
建立终端
-
用户登录系统
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
图形模式与文字模式的切换方式
Linux预设提供了六个命令窗口终端机让我们来登录
默认我们登录采用的是第一个窗口(tty1),可以按下Ctrl+Alt+F1~F6来切换它们
如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。
当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。
Linux关机
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
Linux系统目录结构
该命令可以显示Linux的根目录
ls /
-
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
-
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
-
/dev:
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
-
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
-
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
-
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
-
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
-
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
-
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
-
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
-
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息,这个目录的内容不在硬盘上而是在内存里。
-
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
-
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
-
/srv:
该目录存放一些服务启动之后需要提取的数据。
-
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
-
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
-
/usr/bin:
系统用户使用的应用程序。
-
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
-
/usr/src:
内核源代码默认的放置目录。
-
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
Linux文件基本属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
- chown(change ownerp):修改所属用户与组
- chmod(change mode):修改用户的权限
在Linux中我们可以使用以下命令来显示一个文件的属性以及文件所属的用户和组:
ls -l
or
ll
返回结果的第一个字符代表这个文件是目录、文件或链接文件等等:
- 当为d时表示目录
- 当为-时表示文件
- 当为l时表示链接文档(link file)
- 当为b时表示装置文件里面的可供储存的接口设备(可随机存取设备)
- 当为c时表示为装置文件里面的串行端口设备(一次性读取设备)
接下来的字符中,以三个为一组,且均为rwx(read、write、execute)的三个参数的组合,当没有权限的时候显示减号。
第一组确定属主拥有该文件的权限
第二组确定属组拥有该文件的权限
第三组确定其他用户拥有该文件的权限
Linux文件与目录管理
Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
绝对路径与相对路径定义
-
绝对路径:
路径的写法由根目录/起
-
相对路径:
路径的写法不是由/起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法。
处理目录的常用命令
-
ls(list files):列出目录及文件名
- -a:列出全部的文件
- -d:仅列出目录本身,而不是列出目录内的文件数据
- -l:长数据串列出,包含文件的属性与权限等等数据
-
cd(change directory):切换目录
-
pwd(print work directory):显示当前的目录
- -P:显示出确实的路径,而非使用连结路径
-
mkdir(make directory):创建一个新的目录
- -m:配置文件的权限
- -p:帮助你直接将所需要的目录包括上一级的目录递归建立起来
-
rmdir(remove directory):删除一个空的目录
- -p:连同上一级空的目录也一起删除
-
cp(copy file):复制文件或目录
- -a:相当于-pdr
- -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
- -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
- -r:递归持续复制,用於目录的复制行为(常用)
- -s:复制成为符号连结档 (symbolic link),亦即捷径文件
- -u:若 destination 比 source 旧才升级 destination
-
rm(remove):删除文件或目录
- -f:force 的意思,忽略不存在的文件,不会出现警告信息
- -i:互动模式,在删除前会询问使用者是否动作
- -r:递归删除,常用在目录的删除(比较危险)
-
mv(move file):移动文件与目录,或修改文件与目录的名称
Linux文件内容查看
可以使用以下命令来显示文件内容
- cat:由第一行开始显示文件内容
- -A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
- -b:列出行号,仅针对非空白行做行号显示,空白行不标行号
- -E:将结尾的断行字符$显示出来
- -n:列印出行号,连同空白行也会有行号,与-b的选项不同
- -T:将tab按键以^l显示出来
- -v:列出一些看不出来的特殊字符
- tac:从最后一行开始显示
- nl:显示的时候顺道输出行号
- more:一页一页的显示文件内容
- less:与more相似,但能往前翻页
- head:只看头几行
- tail:只看尾巴几行
vim的使用
vim分为三种模式,分别是命令模式,输入模型,底线命令模式。
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i切换到输入模型,以输入字符
- x删除当前光标所在处的字符
- :切换到底线命令模式,以在最底一行输入命令
输入模式
在命令模式下按下i就进入了输入模式。
底线命令模式
在命令模式下按下:就可以进入底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
基本的命令有:
- q退出程序
- w保存文件
按ESC键可以随时退出底线命令模式。
Linux apt命令
apt语法
apt [options] [command] [package ...]
- options
- -h:帮助
- -y:安装过程中的提示选择全部为yes
- -q:不显示安装的过程
- command:要进行的操作
- package:安装的包名
apt常用命令
列出所有可更新的软件清单命令
sudo apt update
升级软件包
sudo apt upgrade
列出可更新的软件包及版本信息
apt list --upgradeable
升级软件包,升级前先删除需要更新软件包
sudo apt full-upgrade
安装指定的软件命令
sudo apt install <package_name>
安装多个软件包
sudo apt install <package_1> <package_2> <package_3>
更新指定的软件命令
sudo apt update <package_name>
显示软件包具体信息,例如:版本号,安装大小,依赖关系等等
sudo apt show <package_name>
删除软件包命令
sudo apt remove <package_name>
清理不再使用的依赖和库文件
sudo apt autoremove
移除软件包及配置文件
sudo apt purge <package_name>
查找软件包命令
sudo apt search <keyword>
列出所有已安装的包
apt list --installed
列出所有已安装的包的版本信息
apt list --all-versions