linux基础知识学习-linux架构

硬盘分区:

第一扇区(512bytes):
 MSR:master boot record
(446bytes)主引导分区
 partion
table:(64bytes)分区表,四个。可以是主分区(primary)或者扩展分区(Extended), 每个表指向磁盘某段区间。最多只有一个扩展分区,扩展分区里面可以扩展多个逻辑分区。
其余扇区(柱面(cylinder)):实际存储的地方

linux 中(\etc/fstab):
IDE  总线形式不同 (a~d)
/dev/hda

SATA,SCSI,USB(a~p)
/dev/sda1       C 
主分区( 扩展分区)
/dev/sda2    
D
/dev/sda3    
E
/dev/sda4       F

/dev/sda5        
逻辑分区
/dev/sda6                   

/dev/sdb1        U盘   
挂到/mnt
/dev/cdrom->sr0  光盘   挂到/media 或/mnt

Linux ext2文件系统:
block0, block1, block2, block3 ...
boot
sector
superblock  超级块,存放磁盘整体信息,inode数量,block数量
inode bitmap 
inode的使用情况
block bitmap  block的使用情况
inode table  
每个文件都对应一个inode,存放文件的权限和属性  128 bytes
data block    
存放文件的真实数据。有1k ,2k, 4k.

linux系统内核模块
1.MMU 内存管理模块123456

2.FS文件系统管理
3.进程管理
4.进程调度
5.网络设备接口

linux系统层次

1.linux内 核(kernel)
  linux 3.1.0-7.fc16.i686
.内核版本,奇数测试版,修改次数
2.linux API接口
3.shell
4.utilities实用程序

Windows里启动加载:
  
BIOS:固件程序,上电后完成硬件检测盒资源分配,将引导程序读到内存,跳转到引导程序入口。
   引导:GRUB (或者
LILO),将内核读入到内存中,跳转到内核入口点运行。
linux系统启动引导方式:
Bootloader:(vivi,U-Boot)
  
stage1:=BIOS
   stage2:=GRUB

运行级别:
/etc/inittab 存放

启动第一运行 : inix进程,pid为1;

linuxt系统终端模式:
1.字符终端runlevel 3: tty1~tty6(command
line命令行)
2.图形终端runlevel 5: tty7     ( init->X window
system->x11->->->GNOME,KDE窗口管理员)

查看所有登陆linux系统用户(终端用户)
who
 pts/0:虚拟终端用户(图形界面下)
 tty1:
登入系统用户(字符终端下tty1-tty6)

控制终端自动运行着一个shell,即/bin/bash进程,来随时解析输入的命令,一旦有命令输入ls,即fork创建一个子进程/bin/bash,exec将/bin/ls程序的代码数据替换,即执行ls的代码。

登入系统用户名
 whoami

linux文件系统
FHS:Filesystem Hierarchy Standard
文件系统分层标准
/     开机系统有关(开机还原修复,分区要小)
/usr 
软件安装、执行有关(unix software resource,分区大)
/var  系统运作有关 
(variable,分区大点)

*********************************************************************
bin:
在单用户模式下还能被执行的程序,root用户和一般用户都可执行

sbin:重要的系统程序,只有root用户可执行(一般用来设置系统环境)
 其他系统命令,服务器软件程序/usr/sbin 
自行安装软件程序 /usr/local/sbin

etc:  配置文件
 开机配置:/etc/inittab , /etc/rc.d/*,
/etc/init/*
 服务启动脚本:/etc/init.d/* 

     
开机启动脚本:/etc/rc.d/init.d/*
     
系统配置:/etc/sysconfig/*
 xinetd服务管理的各服务配置:/etc/xinetd.d/*

dev:设备映射文件。
 hd*, sd*,
sdb1U盘,cdrom光盘,lp*打印机,tty终端,
 null  ,zero

 stdin,stdout,stderr

lib:程序库文件(.so)
 1.开机时用到的链接库
  /lib/modules
开机时加载的驱动模块
 2./bin和/sbin下的命令用到的链接库

*********************************************************************

boot:系统启动文件(grub引导的目录)
      1.Linux内核文件
vmlinuz-2.6.32-131.12.1.1.ky3.2.x86_64
     
2.用于启动的内存虚拟文件系统
initramfs-2.6.32-131.12.1.1.ky3.2.x86_64.img
 3.grub目录
  menu.lst
引导程序grub的配置文件
  其他引导配置文件

*********************************************************************

usr: unix软件资源,可共享不可变。
 bin
软件程序,绝大部分的用户可使用命令都放在这里。(开机无关)
 include 程序包含的头文件
 lib
程序运行的链接库
 local 本地软件,也包含bin,etc,include,lib等目录
 usr
一般放置软件源码
 
*********************************************************************

var:系统运行服务后动态产生的文件
 lib   存放程序的数据文件
   mysql:
MySQL数据库,
   rpm:rpm数据库
 log  
日志文件
  messages 错误日志
  wtmp  登录日志
 spool
队列数据
  at 一次执行脚本
  cron  循环例行性工作脚本
 run
进程pid
 mail 个人电子邮件

*********************************************************************

root:管理员目录
home:用户家目录

media:挂载光盘 /media/cdrom
mnt:挂载目录。与/media差不多,可用来挂载U盘。

tmp: 存放临时数据,任何人都可访问,可定时删除

srv 网络服务的数据。www,FTP等数据目录

lost+found:ext2/ext3文件系统,当发生错误时,将一些丢失的片段放置到这个目录下。

proc:内存中内核,进程,设备,网络状态等数据
sys:内存中内核,文件系统等数据

opt:第三方软件目录,类似
/usr/local
*********************************************************************

linux文件类型:(7种类型 S_ISREG(st->st_mode) )
-:reg
一般文件
d:dir目录文件
l:lnk链接文件
b: block块设备文件
c: chr字符设备文件
p:
pipe管道文件
s: socket套接字文件

文件模式(mode_t st_mode  S_IRUSR,S_IWGRP,S_IXOTH)
 rwx -w-
r--    read4,write2,execute1   111 010 100 ->
0724(八进制)

各种下载地址:
uboot:ftp://ftp.denx.de/pub/u-boot/
linux
kernel:http://www.kernel.org
busybox:http://www.busybox.net/

硬件->bootloader->kernel内核->utilities实用程序
   (进程0->init1->tty终端->命令(程序)->线程)

linux启动细节:
一、BIOS
系统信息CMOS,硬件检测,读取MBR转到grub

二、MBR-grub,bootload引导加载程序
安装windows和linux的时候,各自的的文件系统分区内都有一份各自的grub,windows默认将grub装在MBR中,而linux可以选择不安装在MBR中。
bootload:
1.启动选项
2.加载内核
3.转交其他loader(windows无,linux有。)

三、加载内核kernel和initrd制作虚拟文件系统来加载驱动模块
bootload加载/boot/vmlinux-2.6.18-92.e15
,解压缩内核文件到内存中运行,并利用内核的功能开始测试与驱动各个周边设备,包括存储设备、CPU、网卡、声卡等。此时,linux内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到的硬件信息。
(此时内核没有驱动不认识SATA磁盘,无法加载/lib/modules/目录下系统模块,IDE,ext2/ext3可以。)

bootload加载/boot/initrd-2.6.18-92.e15.img,解压缩成initialRAM
Disk虚拟文件系统的根目录(只读),kernel借此加载所需/boot/modules下系统模块(硬件驱动),最终释放虚拟文件系统,并挂载实际的跟目录文件系统。

四、启动第一个进程init
/etc/inittab 
:
1.id:5:initdefault:    获得默认的run
level设置
 #   0 - halt (Do NOT set initdefault to this) 

 #   1 - Single user mode   
单用户维护模式
 #   2 - Multiuser, without NFS (The same as 3, if you
do not have networking)
 #   3 - Full multiuser
mode
 #   4 - unused
 #   5 -
X11               
图形化界面
 #   6 - reboot (Do NOT set initdefault to
this)
2.si::sysinit:/etc/rc.d/rc.sysinit  启动系统环境初始化配置
 
? 取得网络环境与主机类型
 ? 测试挂载与挂载设备/proc及USB设备/sys
 ? 决定是否启动SELinux
 ? 启动系统的随机数生成器
 ? 设置终端机字体
 ? 设置显示于启动过程中的欢迎界面
 ? 设置系统时间与时区设置:需读入/etc/sysconfig/clock设置值
 ? 接口设备的检测与Plug
and Play
参数的测试
 ? 用户自定义模块的加载
 ? 加载内核的相关设置
 ? 设置主机名与初始化电源管理模块
 ? 初始化软件磁盘阵列:主要是通过/etc/mdadm.conf
 ? 初始化LVM的文件系统功能
 ? 以fsck检验磁盘文件系统:会进行filesystem
check
 ? 进行磁盘配额quota的转换
 ? 重新以可读写模式挂载系统磁盘
 ? 启动quota功能,所以我们不需要自定义quotaon的操作
 ? 启动系统伪随机数生成器
 ? 清除启动过程的临时文件
 ? 将启动相关信息加载/var/log/dmesg

很多工作配置在/etc/sysconfig中。
 
自定义模块加载:/etc/sysconfig/modules/*  配置文件/etc/modprobe.conf
 
启动相关信息放在/var/log/dmesg

3.10:0:wait:/etc/rc.d/rc X        
启动renlevel X 的服务程序
 
执行rc来启动/etc/rcX.d/下各个链接文件启动/etc/init.d/下的服务脚本,Kxx,Sxx按数字顺序执行,
 这些链接文件可用chkconfig命令管理。
 
/etc/rc.d/rc.local为各服务启动完后自定义的开机启动脚本,可自行添加自己写的脚本。
用runlevel得到当前运行等级。
以后在运行的时候想修改运行等级,用init
X,则两个/etc/rcX.d中的K与S文件进行比较,保留一样的,关闭多余的,启动没有的。就可以不用重新启动了。

4.设置ctrl+alt+del 重新启动键
5.设置不断电系统UPS
6.1:2345:respawn:/sbin/mingetty
tty1  运行在2345等级时,会打开tty1-tty6终端,可删除一些。
7.x:5:respawn:/etc/x11/prefdm
-nodaemon  运行在5等级时另外执行的命令。

2.6.32版本以后的init配置文件:
# inittab is only used by upstart for the default
runlevel.
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR
SYSTEM.
# System initialization is started by /etc/init/rcS.conf
#
Individual runlevels are started by /etc/init/rc.conf
# Ctrl-Alt-Delete is
handled by /etc/init/control-alt-delete.conf
# Terminal gettys are handled by
/etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in
/etc/sysconfig/init.
[[email protected] init]#
ls
control-alt-delete.conf 
rc.conf                         
serial.conf
init-system-dbus.conf   
rcS.conf                        
splash-manager.conf
kexec-disable.conf      
rcS-sulogin.conf                
start-ttys.conf
plymouth-shutdown.conf  
readahead-collector.conf        
tty.conf
prefdm.conf             
readahead.conf                  
vmware-tools.conf
quit-plymouth.conf      
readahead-disable-services.conf

内核与内核模块

内核:/boot/vmlinuz
内核解压缩所需RAMDisk:/boot/initrd
内核模块:/lib/modules//$(uname
-r)/kernel
内核源码:/usr/src/kernels
内核版本:/proc/version
系统内核功能:/proc/sys/kernel

模块管理:
内核模块依赖性:/lib/modules/$(uname -r)/modules.dep
depmod
分析相关模块的依赖性,结果写入modules.dep文件中。
内核模块的额外参数:/etc/modprobe.conf

lsmod
insmod
modprobe 可克服模块的依赖问题。
rmmod

linux基础知识学习-linux架构

时间: 2024-08-03 23:44:04

linux基础知识学习-linux架构的相关文章

(转)Linux基础知识学习

Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过修改配置文件来完成. 1.1.Linux磁盘分区 Linux可以将磁盘分为多个分区,每个分区可以被当做一个独立的磁盘使用,磁盘类型:主分区.扩展分区.逻辑分区. 主分区标记为活动,用于操作系统的引导,一块磁盘最多划分4个主分区,主分区存放操作系统的文件或用户数据. 扩展分区:主分区小于4个时才可以划

linux基础知识学习笔记

1.Linux介绍 Linux版本: 内核版本:最基本的核心程序,只要用于企业和个人在此基础自行开发所需功能. 发行版本:在内核基础上增加了一些常用软件,满足企业和用户直接使用的基本需求. Linux应用领域: 个人桌面:图形桌面开发 服务器领域:整个系统就像dos命令行一样,全部命令操作. 嵌入式领域(智能硬件):在Linux基础上开发自己所需的功能然后将程序烧到硬盘中去执行. 后两个实用最广泛: 2.Linux目录和文件操作 Linux目录: Linux的四种文件类型: 1.可分享的 可以分

Linux基础知识学习

常用的命令: 1.awk:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本 使用方法

linux 基础知识学习(三)

1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. 2.取出最后登录到当前系统的用户的相关信息. 3.取出当前系统上被用户当作其默认shell的最多的那个shell. 4.将/etc/passwd 中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中. 5.取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分. 6.列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保

linux 基础知识学习(四)

1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. 2.编辑/etc/group文件,添加组hadoop. vim /etc/group   G到最末尾,o 编辑加入一行 3.手动编辑/etc/passw d文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号:其家目录为/home/hadoop. 4.复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用

linux 基础知识学习(五)

1.显示当前系统上root.fedora或user1用户的默认shell: 注释:egrep '^(root|fedora|usr1)\>' /etc/passwd 从/etc/passwd中查找root,fedora,user1用户,存在就匹配,不存在就跳过: cut -d: -f1,7    截取第一和第七字段 2.找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(): 注释:参考的cix123 同学的博文,觉得很详细,所以也记下来:

linux 基础知识学习(七)

1.创建一个10G分区,并格式为ext4文件系统: (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl: (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳: 虚拟机添加磁盘后无法立即识别时:echo '- - -' > /sys/class/scsi_host/host0/scan  host0这里也可能是host1,host2,可以多试几次. 2.创建一个大小为1G的swap分区,并创建好

linux 基础知识学习(六)

1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#: cp /etc/rc.d/rc.sysinit /tmp/ vim /tmp/rc.sysinit :%s/^[[:space:]]/#&/ :%s/\(^ \)/#/g 匹配格式:  s/要查找的内容/要替换的内容/g全局 2.复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符: c

学习笔记-《Linux基础知识之挂载详解(mount,umount及开机自动挂载)》

<Linux基础知识之挂载详解(mount,umount及开机自动挂载)>来源:Linux社区  作者:chawan 原文链接 http://www.linuxidc.com/Linux/2016-08/134666.htm 以下是学习作者这篇文章做的一些摘要及学习体会. 重要概念(经典原文引述) 挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点