P某的备忘录

ArchLinux安装过程之二三事——前奏

ArchLinux安装过程之二三事——前奏

封面图片 credit: From [ArchWiki](https://zh.wikipedia.org/wiki/Arch_ Linux #/media/File:Arch_ Linux _logo.svg)

本P按:随着本P的 Linux 经验日益增加,之前完全没有门槛做的事情逐步提上日程,这其中就包括完全由自己安装一次 Arch Linux 。作为在本机构纯正血统的存在,Arch Linux 那种纯命令行的安装界面很大程度上会吓退很多包括本P在内萌新,从而一转 Manjaro Linux ,一个图形化安装,对萌新友好的 Linux 发行版本。但,随着本P逐步变成「追新人士」,而自己的系统却不能第一时间更新最新的支持库。一开始,本P考虑过「switching to unstable branch」的选项,但非常不幸地,系统图形化界面被滚挂了。这让本P沉寂许久的对 纯 · Linux 的向往之烈火又重新燃起,于是就有了这一系列文章。

Special Thanks to: nonabyte,以感谢其对这篇文章的除虫以及对本人的教导,应本人要求数据脱敏处理

0x00 前言

这篇文章主要是解决安装过程中必须涉及到的、需要完整了解概念到底在说啥才能清楚自己在干啥的一些名词术语定义。这些玩意本P之前也是一窍不通,但计算机这些东西嘛,就「RTFM」就可以完事了。

0x01 GPT/MBR Partitioning

要讲清楚这两种分区格式,首先要说明分区是个啥。按照惯例祭出定义:

硬盘分区是使用分割编辑器(partition editor) 在磁盘上划分几个逻辑部分,碟片一旦划分成数个分割(Partition),不同类的目录与文件可以存储进不同的分割。越多分割,也就有更多不同的地方,可以将文件的性质区分得更细,按照更为细分的性质,存储在不同的地方以管理文件;但太多分割就成了麻烦。空间管理、访问许可与目录搜索的方式,依属于安装在分割上的文件系统。

——来自Wikipedia

由于 Wikipedia 讲的实在是太好了其实是懒,这里给出各种系统的分区机制:

WIndows:
微软视窗的标准分区机制是创建一个分区C:,Windows操作系统安装在这个分区上,应用软件也默认安装在这个分区上。
UNIX 系统:
对于基于UNIX的操作系统或者 Linux 操作系统来说,分区系统创建了 /、/boot、/home、/var、/opt和交换分区。这就保证了如果其中一个文件系统损坏,其它的数据(其它的文件系统)不受影响,这样就减少了数据丢失。这样做的一个缺点是将整个驱动器划分成固定大小的小分区,例如,一个用户可能会填满/home分区并且用完可用硬盘空间,即使其它分区上还有充足的空闲空间。典型的桌面系统使用另外一种约定;/(根目录)分区包含整个文件系统。/home分区独立分区是一个有用的操作,因为这样允许在不破坏/home分区数据的情况下干净地重新安装(或者安装另外一个 Linux 发行版)。

讲完什么是分区之后,这里可以开始展开MBR以及GPT了,这两种实际上就是目前主流的两种分区方式。它们共同的特点是告诉了你的电脑你的某块硬盘的某片区域,也就是从哪里开始到哪里结束是对应哪个分区。

MBR 与 GPT 实质就是两种分区办法,前一种搭配 BIOS 启动使用,而后一种搭配 UEFI 启动使用。

关于 MBR/GPT 的进一步详述可以看这篇文章,写的很详尽了。(没错,本P偷懒了)

0x02 UEFI/BIOS Boot

以下流程来自 [email protected]张良怀,老天爷啊,title是生物医学工程硕士能理解这么清楚

BIOS启动流程:

  • 系统开机 - 上电自检(Power On Self Test 或 POST)。
  • POST过后初始化用于启动的硬件(磁盘、键盘控制器等)。
  • BIOS会运行BIOS磁盘启动顺序中第一个磁盘的首440bytes(MBR启动代码区域)内的代码。
  • 启动引导代码从BIOS获得控制权,然后引导启动下一阶段的代码(如果有的话)(一般是系统的启动引导代码)。
  • 再次被启动的代码(二阶段代码)(即启动引导)会查阅支持和配置文件。
  • 根据配置文件中的信息,启动引导程序会将内核和initramfs文件载入系统的RAM中,然后开始启动内核。
    UEFI启动流程:
  • 系统开机 - 上电自检(Power On Self Test 或 POST)。
  • UEFI 固件被加载,并由它初始化启动要用的硬件。
  • 固件读取其引导管理器以确定从何处(比如,从哪个硬盘及分区)加载哪个 UEFI 应用。
  • 固件按照引导管理器中的启动项目,加载UEFI 应用。
  • 已启动的 UEFI 应用还可以启动其他应用(对应于 UEFI shell 或 rEFInd 之类的引导管理器的情况)或者启动内核及initramfs(对应于GRUB之类引导器的情况),这取决于 UEFI 应用的配置。

0x03 File Systems

很多人都知道,硬盘需要格式化才能使用,那格式化是做什么用的呢?硬盘通过前面几节讲过的分区表,划分为一个一个的分区后,分区还不能直接使用,需要给分区选择一种数据存储的格式,这种数据存储格式,称之为文件系统,格式化分区,就是给分区写入文件系统的过程。

文件系统有不同的格式,可以在同一块物理硬盘的不同分区,分别选择不同的文件系统。在 Windows 下,经常使用的文件系统是FAT与NTFS;而在 Linux 下,常用的文件系统是 ext4。接下来,我们对各种不同的文件系统分别做介绍。

RAW

RAW其实不是一种文件系统,通常,我们把Windows不能识别其上面文件系统的分区,称为RAW分区。RAW分区要么是没有经过格式化;要么是其上的文件系统由于各种原因损坏了,不能使用。Windows会对RAW分区显示各种错误信息,比如“未格式化”、“分区损坏”等。

RAW分区不能使用,必须将其格式化,写入文件系统后才能使用。

FAT (File Allocation Table)

其实有两种FAT分区,FAT16与FAT32,除非使用特别小的分区(小于512M),现在几乎没有人使用FAT16,通常我们说的FAT,指的就是FAT32。

关于FAT,我们需要知道的是两件事:1、FAT分区中的单个文件不能大于4G;2、通常FAT分区的容量不能大于32G,否则效率会很低。

知道了FAT的两个限制,你就知道,对于现在动辄上T的大容量硬盘而言,FAT不是一个好的选择。事实上,现在FAT更多的被用于U盘、内存卡等小容量存储设备中。

值得一提的是, Linux 挂载 FAT32 文件系统的存储介质显示的是vfatvfat是当今挂载FAT32文件系统的最常用驱动程序。

NTFS (New Technology File System)

NTFS是使用Windows系统的电脑中,最适合的文件系统~~(顺带吐槽一句这个命名方式真随意)~~。现在大多数电脑中,硬盘分区上的文件系统都是NTFS。相比较于FAT,NTFS有很多的优点。比如,NTFS不存在使用FAT时的那两个限制。

NTFS的限制在于,NTFS是微软公司自己开发的文件系统,而且微软从来没有正式公布过NTFS的技术内幕。这样,当你的硬件设备,一旦不是使用Windows系列的操作系统,那么,基本就不适合用NTFS了。

Windows在移动设备领域的市场占有率很小,手机、MP3/4、音响等,基本上都不是基于Windows的,在这些设备上使用的存储设备,比如U盘、内存卡等,都不能使用NTFS。所以象U盘、内存卡等小容量的便携时存储设备,更多的是使用FAT。FAT既可以在移动设备上使用,也可以在基于Windows的计算机上使用。

NTFS的另一个限制是,NTFS是基于传统机械硬盘设计的文件系统,在基于闪存(flash memory)的存储设备(比如U盘、固态硬盘、SD卡等)上使用NTFS,由于NTFS特有一些实现机制,会减少设备的使用寿命。这也是很多人不推荐在移动存储设备上使用NTFS的原因之一。

ExFAT (Extended File Allocation Table File System)

现在U盘、SD卡等移动存储设备的容量也越来越大,为了克服前面我们说过的FAT的两个限制,现在越来越多的设备使用ExFAT文件系统。

现在U盘、SD卡等移动存储设备的容量也越来越大,为了克服前面我们说过的FAT的两个限制,现在越来越多的设备使用ExFAT文件系统,ExFAT完全没有使用FAT时的两个限制。

需要说明的是,ExFAT是微软公司,专门为基于闪存的大容量移动存储设备~~(又是微软……)~~,开发的文件系统。首先ExFAT适合U盘、Sd卡、固态硬盘等,但不适合传统的机械硬盘使用;其次,ExFAT出现的时间比较短、且需要微软的授权,很多移动设备,特别是老式的,并不支持ExFAT。

ext (extended file system)

延伸文件系统是为 Linux 核心所做的第一个文件系统。最早由 Rémy Card 所创作,采用 Unix 文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。它是在 Linux 上,第一个利用虚拟文件系统实现出的文件系统,在 Linux 核心0.96c版中首次加入支持,最大可支持2GB的文件系统。

其后继者为ext2与xfs,这两个文件系统同时在 Linux 上竞争,最后是由ext2获胜。ext2修正了ext一些被人诟病的缺点,例如i-node的不变性与文件空间碎裂化问题。后续版本还有ext3、ext4。

以上材料摘编整理自这里这里,以及 Wikipedia


文件系统啥的,本P觉得知道这么多就够了,具体原理啥的……本P也不是造磁盘的,等本P啥时候对其感兴趣了再说吧。

0x04 Linux Partition Settings

有了前面那么多基础,接下来的问题就是怎么分好区。众所周知 Linux 的文件系统树是长这样的:

图片 credit: From Pinterest

而与 Windows 的「完全没有感觉」不同, Linux 直观地将挂载与否的选项交给用户处理,这里先祭出挂载的定义:

挂载(mounting)是指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源)上的电脑文件和目录可供用户通过计算机的文件系统访问的一个过程。
一般来说,当计算机关机时,每个已挂载存储都将经历一次卸载,以确保所有排队的数据被写入,并保证介质上文件系统结构的完整性。

我要不要省略每个定义都要说来自 Wikipedia

Windows 默认会把连接在计算机上的存储设备统一挂载,然后各位就可以通过「文件管理器」访问C:\ D:\ E:\ ... 盘了。但 Linux 不,在连接上存储介质后,你需要手动挂载才能在文件管理器中访问存储介质中的内容。但,光接上设备却不挂载是什么操作呢?本P个人粗浅地认为这是 Linux 之减小电脑复载的一种手段,试想有一个文件目录高度复杂的移动硬盘接上电脑,Windows 电脑自动挂载是省事了,但估计打开转圈圈载入文件系统要半天甚至在性能差的电脑上会卡死,而如果你不急着用的话,那么电脑就被迫闲置了, Linux 下这种情况就可以先不挂载。(这种情况应该过于极端几乎不会发生吧)

讲到这里,我们可以开始讲 Linux 安装的分区操作了。在 Manjaro 图形界面下,它长这样:

image credit: [email protected]

大概意思一下吧,反正 Arch 也不会用图形化安装界面。总之挂了的地方,硬盘上会专门分出一个区进行partition。如果你挂的文件夹比较多并且单独挂上了系统的话,在重装系统的时候,就不会因为格式化的问题发愁了,因为系统只会格式化系统区域而不会丝毫影响到你的文件。

一个 Linux 的通常(包括自动安装程序)分区表是这样的:

可以发现自动安装程序也不会乱想,就只是把系统引导单独提了出来,然后挂根目录/,最后设置 swap 分区。

0x04 Swap Partition

那这个 Swap 是个啥呢,简而言之就是「虚拟内存」。 Linux 内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在 Linux 系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。可以这么理解,这个「Swap」的充当了「备份内存」的作用。

0x05 DCHP

同样放上 Wikipedia 的定义:

动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP),又称动态主机组态协定,是一个用于IP网络的网络协议,位于OSI模型的应用层,使用DHCP协议工作,主要有两个用途:

  • 用于内部网或网络服务供应商自动分配IP地址给用户
  • 用于内部网管理员对所有电脑作中央管理

DHCP在网路中缺之不可,分为两个部分:一个是服务器端,另一个是客户端。所有客户机的IP地址设定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP地址。

自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。
动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用,而手动分配是由DHCP服务器管理员专门指定IP地址。
  
DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。 如果已配置冲突检测设置,则 DHCP 服务器在将租约中的地址提供给客户机之前会试用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动TCP/IP配置的另一台非 DHCP 计算机使用。

个人认为了解到这层,而且会查 DHCP 如何分配给设备的地址以及DCHP服务器地址就够了,更多的东西还是得学计算机网络原理。

0x06 Static IP address

看名字,「静态」IP,看了一圈下来,大概知道它是由ISP永久分配给网络设备的地址,即便是设备重启也不会发生改变。目前静态IP地址拥有两个版本:IPv4和IPv6。静态IP地址通常会分配给服务器托管网站,并提供电子邮件、VPN和FTP服务。在静态IP寻址中,网络中的每台设备都拥有自己的地址(无重复),且必须手动配置静态IP地址。当新设备连接到网络时,必须进行手动配置,输入IP地址、子网掩码、默认网关和DNS服务器等信息。

举个例子,Web 服务器用的就是静态IP。

我们说回来,与静态IP地址相反的是动态IP地址,而关于静态IP和动态IP地址一直以来都是不是本P major 的网络技术人员们热议的话题,动态IP地址是一个不断变化的地址,若是要创建动态IP地址,网络必须配置并运行DHCP服务器。DHCP服务器为连接到网络的所有设备分配了一个空闲的IP地址。DHCP是一种向物理网络上的网络设备自动分配动态IP地址的方法,它能自动为网络设备分配或更新IP地址,以及其他配置信息。

Powered by Gridea. CopyRight 2018-2020 MrPeterJin's Media Dept.