linux与硬件的搭配
桌面计算机(Desktop)的用户,应该会用到 X Window 系统,此时,显示适配器的优劣与内存的大小可就占有很重大的影响。如果是想要做成文件服务器, 那么硬盘或者是其他的储存设备,应该就是您最想要增购的组件
认识计算机的硬件配备
选择与 Linux 搭配的主机配备
- 如果你的 Linux 主要是作为小型服务器使用,并不负责学术方面的大量运算,而且也没有使用 X Window 的图形接口,那你的硬件需求只要像底下这样就差不多了:
- CPU
CPU 只要不是老旧到会让你的硬件系统当机的都能够支持 - RAM
主存储器是越大越好。事实上在 Linux 服务器中,主存储器的重要性比 CPU 还要高的多!因为如果主存储 器不够大, 就会使用到硬盘的内存置换空间(swap)。 - 硬盘
如果是一般小型服务器,通常重点在于容量,硬盘容量大于 20GB 就够用到不行了! 但如果你的服务器是作为备份或者是小企业的文件服务器,那么你可能就得要考虑较高阶的磁盘阵列(RAID)模式了。 - 显卡
如果需要 X window 系统时,你的显示适配器最好能够拥有 32MB 以上的内存容量 - 网卡
- 光盘、软盘、键盘与鼠标
一般小型主机且不含 X Window 系统:
o 用途:家庭用 NAT 主机(IP 分享器功能)或小型企业之非图形接口小型主机。
o CPU:五年内出产的产品即可。
o RAM:至少 512MB,不过还是大于 1GB 以上比较妥当!
o 网络卡:一般的以太网络卡即可应付。
o 显示适配器:只要能够被 Linux 捉到的显示适配器即可,例如 NVidia 或 ATI 的主流显示适配器均可。
o 硬盘:20GB 以上即可!
桌上型(Desktop)Linux 系统/含 X Window:
o 用途:Linux 的练习机或办公室(Office)工作机。(一般我们会用到的环境)
o CPU:最好等级高一点,例如 Intel I5, I7 以上等级。
o RAM:一定要大于 1GB 比较好!否则容易有图形接口停顿的现象。
o 网络卡:普通的以太网络卡就好了!
o 显示适配器:使用 256MB 以上内存的显示适配器!(入门级的都这个容量以上了)
o 硬盘:越大越好,最好有 60GB。
中型以上 Linux 服务器:
o 用途:中小型企业/学校单位的 FTP/mail/WWW 等网络服务主机。
o CPU:最好等级高一点,例如 I5, I7 以上的多核心系统。
o RAM:最好能够大于 1GB 以上,大于 4GB 更好!
o 网络卡:知名的 broadcom 或 Intel 等厂牌,比较稳定效能较佳!
o 显示适配器:如果有使用到图形功能,则一张 64MB 内存的显示适配器是需要的!
o 硬盘:越大越好,如果可能的话,使用磁盘阵列,或者网络硬盘等等的系统架构, 能够具有更稳
定安全的传输环境,更佳!
o 建议企业用计算机不要自行组装,可购买商用服务器较佳,因为商用服务器已经通过制造商的散热、
稳定度等测试,对于企业来说,会是一个比较好的选择。
各硬件装置在 Linux 中的文件名
- 在 Linux 系统中,每个装置都被当成一个文件来对待
- 举例来说,IDE 接口的硬盘的文件名即为/dev/sd[a-d],其中,括号内的字母为a-d当中的任意一个,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd 这四个文件的意思。
- 在 Linux 这个系统当中,几乎所有的硬件装置文件都在/dev 这个目录内, 所以你会看到/dev/sda, /dev/sr0 等等的文件名
1. 由于 IDE 界面的磁盘驱动器几乎已经被淘汰!因此现在连 IDE 界面的磁盘文件名也都被仿真成 /dev/sd[a-p] 了!
2. 此外, 如果你的机器使用的是跟因特网供货商 (ISP) 申请使用的云端机器,这时可能会得到的是虚拟机。为了加速,虚拟机内的磁盘是使用仿真器产生, 该仿真器产生的磁盘文件名为 /dev/vd[a-p] 系列的文件名
更多 Linux 核心支持的硬件装置与文件名,可以参考如下网页:https://www.kernel.org/doc/Documentation/devices.txt
使用虚拟机学习
目前普通的中阶个人计算机的 CPU 微指令集中,就已经整合了硬件虚拟化指令集了。随便一台计算机就能够虚拟化出好几台逻辑独立的系统了
- Virtualbox 官网 (https://www.virtualbox.org)
- Virtualbox 官网教学 (https://www.virtualbox.org/manual/ch01.html)
- Fedora 教学:http://docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/part-Virtualization-Virtualization_Refere
nce_Guide.htm
磁盘分区
Linux 系统是安装在计算机磁盘
磁盘连接的方式与装置文件名的关系
正常的物理机器大概使用的都是 /dev/sd[a-p] 的磁盘文件名,至于虚拟机环境底下,为了加速,可能就会使用 /dev/vd[a-p] 这种装置文件名
再以 SATA 接口来说,由于 SATA/USB/SAS 等磁盘接口都是使用 SCSI 模块来驱动的, 因此这些接口的磁盘装置文件名都是/dev/sd[a-p]的格式。 所以 SATA/USB 接口的磁盘根本就没有一定的顺序,那如何决定他的装置文件名呢? 这个时候就得要根据 Linux 核心侦测到磁盘的顺序了
硬件概论
开机流程中的 BIOS 与 UEFI 开机检测程序
BIOS 搭配 MBR/GPT 的开机流程
BIOS 就是在开机的时候,计算机系统会主动执行的第一个程序了
接下来 BIOS 会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS 会依据使用者的设定去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的 MBR 位置。MBR 这个仅有 446 bytes的硬盘容量里面会放置最基本的开机管理程序, 此时 BIOS 就功成圆满,而接下来就是 MBR 内的开机管理程序的工作了。
这个开机管理程序的目的是在加载(load)核心文件, 由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接下来就是核心文件的工作,开机管理程序与 BIOS 也功成圆满,将之后的工作就交给大家所知道的操作系统啦!
简单的说,整个开机流程到操作系统之前的动作应该是这样的:
- BIOS:开机主动执行的固件,会认识第一个可开机的装置;
- MBR:第一个可开机装置的第一个扇区内的主要启动记录区块,内含开机管理程序;
- 启动引导程序(boot loader):一支可读取核心文件来执行的软件;
- 核心文件:开始操作系统的功能…
第二点要注意,如果你的分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 兼容区块读取第一阶段的开机管理程序代码, 如果你的开机管理程序能够认识 GPT 的话,那么使用 BIOS 同样可以读取到正确的操作系统核心
由于 LBA0 仅提供第一阶段的开机管理程序代码,因此如果你使用类似 grub 的开机管理程序的话,那么就得要额外分区出一个『 BIOS boot 』的分区槽, 这个分区槽才能够放置其他开机过程所需的程序代码!在 CentOS 当中,这个分区槽通常占用 2MB 左右而已。
BIOS 与 MBR 都是硬件本身会支持的功能,至于 Boot loader 则是操作系统安装在 MBR 上面的一套软件了。由于 MBR 仅有 446 bytes 而已,因此这个开机管理程序是非常小而美的。 这个 boot loader 的主要任务有底下这些项目:
- 提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能!
- 载入核心文件:直接指向可开机的程序区段来开始操作系统;
- 转交其他 loader:将开机管理功能转交给其他 loader 负责。
第三点很有趣喔!那表示你的计算机系统里面可能具有两个以上的开机管理程序呢! 有可能吗?我们的硬盘不是只有一个 MBR 而已?是没错啦!但是开机管理程序除了可以安装在 MBR 之外, 还可以安装在每个分区槽的启动扇区(boot sector)喔!瞎密?分区槽还有各别的启动扇区喔? 没错啊!这个特色才能造就『多重引导』的功能
我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分区槽,其中第一、二分区槽分别安装了 Windows 及 Linux, 你要如何在开机的时候选择用 Windows 还是 Linux 开机呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的开机管理程序,那么整个流程可以图标如下:
在上图中我们可以发现,MBR 的开机管理程序提供两个选单,选单一(M1)可以直接加载 Windows 的核心文件来开机; 选单二(M2)则是将开机管理工作交给第二个分区槽的启动扇区(boot sector)。当使用者在开机的时候选择选单二时, 那么整个开机管理工作就会交给第二分区槽的开机管理程序了。当第二个开机管理程序启动后,该开机管理程序内(上图中)仅有一个开机选单,因此就能够使用 Linux的核心文件来开机啰。 这就是多重引导的工作情况啦!我们将上图作个总结:
- 每个分区槽都拥有自己的启动扇区(boot sector)
- 图中的系统槽为第一及第二分区槽,
- 实际可开机的核心文件是放置到各分区槽内的!
- loader 只会认识自己的系统槽内的可开机核心文件,以及其他 loader 而已;
- loader 可直接指向或者是间接将管理权转交给另一个管理程序。
UEFI BIOS 搭配 GPT 开机的流程
- UEFI BIOS的产生背景
BIOS 其实不懂 GPT !还得要透过 GPT 提供兼容模式才能够读写这个磁盘装置~而且 BIOS 仅为 16 位的程序,在与现阶段新的操作系统接轨方面有点弱! 为了解决这个问题,因此就有了 UEFI (Unified Extensible Firmware Interface) 这个统一可扩展固件的产生
UEFI 主要是想要取代 BIOS 这个固件接口,因此我们也称 UEFI 为 UEFI BIOS ,用 C 程序语言编写
基本上,传统 BIOS 与 UEFI 的差异可以用 T 客帮杂志汇整的表格来说明
与传统的 BIOS 不同,UEFI 简直就像是一个低阶的操作系统~甚至于连主板上面的硬件资源的管理, 也跟操作系统相当类似,只需要加载驱动程序即可控制操作。无须担心未来除了 Linux 之外,还得要增加学一个 UEFI 的操作系统
- 缺点
- UEFI 当初在发展的时候,就制定一些控制在里头,包括硬件资源的管理使用轮询 (polling) 的方式来管理,与 BIOS 直接了解CPU 以中断的方式来管理比较,这种轮询 的效率是稍微慢一些的,另外,UEFI 并不能提供完整的快取功能,因此执行效率也没有办法提升。
- 因为效果华丽但效能不佳,因此这个 UEFI 大多用来作为启动操作系统之前的硬件检测、 开机管理、软件设定等目的,基本上是比较难的。
-
停止与运行
同时,当加载操作系统后,一般来说,UEFI 就会停止工作,并将系统交给操作系统,这与早期的 BIOS 差异不大。比较特别的是,某些特定的环境下, 这些 UEFI 程序是可以部份继续执行的,以协助某些操作系统无法找到特定装置时,该装置还是可以持续运作。 -
安全相关
由于过去 cracker 经常藉由 BIOS 开机阶段来破坏系统,并取得系统的控制权,因此 UEFI 加入了一个所谓的安全启动 (secure boot) 机制, 这个机制代表着即将开机的操作系统必须要被 UEFI 所验证,否则就无法顺利开机!微软用了很多这样的机制来管理硬件。 不过加入这个机制后,许多的操作系统,包括 Linux ,就很有可能无法顺利开机喔!所以,某些时刻,你可能得要将 UEFI 的secure boot 功能关闭, 才能够顺利的进入 Linux -
分区相关
与 BIOS 模式相比,虽然 UEFI 可以直接取得 GPT 的分区表,不过最好依旧拥有 BIOS boot 的分区槽支持, 同时,为了与 windows 兼容,并且提供其他第三方厂商所使用的 UEFI 应用程序储存的空间,你必须要格式化一个 vfat 的文件系统, 大约提供 512MB 到 1G 左右的容量,以让其他 UEFI 执行较为方便。
由于 UEFI 已经克服了 BIOS 的 1024 磁柱的问题,因此你的启动引导程序与内核可以放置在磁盘开始的前 2TB 位置内即可!加上之前提到的 BIOS boot 以及 UEFI 支持的分区槽,基本上你的/boot 目录几乎都是 /dev/sda3 之后的号码了!这样开机还是没有问题的!所以要注意喔!与以前熟悉的分区状况已经不同, /boot 不再是 /dev/sda1
Linux 安装模式下,磁盘分区的选择(极重要)
目录树结构 (directory tree)
所谓的目录树架构(directory tree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构。 所以,整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方法为一条斜线『/』, 所有的文件都与目录树有关
文件系统与目录树的关系(挂载)
问题: 如何结合目录树的架构与磁盘内的数据?
『挂载』:就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分区槽这个动作我们称为『挂载』,那个进入点的目录我们称为挂载点
根目录一定需要挂载到某个分区的。 至于其他的目录则可依用户自己的需求来给予挂载到不同的分区
其实判断某个文件在那个 partition 底下是很简单的,透过反向追踪即可。以上图来说, 当我想要知道/home/vbird/test 这个文件在哪个 partition 时,由 test --> vbird --> home --> /,看那个『进入点』先被查到那就是使用的进入点了。 所以 test 使用是/home 这个进入点而不是/
发行版安装时,挂载点与磁盘分区的规划
强烈建议使用『自定义安装, Custom 』这个安装模式
自定义安装『Custom』:
- A:初次接触 Linux:只要分区『 / 』及『swap』即可
- B:建议分区的方法:预留一个备用的剩余磁盘容量!
预留的分区也可以拿来做为备份之用。因为我们在实际操作 Linux 系统的过程中,可能会发现某些 script 或者是重要的文件很值得备份时,就可以使用这个剩余的容量分区出新的分区, 并使用来备份重要的配置文件或者是 script。这有个最大的好处, 就是当我的Linux 重新安装的时候,我的一些软件或工具程序马上就可以直接在硬盘当中找到 - 选择 Linux 安装程序提供的默认硬盘分区方式:
对于首次接触 Linux 的朋友们,通常不建议使用各个 发行版所提供预设的 Server安装方式
安装 Linux 前的规划
选择适当的 distribution
在选择 发行版时,特别要了解到该 发行版适合的环境, 并且最好选择最新的 发行版较佳
下列出 CentOS 的下载点:
- 国家高速网络中心:http://ftp.twaren.net/Linux/CentOS/7/isos/
- 昆山科技大学:http://ftp.ksu.edu.tw/FTP/Linux/CentOS/7/isos/
- CentOS 官方网站:http://mirror.centos.org/centos/7/isos/
你所下载的文件扩展名是.iso,这就是所谓的 image 文件(映像档)。这种 image 文件是由光盘直接刻录成文件的, 文件非常的大,建议你不要使用浏览器(IE/Firefox…)来下载,可以使用 FTP 客户端程序来下载,例如 Filezilla (http://filezilla-project.org/download.php)等
主机的服务规划与硬件的关系
主机硬盘的主要规划
- 最简单的分区方法:
仅分区出根目录与内存置换空间( / & swap )即可。 然后再预留一些剩余的磁盘以供后续的练习之用。 - 稍微麻烦一点的方式:
分析这部主机的未来用途,然后根据用途去分析需要较大容量的目录, 以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起
底下的目录是比较符合容量大且(或)读写频繁的目录啰:
- /boot
- /
- /home
- /var
- Swap