本篇随笔为Linux实验报告一,讨论linux系统安装与初步应用。受时间精(neng)力所限,本文多是一些简略的描述。如果发现事实性错误,还望读者不吝指正。
Linux的历史
我们都知道机器本身不具备供人操作的能力,我们通过精巧的电路设计让它有了基本的记忆存储、条件判断等基本逻辑功能,然而这些依旧无法被普通大众甚至应用开发者所接受,所以我们需要一个操作系统来连接硬件与应用。Linux就是这样一个连接件。
在Linux还未诞生的年代,intel的386已经初露头角,成为民用级的高性能cpu,所以,Linux的作者托瓦兹(Linus Torvalds)便基于此硬件撰写了Linux内核,此后又在全世界极客的共同努力下不断更新,其现状如下:
Version | Maintainer | Released | Projected EOL |
---|---|---|---|
4.14 | Greg Kroah-Hartman | 2017-11-12 | Jan, 2020 |
4.9 | Greg Kroah-Hartman | 2016-12-11 | Jan, 2019 |
4.4 | Greg Kroah-Hartman | 2016-01-10 | Feb, 2022 |
4.1 | Sasha Levin | 2015-06-21 | May, 2018 |
3.16 | Ben Hutchings | 2014-08-03 | Apr, 2020 |
3.2 | Ben Hutchings | 2012-01-04 | May, 2018 |
然而Linux的早期维护都是一些极客在做,普通使用者并没有直接编译源码或修改它们的能力,同时,受限于GPL授权,Linux本身不能用于牟利。于是便有一些开发者做出易于安装的发行版本,同时加上一些自己的特色软件,并提供后续的长期维护,做出Linux的distribution版本,如商业公司提供的Red Hat.此外还有一些社区版本,如Debian、CentOS等。
硬盘
非易失性存储器已经发展到闪存阶段,我们现在日常使用的存储设备多是由闪存制作,如U盘,固态等。从玩家的角度来看,这里面还有非常多的分类,但总的来讲,现在主流的硬盘有由机械结构构成的机械硬盘和基于闪存的固态硬盘。然而,不严格的讲,固态硬盘的历史不过10年,在Windows或Linux刚诞生的年代,机械硬盘才是主流。同时,直到现在,主流的机械硬盘容量还在1T上下。但已经有超过10T的单盘固态硬盘了。同时通过RAID 0等方式,容量可以大幅扩充。因此,对操作系统来讲,考虑2T以上的容量是很必要的。顺带一提,由intel主推的3D XPoint存储方案也已有产品推出,其4k性能有质的突破。
由于机械硬盘本身的结构所限,其4k性能极低,延时极高,为此,将机械硬盘分区,将数据存储在较为集中的地带,有助于提高性能,同时,由于可以保证分区之间的独立性,分区有利于保证数据的安全。机械硬盘被分为大量扇区,其中第一扇区比较特殊。在开机启动时,系统并非直接就能进入操作系统,而需要首先经过BIOS,接着转向第一扇区,依靠第一扇区内的主引导记录(MBR,Main Boot Record)的帮助,才最终指向目标操作系统,这也是双系统可行的原因。第一扇区通常有512Bytes,而MBR占446Bytes,而第一扇区中还有占据64Bytes的分区表,用来记录整颗硬盘的分区状态。由于分区表所在区块仅有 64 Bytes 容量,仅能有四组记录区,每组记录区记录了该区段的启始与结束的柱面号码,也就是分区信息。虽然第一扇区只能有四个分区记录,但其他的扇区也可以存放分区表。办法是将四个分区记录中的第一个(或前两个、前三个)用来记录分区信息,我们称为主分区,而将第二个用来记录其他分区表的位置,我们称这一块为延伸(拓展)分区。诸位都知道相对于文件本身,指针是很小的。因此,延伸分区所能指向的范围实在太大了,而我们可能会将这样大的范围再次划分,比如分成D盘,E盘等。因此,我们在延伸分区的大框架内,对它做切割,分成各个小块,这些小块称为逻辑分区。借用鸟哥的Linux私房菜中的图示如下:
由于单个分区表只有16Bytes的大小,因此,MBR分区表会出现如下限制:1.操作系统无法抓取到 2.2T 以上的磁盘容量!2.MBR 仅有一个区块,若被破坏后,经常无法或很难救援。3.MBR 内的存放开机管理程序的区块仅 446Bytes ,无法容纳较多的程序码。因此,现在有了更好的GPT方法来做分区。 其通过34个LBA区块记录信息,保证容错和补救,同时单一分区可提供最高8ZB(230TB)的容量。需要注意的是,GPT分区中不再有延伸分区这些说法,可以将每一块都看作主分区。
MBR中存在各类问题的同时,BIOS也逐渐被发现存在安全性等方面的问题,业界已使用UEFI取代BIOS。因此,如果现在用U盘等安装Linux,很可能是通过UEFI+GPT,而非BIOS+MBR,不过,百度上也搜索到了BIOS+GPT的奇怪结果:-)而从对分区的要求上来讲,BIOS+MBR安装系统要求硬盘只要存在非隐藏、活动的主分区就可以了;而UEFI+GPT要求硬盘上除了存在ESP分区(EFI system partition),还必须存在至少一个主分区,具体可参看http://www.pc841.com/article/20160729-70127.html。
Ubuntu的安装
前面已经提过distrubtion和Linux内核本身的区别了,在此,使用Ubuntu16.04版本。Linux常见的安装方式是windows+linux,或者单独使用linux,或者在虚拟机中配置安装。由于已经安装双系统,在此仅给出VMware虚拟机安装步骤。在此说明,如果不考虑兼容性问题,双系统的安装仅比虚拟机安装多出一个磁盘分区的过程。
虚拟机的配置等直接略过,直接到安装阶段。
由于使用虚拟机,并设置了单虚拟硬盘,因此此处只有一个sda,如果是双系统安装,这一步需要注意,确定好哪一个是已分出的空闲磁盘。sda是指sata或scsi型的磁盘,现在应该只有sata类型的了,不过虚拟机配置的是scsi类型。
首先分一点位置给swap,此部分可能用于缓存。
接着挂载/boot分区,此分区被称为引导分区,也就是引导操作系统启动的程序所在的分区。但似乎在GPT模式下已不再必须。
依次类推,分别创建/home目录,此目录用于保存自己创建的文件;/usr目录,此目录用于保存安装的软件,需要注意的是,此区域需要至少4.2GB的容量;以及最重要的根目录/。一个错误的最终截图如下:
此处留了一点空间,只是单纯的担心以后会不会出什么玄学问题,具体有没有用并不清楚。
读者或许注意到上面这张图的问题,这是我第一次配完时的图,然而在后续安装时崩溃了。问题就在于/boot目录空间太小,我初始以为它并不重要,结果直接导致安装空间不够,好在我不是第一个出这问题的。。。。具体可参看上上张图。
同时,这里应该说明一下挂载与挂载点。linux中将一切都视为文件,因此,所有东西都应该能在文件系统中找到。而挂载点就是linux中的磁盘文件系统的入口目录,上面那几个目录都是挂载点,而挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上这样的操作。
这里还碰到了一个小麻烦,由于分辨率的问题,我是看不到安装的全部界面的。此时按住ALT+鼠标左键,可以拖动安装界面,完成安装。不过似乎更好的方式是在查看中选择适应客户机。
此处也可以看到,安装时与上文主分区,逻辑分区对应了起来。
同时,还要在此说明的是,linux的文件系统主要是支持ext2,ext3,ext4,可以看到,此处用的就是较新的ext4;相对应的,windows主要支持FAT32和NTFS,FAT32在今天其实已经不好用了,因为它只能支持单文件4G,这显然经常不够。ext4就很可怕了,支持16TB的单文件,简直难以置信。
安装时最后的提醒:
常用软件安装
① 首先安装VMware tools。
将其拷贝到桌面上。
在文件系统中,切换到桌面,然后输入指令tar -zxvf 文件名,解压完后,进入目录vmvare-tools-distrib,接着执行sudo ./wmware-install.pl。这里就是上面提到的崩溃的地方,但不管怎么样,最终还是装起来了。它的效果是,可以无缝的在虚拟机内和外部切换,比如直接将文件复制到里面,而之前他们是各复制各的。
② 搜狗输入法
先说一句,自带的输入法也还能用。
安装步骤:1.在官网下载好安装包 2.以root用户身份运行,在终端输入apt-get -f install(此处网络速度极慢,待解决)。
此时便已安装成功,可在右上角切换使用。
在此解释,-f用于修补缺失的包,此处搜狗输入法需要facix的更新支持。
总结
至此,linux的安装以及初步使用便告一段落。linux给我印象最深的一点就是一切皆文件,但到目前为止,确实没有看到linux的特色功能,期待后续的学习。
参考书目:鸟哥的Linux私房菜基础学习篇第四版(2015)