Linux From Scratch
一、硬件基础____________________________________________________________
CPU种类:
RISC(reduced Instruction Set Computing)
精简指令集,常用于服务器,比如Sun,IBM,还有网络设备,手机上用的ARM
CISC(Complex Instruction Set Computing)
复杂指令集,AMD,Intel,VIA的X86架构。
系统
硬件-->内核-->系统接口-->应用程序
内核功能:系统调用接口,内存管理,进程管理,文件系统管理,设备驱动(这个算么?由OS指定接口,像JDBC一样)
设备前缀: IDE 设备,hda,hdb;SCSI ,sda、sdb、sdc 等。
linux,非常适合做嵌入式,几百kb-8M,还有适合做网络设备等,比如LFS,图形界面虽然操作简单,但是除了问题,解决就麻烦了。因为不懂原理。
硬盘:
一个扇区sector==512B,
主引导分区master-boot-record可以安装引导加载程序的地方,有446B,开机时读取,用于引导系统启动。
分区表partition-talbe,记录分区的状态,64B,每个分区要16B,所以最多有4个primary+extended分区,硬盘限制,最多有一个extended,OS限制。
分区的最小单位为柱面cylinder,分区为了解耦和性能,
logic分区,从/dev/had5,开始,前四个预留给primary+extended,extended
每个分区都有自己的引导扇区boot-sector
BIOS-->MBR-->Boot-loader-->kernel文件(操作系统),
BIOS,MBR,是硬件支持。
boot-loader是OS安装在MBR上的软件,提供linux,windows选项,指向对应的kernel。OS的引导加载程序可以安装在分区的boot-sector
二、文件系统____________________________________________________________
多用户:
windows单用户多任务。验证:用admin登录,再用远程桌面用river登录,会把admin挤掉。
linux多用户多任务,可以同时多个用户登录,甚至一个用户登录多次,通过xshell等登录
关机只有root用户才行,因为linux是多用户的。
文件系统: FHS(filesystem hierarchy standrad)
FHS4种类型,static-variable,shraeable-unshareable.
/usr,/opt,是static-shareable
/etc(配置文件),/boot(开机与内核文件),static-unshareable
/var/mail,variable-shareable
/var/run,/var/lock(程序相关),variable-unshareable
VFS
cat /proc/filesystems,显示vfs支持的fs,linux通过vfs switch的内核功能去管理各分区上不同的文件系统。
硬链接,软连接
Inode Index
保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为节点索引号。
Hard Link
通过Inode来进行连接,多个文件名可以指向同一个inode,只有当最后一个hard link被删除后,文件的数据块及目录的连接才会被释放。
Symbolic Link
类似于Windows的快捷方式,实际上是一个文本文件,其中包含的有另一文件的位置信息。
通过实验加深理解
touch f1 #创建一个测试文件f1
ln f1 f2 #创建f1的一个硬连接文件f2
ln -s f1 f3 #创建f1的一个符号连接文件f3
ls -li # -i参数显示文件的inode节点信息
#硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。
#当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效
目录树
所有数据都以文件的形式来呈现,挂载就是把分区数据映射成文件。lsof命令验证
文件权限rwx,文件属性(owner,group-开发团队共享,时间等其他参数)
文件类型:-普通文件,l链接文件,d目录,c字符设备文件如键盘鼠标,b数据设备文件如硬盘,p管道文件,s套接字文件。
linux,用inode存index,可以指向多个分散的block。fat的block号码,存在前一个block中(链表),当磁盘碎片多时,可能要转好多圈才行。
EXT2文件系统superblock-文件系统描述-块对应表-inode对应表-inode表-data block
/dev 设备( c字符设备文件如键盘鼠标,b数据设备文件如硬盘),都以文件存在于dev下,如/dev/null,/dev/tty,
/etc 系统主要配置文件,如各种服务的init.d,
/lin
/media 可删除的设备,如floopy软盘,/media/cdrom,挂载win的d盘: /media/sf_D_DRIVE
/mnt 有了/media后,这个只用来暂时挂载。media的只要不删,重启后也一直存在。
/opt 第三方软件目录
/root root用户的~(主文件夹),其他用户没权限wnj1@naijiang-VirtualBox:~$ cd /root -su: cd: /root: 权限不够
/sbin system的bin,只有root有权读写,其他都是只读。
/lost+found 当文件系统发生错误,用来存放丢失的片段
/proc virtual filesystem,存在于内存,不占用硬盘,数据存放,系统kernel,process,外设状态,网络状态等
/sys 也是vfs,记录与kernel相关的信息
/var 系统运行有关的变量。
/var/lib
系统正常运行时要改变的文件.
/var/local
/usr/local 中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock .
/var/lock
锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.
/var/log
各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息. /var/log 里的文件经常不确定地增长,应该定期清除.
/var/run
保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息.
/var/spool
mail, news, 打印队列和其他队列工作的目录.每个不同的spool在/var/spool 下有自己的子目录,例如,用户的邮箱在/var/spool/mail 中.
/var/tmp
比/tmp 允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp 有很旧的文件.)
根目录是(/),(/root)是root用户(最好不要翻译成根,容易混淆)的主目录
/,/etc,/bin,/dev,/lib,/sbin,这六个目录必须在一个分区。其他的可以再其他分区,但是用户看不出来?linux也可以分区?
但是用户看不到分区,只看到filesystem.
描述系统配置的文件
/proc/cpuinfo CPU信息
/proc/version 版本信息
/proc/sys/net/core/rmem_max 对SO_RCVBUF的支持。
/lib/modules/3.0.0-12-generic($变量)/kernel 内核路径