Linux初学者:从不同角度理解Linux系统
在我初学Linux系统时,虽然已经掌握了一些命令,但总觉得还是很混乱。大家新买的笔记本如果是Windows系统,那么第一件事往往就是分区,目的就是将系统和软件分开。然而Linux却没有类似于Windows分区的概念,取而代之的是挂载点。此外,Windows上安装软件一般即装即用,在linux上又有了软件依赖的概念,这更加让Linux新手摸不着头脑了。Linux的众多发行版也让Linux小白们陷入了选择困难症。虽然Linux发行版众多,但都万变不离其宗。下面从几个不同的角度来描述Linux系统来加深理解。
1.从linux软件包和运行库的依赖关系来看
Linux系统总体来说由四部分组成:kernel,glibc,shell,applications。
Linux最重要的便是kernel与glibc库了。kernel的功能是与硬件进行交互,是Linux系统与硬件交互的纽带。下来就是glibc库,几乎所有的软件都会依赖glibc库。在编译LFS(Linux from scratch)时,glibc库是也最先要编译的组件之一。再向上一层就是软件应用了。这里的Shell就是一个人机交互接口,它可以分为两种:字符终端和GUI。Shell里面的运行的就是各种软件。
2.从文件系统的层次上来看
Linux的思想为:一切皆文件。那么,从linux的文件系统上来看,也许能够更加深刻理解linux系统。如下图所示:
Linux的文件系统管理是通过虚拟文件系统(VFS)来完成的。Linux的文件系统不仅限于储存文件的磁盘,而是包括所有可以通过文件进行访问的内容。例如,磁盘文件访问使用ext4文件系统,目录访问使用rootfs,内核访问使用proc,内存文件使用tmpfs,设备访问使用sysfs等等。Linux将所要访问的目标以适当的文件系统的形式挂载到目录当中,以便进行操作。可以这样理解:假如你需要访问内核中的内容,但是没办法直接访问,所以内核可以通过VFS,将其以proc文件系统形式挂载到proc目录,这样便可以访问内核了。总之,最重要的一点,这里的proc
,rootfs
,ext4
,xfs
这些都是文件系统类型,不要将proc
视为目录。
3.从根文件系统目录结构上来看
Linux的目录是很条理的,在某种程度上说,比Windows的目录更加条理。Linux的根文件系统是linux系统运行的基础。根文件系统(rootfs
)提供了一个内核与磁盘文件相互通信的桥梁。根文件系统确保了所有文件拥有共同的起始路径/
。根文件系统的目录结构基本上按照FHS(Filesystem Hierarchy Standard)标准来设置。在Linux系统根目录下包含以下几个目录:/boot, /bin, /dev, /etc, /home, /lib, /lib64, /media, /mnt, /opt, /proc, /root, /run, /sbin, /srv, /sys, /tmp, /usr, /var
。其中一些目录为链接:
/bin
==>/usr/bin
/sbin
==>/usr/sbin
/lib
==>/usr/lib
/lib64
==>/usr/lib64
每个目录的基本作用:
目录 | 作用 |
---|---|
/boot | 系统启动相关文件,如内核、initramfs,以及grub(bootloader) |
/dev | 设备文件。文件系统类型为udev |
/etc | 软件配置文件目录 |
/lib | 库文件 |
/opt | 可选目录(第三方软件安装目录,比如我会把MATLAB和texlive安装到这里) |
/proc | 原来为空,系统启动后内核会将自己的信息映射到此文件夹中(内容是动态的,包括进程信息,以及内核状态信息等),文件系统类型为proc |
/sys | 原来为空,跟硬件设备相关的属性映射文件,即内核与硬件之间的信息,类型为sysfs |
/bin | 用户命令(链接到/usr/bin) |
/sbin | 管理命令(链接到/usr/sbin) |
/usr | 全局共享目录,系统应用程序都在这里面 |
/run | 进程信息。类型为tmpfs |
4.从系统启动过程来看
Linux系统启动过程如下:
其实很简单,grub引导内核然后加载initramfs,执行systemd初始化程序,然后切换到真实根目录,再次接着systemd初始化,最后完成系统启动。
5.从系统应该包含的功能上看
操作系统需要实现众多的功能才能称之为一个完整的操作系统。Linux系统功能大致分为一下几个方面:
- 设备管理:设备的识别,udev,设备文件的特点,常见设备,虚拟设备
- 磁盘管理:磁盘识别,分区,文件系统,lvm和raid,磁盘管理命令和软件
- 文目管理:文件和目录的创建,文件访问时间,文件查找,压缩归档
- 进程管理:进程查看,后台进程,进程杀死
- 权限管理:文件访问权限,特殊权限位,文件访问控制列表,sudo
- 用户管理:用户和用户组的添加,修改,删除。
- 软件管理:软件安装,查找;软件源的配置;软件编译
- 网络管理:网络状态查看,网卡配置,路由信息
- 人机交互:bash基本语法及配置文件
- 服务管理:systemd,linux常用服务安装及配置。这个内容比较多,比如lamp环境搭建,ftp服务器搭建,samba共享服务,rsyslog日志服务等等。每个展开都是一本书。
6.总结
可以这样说,从来不存在什么“Linux系统”,存在的只是一堆文件和一个内核。然而就是这个内核和这些文件有机的组织在一起才形成了Linux系统。Linux系统管理就是配置和使用一系列软件,实现我们想要的功能,并对其进行维护的过程。Linux核心思想便是一切皆文件。所有的问题从文件入手,即可迎刃而解。
Linux初学者:从不同角度理解Linux系统的更多相关文章
- Linux内存管理(深入理解Linux内核)
Linux的内存管理,实际上是借助80x86的硬件分段和分页电路,将逻辑地址转化为物理地址的. 物理内存中,有一部分是一直(Permanently)映射给内核使用的,这部分主要用于保存内核的代码,以及 ...
- 献给初学者:谈谈如何学习Linux操作系统
本文出自 “技术成就梦想” 博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/569329. 为了能把这篇不错的文章分享给大家.所以请允许我暂时用原创的形式 ...
- 针对于linux初学者的学习(摘自网络端)
一. 选择适合自己的Linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他 ...
- linux初学者-磁盘拉伸缩减篇
linux初学者-磁盘拉伸缩减篇 在系统的使用过程中,往往会出现这样的问题,由于刚开始无法估计需要的磁盘空间,导致后期磁盘空间不够,使得数据没地方存储,又或者后期磁盘空间过大,造成资源的浪费.这种在使 ...
- 从需求的角度去理解Linux系列:总线、设备和驱动
笔者成为博客专家后整理以前原创的嵌入式Linux系列博文,现推出以让更多的读者受益. <从需求的角度去理解linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文 ...
- 深入理解linux系统下proc文件系统内容
深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 理解Linux系统中的load average
理解Linux系统中的load average(图文版) 博客分类: Linux linux load nagios 一.什么是load average? linux系统中的Load对当前CPU工作 ...
- 深入理解linux系统的目录结构(总结的非常详细)
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
随机推荐
- Orchar Core 创建一个模块化的ASP.NET Core应用程序
您将构建什么?您将构建一个模块化的ASP.NET Core MVC Web应用程序,类似于Orchard Core附带的示例"Hello World"应用程序.它包括一个Web应用 ...
- Shell系列(3)- 命令别名
前言 使用alias命令创建命令别名,是Bash的一个基本功能:别名有两种形式,一种暂时的,Linux重启后失效.另外一种永久的通过该配置文件实现 使用更改别名 临时 命令格式:alias 别名='原 ...
- 你会阅读appium官网文档吗
高效学习appium第一步,学会查看appium官方文档.如果能把appium文档都通读一遍,对学习appium大有益处. 而能做到通读appium官方文档的人,想必不是很多,刚开始学习appium的 ...
- 鸿蒙内核源码分析(信号消费篇) | 谁让CPU连续四次换栈运行 | 百篇博客分析OpenHarmony源码 | v49.04
百篇博客系列篇.本篇为: v49.xx 鸿蒙内核源码分析(信号消费篇) | 谁让CPU连续四次换栈运行 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁 ...
- 系统设计实践(03)- Instagram社交服务
前言 系统设计实践篇的文章将会根据<系统设计面试的万金油>为前置模板,讲解数十个常见系统的设计思路. 前置阅读: <系统设计面试的万金油> 系统设计实践(01) - 短链服务 ...
- P3235-[HNOI2014]江南乐【整除分块,SG函数】
正题 题目链接:https://www.luogu.com.cn/problem/P3235 题目大意 \(T\)组游戏,固定给出\(F\).每组游戏有\(n\)个石头,每次操作的人可以选择一个数量不 ...
- NOIP模拟73
T1 小L的疑惑 解题思路 第一眼不是正解,又是 bitset 优化可以得到的 60pts 的部分分. 打着打着突然发现这个东西好像和之前做过的某个题有一些相似,试着打了一下. 然后样例过了,然后对拍 ...
- JVM学习笔记——类加载器与类加载过程
类加载器与类加载过程 类加载器ClassLoader 类加载器 ClassLoader 用于把 class 文件装载进内存. 启动类加载器(Bootstrap ClassLoader): 这个类加载使 ...
- 41 位 Contributor 参与,1574 个 PR,不容错过的版本更新!
6 月 25 日,在商业公司 SphereEx 正式成立一月之余的今天,我们很高兴的宣布 Apache ShardingSphere 迎来了 5.0.0-beta 版本的正式发布.经过半年多的优化和打 ...
- Powerful Number 学习笔记
定义 对于一个正整数 \(n\) ,若完全分解之后不存在指数 \(=1\) ,则称 \(n\) 为 \(\text{Powerful Number}\) . 可以发现的是,在 \([1,n]\) 中, ...