[Linux基础]-0-Linux版本分类与目录介绍
引言
这篇文章首先介绍Linux这个大家族中不同的发行版的共同点和区别;然后介绍了Linux的目录树结构,以及每个目录的功能;最后演示三个不同的发行版的安装。
文章目录
0×1.Linux版本分类介绍
Linux是一个开源的操作系统内核,最早由Linus Torvalds在1991年发布。它是UNIX-like操作系统的一种,并且在最初的版本中只包含了最基本的功能。现如今,Linux已经发展成了服务器上首选的操作系统,不仅如此在个人电脑上安装Linux桌面版也会有非常不错的体验,下面是最常见的Linux版本5大系列,以及这些系列下主流的Linux发行版介绍。
➤RHEL系:
● Red Hat Enterprise Linux [RHEL系列官方版本] -- 是一个由红帽公司开发的商业版Linux操作系统,大多数用在服务器上,如果需要更新系统中的软件包,和提供安全服务,这些功能都不是免费的
● CentOS [已经停止维护] -- CentOS是一个开源的、基于RHEL源代码构建的Linux发行版,后被作者卖给了红帽公司,但红帽公司后来公布,CentOS项目已经于2021年结束。说明在这之后不会出现新的CentOS系统了,取而代之是CentOS Stream这个滚动发行版本,这个滚动发行版的目的是作为RHEL的先行测试版本存在
● Rocky [RHEL系列的服务器首推] -- CentOS的作者发布的,面相企业服务器的Linux版本,已经实现对CentOS以及RHEL软件和错误的完全兼容,并且承诺永远免费,是一个完全由社区维护的版本。CentOS的最佳替代产品。
● Fedora [RHEL系列桌面版推荐] -- 对于个人使用来说,如果不需要使用 RHEL 提供的商业级技术支持和服务,又想使用这个系列作为桌面版系统使用,建议使用Fedora ,它们提供的功能和应用程序与 RHEL 相当,但不需要支付任何费用。
➤Debian系:
● Debian [官方版本] -- 服务器桌面都可
● Ubuntu [Debian衍生版] -- 是Debian系列发展的最好的一个衍生版分支,目前在服务器端和桌面端都很优秀。
● Mint [Debian衍生版] -- 是Debian系列对硬件支持优化的最好的一个桌面版本,尤其在支持古老硬件上。
● Kali [Debian衍生版] -- 是黑客世界的瑞士军刀,通过Debian系统改装,编译安装了大量的渗透测试工具。
➤Arch系:
● Arch [官方版本] -- 我最喜欢的一个系列,没有之一。
● Manjaro [Arch衍生版] -- 预装了不少工具,并且如果下载的是KDE版本,几乎开箱即用,但更新比较保守,所有更新比官方推送晚一个月。
● EndeavourOS [Arch衍生版] -- 一个开箱即用的Arch衍生版,比Manjaro激进和年轻,几乎同步官方更新,并且更加激进的采用最新内核。
● BlackArch [Arch衍生版] -- 同样是黑客世界的瑞士军刀,编译安装了大量的渗透测试工具,工具比Kali还要多一些。
➤Gentoo系:
● Gentoo [官方版本] -- 如果说Arch是战斗机飞行员,那么Gentoo就是宇航员。
● Funtoo [Gentoo衍生版] -- 没用过,所以不多做介绍了。
➤国产系:
● openEuler [官方版本] -- 阿里投资的操作系统,用在服务器端很不错。
● Deepin [Ubuntu衍生版] -- 开箱即用的桌面版,对如果Windows环境依赖,推荐使用,毕竟有专业版Wine,所以可以安装QQ和微信迅雷等工具,算是为数不多能够在Linux支持众多Windows软件的系统,不过,也许是为了兼容Windows软件的关系,很占硬件资源,稳定性也不如其他Linux发行版。
那么这么多发行版,他们主要是通过什么分类的呢?根据我查到的资料,最主要的原因是因为包管理器的不同,简单的理解就是,Windows之所以也是一个系列,就是因为上面的安装包都是exe格式的,并且这个exe格式没办法直接安装在其它系统上,例如exe文件直接拷贝到MacOS系统上就无法安装,因为MacOS的包管理器无法解析exe这种方式封装的安装包,不同系列的Linux之间也是如此,但这不是绝对的,例如Archlinux就能够通过软件将Debain系的包重新打包成Arch系列能够安装的软件包。
0×2.Linux开机过程简述
1.当我们开机之后,主板会去读取它一块闪存固件芯片中的一个自检引导程序,对一系列硬件设备进行初步检测,这个检测程序就叫做,BIOS或UEFI:
● BIOS:当主板设置成传统模式(Legacy)启动的时候,就会加载BIOS程序自检;BIOS全名叫基本输入输出系统(Basic Input-Output System),最早是为 IBM PC 开发,用于处理硬件初始化和启动过程,从 2010 年起已逐渐被技术上不受限的 UEFI 替换。
● UEFI:当主板设置成UEFI模式启动的时候,就会加载UEFI程序自检;统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)
BIOS即将淡出历史舞台,所以不再多做介绍,相比BIOS,UEFI能够同时支持MBR和GPT格式创建分区表的硬盘,以GPT格式创建分区表的硬盘,其大小可以超过2T,并且主分区可以多达128个,而BIOS只支持大小小于2TB的硬盘。
2.那么UEFI是怎么启动我们硬盘上系统的呢?首先,UEFI 不会去读取硬盘的主引导记录中任何引导代码,相反,UEFI 的启动过程依赖“非易失性随机访问存储器”(NVRAM)中的引导条目,这个NVRAM也是主板上的一块闪存芯片,里面就储存了我们在主板的Boot启动列表中指定的启动硬盘顺序,UEFI读取到这个信息之后,再去找这个启动顺序中指定的第一块硬盘,并寻找硬盘分区中的EFI分区(EFI分区只支持FAT格式,如果EFI分区被格式化成Ext3或NTFS分区,则启动进程无法读取其中的内容),如果找到,就执行其中的EFI启动程序,在Linux中就会去启动引导加载程序Grub,Grub会让用户选择从硬盘上的哪个系统启动(假设装了多个系统在同一块硬盘)。
除此之外,Linux中还有一种启动方式叫做EFI Stub,这种启动方式甚至不需要EFI分区,对于硬件来说,拥有EFI Stub功能的Linux内核能够直接引导启动。
0×3.Linux的目录树结构解析
不同于Windows是以磁盘盘符作为起点,Linux中的文件结构是以根目录为起点的树状结构,所有目录的绝对路径都是从根目录开始的。
➤标准Linux目录树结构如下:
● / -- 根目录,也是所有目录的起点;
● /bin -- bin是binary的缩写,/bin目录存放了一些我们经常使用的Linux命令程序。例如:cd,cat;
● /sbin -- /sbin目录和/bin目录有些类似,都是存放二进制文件。比较特殊的是,/sbin目录存放的都是系统管理的命令程序,一般只有root用户能使用。例如fdisk;
● /boot -- /boot中存放的主要是系统启动时需要用到的文件,比如EFI、GRUB以及Linux内核;
● /dev -- Linux将所有东西都看成文件,设备也不例外,不论是实体的硬件设备还是虚拟设备,在Linux中,IDE接口的硬盘在/dev下以hd开头显示,如果存在多块IDE硬盘,第一块被识别层hda,第二块则为hdb,如果硬盘有分区,则分区号从1开始递增,例如hda1,hda2;SATA、SCSI、USB接口的硬盘以sd开头显示,例如sda1,sda2;NVMe接口(M.2)的硬盘以nvme开头显示,例如nvme0n1,nvme0n2,如果有分区的话就是nvme0n2p2;
● /etc -- 存放重要的配置文件,例如/etc/ssh/sshd_config;
● /home -- home目录中存放的是每个用户的用户家目录,例如系统中有两个用户hkmm1和hkmm2,那么就会在这个目录下存在/home/hkmm1和/home/hkmm2这两个用户的家目录,并且普通用户不能访问其他用户的家目录,用户的家目录保存着当前用户的个性化配置文件,安装的软件配置信息等;
● /lib -- 重要的共享库目录,包含/bin和/sbin中这些程序需要调用的库文件;
● /lost+found -- 当文件系统崩溃时,在下次启动时将会进行文件系统自检,任何在崩溃过程中损坏的文件都将被放入/lost+found,用作系统崩溃时的数据恢复用的文件;
● /media -- 当我们将U盘、光盘插入系统的时候,会自动在这个目录创建挂载目录;
● /mnt -- 系统提供的临时挂载点,可以将一些硬盘暂时挂载到这个目录下操作;
● /opt -- opt是Optional的意思,系统中安装的可选软件包被存放在/opt目录中。一些大型软件也会安装到这个目录下;
● /root -- 和一般用户的home目录放在/home/{用户名}不同,root用户的home目录专门被放在/root;
● /run -- run目录用来存放应用程序在运行期间需要的一些短暂存在的文件,比如socket和pid文件,这些文件对这些应用程序的运行很重要,因此不能把他们放在/tmp目录下,因为/tmp目录下的文件有可能会被系统清空;
● /tmp -- 应用程序会将一些临时文件存放在/tmp目录中,一般来说当系统重启后,/tmp下的文件会被自动清空;
● /srv -- srv目录主要用来存放一些系统提供的网络服务的数据,例如http服务默认目录通常在/var/www/html;
● /sys -- 包含虚拟文件系统,其中包含有关系统硬件和内核的信息;
● /usr -- 用户二进制文件和只读文件目录,Linux将普通用户和系统使用的程序分开存放,比如上面提到过,系统使用的一些重要程序存放在/bin,而那些不重要的程序就被放在/usr/bin。不太重要的系统管理程序存放在/usr/sbin而不是/sbin;/usr/bin 存放用户命令;/usr/include 存放编程语言的头文件和包含文件;/usr/lib 存放各个应用程序的库函数和目标文件;/usr/local 存放系统管理员下载的软件的安装目录;/usr/sbin 存放不常用的系统命令;/usr/src 存放源码 ;
● /var -- 变动数据目录,一般用来存放经常变动的数据,比如日志文件和缓存文件; /var/cache 存放应用程序运行产生的临时文件; /var/lib 存放程序在执行过程中需要使用到的数据文件,每个软件在此目录下都有自己独自的目录;/var/lock 存放程序的锁状态;/var/log 存放各种日志文件;/var/mail 存放个人电子邮箱;/var/run 有些程序在运行后,会将他们的pid、socket文件放置到这个目录中;
在Linux中有几个很相似的目录,/bin、/sbin、/usr/bin、/usr/sbin,这几个目录目前官方社区正在商量合并,以解决程序员在打包程序的时候,对这几个文件理解上的困扰。