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 内核路径
相关推荐
这份资源包正好提供了这样一个全面的学习路径,从基础理论到实战技能,步步为营,让学习者能够逐步成长为熟练的Linux用户乃至系统管理员。通过阅读这些资料,不仅可以理解Linux的核心原理,还能学会如何在实际环境中...
这些内容不仅要求开发者具备扎实的理论基础,还需要实践经验以应对实际开发中的各种问题。通过《S3C2440开发文档》和TQ2440开发板配套教材集,开发者可以系统地学习和掌握这一领域的核心技术,从而在嵌入式系统开发...
《Hadoop文档:步步为营,成功安装指南》 在当今大数据时代,Hadoop作为开源分布式计算框架,已经成为处理海量数据的重要工具。本Hadoop文档详尽地记录了一位实践者从零开始,逐步安装并成功运行Hadoop的全过程,这...
首先,基础理论是关键。在计算机科学中,数据结构、算法、操作系统、计算机网络、数据库等是必考科目。你需要深入理解这些领域的基本概念,例如,了解数据结构中的栈、队列、树、图及其应用;掌握排序和搜索算法的...
1. **硬件、平台与网络**:这部分内容介绍了计算机硬件的基础,包括处理器、内存、硬盘等,以及操作系统平台如Windows、Linux等,还有网络基础知识,如TCP/IP协议、网络通信等。理解这些基础概念对于编写系统级程序...
1. 学习C#的基础语法,如变量声明、条件语句和循环。 2. 探索面向对象编程,理解类与对象的关系,以及如何使用继承和多态。 3. 了解并运用委托和事件,实现组件间的交互。 4. 掌握异常处理,编写健壮的代码。 5. ...
总的来说,学习嵌入式Linux需要耐心和毅力,从基础到高级,步步为营,不断实践,才能在这个领域取得成功。自学的过程中,找到合适的教程、书籍和社区支持,结合实际项目,将使学习过程更加高效。对于中兴这样的企业...
上篇基本上是第一版的修订,只是做了一个调整,那便是在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因,在本书第 2章有比较详细的说明。当然,开发环境...
上篇基本上是第一版的修订,只是做了一个调整,那便是在兼顾 Windows和Linux两方面用户的基础上,默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因,在本书第 2章有比较详细的说明。当然,开发环境...