SmartPhone 2018-07-04
1. 设备文件名
各硬件设备在Linux中的设备文件名如下,
这里需要说明的是两种硬盘的设备文件名确定方式:
① IDE硬盘是根据排线和跳针的连接情况确定
② SATA硬盘是根据内核检测到的顺序来命名,与实际插槽代号无关
2. Linux中磁盘使用步骤
1)磁盘的第一个扇区
A. Boot Sector构成
Boot Sector(引导扇区)通常指设备的第一个扇区(是整个磁盘的第一个扇区,需要区别于分区引导扇区),在PC上BIOS会读取该扇区,并将控制权转交给Boot Sector上的MBR。
Boot Sector包含3部分内容:
MBR(Master Boot Record,主引导记录),446B,实际为bootloader的一部分
DPT(Disk Partition Table,磁盘分区表), 64B
BRID(Boot Record ID,引导记录标识),2B,且必须是0x55AA
B. 开机流程与MBR
① 开机简要流程
注意:BIOS是根据设置去取得能够开机的硬盘设备,然后在该硬盘的第一个扇区的MBR位置取得引导加载程序。当然,用户可以设置不从硬盘启动,但与此类似。
② bootloader的功能
a. 提供菜单:可供用户选择不同的开机选项
b. 载入内核文件:直接指向可开机的程序区段来开始操作系统
c. 转交其他loader:将引导加载功能交给其他loader负责
转交其他loader的功能用于实现多重引导启动,实现原理是Linux的引导加载程序除了可以安装在MBR,还可以安装在每个分区的引导扇区
需要注意的是,安装多重引导时,应该先安装Windows后安装Linux,因为只有Linux可以选择将grub安装到分区的引导扇区
2)分区
A. 分区规定解析
每个表项占用16B,所以DPT最多只能容纳4个分区,因此传统磁盘上引入了扩展分区和逻辑分区的概念。
引入扩展分区的目的就是使用额外的扇区来记录分区信息,因此扩展分区本身不能被格式化与写入数据,只能包含逻辑分区。
Linux中对分区有如下规定:
① 主分区(Primary)最多只有4个(磁盘的限制)
② 扩展分区(Extended)最多只能有1个(操作系统的限制)
③ 主分区 + 扩展分区最多只有4个
④ 逻辑分区数量依操作系统和磁盘类型而定,在Linux中,IDE硬盘最多有59个逻辑分区(5 ~ 63号),SATA硬盘最多11个逻辑分区(5 ~ 15号)
B. 分区设备文件名
① 1 ~ 4号为主分区或扩展分区
② 逻辑分区从5号开始
示例如下,
C. 必须分区与建议分区
① 必须分区
/:根分区
swap分区:交换分区,一般为内存2倍但不超过2G(如果物理内存足够大,不分配swap分区也是可以的)
② 建议分区
/boot:启动分区,200MB。该分区包含了grub、Linux内核镜像、initramfs。/boot分区的关键是将启动扇区所在的分区规范在小于1024个柱面以内
说明:只要设置/boot分区,就会自动被调整为sda1(即分区号为1)。因为硬盘最开始部分有和系统启动相关的信息(e.g. 分区表)
我们最终的分区如下图所示,
3)格式化
此处涉及的格式化是高级格式化又称逻辑格式化,他是指根据用户指定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等)在磁盘的特定区域写入特定的数据,在分区中划出一片用于存放文件分配表、目录表等用于文件系统管理的磁盘空间,同时磁盘被划分为统一大小的数据块(block),Linux中根据存放文件的不同分为1KB和4KB(主要是出于存储效率的考虑,之后有介绍)
补充:所谓低级格式化则是将磁盘内容清空,恢复出厂时的状态,划分出柱面的磁道,一般在硬盘出厂和出现坏道时才会进行
说明:注意PC机和嵌入式设备格式化时的区别。PC机格式化时一般都是直接以分区为单位,因此文件系统的大小和分区大小匹配。嵌入式设备中一般是制作文件系统镜像然后烧写到分区中,因此分区大小和文件系统大小可能不匹配。
4)挂载
挂载就是利用一个目录作为进入点,将磁盘分区的数据放置在该目录下,进入该目录就可以读取该分区的数据。这也就是根目录/ 必须挂载的原因,不然整个目录系统的“大门”都进不去。
说明1:挂载时使用的是分区设备文件名
说明2:可以给子目录挂载分区
虽然/home是/ 的子目录,但可以给其单独挂载硬盘分区。在后续的Linux内核文档中会发现,所谓挂载,就是将一个文件系统的顶层目录与Linux目录树中的一个目录结合起来。
3. 登陆与注销
1)运行等级
纯文本界面:run level 3
图形界面:run level 5
注:可以修改/etc/inittab确定下次启动时的运行等级
可以使用runlevel命令查询系统运行级别,
此处的N是指上一个运行级别,由于我们开机就是图形界面,所以显示为N。
说明1:可以使用init命令切换运行等级(e.g. init 3)
说明2:使用init 0也可以关机,但不会关闭正在运行的服务,所以不推荐使用
2)字符界面登陆时显示的内容
其中前两行的内容来自/etc/issue文件
第1行:Linux发行版本
第2行:内核版本及主机硬件等级(i686)
注:login之前的localhost为主机名
登陆后显示内容如下:
root@localhost:登陆用户名@主机名
#为root用户提示符,其余为$
3)注销命令exit
这是一个bash内建命令,用于注销用户
注:离开系统不是关机,Linux本身已经有很多的工作在进行,你的登陆也仅是其中一个“工作”而已
补充:当使用字符界面登陆时,也可以用logout注销,这也是一个bash内建命令
4. 语系设置
1) 查看当前语系
其中LANG是一个环境变量
2) 修改当前语系
① 在shell中临时修改
本质是修改了环境变量LANG的值,由于修改语系为美国英语,此时中文显示将是乱码
② 修改配置文件
配置文件路径:/etc/sysconfig/i18n
5. Linux命令执行的2种情况
1)直接显示结果后回到命令提示符,等待下一条命令的输入,如ls。
2)进入该命令的环境,直到结束该命令才回到命令提示符环境,如tftp和bc
6. 重要热键
1)[Tab]键:命令/文件名补全
2)[Ctrl] + c:结束当前程序,实际上是发送SIGKILL信号给当前进程
3)[Ctrl] + d:表示End of line,即EOF;也可用于离开文字界面(包括图像界面下的模拟终端),作用相当于exit命令
7. 出现command not found的三种原因
1)命令打错
2)软件没安装
3)这个命令所在路径不在PATH环境变量中
8. 关机与重启
1)正确的关机步骤
A. 查看系统状态
who:查看哪些用户在线
netstat -a:查看网络连接状态
ps -aux:查看主机进程状态
说明:需要上述步骤是因为Linux是多用户多任务操作系统
B. 通知在线用户关机时刻
使用shutdown的特殊功能
C. 使用shutdown或reboot命令关机重启
2)相关命令
A. sync
作用:将数据同步写入磁盘
说明:shutdown/reboot/halt命令均会在关机前调用sync工具
注意:一般账户使用sync只能同步自己的数据,而root用户可以同步系统中所有数据
B. shutdown
作用:惯用的关机命令,可以正确地保存正在运行的服务的状态
说明:除了在图像界面登陆,只有root用户才有关机权限
常见用法:shutdown [-rhkc] 时间 [警告信息]
-h:关机
-r:重启
-k:并不关机,只是发送警告信息
-c:取消之前的shutdown命令
时间:必须参数,可以指定具体时间,也可以用当前时间作基准指定时间间隔
示例:shutdown -h now <---> shutdowm -h 0
shutdown -h 20:15
shutdown -h +10 #10 minutes
shutdown -k now 'system will reboot'
C. reboot,halt,poweroff
poweroff相当于直接断电,不提倡使用
9. 帮助命令
1)man
命令名称:man
命令英文原意:mannual
命令所在路径:/usr/bin/man
执行权限:所有用户
功能描述:查看帮助信息(获得完整帮助)
语法:man [命令或配置文件]
示例:man ls
man inittab
说明1:使用man查询配置文件时不加路径名(如/etc/inittab),只要配置文件名即可
说明2:查询配置文件时注意两点:①该配置文件的用途;②该配置文件中条目的格式
说明3:man手册可分册查看(如man 1 passwd和man 5 passwd),各分册含义如下,
1:shell命令(User Commands)
2:系统内核调用(System Calls)
3:C库函数(C Library Functions)
4:设备/特殊文件,使用时直接用设备文件名,不需要路径,如man sd(Devices and Special Files)
5:配置文件,查询时不需要配置文件的绝对路径,只需要配置文件名,比如man inittab
6:游戏
7:惯例与协议,如Linux文件系统、网络协议(如TCP/IP)等(Miscellanea,杂记)
8:系统管理员可用的管理命令,如man init
说明4:man手册数据一般存放在/usr/share/man目录下
2)whatis & apropos
如果不需要完整的帮助信息,只是需要简短信息,可以使用whatis和apropos
用法:whatis/apropos 命令名称/配置文件名
两者的差别在于,whatis是匹配完整的文件名,而apropos是匹配字符串。可参见下面是示例,一目了然
注意:whatis和apropos均是查询whatis数据库,使用前需要使用makewhatis来生成该数据库
3)查询命令选项
如果只是查询命令选项
命令 --help
4)查询shell内置命令
命令名称:help
命令所在路径:shell内置命令
执行权限:所有用户
功能描述:获得shell内置命令的帮助信息
语法:help 命令
补充:help命令还可以查询shell脚本中的if、while等结构性语句用法,可在编写shell脚本时参考
10. 忘记root密码如何处理
关键:进入单用户模式进行修复
步骤:
① 在开机都秒时打断,进入grub模式
② 点击e,修改该命令行
修改kernel所在行,即启动内核时传递的参数,在最后添加single,即启动后进入单用户模式
③ 进入单用户模式使用passwd命令修改root密码即可
注意:此处修改内核参数在下次启动时会恢复原样,因为系统启动时会从/boot/grub/grub.conf中读取启动参数
11. 系统安装日志
/root/install.log:存储了安装在系统中的软件包及其版本信息
/root/install.log.syslog:存储了安装过程中留下的事件记录
/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息