2011年1月2号整理
根据RH131课程整理
访问系统常用接口:CLI 、GUI。
CLI(命令行):提供一个输入命令的提示符而实现对系统的访问。
显示设备
物理终端:(设备文件)——>/dev/tty0
直连到linux系统所直接安装到的那台主机上的那台显示设备。
虚拟终端:/dev/tty1-tty6 (ctrl+Alt+F1——F6)
在同一个主机上,提供六个不同接口来访问同一个系统,对物理终端的虚拟。
程序:mingetty 在系统初始化完成以后,根据/etc/inittab这个文件的指示,结合init进程,初始化启动几个终端的那个程序。
串行终端:通过串行链路设备接入进来对系统进行访问的设备
(设备文件)/dev/ttyS* /dev/xvc0(虚拟机上的串行终端)
程序: agetty 启动串行终端
系统控制台:/dev/console 逻辑设备,
系统默认的逻辑终端设备,在系统内核在初始化过程中虚拟出来的,要想显示出来必须跟物理设备关联起来(默认/dev/tty0或/dev/fb0(虚拟机上))。默认情况下系统的启动信息都是到系统控制台上去的。
更改设置:console=ttyS0 consle=ttys1
可以设置多个参数,但只有最后一个才会显示启动信息。
模拟终端:(设备文件)——>/dev/pts/N
在X window打开的终端,
通过SSH远程连接上去的terminal
通过,telnet远程连接上去的terminal
tty 查看当所对应的终端设备文件
通过screen打开不同的屏幕,类同于在X-window上打开多个窗口的机制
GUI(图形用户界面)
X protocol(C/S),x386(商业实现) XFree86(开源实现)——>最新版X11R7 R(release)
Xorg渐渐取代XFree86
XFree86,Xorg只是提供了驱动显卡的驱动程序,并提供了几个额外的模块,让显卡能够真正工作起来,为图形应用提供低层框架的工具。
窗口管理器
桌面管理器:提供所有窗口的母窗口。Gnome 、KDE
X &——> xterm ——>twm &(窗口管理器)——>gdm(登陆管理器)——>gnome-session(桌面)
查看X server 版本号
prefdm:启动一个图形界面
Xorg.Conf的配置内容:
screen:支持在字符界面下打开多个模拟终端
查看已经关闭的终端:
权限的传递:
用户:管理员(root) 普通用户
sudo
/etc/sudoers 定义哪些用户可以在哪些主机上以什么身份执行哪些命令 who where=(who) what
例如: A 192.168.0.0/24=(root) /sbin/ofcpnfig
RH131
可以使用visudo命令编辑
添加:
百分号表示是一个系统群组
被添加的用户在使用命令执行时需要在前边加上sudo 关键字
默认五分钟内执行sudo命令不用输入密码,很人性化的。
定义一个用户组:User_Alias NETWORK=A,B,C组名必须是大写英文字母
lecture 2
操作系统是物理主机的虚拟抽象
yum yellow update manger
rpm redhat package manager——>rpm package manager
命名格式:package_name-version-release.arhc.rpm
rpm –i 或 –install
-v 显示安装进度
-h 以安装信息列显示安装进度
卸载软件包 rmp –e packagenamne(只需要指定软件包的名字)
--nodeps忽略依赖关系
--replacepkgs 重新装一次,替换原来的包,达到修复的目的
--force强行安装
--test 测试一下
--justdb 仅仅更新数据库
升级 rpm –F升级 纯粹升级,在原来的基础上进行
rpm –U更新 原来的包存不存在都没关系 --oldpackage 降级安装
内核一般不能以升级的方式安装
-q 查询
-qi 列出详细信息
-ql 列出该软件包的所有文件与目录所在完整名(list)
-qf 找出该文件是由那个安装包来的
-qc 列出安装包完成后所生成的配置文件
-qR 列出软件包的依赖信息
--querytags 定制查询
--scripts 查看安装时执行了哪些脚本文件
校验:
-V pkg_name 查看系统的安全信息
tripwire
数字签名,保证数据完整性
单项加密:MD5
rpm --initdb 更新信息的 不会覆盖原有数据库
rpm --rebuilddb 无论如何都要覆盖原有数据库
rpm –qa gpg-pubkey查看系统公钥
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm –K package_name 校验
--checksig package_name 校验
三种文件共享方式:file:/// 、 http:// 、ftp://
yum –y install pkg_name 不提示,默认安装
-y reintall 重装
yum remove 卸载软件包
update 升级软件包 可以升级kernel
yum list all 列出所有的软件包
yun list installed 列出安装过的
yum provides|whatprovides 谁提供的
grouplist 列出已装组和所有可用组
groupinstall 组安装
localinstall
建立一个本地yum源
直接将光盘上的软件包作为yum源
先挂载光盘
createrepo 直接创建一个yum源
Lecture 7
硬盘盘面结构示意图
硬盘片旋转一圈所画出来的就是磁道(track)
所有硬盘片上相同半径的那个磁道就组成了柱面(cylinder)
数据是按照柱面来存取的。
第0磁道上的0扇区不能被分区。用于表示当前磁盘上有几个分区以操作系统所在的分区,成为引导扇区,MBR (主引导记录) 512B 前446B放置一段程序,成为boot loader
引导加载器,后64B用来标示分区,每16B用来标示一个分区
硬盘最小的存储单位是扇区(512B),数据所存储的最小单位是逻辑块(block)
每个分区就是一个文件系统,而每个文件系统开始位置的那个块就称为超级块(superblock)。超级快的作用是存储文件系统的大小,空的和填满的块,以及它们各自的总数和其他诸如此类的信息。
查看当前系统上所有的块存储设备及分区信息:fdisk –l
* 表示在此分区上有操作系统
查看系统分区信息:
HAL 硬件抽象层:实时探测内核中新插入的设备,将新插入的设备属性信息,通过HAL将这些信息导入到用户空间的进程中去。
hal-device 输出整个系统上所有的硬件设备信息
fdisk /dev/sda 对硬盘设备进行分区
mkfs——>make filesystem
-t type 类型
mkfs –t ext3= mkfs.ext3
mke2fs 创建ext2文件系统
-j 格式化为ext3
-l 设定卷标
-b 指定块大小 默认1024B=1K
-c 慢速格式化
-i 指定字节和inode比率
-n 指定一个分区上inode个数
-m为超级用户在当前分区上所预留的空间大小的比率 默认百分之五
mount [options] [-o options] /dev/device /path/to/mount_point
不加参数显示当前系统上已经挂载的设备和类型
umount /dev/device [/path/to/mount_point]
-o rw 读写挂载 (自定义选项)
-a 挂载/etc/fstab 所有设备
remount 重新挂载
mount –n –o remount,rw 重新挂载
gnome-mount 自动挂载 默认在media目录下
gnome-umount 卸载
partprobe /dev/sda 更新内核中分区信息
如果需要自动挂载的话需要修改/etc/fstab
要挂载的设备 挂载点 文件系统类型 挂载选项(-o指定) 是否需要转储(1备份) 自检标识(根分区为1 其他分区为2)
lecture 5
系统初始化
显示系统版本号
uname –a 显示所有信息
-r 显示内核发行号
-n 显示当前系统名称
-v 显示内核版本(什么时候编译的)
-p 显示系统架构
运行级别 runlevel 在启动的时候所启动的服务不一样
0——6
查看运行级别
init 0 关机
init 6 重启
init 3 字符界面正常模式
init 5 图形界面正常模式
init 1 单用户模式 不启动网络服务 用于修复系统 不需要用户认证登录
init 2 多用户模式 不启动NFS服务
init 4 保留
s S single:单用户 /etc/rc.d/rc.sysinit
emergency: 紧急模式,不会读取/etc/rc.d/rc.sysinit 用于系统修复
init N 切换运行级别
chkconfig –list 列出所有的服务在不同运行级别下开启情况
chkconfig –level nnnnnnn service_name on|off 特定的关掉某个级别下的服务
没加级别默认是2.3.4.5
ntsysv –level 2345
开机启动流程
1. 加载BIOS信息,并取得第一个启动设备的代号;
2. 读取第一个启动设备的MBR的引导加载程序(lilo,grub等)的启动信息;
3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备;
4. 核心执行init程序并获取运行信息;
5. init执行/etc/rc.d/rc.local文件;
6. 启动核心的外挂模块(/etc/modprobe.conf);
7. init执行运行的各个批处理文件(scripts);
8. init执行/etc/rc.d/rc.loacl文件;
9. 执行/bin/login程序,等待用户登录;
10. 登录之后开始以shell控制主机。
BIOS(Basic Input Output System)记录了主机板的芯片组与相关的设定,如CPU与接口设备的通信频率、启动设备的搜索顺序、硬盘大小与类型、系统时间、外部总线是否启动即插即用、各接口设备的I/O地址,以及与CPU通信的IRQ中断等信息。
|
BIOS与引导加载程序及核心加载流程示意图
init处理系统初始化流程(/etc/rc.d/rc.sysinit)
/etc/rc.d/rc.sysinit主要任务有:
自定义核心模块的加载可以将整个模块写入到/etc/sysconfig/modules/*.modules中。
启动系统服务与相关启动设置文件(/etc/rc.d/rc.n 与/etc/sysconfig)
目录里边文件全是软链接,所以/etc/init.d与/etc/rc.d/init.d是一样的。
以S为开头的文件,为启动时需要“启动,start”的服务
以K开头的文件,为“关机时需要关闭的服务,stop”的文件链接
S与K后面的数字,表示该文件的执行顺序 范围0——99 数字越小,优先级越高
用户自定义引导启动程序(/etc/rc.d/rc.local)
任何想要在开机时执行的工作,直接写入到/etc/rc.d/rc.local。该工作就会在启动的时候自动加载。比如自己制作的shell脚本。
根据/etc/inittab 设置加载终端或X-Window界面
运行等级为2345时,都会执行/sbin/mingetty 而且执行6个。
mingetty 启动虚拟终端
如果运行级别为runlevel 5 init还会执行/etc/X11/prefdm –nodaemon 命令,启动X-window。
对模块进行一些参数的设计 /etc/modprobe.conf
/etc/sysconfig/* 再整个启动过程中,在/etc/sysconfig读取服务的相关设置
核心与核心模块
存放位置:
引导加载程序:Grub
grub对硬盘的代号设置于传统的linux磁盘代号完全不同,如(hd0,0)
1. 硬盘代号以小括号()括起来
2. 硬盘以hd表示,后面接一组数字
3. 以“搜索顺序”作为硬盘的编号,而不是根据硬盘排线的排序
4. 第一个搜索到的为0,第二个为1号,以此类推
5. 每个硬盘的第一个分区代号为0,以此类推
第一个硬盘MBR安装处的硬盘代号是“(hd0)”,第一个硬盘的第一个分区的超级块代号是“(hd0,0)”,第一个硬盘的第一个逻辑分区的超级块代号是“(hd0,4)”。
(0——3)——>(P+E)
如果/boot单独分区,则/vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
如果boot在根目录下,则/boot/vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
内核=内核核心+模块(kernel object)
内核本身就是模块化设计,只提供了最核心的功能,核心上有很多接口,可以去加载对应的模块,其他的功能都被做成了二进制的模块,放在/lib/modules/`uname –r`/
kernel里边的内容:
lsmod 显示当前已加载模块
modprobe 模块名 加载模块
-r 模块名 卸载模块
ldd /bin/ls 查看一个命令执行过程中需要调用哪些库