鸟哥的Linux私房菜基础学习篇第四版.pdf
http://www.100md.com
2020年2月14日
![]() |
| 第1页 |
![]() |
| 第9页 |
![]() |
| 第15页 |
![]() |
| 第22页 |
![]() |
| 第43页 |
![]() |
| 第1764页 |
参见附件(27941KB,1772页)。
鸟哥的Linux私房菜基础学习篇,这本书主要为读者们介绍了Linux操作系统的全面操作教程,书中一共分为五大部分,看完此书读者对Linux系统完全上手操作。

鸟哥的linux私房菜书籍介绍
本书是知名度颇高的Linux入门书《鸟哥的Linux私房菜基础学习篇》的新版,全面而详细地介绍了Linux操作系统。
全书分为五部分:第一部分着重说明计算机的基础知识、Linux的学习方法,如何规划和安装Linux主机以及CentOS 7.x的安装、登录与求助方法;第二部分介绍Linux的文件系统、文件、目录与磁盘的管理;第三部分介绍文字模式接口shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法;第四部分介绍了对于系统安全非常重要的Linux账号的管理、磁盘配额、高级文件系统管理、计划任务以及进程管理;第五部分介绍了系统管理员(root)的管理事项,如了解系统运行状况、系统服务,针对登录文件进行解析,对系统进行备份以及核心的管理等。
本书内容丰富全面,基本概念的讲解非常细致,深入浅出。各种功能和命令的介绍,都配以大量的实例操作和详尽的解析。本书是初学者学习Linux不可多得的一本入门好书。
鸟哥的linux私房菜作者信息
鸟哥,中国台湾成功大学环境工程系博士,就学期间由于研究需要接触到Linux操作系统,又因实验室交接需求而建立“鸟哥的Linux私房菜”网站。因个人喜好“絮叨”,网站文章风格就此成形。曾任中国台湾多家知名Linux教育中心讲师,目前于中国台湾昆山科技大学资讯传播系教授Linux相关课程。专长是Linux操作系统、网站规划与维护、网络安全,兴趣是写作与阅读,研究方向是网络应用整合。
鸟哥的linux私房菜章节内容
第一部分 Linux的规则与安装
第二部分 Linux文件、目录与磁盘格式
第三部分 学习shell与shellscript
第四部分 Linux使用者管理
第五部分 Linux系统管理员
Linux的学习曲线
1.VBird与Linux
2.VBird的Linux学习之路
3.学习心态的分别
4.基本的学习流程
5.基本的建站流程表
6.简易的安全防护
鸟哥的Linux私房菜基础学习篇截图


目录及概述
这本书的所有内容是学习Linux的基础,这些内容是基础中的基础,如果您能将其中
的文字都看完并且消化过,那么未来在管理 Linux主机以及架设网站方面,就能够达到“事半
功倍”的成效,请不要忽略这些内容了!否则,再怎么讨论都是枉然的啦!^_^。 Linux的资
料非常的多,每份资料彼此的相关性都很强,要单独的一项一项讲解并不容易, 那么这本
书件该怎么看呢?建议先按照顺序将内容大致浏览过一次,看不懂的地方也可以先略过不要
紧。 全部看完之后,再从头开始“仔细”的实际操作过一遍,那应该就能够进入Linux的世界
啰~
另外,每个章节下面的日期,指的是重大改版日期而非最新日期,最新日期请以该
章节结束部分的工作日志为主的喔!
Linux 的学习曲线,一个老人家的建议!
1. VBird 与 Linux
2. VBird 的 Linux 学习之路
3. 学习心态的分别
4. 基本的学习流程
5. 基本的建站流程表
6. 简易的安全防护第一部份 Linux 的规划与安装
常常听到Linux具有非常优良的血统,所以具有相当良好的多用户多任务环境,可以方
便程序设计师来开发软件。 此外,Linux本身是不用钱的“自由软件”,使用上面并没有所谓
的“盗版”问题。但是,为什么Linux不用钱? 随便修改或发布Linux为什么不会被罚?为什么
Linux有这么多的版本?包括Fedora, SuSE, CentOS, Debian等等? 这个都是我们必须要来了解的
部分!了解这些部分,你才会对Linux有一个正确的理解,才能够跟你的同事、同学、 上司说
明,为什么使用Linux具有很多优点与好处! ^_^
Linux并不好学习,鸟哥也是“重伤”过好几次才能对Linux有一些基础的认知。那么到底
应该如何学习Linux呢?关键在实作。 既然要实作就得要实际的安装一部Linux,那么Linux要安
装前需要熟悉哪些基础观念?计算机概论是非常重要的一环! 因为Linux与硬件的关系还不小
~此外,打造一台WindowsLinux共存的主机也是很有用的, 至少对于需要多平台但又缺乏空
间与金钱的朋友来说,这样的处理是非常有用的!
在第一篇里面,我们会由计算机概论谈起,再讲到Linux的历史渊源与自由软件的关
系,然后重点在于如何规划硬件与Linux安装, 最后谈到如何登陆与使用Linux图形命令行的环
境。本篇数据较多,第一次接触Linux的新朋友, 很多数据若看不懂可以先略过,等到后续文
章都读完了再回来看,才会有帮助喔! ^_^
第零章 计算机概论
鸟哥在大专院校的教学经验中发现到,由于对 Linux 有兴趣的朋友很多可能并非信息相
关专业出身, 因此对于计算机硬件及计算机方面的概念不熟。然而操作系统这种咚咚跟硬
件.....20150416
0.1 电脑:辅助人脑的好工具
0.1.1 计算机硬件的五大单元
0.1.2 一切设计的起点:CPU 的架构, RISC与ARM, CISC与x86
0.1.3 其他单元的设备
0.1.4 运行流程
0.1.5 电脑按用途分类
0.1.6 电脑上面常用的计算单位 (容量、速度等)
0.2 个人电脑架构与相关设备元件
0.2.1 执行脑袋运算与判断的 CPU:CPU的工作频率,32位与64
位,CPU等级, 超线程
0.2.2 内存:多通道, DRAM与SRAM, ROM
0.2.3 显卡:PCIe 规格
0.2.4 硬盘与储存设备:物理组成,盘片与扇区,传输接口
(SATA,SAS,USB..),SSD,购买与运行
0.2.5 扩展卡与接口
0.2.6 主板
0.2.7 电源供应器0.2.8 选购须知
0.3 数据表示方式
0.3.1 数字系统
0.3.2 文字编码系统
0.4 软件程序运行
0.4.1 机器程序与编译程序
0.4.2 操作系统
0.4.3 应用程序
0.5 重点回顾
0.6 本章习题
0.7 参考资料与延伸阅读
第一章 Linux是什么如何学习
众所皆知的,Linux的核心原型是1991年由托瓦兹(Linus Torvalds)写出来的,但是托
瓦兹为何可以写出Linux这个操作系统? 为什么他要选择386的计算机来开发?为什么Linux的发
展可以这么迅速?又为什么Linux是免费的?.....20150423
1.1 Linux是什么
1.1.1 Linux是什么?操作系统应用程序?
1.1.2 Linux之前,Unix的历史
1.1.3 关于GNU计划、自由软件与开放源代码
1.2 Torvalds的Linux发展
1.2.1 与Minix之间
1.2.2 对386硬件的多任务测试
1.2.3 初次释出Linux 0.02
1.2.4 Linux的发展:虚拟团队的产生
1.2.5 Linux 的核心版本
1.2.6 Linux distributions
1.3 Linux当前应用的角色
1.3.1 企业环境的利用
1.3.2 个人环境的使用
1.3.3 云端运用
1.4 Linux 该如何学习
1.4.1 从头学习Linux基础
1.4.2 选择一本易读的工具书
1.4.3 实作再实作
1.4.4 发生问题怎么处理啊?建议流程是这样...1.4.5 鸟哥的建议(重点在solution的学习)
1.5 重点回顾
1.6 本章习题
1.7 参考资料与延伸阅读
第二章 主机规划与磁盘分区
事实上,要安装好一部Linux主机并不是那么简单的事情,你必须要针对distributions的
特性、服务器的软件能力、 未来的升级需求、硬件扩充性需求等等来考虑,还得要知道磁盘分
区、文件系统.....20150428
2.1 Linux与硬件的搭配
2.1.1 认识计算机的硬件配备
2.1.2 选择与Linux搭配的主机配备: 硬件支持相关网站
2.1.3 各硬件设备在Linux中的文件名
2.1.4 使用虚拟机学习
2.2 磁盘分区
2.2.1 磁盘连接的方式与设备文件名的关系
2.2.2 MSDOS(MBR) 与 GPT 磁盘分区表(partition
table)
2.2.3 开机流程中的 BIOS 与 UEFI 开机检测程序
2.2.4 Linux安装模式下,磁盘分区的选择(极重要)
2.3 安装Linux前的规划
2.3.1 选择适当的distribution
2.3.2 主机的服务规划与硬件的关系
2.3.3 主机硬盘的主要规划(partition)
2.3.4 鸟哥的两个实际案例
2.4 重点回顾
2.5 本章习题
2.6 参考资料与延伸阅读
第三章 安装CentOS 7.x与多重开机技巧
Linux distributions越作越成熟,所以在安装方面也越来越简单!虽然安装非常的简单,但是刚刚前一章所谈到的基础认知还是需要了解的,包括MBR, partition, boot loader, mount,software的.....20150506
3.1 本练习机的规划--尤其是分区参数3.2 开始安装CentOS 7
3.2.1 调整开机媒体(BIOS)与虚拟机创建流程
3.2.2 选择安装模式与开机:inst.gpt 参数
3.2.3 在地设置之时区、语系与键盘配置
3.2.4 安装来源设置与软件选择
3.2.5 磁盘分区与文件系统设置
3.2.6 核心管理与网络设置
3.2.7 开始安装、设置 root 密码与新增可切换身份之一般用
户
3.2.8 准备使用系统前的授权同意
3.2.9 其他功能:RAM testing, 安装笔记本电脑的核心参数
(Option)
3.3 多重开机安装流程与管理(Option)
3.3.1 安装 CentOS 7.x + windows 7 的规划
3.3.2 进阶安装 CentOS 7.x 与 Windows 7
3.3.3 救援 MBR 内的开机管理程序与设置多重开机菜单
3.4 重点回顾
3.5 本章习题
3.6 参考资料与延伸阅读
第四章 首次登陆与线上求助 man page
终于可以开始使用Linux这个有趣的系统了!由于Linux系统使用了非同步的磁盘内存数
据传输模式, 同时又是个多用户多任务的环境,所以你不能随便的不正常关机,关机有一定的
程序喔!错误的关机方法.....20150602
4.1 首次登陆系统
4.1.1 首次登陆CentOS 7.x图形接口
4.1.2 GNOME的操作与登出,应用程序,文件资源管理器,中文输
入法,登出窗口,快速重启 X
4.1.3 X Window与文字模式的切换, startx
4.1.4 在终端接口登陆linux
4.2 文字模式下指令的下达
4.2.1 开始下达指令, 语系的支持
4.2.2 基础指令的操作, cal, bc
4.2.3 重要的几个热键[Tab], [ctrl]-c, [ctrl]-d,[shift]+[UPDOWN]
4.2.4 错误讯息的查看4.3 Linux系统的线上求助man page与info page
4.3.1 指令的 --help 求助说明
4.3.2 man page, mandbmakewhatis
4.3.3 info page
4.3.4 其他有用的文件(documents)
4.4 超简单文书编辑器: nano
4.5 正确的关机方法: sync, shutdown, reboot, halt,poweroff, systemctl
4.6 重点回顾
4.7 本章习题
4.8 参考资料与延伸阅读第二部分 Linux 文件、目录与磁盘格式
安装完了 Linux 之后,接着下来自然就是要使用他了!我们在 开机与关机及简易指令操
作 稍微说明了指令下达的方法,以及指令线上查询的方式, 因此您可以轻易的使用命令行界面
来进行诸多的动作与工作。那么接着下来呢?当然就是想要知道 Linux 里面有什么东西啰,所
以,在这一个部分当中,我们将介绍 Linux 最基本的文件权限概念, 与每个文件目录所带有的
意涵。
当然啰,要了解权限的概念,那么对于不同的“身份”就需要了解一下才行, 不同的身份
的人,所创建的或拥有的文件是否会相同呢?例如系统管理员与一般身份使用者的文件? 当然
不太一样!除此之外,如果您的硬盘空间不足,需要增加硬盘时,应该要如何新增呢? 还有,内存不足的情况下,有没有增进虚拟内存容量的方法?在接下来的几个章节之中,我们将介绍
Linux 主要的文件架构、以及磁盘在 Linux 当中该如何使用及挂载等问题。
第五章 Linux文件权限与目录配置
Linux最优秀的地方之一,就在于他的多用户多任务的环境。而为了让各个使用者具有
较保密的文件数据, 因此文件的权限管理就变的很重要了。 Linux一般将文件可存取的身份分
为三个类别,分别是 ownergroupother, 且三种身份各有readwriteexecute.....20150603
5.1 使用者与群组
5.2 Linux文件权限概念
5.2.1 Linux文件属性, 改变语系的 locale
5.2.2 如何改变文件属性与权限:chgrp, chown, chmod
5.2.3 目录与文件之权限意义:, 数据夹与抽屉,各项动作所
需最小权限
5.2.4 Linux文件种类与扩展名
5.3 Linux目录配置
5.3.1 Linux目录配置的依据--FHS:, usr, var
5.3.2 目录树(directory tree)
5.3.3 绝对路径与相对路径
5.3.4 CentOS 的观察:lsb_release
5.4 重点回顾
5.5 本章练习
5.6 参考资料与延伸阅读
第六章 Linux文件与目录管理
在第五章我们认识了Linux系统下的文件权限概念以及目录的配置说明。 在这个章节当
中, 我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换、 创建与删除
目录、创建与删除文件, 还有寻找文件、查阅文件内容.....201506166.1 目录与路径
6.1.1 相对路径与绝对路径
6.1.2 目录的相关操作: cd, pwd, mkdir, rmdir
6.1.3 关于可执行文件路径的变量: PATH
6.2 文件与目录管理
6.2.1 文件与目录的检视: ls
6.2.2 复制、删除与移动: cp, mv
6.2.3 取得路径的文件名称与目录名称
6.3 文件内容查阅
6.3.1 直接检视文件内容: cat, tac, nl
6.3.2 可翻页检视: more, less
6.3.3 数据撷取: head, tail
6.3.4 非纯文本文件: od
6.3.5 修改文件时间与创建新文件: touch
6.4 文件与目录的默认权限与隐藏权限
6.4.1 文件默认权限:umask
6.4.2 文件隐藏属性:chattr, lsattr
6.4.3 文件特殊权限:SUID, SGID,SBIT, 权限设置
6.4.4 观察文件类型:file
6.5 指令与文件的搜寻
6.5.1 指令文件名的搜寻:which
6.5.2 文件文件名的搜寻:whereis,locate updatedb,find
6.6 极重要的复习!权限与指令间的关系
6.7 重点回顾
6.8 本章习题
6.9 参考资料与延伸阅读
第七章 Linux 磁盘与文件系统管理
系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不
能太小,太大会造成磁盘容量的浪费, 太小则会产生文件无法储存的困扰。此外,我们在前面
几章谈到的文件权限与属性中, 这些权限与属性分别记录在.....20150626
7.1 认识 Linux 文件系统
7.1.1 磁盘组成与分区的复习
7.1.2 文件系统特性: 索引式文件系统
7.1.3 Linux 的 EXT2 文件系统(inode): data block,superblock,dumpe2fs
7.1.4 与目录树的关系
7.1.5 EXT2EXT3 文件的存取与日志式文件系统的功能
7.1.6 Linux 文件系统的运行
7.1.7 挂载点的意义 (mount point)
7.1.8 其他 Linux 支持的文件系统与 VFS
7.1.9 XFS 文件系统简介: xfs_info
7.2 文件系统的简单操作
7.2.1 磁盘与目录的容量:df, du
7.2.2 实体链接与符号链接:ln
7.3 磁盘的分区、格式化、检验与挂载
7.3.1 观察磁盘分区状态:, parted
7.3.2 磁盘分区 gdiskfdisk:gdisk, fdisk
7.3.3 磁盘格式化(创建文件系统):mkfs.xfs, mkfs.xfs
for raid,mkfs.ext4, mkfs
7.3.4 文件系统检验:xfs_repair, fsck.ext4
7.3.5 文件系统挂载与卸载: mount, umount
7.3.6 磁盘文件系统参数修订: mknod, xfs_admin,tune2fs
7.4 设置开机挂载
7.4.1 开机挂载 etcfstab 及 etcmtab
7.4.2 特殊设备 loop 挂载(镜像文件不烧录就挂载使用):
挂载DVD,大型文件, dd
7.5 内存交换空间(swap)之创建
7.5.1 使用实体分区创建swap:mkswap, free, swapon,swapoff
7.5.2 使用文件创建swap
7.6 文件系统的特殊观察与操作
7.6.1 磁盘空间之浪费问题
7.6.2 利用 GNU 的 parted 进行分区行为 (Optional)
7.7 重点回顾
7.8 本章习题 - 第一题一定要做
7.9 参考资料与延伸阅读
第八章 文件的压缩与打包
在 Linux 下面有相当多的压缩指令可以运行喔!这些压缩指令可以让我们更方便从网络上面下载大型的文件呢! 此外,我们知道在 Linux 下面的扩展名是没有什么很特殊的意义的,不过,针对这些压缩指令所做出来的压缩文件, 为了方便记忆.....20150716
8.1 压缩文件的用途与技术
8.2 Linux 系统常见的压缩指令
8.2.1 gzip, zcatzmorezlesszgrep
8.2.2 bzip2, bzcatbzmorebzlessbzgrep
8.2.3 xz, xzcatxzmorexzlessxzgrep
8.3 打包指令:tar, 解压后的 SELinux 课题
8.4 XFS 文件系统的备份与还原
8.4.1 XFS 文件系统备份 xfsdump
8.4.2 XFS 文件系统还原 xfsrestore
8.5 光盘写入工具
8.5.1 mkisofs:创建镜像文件: isoinfo
8.5.2 cdrecord:光盘烧录工具
8.6 其他常见的压缩与备份工具
8.6.1 dd
8.6.2 cpio
8.7 重点回顾
8.8 本章习题
8.9 参考资料与延伸阅读第三部分:学习 Shell 与 Shell scripts
了解了基本的 Linux 文件属性与目录的配置之后,在进入更深入的 Linux 世界之前,有
几个课题还是一定要知道的,那就是我们所使用的这个文字模式接口,也就是所谓的“Shell”这
个咚咚。在 Linux 的世界中,使用的是 GNU 发展出来的强化的第二代 shell ,称为 BASH Shell
,他有什么特异功能呢?简单的说,我们之前下达的几个指令都是 bash 管理的,除此之外, 他
还可以记录指令、文件或命令的补全功能、环境变量的使用等等,还有很多功能等着你去发掘
呢!
在知道了部分的 bash 功能后,在接着下来,我们还得了解一下什么是数据流重导向?
还有常规表达式等等的问题, 这都是未来我们系统管理员在管理主机上面,一个不可缺乏的利
器!当然啰,要将这些功能整合起来运用的话, 就不能不学习一下所谓的脚本“ shell scripts ”,他具有基础的程序能力( Program ),当真是个管理系统的好帮手呢!
再来,在未来的建站设置当中,常会使用到文字编辑器来编辑参数配置文件,这个时
候, 系统管理员至少务必要熟悉一套命令行下的文书编辑软件,当然不限制哪一套软件啦,但
是 vi 是最标准的 Unix-Like 的命令行之文书处理软件,所以,我们几乎一定可以在每部 Unix-
Like 上面发现他的踪迹,所以,就来了解他一下吧,这也是挺重要的工作呢!
第九章 vim程序编辑器
系统管理员的重要工作就是得要修改与设置某些重要软件的配置文件, 因此至少得要学
会一种以上的命令行的文书编辑器。 在所有版本的 Linux 上头都会有的一套文书编辑器就是 vi
,而且很多软件.....20150707
9.1 vi 与 vim
9.1.1 为何要学 vim
9.2 vi 的使用
9.2.1 简易执行范例
9.2.2 按键说明
9.2.3 一个案例的练习
9.2.4 vim 的暂存盘、救援回复与打开时的警告讯息
9.3 vim 的额外功能
9.3.1 区块选择(Visual Block)
9.3.2 多文件编辑
9.3.3 多窗口功能
9.3.4 vim 的挑字补全功能
9.3.5 vim 环境设置与记录: ~.vimrc, ~.viminfo
9.3.6 vim 常用指令示意图
9.4 其他 vim 使用注意事项
9.4.1 中文编码的问题
9.4.2 DOS 与 Linux 的断行字符: dos2unix,unix2dos9.4.3 语系编码转换: iconv
9.5 重点回顾
9.6 本章习题
9.7 参考资料与延伸阅读
第十章 认识与学习 BASH
在 Linux 的环境下,如果你不懂 bash 是什么,那么其他的东西就不用学了! 因为前面
几章我们使用终端机下达指令的方式, 就是通过 bash 的环境来处理的喔! 所以说,他很重要
吧!bash 的东西非常的多,包括变量.....20150709
10.1 认识 BASH 这个 Shell
10.1.1 硬件、核心与 Shell
10.1.2 为何要学命令行的 shell
10.1.3 系统的合法 shell 与 etcshells 功能
10.1.4 Bash shell 的功能
10.1.5 查询指令是否为 Bash shell 的内置命令: type
10.1.6 指令的下达与快速编辑按钮
10.2 Shell 的变量功能
10.2.1 什么是变量?
10.2.2 变量的取用与设置:echo, 变量设置规则, unset
10.2.3 环境变量的功能:env 与常见环境变量说明, set,export
10.2.4 影响显示结果的语系变量 (locale)
10.2.5 变量的有效范围
10.2.6 变量键盘读取、阵列与宣告: read, declare, array
10.2.7 与文件系统及程序的限制关系: ulimit
10.2.8 变量内容的删除、取代与替换 (Optional):删除与
取代,测试与替换
10.3 命令别名与历史命令
10.3.1 命令别名设置: alias, unalias
10.3.2 历史命令: history, HISTSIZE
10.4 Bash shell 的操作环境
10.4.1 路径与指令搜寻顺序
10.4.2 bash 的进站与欢迎讯息: etcissue, etcmotd
10.4.3 环境配置文件:login, non-login shell,etcprofile, ~.bash_profile, source, ~.bashrc
10.4.4 终端机的环境设置: stty, set10.4.5 万用字符与特殊符号
10.5 数据流重导向 (Redirection)
10.5.1 何谓数据流重导向?
10.5.2 命令执行的判断依据: ; , , ||
10.6 管线命令 (pipe)
10.6.1 撷取命令:cut, grep
10.6.2 排序命令:sort, uniq, wc
10.6.3 双向重导向:tee
10.6.4 字符转换命令:tr, col, join, expand
10.6.5 分区命令: split
10.6.6 参数代换: xargs
10.6.7 关于减号 - 的用途
10.7 重点回顾
10.8 本章习题
10.9 参考资料与延伸阅读
第十一章 正则表达式与文件格式化处理
正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排
列, 用以“搜寻取代删除”一列或多列文字字串, 简单的说, 正则表达式就是用在字串的处理
上面的一项“表示式”。正则表达式并.....20150714
11.1 开始之前:什么是正则表达式
11.2 基础正则表达式
11.2.1 语系对正则表达式的影响
11.2.2 grep 的一些进阶选项
11.2.3 基础正则表达式练习
11.2.4 基础正则表达式字符汇整(characters)
11.2.5 sed 工具:行的新增删除, 行的取代显示,搜寻并取
代, 直接改档
11.3 延伸正则表达式
11.4 文件的格式化与相关处理
11.4.1 printf: 格式化打印
11.4.2 awk:好用的数据处理工具
11.4.3 文件比对工具:, cmp, patch
11.4.4 文件打印准备工具: pr
11.5 重点回顾
11.6 本章习题11.7 参考资料与延伸阅读
第十二章 学习 shell scripts
如果你真的很想要走信息这条路,并且想要好好的管理好属于你的主机,那么,别说鸟
哥不告诉你, 可以自动管理你的系统的好工具: Shell scripts 真的是得要好好学习学习的! 基
本上, shell script 有点像是早期的批处理文件,亦即是.....20150717
12.1 什么是 Shell Script
12.1.1 干嘛学习 shell scripts
12.1.2 第一支 script 的撰写与执行
12.1.3 撰写 shell script 的良好习惯创建
12.2 简单的 shell script 练习
12.2.1 简单范例: 对谈式脚本, 随日期变化, 计算 pi
12.2.2 script 的执行方式差异 (source, sh script,.script)
12.3 善用判断式
12.3.1 利用 test 指令的测试功能
12.3.2 利用判断符号 [ ]
12.3.3 Shell script 的默认变量(0, 1...): shift
12.4 条件判断式
12.4.1 利用 if .... then: 单层简单条件,多重复杂条件,网络状态,退伍
12.4.2 利用 case ..... esac 判断
12.4.3 利用 function 功能
12.5 循环 (loop)
12.5.1 while...do...done, until...do...done (不定循
环)
12.5.2 for...do...done (固定循环): 帐号检查,网络状
态 (seq )
12.5.3 for...do...done 的数值处理
12.5.4 搭配乱数与阵列的实验
12.6 shell script 的追踪与 debug
12.7 重点回顾
12.8 本章习题第四部分:Linux 使用者管理
好了!终于要到了管理 Linux 帐号的时刻了!对于 Linux 有一定的熟悉度之后,再来就
是要管理连上 Linux 的帐号问题了!这个帐号的问题可大可小啦!大到可以限制他使用 Linux
主机的各项资源,小到甚至一般帐号的密码订定规则都可以进行规定!端看您对于安全的需求
啦! 此外,如果站在资源平均分配的角度上,那么 Linux 主机上面有限的资源当然是平均分配
给大家比较好!这个时候就得来规定一下“谁可以使用多少的硬盘空间?”那就是 Quota 喔!呵
呵!厉害吧!
在订定完了一些帐号的规则之后,那么我们就继续来管理一下主机的系统与程序的管理
吧! 这个包括了观察每个程序 (Process) 与工作调度及工作管理 ( jobs control ),这些也都
是很重要的工作呢!
第十三章 Linux 帐号管理与 ACL 权限控制
要登陆 Linux 系统一定要有帐号与密码才行,否则怎么登陆,您说是吧?不过, 不同的
使用者应该要拥有不同的权限才行吧?我们还可以通过 usergroup 的特殊权限设置,来规范出
不同的群组开发专案呢.....20150722
13.1 Linux 的帐号与群组
13.1.1 使用者识别码: UID 与 GID
13.1.2 使用者帐号:etcpasswd 文件结构, etcshadow
文件结构
13.1.3 关于群组: etcgroup 文件结构,有效与初始群组,groups, newgrp, etcgshadow
13.2 帐号管理
13.2.1 新增与移除使用者: useradd, useradd 参考档,passwd, chage, userdel
13.2.2 使用者功能:id, finger,chfn, chsh
13.2.3 新增与移除群组:groupadd, groupmod,groupdel,gpasswd 群组管理员
13.2.4 帐号管理实例
13.2.5 使用外部身份认证系统
13.3 主机的细部权限规划:ACL 的使用
13.3.1 什么是 ACL 与如何支持启动 ACL
13.3.2 ACL 的设置技巧:setfacl, getfacl,ACL 的设置
(user, group mask, default)
13.4 使用者身份切换
13.4.1 su
13.4.2 sudo: sudo 指令, visudo (etcsudoers)(帐号, 限制指令, 别名, 配合 su)
13.5 使用者的特殊 shell 与 PAM 模块
13.5.1 特殊的 shell :sbinnologin, nologin.txt
13.5.2 PAM 模块简介
13.5.3 PAM 模块设置语法:验证类别(type)、控制标准
(flag)、模块与参数
13.5.4 常用模块简介: securetty,nologin,pam_pwquality,login流程
13.5.5 其他相关文件: limits.conf
13.6 Linux 主机上的使用者讯息传递
13.6.1 查询使用者: w, who, last, lastlog
13.6.2 使用者对谈: write, mesg, wall
13.6.3 使用者邮件信箱: mail
13.7 CentOS 7 环境下大量创建帐号的方法
13.7.1 一些帐号相关的检查工具:pwck, pwconv, chpasswd
13.7.2 大量创建帐号范本(适用 passwd --stdin 选项)
13.8 重点回顾
13.9 本章习题
13.10 参考资料与延伸阅读
第十四章 磁盘配额(Quota)与进阶文件系统管理
如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的
公平使用,磁盘配额 (Quota) 就是一项非常有用的工具!另外,如果你的用户常常抱怨磁盘
容量不够用,那么更进阶的文件系统就得要学习学习.....20150728
14.1 磁盘配额 (Quota) 的应用与实作
14.1.1 什么是 Quota:一般用途, 限制, 规范
(inodeblock, softhard, grace time)
14.1.2 一个 XFS 文件系统的 Quota 的实作范例
14.1.3 实作 Quota 流程-1:文件系统的支持与观察
(etcfstab, etcmtab)
14.1.4 实作 Quota 流程-2:观察 Quota 报告数据
(xfs_quota,print, df, report, state)
14.1.5 实作 Quota 流程-3:限制值设置方式 (limit,grace_time)
14.1.6 实作 Quota 流程-4:project 的限制 (针对目录限
制) (Optional)14.1.7 XFS quota 的管理与额外指令对照表
14.1.8 不更动既有系统的 Quota 实例
14.2 软件磁盘阵列 (Software RAID)
14.2.1 什么是 RAID: RAID-0, RAID-1,RAID1+0, Spare
disk
14.2.2 software, hardware RAID
14.2.3 软件磁盘阵列的设置: mdadm --create
14.2.4 仿真 RAID 错误的救援模式: mdadm --manage
14.2.5 开机自动启动 RAID 并自动挂载
14.2.6 关闭软件 RAID(重要!)
14.3 逻辑卷轴管理员 (Logical Volume Manager)
14.3.1 什么是 LVM: PV, PE, VG, LV 的意义
14.3.2 LVM 实作流程: PV 阶段, VG 阶段,LV 阶段, 文件系
统阶段
14.3.3 放大 LV 容量: xfs_growfs
14.3.4 使用 LVM thin Volume 让 LVM 动态自动调整磁盘使
用率
14.3.5 LVM 的磁盘快照: 创建传统快照, 以快照还原,用于
测试环境
14.3.6 LVM 相关指令汇整与 LVM 的关闭
14.4 重点回顾
14.5 本章习题
14.6 参考资料与延伸阅读
第十五章 例行性工作调度 (crontab)
学习了基础篇也一阵子了,你会发现到为什么系统常常会主动的进行一些任务? 这些任
务到底是谁在设置工作的? 如果你想要让自己设计的备份程序可以自动的在系统下面执
行,.....20150731
15.1 什么是例行性工作调度
15.1.1 Linux 工作调度的种类: at, crontab
15.1.2 CentOS Linux 系统上常见的例行性工作
15.2 仅执行一次的工作调度
15.2.1 atd 的启动与 at 运行的方式: etcat.deny
15.2.2 实际运行单一工作调度: at,atq atrm, batch
15.3 循环执行的例行性工作调度
15.3.1 使用者的设置: etccron.deny, crontab15.3.2 系统的配置文件: etccrontab, etccron.d
15.3.3 一些注意事项
15.4 可唤醒停机期间的工作任务
15.4.1 什么是 anacron
15.4.2 anacron 与 etcanacrontab
15.5 重点回顾
15.6 本章习题
第十六章 程序管理与 SELinux 初探
一个程序被载入到内存当中运行,那么在内存内的那个数据就被称为程序(process)。
程序是操作系统上非常重要的概念, 所有系统上面跑的数据都会以程序的型态存在。那么系统
的程序有哪些状态.....20150808
16.1 什么是程序 (Process)
16.1.1 程序与程序 (process program):子程序与父程
序, fork-and-exec,系统服务
16.1.2 Linux 的多用户多任务环境
16.2 工作管理 (job control)
16.2.1 什么是工作管理
16.2.2 job control 的管理:, [ctrl]-z, jobs, kill
16.2.3 离线管理问题: nohup
16.3 程序管理
16.3.1 程序的观察: ps -l,ps aux, top,pstree
16.3.2 程序的管理: signal, kill, killall
16.3.3 关于程序的执行顺序: priority, nice, renice
16.3.4 系统资源的观察: free, uname, uptime, netstat,vmstat
16.4 特殊文件与程序
16.4.1 具有 SUIDSGID 权限的指令执行状态
16.4.2 proc 代表的意义
16.4.3 查询已打开文件或已执行程序打开之文件: fuser,lsof, pidof
16.5 SELinux 初探
16.5.1 什么是 SELinux: 目标, DAC,MAC
16.5.2 SELinux 的运行模式: 元件, 安全性本
文,domaintype
16.5.3 SELinux 三种模式的启动、关闭与观察:getenforce,sestatus, setenforce
16.5.4 SELinux 政策内的规则管理: getsebool, seinfo,sesearch, setsebool
16.5.5 SELinux 安全本文的修改:chcon,restorecon,semanage
16.5.6 一个网络服务案例及登录文件协助:所需服务, FTP
实例, 匿名者范例, 一般用户主文件夹, 非正规目录, 非正规
port
16.6 重点回顾
16.7 本章习题
16.8 参考资料与延伸阅读第五部分:Linux 系统管理员
嗯!终于来到系统管理员 ( root ) 要注意的工作事项之篇幅了!各位准系统管理员心
理准备好了吗? 我们要管理机器啰,呵呵!那么管理员的工作是什么?看报喝茶?!没错!管
理员最大的享受就是看报喝茶了。 一个好的系统管理员,平时不会希望挂载网站上面一再不断
的查询、检查漏洞等等的, 因为果真如此的话,那么就表示“机器一定有问题了!”。为了让我
们的 Linux 机器跑得更稳更顺畅,好让我这个管理员有更多的时间去看报喝茶,哈哈! 更深入
的了解系统是需要的!所以,这一篇我们由开机关机的整体流程谈起,好了解一下 Linux 在开
机的过程中到底做了哪些事情,这样才能知道我们在什么时候应该做什么事情呐!
此外,由于“没有一个套件是永远安全的!”,所以套件管理是相当重要的一部份,这里
我们以 RPM 与 Tarball 来介绍一下如何管理你系统上面的套件。再来,你知道你的系统上面跑
了多少数据吗? 虽然知道什么是 ps 来查询程序,但是总是得知道我的系统有哪些服务吧!嘿
嘿! 来看看先?不但如此,还得针对登录文件进行解析,以及对于系统进行备份。呵呵! 管理
员的工作还真多那。不止不止,还要进行核心的管理呢!哇!果然是忙毙了!无论如何, 还是
得要了解呐!
第十七章 认识系统服务(daemon)
在 Unix-Like 的系统中,你常常听到 daemon 这个字眼!那么什么是传说中的 daemon
呢?这些 daemon 放在什么地方?他的功能是什么?该如何启动这些 daemon ?又如何有效的将
这些 daemon 管理妥当.....20150814
17.1 什么是 daemon 与服务 (service)
17.1.1 早期 Systemp V 的 init 管理行为中 daemon 的主要
分类
17.1.2 systemd 使用的 unit 分类
17.2 通过 systemctl 管理服务
17.2.1 通过 systemctl 管理单一服务 (service unit) 的
启动开机启动与观察状态
17.2.2 通过 systemctl 观察系统上所有的服务
17.2.3 通过 systemctl 管理不同的操作环境 (target
unit)
17.2.4 通过 systemctl 分析各服务之间的相依性
17.2.5 与 systemd 的 daemon 运行过程相关的目录简
介:etcservices
17.2.6 关闭网络服务
17.3 systemctl 针对 service 类型的配置文件
17.3.1 systemctl 配置文件相关目录简介
17.3.2 systemctl 配置文件的设置项目简介
17.3.3 两个 vsftpd 运行的实例
17.3.4 多重的重复设置方式:以 getty 为例17.3.5 自己的服务自己作
17.4 systemctl 针对 timer 的配置文件
17.5 CentOS 7.x 默认启动的服务简易说明
17.6 重点回顾
17.7 本章习题
17.8 参考资料与延伸阅读
第十八章 认识与分析登录文件
当你的 Linux 系统出现不明原因的问题时,很多人都告诉你,你要查阅一下登录文件才
能够知道系统出了什么问题了, 所以说,了解登录文件是很重要的事情呢。登录文件可以记录
系统在什么时间、哪个主机、哪个服务.....20150820
18.1 什么是登录文件:
18.1.1 CentOS 7 登录文件简易说明:重要性, 常见文件名,服务与程序,systemd-journald
18.1.2 登录文件内容的一般格式
18.2 rsyslog.service :记录登录文件的服务
18.2.1 rsyslog.service 的配置文件: etcrsyslog.conf,默认的 rsyslog.conf 内容
18.2.2 登录文件的安全性设置
18.2.3 登录文件服务器的设置
18.3 登录文件的轮替 (logrotate)
18.3.1 logrotate 的配置文件
18.3.2 实际测试 logrotate 的动作
18.3.3 自订登录文件的轮替功能
18.4 systemd-journald.service 简介:
18.4.1 使用 journalctl 观察登录信息
18.4.2 logger 指令的应用
18.4.3 保存 journal 的方式
18.5 分析登录文件
18.5.1 CentOS 默认提供的 logwatch
18.5.2 鸟哥自己写的登录文件分析工具:
18.6 重点回顾
18.7 本章习题练习
18.8 参考资料与延伸阅读第十九章 开机流程、模块管理与 loader
系统开机其实是一项非常复杂的程序,因为核心得要侦测硬件并载入适当的驱动程序
后, 接下来则必须要调用程序来准备好系统运行的环境,以让使用者能够顺利的操作整部主机
系统。 如果你能够理解开机的原理.....20150831
19.1 Linux 的开机流程分析
19.1.1 开机流程一览
19.1.2 BIOS, boot loader 与 kernel 载入:lsinitrd
19.1.3 第一支程序 systemd 及使用 default.target 进入开
机程序分析
19.1.4 systemd 执行 sysinit.target 初始化系统、basic.target 准备系统
19.1.5 systemd 启动 multi-user.target 下的服务:相容的
rc.local,getty.target 启动
19.1.6 systemd 启动 graphical.target 下面的服务
19.1.7 开机过程会用到的主要配置文件
19.2 核心与核心模块
19.2.1 核心模块与相依性: depmod
19.2.2 核心模块的观察: lsmod, modinfo
19.2.3 核心模块的载入与移除:insmod, modprobe, rmmod
19.2.4 核心模块的额外参数设置:etcmodprobe.dconf
19.3 Boot loader: Grub2
19.3.1 boot loader 的两个 stage
19.3.2 grub2 的配置文件 bootgrub2grub.cfg 初探: 磁
盘代号, grub.cfg
19.3.3 grub2 配置文件维护 etcdefaultgrub 与
etcgrub.d:grub,40_custom
19.3.4 initramfs 的重要性与创建新 initramfs 文件:
dracutmkinitrd
19.3.5 测试与安装 grub2: grub2-install
19.3.6 开机前的额外功能修改
19.3.7 关于开机画面与终端机画面的图形显示方式
19.3.8 为个别菜单加上密码: grub2-mkpasswd-pbkdf2
19.4 开机过程的问题解决
19.4.1 忘记 root 密码的解决之道
19.4.2 直接开机就以 root 执行 bash 的方法
19.4.3 因文件系统错误而无法开机19.5 重点回顾
19.6 本章习题
19.7 参考资料与延伸阅读
第二十章 网络设置与备份策略
新的 CentOS 7 有针对不同的服务提供了相当大量的命令行设置模式,因此过去那个
setup 似乎没有什么用了! 取而代之的是许多加入了 bash-complete 提供了不少参数补全的设置
工具!甚至包括网络设置也是通过这个机制哩! 我们这个小章.....20150903
20.1 系统基本设置
20.1.1 网络设置 (手动设置与DHCP自动取得):手动,自动,改主机名称
20.1.2 日期与时间设置
20.1.3 语系设置
20.1.4 防火墙简易设置
20.2 服务器硬件数据的收集
20.2.1 以系统内置 dmidecode 解析硬件配备
20.2.2 硬件资源的收集与分析: lspci, lsusb,iostat...
20.2.3 了解磁盘的健康状态
20.3 备份要点
20.3.1 备份数据的考虑
20.3.2 哪些 Linux 数据具有备份的意义
20.3.3 备份用储存媒体的选择
20.4 备份的种类、频率与工具的选择
20.4.1 完整备份之累积备份 (Incremental backup),使用
软件
20.4.2 完整备份之差异备份 (Differential backup)
20.4.3 关键数据备份
20.5 VBird 的备份策略与 scripts
20.5.1 每周系统备份的 script
20.5.2 每日备份数据的 script
20.5.3 远端备援的 script
20.6 灾难复原的考虑
20.7 重点回顾
20.8 本章习题
20.9 参考资料与延伸阅读第二十一章 软件安装:源代码与 Tarball
我们在第一章、Linux是什么当中提到了 GNU 计划与 GPL 授权所产生的自由软件与开
放源码等咚咚。 不过,前面的章节都还没有提到真正的开放源码是什么的讯息!在这一章当
中,我们将借由 Linux 操作系统里面的可执行文件.....20150906
21.1 开放源码的软件安装与升级简介
21.1.1 什么是开放源码、编译器与可可执行文件
21.1.2 什么是函数库
21.1.3 什么是 make 与 configure
21.1.4 什么是 Tarball 的软件
21.1.5 如何安装与升级软件
21.2 使用传统程序语言进行编译的简单范例
21.2.1 单一程序:印出 Hello World
21.2.2 主、副程序链接:副程序的编译
21.2.3 调用外部函数库:加入链接的函数库
21.2.4 gcc 的简易用法 (编译、参数与链结)
21.3 用 make 进行宏编译
21.3.1 为什么要用 make
21.3.2 makefile 的基本语法与变量
21.4 Tarball 的管理与建议
21.4.1 使用源代码管理软件所需要的基础软件
21.4.2 Tarball 安装的基本步骤
21.4.3 一般 Tarball 软件安装的建议事项 (如何移除?升
级?)
21.4.4 一个简单的范例、利用 ntp 来示范
21.4.5 利用 patch 更新源代码
21.5 函数库管理
21.5.1 动态与静态函数库
21.5.2 ldconfig 与 etcld.so.conf
21.5.3 程序的动态函数库解析: ldd
21.6 检验软件的正确性
21.6.1 md5sum sha1sum sha256sum
21.7 重点回顾
21.8 课后练习
21.9 参考资料与延伸阅读第二十二章 软件安装:RPM, SRPM 与 YUM 功能
虽然使用源代码进行编译可以进行客制化的设置,但对于 Linux distribution 的原本发布
商来说, 则有软件管理不易的问题, 毕竟不是每个人都会进行源代码编译的。 如果能够将软
件预先在相同的硬件与操作系统上面编译好才发布的话.....20150909
22.1 软件管理员简介
22.1.1 Linux 界的两大主流: RPM 与 DPKG
22.1.2 什么是 RPM 与 SRPM
22.1.3 什么是 i386, i586, i686, noarch, x86_64
22.1.4 RPM 的优点
22.1.5 RPM 属性相依的克服方式: YUM 线上升级
22.2 RPM 软件管理程序: rpm
22.2.1 RPM 默认安装的路径
22.2.2 RPM 安装 (install)
22.2.3 RPM 升级与更新 (upgradefreshen)
22.2.4 RPM 查询 (query)
22.2.5 RPM 验证与数码签章 (Verifysignature)
22.2.6 RPM 反安装与重建数据库 (eraserebuilddb)
22.3 YUM 线上升级机制
22.3.1 利用 yum 进行查询、安装、升级与移除功能
22.3.2 yum 的配置文件
22.3.3 yum 的软件群组功能
22.3.4 EPELELRepo 外挂软件以及自订配置文件
22.3.5 全系统自动升级
22.3.6 管理的抉择:RPM 还是 Tarball
22.3.7 基础服务管理:以 Apache 为例
22.4 SRPM 的使用: rpmbuild (Optional)
22.4.1 利用默认值安装 SRPM 文件 (--rebuid--
recompile)
22.4.2 SRPM 使用的路径与需要的软件
22.4.3 配置文件的主要内容 (.spec)
22.4.4 SRPM 的编译指令 (-ba-bb)
22.4.5 一个打包自己软件的范例
22.5 重点回顾
22.6 本章习题
22.7 参考资料与延伸阅读第二十三章 X Window 设置介绍
在 Linux 上头的图形接口我们称之为 X Window System,简称为 X 或 X11 啰!为何称之
为系统呢?这是因为 X 窗口系统又分为 X server 与 X client ,既然是 ServerClient (主从架
构) 这就表示其实 X 窗口系统是可以跨网络且跨平台的.....20150919
23.1 什么是 X Window System
23.1.1 X Window 的发展简史
23.1.2 主要元件: X ServerX ClientWindow
ManagerDisplay Manager
23.1.3 X Window 的启动流程:startx, xinit
23.1.4 X 启动流程测试
23.1.5 我是否需要启用 X Window System
23.2 X Server 配置文件解析与设置
23.2.1 解析 xorg.conf 设置
23.2.2 字体管理
23.2.3 显示器参数微调
23.3 显卡驱动程序安装范例
23.3.1 NVidia
23.3.2 AMD (ATI)
23.3.3 Intel
23.4 重点回顾
23.5 本章习题
23.6 参考资料与延伸阅读
第二十四章 核心编译
我们说的 Linux 其实指的就是核心 (kernel) 而已。这个核心控制你主机的所有硬件并
提供系统所有的功能, 所以说,他重不重要啊!我们开机的时候其实就是利用开机管理程序载
入这个核心文件来侦测硬件, 在核心载入适当的驱动程序后.....20151020
24.1 编译前的任务:认识核心与取得核心源代码
24.1.1 什么是核心 (Kernel)
24.1.2 更新核心的目的
24.1.3 核心的版本
24.1.4 核心源代码的取得方式:distributions 默认、最
新、patch
21.1.5 核心源代码的解压缩安装观察24.2 核心编译的前处理与核心功能选择
24.2.1 硬件环境检视与核心功能要求
24.2.2 保持干净源代码: make mrproper
24.2.3 开始挑选核心功能: make XXconfig
24.2.4 核心功能细项选择
a. 一般设置(General setup):附加版本名称、IPC 通
讯、程序相关等
b. 核心模块与 block layer 支持
c. CPU 的类型与功能选择(含虚拟化技术)
d. 电源管理功能
e. 核心的网络功能
f. 各项设备的驱动程序
g. 文件系统的支持
h. 虚拟化与函数库
24.3 核心的编译与安装
24.3.1 编译核心与核心模块
24.3.2 实际安装模块
24.3.3 开始安装新核心与多重核心菜单 (grub)
24.4 额外(单一)核心模块编译
24.4.1 编译前注意事项
24.4.2 单一模块编译
24.4.3 核心模块管理
24.5 以最新核心版本编译 CentOS 7.x 的核心
24.6 重点回顾
24.7 本章习题
24.8 参考资料与延伸阅读Linux 的学习曲线,一个老人家的建议! 最近更新日期:20
学习 Linux 的过程并不简单!因为我们过去一直都是在某些特定软件的支配之下,所以对于这个由一群素眛谋面的工程师因为“兴趣”而发明出来的操作系统, 其实开始时
候的接受度并不是很好的。 然而因为 Linux 的学习会使用到很多的基础观念,因此, 对
于想要更深入认识您所使用的操作系统的朋友来说, 其实 Linux 真的是一套很棒很棒的操
作系统喔!
这个网站的内容,是由鸟哥在刚刚接触 linux 的时候就开始写起的, 简单的来
说,这个网站的内容基本上就是“鸟哥的 Linux 血泪史~” 因为鸟哥在新手的时候遇到相
当多的问题,虽然一步一步的找出问题,并且解决他, 不过,刚开始时,并不是那么容易
就可以解决一个小问题的。 因为很多的知识都是来自于 Internet 上面的,所以也就回馈
这样的一个网站给朋友们了。 请大家看一看鸟哥是如何学习 Linux 的吧!1. VBird 与 Linux
在开始给 Linux 的新手建议前,得先让您晓得的是,为什么鸟哥
要这样的建议新手学习呢? 所以,先交代一下 VBird 学习 Linux 的心路
历程啰,好让您了解到, 为何 VBird 会比较熟悉 Linux 这门艺术!
数年前 VBird 因工作的需要,“被迫”得去学习 Unix 系统, 那个时
候我们使用的 Unix 系统是 Sun 这家公司的机器, 当时的 Sun Unix 可不
是一般人玩的起的,当然, VBird 也是一般人,所以当然也就玩不起
Sun Unix 啰!然而工作的案子还是需要进行的, 那怎么办呢?这个时
候就得要想一些替代方案啦!
咦!听说有另外一种可以在个人计算机 ( Personal Computer, PC) 跑的 Unix-Like 系统,叫做 Linux 的, 他的接口啦、功能啦、以及基
本的文件架构都跟 Unix 差不多, 甚至连系统稳定性也可以说是一模一
样,而且对于硬件配备的要求并不高。 嗯!既然玩不起几十万起跳的
Unix 系统, 那么使用一些即将废弃的计算机配备来架设一部 Linux 主
机吧!
在经过了一些时候的努力之后,呵呵!竟然真的给我架起来了
(当时的版本是 Red Hat 6.1)! 哇!好高兴!那么就赶快先来熟悉
他,然后等到有了一定的经验值“升级”成老手级之后, 再来玩 Unix
吧,以免玩坏了几十万的大计算机!嗯!这似乎是不错的方式, 所以
就开始了 VBird 的 Linux 学习之路啦!2. VBird 的 Linux 学习之路
由于 VBird 之前从未玩过 Linux 这套操作系统,而且听说还需要
使用到命令行界面! 刚开始碰还真的有点紧张。还好,VBird 玩计算机
的历史可以追溯之前的 DOS 年代, 所以对于命令行界面多多少少还有
点概念,或许应该可以撑上一阵子吧!? 但是没想到 Linux 的指令真
是“博大精深”呐!早期的 DOS 概念简直就是不够用啊~ 因此,为了偷
懒,一开始 VBird 就舍弃命令行界面,直接在 X-Window 上面玩起来
了!
在还没有安装 Linux 之前,VBird 买了两三本书,每本都看了 N
遍,发现到每一本书的前半段, 在 Linux 的基础方面的介绍谈的不多,了不起就是以一些工具教你如何设置一些很重要的参数文件, 但偏偏
没有告诉你这些工具到底做了什么事情或修改了哪些文件? 不过书的
后半段却放上了很多的建站文件,然而却都有点“点到为止”, 所以当时
总觉得 Linux 很有点朦朦胧胧的感觉,而且在当时最严重的现象是 “只
要一出现问题,身为使用者的 VBird 完全无法解决, 所以只好重新安
装,选择设置与书本教的内容完全一模一样!”不过,即使如此, 很多
时候仍然解决不了发生问题的窘境!
在当时,由于知道 Linux 可以用来做为很多功能的服务器,而
VBird 的研究室当时又需要一部 mail server , 所以就很高兴的借由书上
的说明,配合 Linux distribution 提供的一些工具程序,例如:
Linuxconf, netcfg 等等的工具来架设。然而由于工具程序的整合度并不
见得很好, 所以常常修改一个小地方会搞上一整天!
好不容易使用了所有的知道的工具来架设好了我的 mail server ,哈哈!真高兴, 请注意呦!这个时候我的 Linux 主机上面开了多少的
portsservices 其实 VBird 并不清楚, 当时认为“我的机器就只有我认识
的一些朋友知道而已, 所以反正机器能跑就好了,其他的设置似乎也
就不这么重要”。然而事实上,这种学习心态却造成了后来 VBird 恶梦的开端! 怎
么说呢?首先,虽然 Linux 号称需要的硬件等级不高,不过 X-Window
却是很耗系统资源的一项软件, 因为只要涉及到图形接口的话,需要
友好度嘛!就需要多一点 RAM 啦、多一些硬盘空间啦、 显卡与 CPU
要好一点啦等等的,且早期的图形接口整合度不是很高, 所以造成 X-
Window 死掉的机会是很高的。
在 VBird 当时安装的 Linux 主机当中, 使用的是旧旧的计算机,系统的配备并不高,在跑了 X-Window 之后,剩下可以使用的实体内存
其实已经不多了, 再跑其他的服务,例如 mail server ,实际上有点很
吃力! 所以当时的一些同仁常常抱怨我们的机器怎么老是服务不良?
怪怪! 这个 Linux 怎么跟“号称稳定”的名号不符?而在 VBird 进入系统
检查之后,才发现,哇! X-Window 又挂了?当时还不清楚原来可以使
用 ps 及 kill 等指令将 X-Window 杀掉即可让 Linux 恢复正常, 竟然是
用 reset 的方式来重新启动 Linux ,现在想起来,当时真糗....
后来再重新安装一次 ( 嗄?由图形接口转到命令行要重新安装?
不要怀疑,当初没有学好的时候, 就是以为需要重新安装,因为
Windows 的经验告诉我这样做是“对的!” ) 选择了命令行登陆系统,呵呵!果然系统是稳定多了!服务上面似乎也就安定了许多。 不过,您以为恶梦这样就解决了吗?当然不是! 在我的机器服务了一阵子之
后,我老板竟然接到上层单位的来信, 信中说明“贵单位的主机可能有
尝试入侵国外主机之嫌,敬请妥善改善!” 哇!这不就是警告信吗?还
好不是律师存证信函~还好, 当时至少还知道有所谓的系统登录文件
可以分析确切日期有谁在线上,没想到一登陆之后才发现, 搞了老半
天,原来我们的机器被入侵了!而身为管理者的 VBird 竟然还茫然不知
~这真是一大败笔....
在赶快重新安装,并且重新参考很多文件,架设好了防火墙之
后,以为终于从此就可以高枕无忧了! 唉~结果还是不尽然的,因为
我们的 mail server 早就被当成垃圾转信站, 造成区域网络内网络流量的大量提高,导致常常会无法连上 Internet .....
在经过了这么多的事件之后,终于发现,如果想要 Linux 帮我做
好我想要达成的工作, 则 Linux 的学习并不是只要“会用就好”, 这样
的心态会造成相当大程度的伤害,不论是针对您自己还是您服务的单
位, 君不见上头的警告信函吗?
所以,在经过了这多灾多难的一年多之后,终于还是痛定思痛,定下心来重新的再出发,将 Linux 的概念完整的创建起来,包括 Linux
最最基础的文件架构、 指令模式与脚本(Shell and shell scripts)、套件
管理方式和资源与帐号管理等等, 而在将这些基础的架构理解之后,再回头看一下各式各样的 server 启动服务与相关的技巧, 发现“哇!原
来如此呀!怎么这么简单的东西当初搞了我几天几夜睡不好!” 尤其
最重要的登录信息的追踪,帮 VBird 避免了很多不必要的系统伤害行
为。
此外,而为了方便 VBird 本身的管理,于是开始了一些脚本
(shell scripts) 的编写, 他可以化繁为简,让日常的管理变的更轻松
而有效率!当然,这些工作几乎都是在命令行下面完成的, 图形接口
之下的工作毕竟还是有限的。
经过上面 VBird 学习之路的经验分享之后,我想,您应该也慢慢
的了解 VBird 想要提出这本经验谈的书籍最主要的目的了, 那就是
想“让想要学习 Linux 的玩家可以快速且以较为正确的心态来进入
Linux 的世界!”而不要像 VBird 在 Linux 的环境中打转了一年之后才
来正确的创建概念。说到这里要跟大家谈一谈目前的 Linux 学习心态。3. 学习心态的分别
大家都知道 Linux 最强项的地方在于网络,而 Windows 是赢在使
用者接口较为好友。 然而很多使用者还是常常会比较 Linux 与
Windows 这两套相当流行的操作系统, 初次接触 Linux 的人比到最后
的结果都是 “Linux 怎么都要使用命令行来建站,怎么这么麻烦,还是
Windows 比较好用”, 事实上这么比较实在是有点不公平且没有意义,为什么呢?基本上, Windows 是很普及的一个操作系统,这点我们都
无法否认,但是,一般使用 Windows 的使用者用 Windows 来做什么?
上网聊天打屁
无可否认的,用 Windows 来上网浏览信息与聊天对于一般使用者
来说是很重要的!^_^ 不过,这点在 Linux 下面的 X-Window 就能
做到啦!请问您,需要用到命令行吗?不需要对不对! 而且 X-
window 越来越美丽(例如 GNOMEKDE 等等),能使用的空间越
来越大! 使用者想要使用 Linux 来上网打屁,没有问题啰!
打打文书工作、做做电子试算表
文书工作也是目前计算机族群最重要的课题了。这个工作目前在
X-Window 也有相当多的免费软件! 例如 KDE 的 Koffice, 例如
Open office , 呵呵!同样的,在 X-Windows 下面, 很棒对不
对!!是的!真的很容易学习!尤其接口都是图形化的!这也没有
问题!
打打 game、做做休闲娱乐
玩一些较新的3D 游戏可能在 Linux 下面稍微麻烦一点, 因为目前
游戏对于 Linux 的支持度还不是很足够! 但是如果是一般上班族群
的话,那么 Linux 内附的小游戏是相当多的! 让您玩不完,所以,这一点对于大部分的上班族来说,也应该还好!
当然啦,Windows 的工作环境还有很多可以发展的空间,不过这里我们主要以一般使用者的角度来看。 OK!好了,说了上面这几个工
作,请问一下, “一般使用者谁有在使用 Windows 玩建站!”?很少对
不对! 是的!真的是很少人在玩 Windows 的建站!那么如何可以说
Linux 无法普及是命令行惹的祸呢?! VBird 相信,如果是一般使用
者,应该不至于想要使用 Linux 来架设网站, 所以美美的 X-Window 对
于一般使用者已经相当的好用了,实在没有必要来学习建站的原理与过
程, 还有防火墙的注意事项等等的。
话再说回来,那么您干嘛要使用 Linux 建站呢?“因为 Linux 的网
络功能比较强呀!” 说的没错,但是,相对的,比较强的项目可能也具
有比较“危险”的指数, 当您一开始学习 Linux 就只想满脑子的玩建站,却又不好好的弄懂一点点 Linux 与网络基础的话, 呵呵!在 Windows
下面了不起是被攻击到您的 Windows 死掉,但是在 Linux 下面, 却有
可能让您吃上官司的!像上面提到的 VBird 之前的经验。 而如果您已
经习惯以 图形化接口 来管理您的 Linux 主机时, 请特别留意,因为
Linux 的套件是由多个团队研发出来的,( NFS, SAMBA, Sendmail...)
图形接口也仅是一个团队的研发成果,您认为,一个团队的东西可以将
所有团队的内容都完整无缺的表现出来吗? 想必肯定可能会有一些问
题发生,这个时候怎么办?如果您依赖图形久了,呵呵! 看来就只能
求助于外面的工程师了,如此一来,有学跟没有学有何不同?!
曾经有个朋友问我说“唉! Linux 怎么这么麻烦?架设一个 DNS
真是不容易呀!不像 Windows ,简单的很,按几个按钮就搞定了!”这
个时候 VBird 就回答了一句话“不会呀!如果您只是想要安装 DNS 的
话,网络上面一大堆按部就班的设置方式教学,照着做,一样可以在十
分钟之内就完成一个 DNS 主机的设置呀!”他想一想,确实有道理!同
时 VBird 又反问的一件事:“您以为学 Windows 就不需要了解 DNS 的
概念吗?您有尝试过使用 Windows 架设 DNS 却无法让他实地跑的问题
吗? 果真如此的话,这个时候你怎么解决?”他愣住了!因为在
Windows 上面他确实也没有办法解决!所以说,不论是学哪一套系统,“基础的理论都是不变的”,也只有了解了基础的咚咚之后, 其他的技能才能够“触类旁通”呀!
网络上一些老手不太喜欢搞图形接口,是因为觉得他默认的设置
常常不合他们的意, 尤其是,因为图形化接口管理为了方便使用者,常常自己加入一些设置, 但是这些设置却往往是因地制宜的,所以反
而常常会导致架设的网站无法正常工作! 这点在网络新闻群组上面讨
论的已经相当清楚了!与其如此,何不一开始就玩命令行,去弄懂他
呢?
此外,很多玩过 Linux 的朋友大概都会碰到这样的一个问题, 就
是 Linux 的 distribution ( 发展厂商 ) 事实上是非常多的!而每个
distribution 所提供的套件内容虽然大同小异,然而其整合的工具却都不
一样,同时,每种套件在不同的 distribution 上面摆放的目录位置虽然也
是大同小异,然而某些配置文件就是摆在不同的目录下, 这个时候您
怎么找到该信息?难道非得来一套 distribution 就学他的主要内容吗?这
么一来,市面上少说也有数十套 Linux distribution ,每一套都学?如果
您时间多到如此地步,那 VBird 也不知道该说什么好了! 如果是我的
话,那么我会干脆直接学习一些 Linux 的基本技巧, 可以让我很轻易的
就找到不同版本之间的差异性,而且学习之路也会变的更宽广呢!
VBird 的观念不见得一定适合您,不过就只是以一个过来人的身
份给个小建议,要么就不要拿 Linux 来建站,跟 Windows 一样,玩玩
X-Window 就很开心了,要嘛真的得花一点时间来玩一玩比较深入的东
西, 中国话不是说过吗:“要怎么收获就怎么栽”虽然努力不一定有成
果,但最起码, 有成果的时候,成果肯定是自己的!4. 基本的学习流程
由上面鸟哥的经验谈,你不难了解到,学习 Linux 还是需要按部
就班是比较好的! 常常我们会看到初学者最常问的问题就是:“我已经
安装好了 Linux 了,接下来要干嘛?!”呵呵!老师们最常讲的一句话
就是: “那就开始学习如何开机跟关机呀!”不要笑喔! 说真的,安
装好了 Linux 之后,最先要学习的就是正确与安全的开机与关机方法!
否则由于不正常的开关机造成硬盘的损害怎么办!?好了!那么我也会
开机关机了, 那接下来要干嘛?哈!建议买本书来看看吧!
基本上,由于 Linux 是一个开放的架构,所以根本没有所谓的“规
格品!”, 也就是说,每个人所安装好并且设置好的主机都不是相同
的!加上 Linux 的历史差不多十多年左右而已, 并且,他的发展并不是
由一家公司所主导的,而是由一群热血青年相互研究开发的! 也就是
如此,所以一些操作方法与 HOW-TO 的文章并不是十分的多,尤其是
中文译本更是少的可怜! 因此,要学习好 Linux 的话,最好手边有一
本“工具书”, 那么要选择什么型式的工具书呢?!就鸟哥的看法而言,基本上,如果你对于 Linux 的基础操作指令与他的文件架构、工作方
法、安全防火墙设置等有一定的了解时,那么打开网络服务如 WWW、FTP、Mail、DNS 等等的服务就真是太简单了!所以,选择较为基础的
工具书作为你第一本的 Linux 参考书会比较好!早期不要急着买跟建站
有关的书籍啦!那方面的文章太简单了! 还是创建基础的功力比较有
用呢!也有朋友这样建议,找一天有空的时间,然后一整天泡在书店,好好的选择一本入门书籍,嗯!蛮不错的建议!鸟哥也好想找一天泡在
书店呀~
因此,这里建议想要学习 Linux 的朋友们,基础的功夫要学好,往后就不需要太麻烦人家啰!:
先从 Linux 的安装与指令学起:
没有 Linux 怎么学习 Linux 呢?所以好好的安装起一套你需要的Linux 吧!虽然说 Linux 的 distributions 很多,不过基本上架构都是
大同小异的, 差别在于接口的友好度与套件的选择不同罢了!所
以,选择一套你喜欢的就好了, 倒是没有哪一套特别好说~~
了解 Linux 的文件架构与权限概念:
这个重要!由于不同的权限设置会妨碍你的使用者的便利性,但是
太过于便利又会导致入侵的可能! 所以这里需要了解一下你的系
统呦!
多接触命令行:
尽量以命令行学习一些基本的 Linux 使用技巧,虽然一开始进度较
慢,但是熟悉之后, 您未来的学习之路将是以指数增加的型态来
增长您的 Linux 技术呦!
认识与 BASH 相关的咚咚:
既然要玩命令行,那么 BASH shell 这个玩意儿,与里面的“正则表
达式”、 “管线命令”与“命令重导向”等等,真的需要了解比较好
呦!此外,为了帮助您未来的管理, shell scripts 也是挺重要的!
学习一下如何使用 Shell 与 Shell scripts 的写法:
这个是稍微进阶了点,不过也建议学一学呢!对于管理 Linux 主机
的用途很大呦!
至少一定要了解套件管理员:
记得将最重要的套件管理员,亦即 RPM 与 Tarball 的技巧完整的创
建概念, 这将是您相当重要的一门课!
实作的重要性:
在看过书本或者网络上的相关介绍之后,请千万记得自己实作看
看, 没有任何事情比自己实作学的更快的!此外,不要尽信书本或者网络上的教学, 自己亲身去理解,才能体会个中的含意与技
巧。
在进入网络的世界之前,先将基础打稳,那么进入网络的世界将
一点都不困难!
另外,这里还要建议大家,就鸟哥观察一些现象的结果来看
(喔!这是结果论啦!), 常常在网络上发问的朋友们都是一遇到问
题就想要马上得到一些老手的帮助的朋友,不过, 其实这些朋友遇到
的问题的解决方案都已经显示在屏幕上啦! 因为 Linux 的错误讯息本来
就含有相当大量的解决方案的说明在内!此外,在 varlog 这个目录中
的错误讯息也常常提供大量的解决方案!这些都是可以帮你自己节省时
间的参考工具!5. 基本的建站流程表
好了,既然 Linux 的网络功能很强,那么当然很多朋友的目的即
是利用 Linux 来达成建站的目的啰!呵呵!没错!因此,接下来,就是
要玩建站啦!不过, 除非您对于 Linux 已经够熟悉,或者是没办法,真的有公司的压力在,否则,在认识整个 Linux 架构之前,真的不要
玩建站!! 因为,架设不成功那就算了,万一被入侵并且被用来做坏
事,那可就太划不来啦!
此外,鸟哥常常发现一件事情,就是朋友们常常会问一些很怪异
的问题,这些问题提出后, 一看就晓得大概这个朋友没有建站的经验
啦!任何事情都有先后之分,在你尚未学到的咚咚前, 先放着不动也
没有关系!但千万不要跳着学习!!这是大忌讳~例如:不要连
Apache 都还不会架设,就想要架设一个在 NAT 后面的 Apache 主机,那根本就是一个很难完成的任务!即使完成了,可能也会衍生出更多的
小问题来困扰你! 与其如此,不如一步一步的慢慢创建你的网站,不
要想着一步登天啦!很困扰的!
说实在的,通常每个人都有特别喜好的建站方法,当然鸟哥也不
例外, 如果您对于鸟哥还有点信心的话,那么你可以依照下面的方式
一步一步的创建起属于你的 Linux 工作环境喔!
给新手的建议:
这里有一篇 果正兄 给 Linux 新手的建议,非常建议你看一下, 学
一学概念性的东西。另外,里头说的“常用指令”是一定要学会的
喔!此外, man 与 info 这两个指令请一定要会使用!
认识选择硬件配备:
Linux 与硬件的关系是“极为重要的”! 所以你一定要知道你的硬
件等级!你应该要知道即将装 Linux 的硬件是什么? 所以你要了解
你手边的硬件是否可以支持 Linux ,或者说,是否可以满足你的Linux 需求。
进行安装:
这一部分就视你的需求而定,每个人所喜好的 Linux 版本不见得相
同! 不过,如果是新手的话,当然就比较建议使用 Mandrake 或
Red Hat 系统,因为他会比较简单!
了解 Linux 的基础:
这部份包含了 Linux 的群组与使用者概念、文件的权限问题、磁盘
与硬件的管理、资源管理的问题、 quota 与帐号管理、还有很多很
多基本的数据,这些“一定要学会!” 不然,就不要玩建站啦!
认识与编译核心:
其实安装完了 Linux 之后的第一件事,就是将你的核心重新编译一
次,以符合你的需求。 不过,目前市面上的书籍大多将核心编译
摆在最后面才说,这是顾及到新手通常不知道何为核心, 当然也
就不知道核心的功能以及编译核心所带来的稳定性啦!
认识网络:
在实际进入建站的阶段之前,鸟哥希望大家能够对于网络基础有一
定程度的认识!尤其是 DNS 这个观念!!如果对于网络有一定程
度的认识之后,对于您自己的网络除错一定能有长远的帮助的!!
架设区域网络:
通常在一个区域中,不太可能仅有一部 PC ,所以,为了分享彼此
的信息,或者说是多部计算机的数据分享, 呵呵!这就需要用到
区域网络的概念。
连上网际网络:
既然是要建站,当然就要连上 Internet 啦,如果使用的是学术网络,就必须要晓得 gateway 与您的 IP 及 Netmask ,而如果使用
ADSL 的话,使用 rp-pppoe 即可搞定网络拨接的问题!那么如果是
Cable 的话,嗯! DHCP 的设置就得给他知道一下啰!
为你的主机申请一个名字啦:
建站就是要连上 Internet ,所以当然要申请一些必备的数据啰!除
非您要自掏腰包去注册固定的 DNS 名称,否则动态 IP 应该够您使
用的啰!
架设 NAT:
既然要分享网络带宽的话,当然就是要架设 NAT 啦,架设完了之
后,区域内所有的计算机都可以连线了!
架设 Proxy :
而既然所有的计算机都是通过这一台 NAT 主机来对外连线,当
然,设置一个 Proxy 将对你的内部网络的浏览速度应该会有所帮助
的!
架设 Mail:
架设 Linux 主机的附属功能,就是可以拥有并控管自己的信箱,以
及自己的网页!这时,就需要来架设 E-Mail 了!
架设 WWW :
如同 mail server , WWW server 也是很重要的一环, Linux 可以提
供给你相当不错的网页空间喔! 更重要的是,设置上很方便很方
便....
架设 SAMBA :
另外一个需要的服务就是 samba 服务了,这个软件让你的 Linux 可
以在 Windows 系统的“网络上的芳邻”被看到!很不错的优!因为,Linux 是一套很稳定的系统,而且不容易受到类似 “红色警戒”
这一类的攻击型病毒,因此,你可以使用“网络上的芳邻”将你在
Windows 的数据直接备份,或者直接取用于 Linux 主机中,如此还
可具有备份文件的功能!
基本上,鸟哥所架设的主机大概就只有上面几个服务,不过, 有
上面的几项服务也足够应付你所需要的网络信息啰!如果还有需要的
话,才建议去研究 DHCP、DNS 与 FTP 等服务啦!6. 简易的安全防护
其实在架设网站的过程就应该要注意到这方面的技巧了!“网站安
全” 真的是很重要的一环!那一天跟一些朋友在聊天的时后聊到了某天
VBird 在报纸上看到的消息!话说美国几乎是全世界骇客最喜欢去入侵
的国家(像是微软啦,FBI 啦, CIA 啦等等的!),毕竟他号称是强
者,而强者最容易遭到对现实不满或者被欺压者的报复了!
但是这些骇客总不希望自己的行踪被发现而使自己的国家蒙受委
屈吧!所以他们总是会通过 Internet 找寻合适的“中继跳板”站作为入侵
的门口, 您晓得吗,在该篇报导中指出,美国最不满的国家之一就是
台湾(唉~可怜的台湾, 动不动就要被不满!我们要自立自强才
行!!咦!我可不是叫大家去做骇客呦! 我是说我们需要正本清源!
从本身做起!好好的注意自己的网站安全呢!),为什么呢? 因为台
湾的很多网站普遍缺乏“安全”概念, 甚至有些大型的网站几乎没有安全
防护机制!这就容易成为骇客的目标了! 因为大型网站的流量通常够
大,足够骇客们进行任何网络破坏行为了!
想想看,如此一来不只美国,其他国家甚至可能会对于台湾的网
络流量进行减缩的动作, 以防止不良的连线封包进入!那么我们以后
想要连到国外去不就很龟速了吗?! 是呀!所以安全的网站也是相当
重要的呀!
那么您认为“嗯!反正我的流量又不大,只是 56 kbps 的 ADSL
流量罢了,骇客总不会想要入侵我这种小站吧?!”
错!!
进行网络骇客的行为根本不需要大流量! 只要能连线就能进行任何的
破坏行为了!而且这些连线的讯息通常不会运用来传输数据, 而是用
来下达一些简单的指令而已!所以流量也根本就不需要太大的!要知
道,如果被骇客侵入后, 将可能变成骇客攻击的中继站!也就是说,后门程序将会帮助骇客经由你的主机去攻击他想要攻击的目标! 那就够严重的了!因为如果对方追查该封包得最后结果是您的网站,呵呵!
可是要吃上官司的!!
所以呢,当然要对于你的 Linux 做一些手术,让他变的更安全才
行啦! 在安装完了主机之后,请确认一下:
架设安全的 Linux 主机;
限制 Linux 主机的连线计算机;
更改 wu-ftp 成为 proftp 系统;
简单的防火墙设置;
Linux 的套件升级;
2001xxxx:不知道是什么时候完成的第一篇内容;
20030121:将原本的数据,配合 VBird 的 Linux 学习之路,完成这一篇短文。
20041019:将风格改写为最近设置的样式!第零章、计算机概论 最近更新日期:20
由过去的经验当中,鸟哥发现到因为兴趣或生活所逼而必须要接触 Linux 的朋友,很多可能并非信息相关专业出身, 因此对于电脑软硬件方面的概念不熟。然而操作系统这
种咚咚跟硬件有相当程度的关连性, 所以,如果不了解一下计算机概论,要很快的了解
Linux 的概念是有点难度的。因此,鸟哥就自作聪明的新增一个小章节来谈谈计概啰! 因
为鸟哥也不是信息相关学科出身,所以,写的不好的地方请大家多多指教啊!^_^Tips
0.1 电脑:辅助人脑的好工具
现在的人们几乎无时无刻都会碰电脑!不管是桌面电脑(台式
机)、笔记本电脑(笔记本)、平板电脑、智能手机等等,这些东西都
算是电脑。 虽然接触的这么多,但是,你了解电脑里面的元件有什么
吗?以台式机来说,电脑的机箱里面含有什么元件?不同的电脑可以应
用在哪些工作? 你生活周遭有哪些电器用品内部是含有电脑相关元件
的?下面我们就来谈一谈这些东西呢!
所谓的电脑就是一种计算机,而计算机其实是:“接受使用者输入
指令与数据,经由中央处理器的数学与逻辑单元运算处理后, 以产生
或储存成有用的信息”。因此,只要有输入设备 (不管是键盘还是触摸
屏) 及输出设备 (例如电脑屏幕或直接由打印机打印出来),让你可
以输入数据使该机器产生信息的, 那就是一部计算机了。
电脑可以协助人们进行大量的运算!以前如果要计算化
学反应式都得要算个老半天,有了电脑仿真软件后,就
有不一样的情况发生了! 以下图为例,鸟哥的工作中,有一项
是需要将人们排放的空气污染物带入电脑模式进行仿真后,计算
出可能产生的空气污染并得到空气品质状态,最后经过分析软件
得到各式各样的图表。 经过这些图表的解析,就可以让人们知道什么样的污染排放来
源可能会产生什么样的空气品质变化啰。
图0.1.1、计算器的功能
好了,根据这个定义你知道哪些东西是计算机了吗?其实包括一
般商店用的简易型加减乘除计算器、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你上课会使用的桌上型
个人电脑、外出可能会带的笔记本电脑 (包括 notebook 与 netbook),还有近几年 (2015前后) 非常热门的平板电脑与智能手机, 甚至是未
来可能会大流行的单版电脑 (Xapple pi, banana pi, Raspberry pi,[1]) 与
智能手表,甚至于更多的智能穿戴式电脑[2]
等等,这些都是计算机喔!
那么计算机主要的组成元件是什么呢?下面我们以常见的个人电
脑主机或服务器工作站主机来作为说明好了。
0.1.1 计算机硬件的五大单元
关于电脑的硬件组成部分,其实你可以观察你的台式机来分析一
下,依外观来说这家伙主要可分为三部分,分别是:
输入单元:包括键盘、鼠标、读卡机、扫描仪、手写板、触摸屏等
等一堆;
主机部分:这个就是系统单元,被主机机箱保护住了,里面含有一
堆板子、CPU 与内存等;
输出单元:例如屏幕、打印机等等
我们主要通过输入设备如鼠标与键盘来将一些数据输入到主机里
面,然后再由主机的功能处理成为图表或文章等信息后, 将结果传输
到输出设备,如屏幕或打印机上面。那主机里面含有什么元件呢?如果
你曾经拆开过电脑主机机箱 (包括拆开你的智能手机也一样喔!),会发现其实主机里面最重要的就是一块主板,上面安插了中央处理器
(CPU) 以及内存、硬盘 (或记忆卡) 还有一些适配卡设备而已。 当
然大部分智能手机是将这些元件直接焊接在主板上面而不是插卡啦!
整部主机的重点在于中央处理器 (Central Processing Unit,CPU),CPU 为一个具有特定功能的芯片, 里头含有微指令集,如果
你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关
内置的微指令集才可以。 由于 CPU 的工作主要在于管理与运算,因此Tips
在 CPU 内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单
元。[3]
其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主
要在协调各周边元件与各单元间的工作。
既然 CPU 的重点是在进行运算与判断,那么要被运算与判断的数
据是从哪里来的? CPU 读取的数据都是从内存来的! 内存内的数据则
是从输入单元所传输进来!而 CPU 处理完毕的数据也必须要先写回内
存中,最后数据才从内存传输到输出单元。
为什么我们都会说,要加快系统性能,通常将内存容量
加大就可以获得相当好的成效?如同下图以及上面的说
明,因为所有的数据都要经过内存的传输, 所以内存的容量如
果太小,数据高速缓存就不足~影响性能相当大啊!尤其针对
Linux 作为服务器的环境下!这点要特别记忆喔!
综合上面所说的,我们会知道其实电脑是由几个单元所组成的,包括输入单元、 输出单元、CPU 内部的控制单元、算数逻辑单元与内
存五大部分。 这几个东西的相关性如下所示:图0.1.2、电脑的五大单元[4]
上面图示中的“系统单元”其实指的就是电脑机箱内的主要元件,而重点在于 CPU 与内存。 特别要看的是实线部分的传输方向,基本上
数据都是流经过内存再转出去的! 至于数据会流进流出内存则是 CPU
所发布的控制命令!而 CPU 实际要处理的数据则完全来自于内存 (不
管是程序还是一般文件数据)!这是个很重要的概念喔! 这也是为什
么当你的内存不足时,系统的性能就很糟糕!也是为什么现在人们买智
能手机时,对于可用内存的要求都很高的原因!
而由上面的图示我们也能知道,所有的单元都是由 CPU 内部的控
制单元来负责协调的,因此 CPU 是整个电脑系统的最重要部分! 那么
目前世界上有哪些主流的 CPU 呢?是否刚刚我们谈到的硬件内全部都
是相同的 CPU 架构呢?下面我们就来谈一谈。
0.1.2 一切设计的起点: CPU 的架构
如前面说过的,CPU 其实内部已经含有一些微指令,我们所使用
的软件都要经过 CPU 内部的微指令集来达成才行。 那这些指令集的设
计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要
CPU 架构, 分别是:精简指令集 (RISC) 与复杂指令集 (CISC) 系
统。下面我们就来谈谈这两种不同 CPU 架构的差异啰!
精简指令集 (Reduced Instruction Set Computer, RISC):[5]
这种 CPU 的设计中,微指令集较为精简,每个指令的执行时间都
很短,完成的动作也很单纯,指令的执行性能较佳; 但是若要做复杂
的事情,就要由多个指令来完成。常见的 RISC 微指令集 CPU 主要例如
甲骨文 (Oracle) 公司的 SPARC 系列、 IBM 公司的 PowerArchitecture (包括 PowerPC) 系列、与安谋公司 (ARM Holdings)
的 ARM CPU 系列等。
在应用方面,SPARC CPU 的电脑常用于学术领域的大型工作站
中,包括银行金融体系的主要服务器也都有这类的电脑架构; 至于
PowerPC架构的应用上,例如索尼(Sony)公司出产的Play Station
3(PS3)就是使用PowerPC架构的Cell处理器; 那安谋的 ARM 呢?你
常使用的各厂牌手机、PDA、导航系统、网络设备(交换器、路由器
等)等,几乎都是使用 ARM 架构的 CPU 喔! 老实说,目前世界上使
用范围最广的 CPU 可能就是 ARM 这种架构的呢!
[6]
复杂指令集(Complex Instruction Set Computer, CISC):[7]
与RISC不同的,CISC在微指令集的每个小指令可以执行一些较低
阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因
为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令
可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。
由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个
人电脑(Personal computer)用途上面, 因此,个人电脑常被称为x86
架构的电脑!那为何称为x86架构[8]
呢? 这是因为最早的那颗Intel发展
出来的CPU代号称为8086,后来依此架构又开发出80286, 80386..., 因
此这种架构的CPU就被称为x86架构了。
在2003年以前由Intel所开发的x86架构CPU由8位升级到16、32
位,后来AMD依此架构修改新一代的CPU为64位, 为了区别两者的差
异,因此64位的个人电脑CPU又被统称为x86_64的架构喔!
所谓的位指的是CPU一次数据读取的最大量!64位CPU代表CPU一次可以读写64bits这
么多的数据,32位CPU则是CPU一次只能读取32位的意思。 因为CPU读取数据量有限
制,因此能够从内存中读写的数据也就有所限制。所以,一般32位的CPU所能读写的最Tips
大数据量,大概就是4GB左右。
那么不同的x86架构的CPU有什么差异呢?除了
CPU的整体结构(如第二层高速缓存、每次运行可执行的指令数等)之
外, 主要是在于微指令集的不同。新的x86的CPU大多含有很先进的微
指令集, 这些微指令集可以加速多媒体程序的运行,也能够加强虚拟
化的性能,而且某些微指令集更能够增加能源效率, 让CPU耗电量降低
呢!由于电费越来越高,购买电脑时,除了整体的性能之外, 节能省
电的CPU特色也可以考虑喔!
例题:
最新的IntelAMD的x86架构中,请查询出多媒体、虚拟化、省电功能
各有哪些重要的微指令集?(仅供参考)
答:
多媒体微指令集:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!
虚拟化微指令集:Intel-VT, AMD-SVM
省电功能:Intel-SpeedStep, AMD-PowerNow!
6432位相容技术:AMD-AMD64, Intel-EM64T
0.1.3 其他单元的设备
五大单元中最重要的控制、算术逻辑被整合到 CPU 的封装中,但
系统当然不可能只有 CPU 啊!那其他三个重要电脑单元的设备还有哪
些呢? 其实在主机机箱内的设备大多是通过主板 (main board) 连接
在一块,主板上面有个链接沟通所有设备的芯片组,这个芯片组可以将
所有单元的设备链接起来, 好让 CPU 可以对这些设备下达命令。其他单元的重要设备主要有:
系统单元:如图 0.1.2 所示,系统单元包括 CPU 与内存及主板相关
元件。而主板上头其实还有很多的连接接口与相关的适配卡,包括
鸟哥近期常使用的 PCI-E 10G 网卡、 磁盘阵列卡、还有显卡等
等。尤其是显卡,这东西对于玩3D游戏来说是非常重要的一环,他与显示的精致度、色彩与分辨率都有关系。
存储单元:包括内存 (main memory, RAM) 与辅助内存,其中辅
助内存其实就是大家常听到的“储存设备”啰!包括硬盘、软盘、光
盘、磁带等等的。
输入、输出单元:同时涵盖输入输出的设备最常见的大概就是触摸
屏了。至于单纯的输入设备包括前面提到的键盘鼠标之外,目前的
体感设备也是重要的输入设备喔! 至于输出设备方面,除了屏幕
外,打印机、音效喇叭、HDMI电视、投影机、蓝牙耳机等等,都
算喔!
更详细的各项主机与周边设备我们将在下个小节进行介绍!在这
里我们先来了解一下各元件的关系啰!那就是,电脑是如何运行的呢?
0.1.4 运行流程
如果不是很了解电脑的运行流程的话,鸟哥拿个简单的想法来思
考好了~假设电脑是一个人体,那么每个元件对应到那个地方呢?可以
这样思考:图0.1.3、各元件运行
CPU=脑袋瓜子:每个人会作的事情都不一样(微指令集的差
异),但主要都是通过脑袋瓜子来进行判断与控制身体各部分的活
动;
内存=脑袋中放置正在被思考的数据的区块:在实际活动过程中,我们的脑袋瓜子需要有外界刺激的数据 (例如光线、环境、语言
等) 来分析,那这些互动数据暂时存放的地方就是内存,主要是
用来提供给脑袋瓜子判断用的信息。
硬盘=脑袋中放置回忆的记忆区块:跟刚刚的内存不同,内存是提
供脑袋目前要思考与处理的信息,但是有些生活琐事或其他没有要
立刻处理的事情, 就当成回忆先放置到脑袋的记忆深处吧!那就
是硬盘!主要目的是将重要的数据记录起来,以便未来将这些重要
的经验再次的使用;
主板=神经系统:好像人类的神经一样,将所有重要的元件连接起来,包括手脚的活动都是脑袋瓜子发布命令后, 通过神经(主
板)传导给手脚来进行活动啊!
各项周边设备=人体与外界沟通的手、脚、皮肤、眼睛等:就好像
手脚一般,是人体与外界互动的重要关键!
显卡=脑袋中的影像:将来自眼睛的刺激转成影像后在脑袋中呈
现,所以显卡所产生的数据来源也是CPU控制的。
电源供应器 (Power)=心脏:所有的元件要能运行得要有足够的
电力供给才行!这电力供给就好像心脏一样,如果心脏不够力,那么全身也就无法动弹的!心脏不稳定呢?那你的身体当然可能断
断续续的~不稳定!
由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜
子! 而脑袋瓜子当中与现在正在进行的工作有关的就是CPU与内存!任
何外界的接触都必须要由脑袋瓜子中的内存记录下来, 然后给脑袋中
的CPU依据这些数据进行判断后,再发布命令给各个周边设备!如果需
要用到过去的经验, 就得由过去的经验(硬盘)当中读取啰!
也就是说,整个人体最重要的地方就是脑袋瓜子,同样的,整部
主机当中最重要的就是CPU与内存, 而CPU的数据来源通通来自于内
存,如果要由过去的经验来判断事情时, 也要将经验(硬盘)挪到目
前的记忆(内存)当中,再交由CPU来判断喔!这点得要再次的强调
啊! 下个章节当中,我们就对目前常见的个人电脑各个元件来进行说
明啰!
0.1.5 电脑按用途分类知道了电脑的基本组成与周边设备,也知道其实电脑的CPU种类
非常的多,再来我们想要了解的是,电脑如何分类? 电脑的分类非常
多种,如果以电脑的复杂度与运算能力进行分类的话,主要可以分为这
几类:
超级计算机(Supercomputer)
超级计算机是运行速度最快的电脑,但是他的维护、操作费用也最
高!主要是用于需要有高速计算的计划中。 例如:国防军事、气
象预测、太空科技,用在仿真的领域较多。详情也可以参考: 国
家高速网络与计算中心http:www.nchc.org.tw的介绍! 至于全世界
最快速的前500大超级计算机,则请参考:http:www.top500.org。
大型计算机(Mainframe Computer)
大型计算机通常也具有数个高速的CPU,功能上虽不及超级计算
机,但也可用来处理大量数据与复杂的运算。 例如大型企业的主
机、全国性的证券交易所等每天需要处理数百万笔数据的企业机
构, 或者是大型企业的数据库服务器等等。
迷你电脑(Minicomputer)
迷你电脑仍保有大型计算机同时支持多使用者的特性,但是主机可
以放在一般作业场所, 不必像前两个大型计算机需要特殊的空调
场所。通常用来作为科学研究、工程分析与工厂的流程管理等。
工作站(Workstation)
工作站的价格又比迷你电脑便宜许多,是针对特殊用途而设计的电
脑。在个人电脑的性能还没有提升到目前的状况之前, 工作站电
脑的性能价格比是所有电脑当中较佳的,因此在学术研究与工程
分析方面相当常见。
微电脑(Microcomputer)
个人电脑就属于这部份的电脑分类,也是我们本章主要探讨的目标!体积最小,价格最低,但功能还是五脏俱全的! 大致又可分
为桌上型、笔记型等等。
若光以性能来说,目前的个人电脑性能已经够快了,甚至已经比
工作站等级以上的电脑运算速度还要快! 但是工作站电脑强调的是稳
定不死机,并且运算过程要完全正确,因此工作站以上等级的电脑在设
计时的考虑与个人电脑并不相同啦! 这也是为啥工作站等级以上的电
脑售价较贵的原因。
0.1.6 电脑上面常用的计算单位 (容量、速度等)
电脑的运算能力除了 CPU 微指令集设计的优劣之外,但主要还是
由速度来决定的。至于存放在电脑储存设备当中的数据容量也是有单位
的。
容量单位
电脑对数据的判断主要依据有没有通电来记录信息,所以理论上
对于每一个纪录单位而言,它只认识 0 与 1 而已。01 这个二进制的的
单位我们称为 bit。 但 bit 实在太小了,所以在储存数据时每份简单的数
据都会使用到 8 个 bits 的大小来记录,因此定义出 Byte 这个单位,他
们的关系为:
1 Byte = 8 bits
不过同样的,Byte 还是太小了,在较大的容量情况下,使用 Byte
相当不容易判断数据的大小,举例来说,1000000 Bytes 这样的显示方
式你能够看得出有几个零吗?所以后来就有一些常见的简化单位表达
式,例如 K 代表 1024Byte,M 代表 1024K 等。 而这些单位在不同的进Tips
位制下有不同的数值表示,下面就列出常见的单位与进位制对应:
进位制 Kilo Mega Giga Tera Peta Exa Zetta
二进制 1024 1024K 1024M 1024G 1024T 1024P 1024E
十进制 1000 1000K 1000M 1000G 1000T 1000P 1000E
一般来说,文件大小使用的是二进制的方式,所以 1GBytes 的文
件大小实际上为:1024x1024x1024Bytes 这么大! 速度单位则常使用十
进制,例如 1GHz 就是 1000x1000x1000Hz 的意思。
那么什么是“进位”呢?以人类最常用的十进制为例,每
个“位置”上面最多仅能有一个数值,这个数值不可以比 9
还要大!那比 9 还大怎办? 就用“第二个位置来装一个新的 1 ”!
所以, 9 还是只有一个位置, 10 则是用了两个位置了。好了那
如果是 16 进位怎办?由于每个位置只能出现一个数值, 但是数
字仅有 0~9 而已啊!因此 16 进位中,就以 A 代表 10 的意思,以 B 代表 11 的意思,所
以 16 进位就是 0~9, a, b, c, d, e, f,有没有看到, “每个位置最多还是只有一个数值而
已”喔!好了,那回来谈谈二进制。因为每个位置只能有 0, 1 而已,不能出现 2 (逢 2
进一位) 啦!这样了解乎?
速度单位
CPU的运算速度常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其
实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少
Mbit。举例来说,大家常听到的 20M5M 光世代传输速度,如果转成文
件大小的 Byte 时,其实理论最大传输值为:每秒 2.5MByte 每秒
625KByte的下载上传速度喔!
例题:
假设你今天购买了500GB的硬盘一颗,但是格式化完毕后却只剩下460GB左右的容量,这是什么原因?
答:
因为一般硬盘制造商会使用十进制的单位,所以500GByte代表为
500100010001000Byte之意。 转成文件的容量单位时使用二进制
(1024为底),所以就成为466GB左右的容量了。
硬盘厂商并非要骗人,只是因为硬盘的最小物理量为512Bytes,最小
的组成单位为扇区(sector), 通常硬盘容量的计算采用“多少个
sector”,所以才会使用十进制来处理的。相关的硬盘信息在这一章后
面会提到的!0.2 个人电脑架构与相关设备元件
一般消费者常说的电脑通常指的就是x86的个人电脑架构,因此我
们有必要来了解一下这个架构的各个元件。事实上,Linux最早在发展
的时候,就是依据个人电脑的架构来发展的, 所以真的得要了解一下
呢!另外,早期两大主流x86开发商(Intel, AMD)的CPU架构与设计理
念都有些许差异。不过互相学习对方长处的结果,就是两者间的架构已
经比较类似了。 由于目前市场占有率还是以 Intel 为大宗,因此下面以
目前(2015)相对较新的 Intel 主板架构来谈谈:
图 0.2.1、Intel芯片架构
由于主板是链接各元件的一个重要项目,因此在主板上面沟通各Tips
部元件的芯片组设计优劣,就会影响性能不少喔!早期的芯片组通常分
为两个桥接器来控制各元件的沟通, 分别是:(1)北桥:负责链接速
度较快的CPU、内存与显卡接口等元件;(2)南桥:负责连接速度较
慢的设备接口, 包括硬盘、USB、网卡等等。(芯片组的南北桥与三国
的大小乔没有关系 @_@)。不过由于北桥最重要的就是 CPU 与内存之
间的桥接,因此目前的主流架构中, 大多将北桥内存控制器整合到
CPU 封装当中了。所以上图你只会看到 CPU 而没有看到以往的北桥芯
片喔!
早期芯片组分南北桥,北桥可以连接 CPU、内存与显
卡。只是 CPU 要读写到内存的动作,还需要北桥的支
持,也就是 CPU 与内存的交流, 会瓜分掉北桥的总可用带宽,真浪费!因此目前将内存控制器整合到 CPU 后,CPU与内存之
间的沟通是直接交流,速度较快之外,也不会消耗更多的带宽!
毕竟目前世界上x86的CPU主要供应商为Intel,所以下面鸟哥将以
Intel的主板架构说明各元件啰! 我们以华硕公司出的主板,型号:Asus
Z97-AR 作为一个说明的范例,搭配着主板芯片组逻辑图 0.2.1 的说明,主板各元件如下所示:图 0.2.2、ASUS 主板 (图片为华硕公司所有)
上述的图片中,主板上面设计的插槽主要有 CPU (Intel LGA
1150 Socket)、内存 (DDR3 3200 support)、显卡接口 (PCIe3.0)、SATA 磁盘插槽 (SATA express)等等。 下面的元件在解说的时候,请参考上述两张图示来印证喔!0.2.1 执行脑袋运算与判断的 CPU
如同华硕主板示意图上半部的中央部分,那就是CPU插槽。 由于
CPU负责大量运算,因此CPU通常是具有相当高发热量的元件。所以如
果你曾经拆开过主板, 应该就会看到CPU上头通常会安插一颗风扇来主
动散热的。
x86个人电脑的CPU主要供应商为Intel与AMD,目前(2015)主流
的CPU都是双核以上的架构了! 原本的单核心CPU仅有一个运算单元,所谓的多核心则是在一颗CPU封装当中嵌入了两个以上的运算核心, 简
单的说,就是一个实体的CPU外壳中,含有两个以上的CPU单元就是
了。
不同的CPU型号大多具有不同的脚位(CPU上面的插脚),能够
搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只
考虑CPU,你还得要留意你的主板上面所支持的CPU型号喔! 不然买了
最新的CPU也不能够安插在你的旧主板上头的!目前主流的CPU有Intel
的 i3i5i7 系列产品中,甚至先后期出厂的类似型号的脚位也不同, 例
如 i7-2600 使用 LGA1155 脚位而 i7-4790 则使用 FCLGA1150 脚位,挑
选时必须要很小心喔!
我们前面谈到CPU内部含有微指令集,不同的微指令集会导致
CPU工作效率的优劣。除了这点之外, CPU性能的比较还有什么呢?那
就是CPU的频率了!什么是频率呢?简单的说, 频率就是CPU每秒钟可
以进行的工作次数。 所以频率越高表示这颗CPU单位时间内可以作更多
的事情。举例来说,Intel的 i7-4790 CPU频率为3.6GHz, 表示这颗CPU
在一秒内可以进行3.6x109次工作,每次工作都可以进行少数的指令运行
之意。
注意,不同的CPU之间不能单纯的以频率来判断运算性能喔!这是因为每颗CPU的微指
令集不相同,架构也不见得一样,可使用的第二层高速缓存及其计算机制可能也不同,加上每次频率能够进行的工作指令数也不同!所以,频率目前仅能用来比较同款CPU的Tips
Tips
速度!
CPU的工作频率:外频与倍频
早期的 CPU 架构主要通过北桥来链接系统最重要的 CPU、内存与
显卡设备。因为所有的设备都得通过北桥来链接,因此每个设备的工作
频率应该要相同。 于是就有所谓的前端总线 (FSB) 这个东西的产
生。但因为 CPU 的运算速度比其他的设备都要来的快,又为了要满足
FSB 的频率,因此厂商就在 CPU 内部再进行加速, 于是就有所谓的外
频与倍频了。
总结来说,在早期的 CPU 设计中,所谓的外频指的是CPU与外部
元件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作性能的
一个倍数, 两者相乘才是CPU的频率速度。例如 Intel Core 2 E8400 的
内频为 3.0GHz,而外频是333MHz,因此倍频就是9倍啰!
(3.0G=333Mx9, 其中1G=1000M)
很多计算机硬件玩家很喜欢玩“超频”,所谓的超频指的
是: 将CPU的倍频或者是外频通过主板的设置功能更改
成较高频率的一种方式。但因为CPU的倍频通常在出厂时已经被
锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将他的外
频333MHz调整成为400MHz,但如此一来整个主板的各个元件的运行频率可能都会被增
加成原本的1.333倍(43), 虽然CPU可能可以到达3.6GHz,但却因为频率并非正常速
度,故可能会造成死机等问题。
但如此一来所有的数据都被北桥卡死了,北桥又不可能比 CPU 更
快,因此这家伙常常是系统性能的瓶颈。为了解决这个问题,新的 CPU
设计中, 已经将内存控制器整合到 CPU 内部,而链接 CPU 与内存、显
卡的控制器的设计,在Intel部份使用 QPI (Quick Path Interconnect) 与Tips
DMI 技术,而 AMD 部份则使用 Hyper Transport 了,这些技术都可以让
CPU 直接与内存、显卡等设备分别进行沟通,而不需要通过外部的链接
芯片了。
因为现在没有所谓的北桥了 (整合到 CPU 内),因此,CPU 的
频率设计就无须考虑得要同步的外频,只需要考虑整体的频率即可。
所以,如果你经常有查阅自己 CPU 频率的习惯,当使用 cpu-z
[9]
这个
软件时,应该会很惊讶的发现到,怎么外频变成 100MHz 而倍频可以到
达 30 以上!相当有趣呢!
现在 Intel 的 CPU 会主动帮你超频喔!例如 i7-4790 这颗
CPU 的规格
[10]
中,基本频率为 3.6GHz,但是最高可
自动超频到 4GHz 喔! 通过的是 Intel 的 turbo 技术。同时,如果
你没有大量的运算需求,该 CPU 频率会降到 1.xGHz 而已,借此
达到节能省电的目的!所以,各位好朋友, 不需要自己手动超
频了!Intel 已经自动帮你进行超频了...所以,如果你用 cpu-z 观察 CPU 频率,发现该频
率会一直自动变动,很正常!你的系统没坏掉!
32位与64位的CPU与总线“宽度”
从前面的简易说明中,我们知道 CPU 的各项数据通通得要来自于
内存。因此,如果内存能提供给 CPU 的数据量越大的话,当然整体系
统的性能应该也会比较快! 那如何知道内存能提供的数据量呢?此时
还是得要借由 CPU 内的内存控制芯片与内存间的传输速度“前端总线速
度(Front Side Bus, FSB) 来说明。
与 CPU 的频率类似的,内存也是有其工作的频率,这个频率限制
还是来自于 CPU 内的内存控制器所决定的。以图0.2.1 为例, CPU 内置
的内存控制芯片对内存的工作频率最高可达到 1600MHz。这只是工作
频率(每秒几次)。一般来说,每次频率能够传输的数据量,大多为
64 位,这个 64 位就是所谓的“宽度”了! 因此,在图0.2.1 这个系统中,Tips
CPU可以从内存中取得的最快带宽就是 1600MHz 64bit = 1600MHz 8
Bytes = 12.8GBytes。
与总线宽度相似的,CPU每次能够处理的数据量称为字组大小
(word size), 字组大小依据CPU的设计而有32位与64位。我们现在所
称的电脑是32或64位主要是依据这个 CPU解析的字组大小而来的!早期
的32位CPU中,因为CPU每次能够解析的数据量有限, 因此由内存传来
的数据量就有所限制了。这也导致32位的CPU最多只能支持最大到
4GBytes的内存。
得利于北桥整合到 CPU 内部的设计,CPU 得以“个别”跟
各个元件进行沟通!因此,每种元件与 CPU 的沟通具有
很多不同的方式!例如内存使用系统总线带宽来与 CPU 沟通。
而显卡则通过PCI-E的序列信道设计来与CPU沟通喔!详细说明
我们在本章稍后的主板部份再来谈谈。
CPU等级
由于x86架构的CPU在Intel的Pentium系列(1993年)后就有不统一
的脚位与设计,为了将不同种类的CPU规范等级, 所以就有
i386,i586,i686等名词出现了。基本上,在Intel Pentium MMX与AMD K6
年代的CPU称为i586等级, 而Intel Celeron与AMD Athlon(K7)年代之
后的32位CPU就称为i686等级。 至于目前的64位CPU则统称为x86_64等
级。
目前很多的程序都有对CPU做最优化的设计,万一哪天你发现一
些程序是注明给x86_64的CPU使用时, 就不要将他安装在686以下等级
的电脑中,否则可是会无法执行该软件的! 不过,在x86_64的硬件下
倒是可以安装386的软件喔!也就是说,这些东西具有向下相容的能力
啦!超线程 (Hyper-Threading, HT)
我们知道现在的 CPU 至少都是两个核心以上的多核心 CPU 了,但是 Intel 还有个很怪的东西,叫做 CPU 的超线程 (Hyper-Threading)
功能! 那个是啥鬼东西?我们知道现在的 CPU 运算速度都太快了,因
此运算核心经常处于闲置状态下。而我们也知道现在的系统大多都是多
任务的系统, 同时间有很多的程序会让 CPU 来执行。因此,若 CPU 可
以假象的同时执行两个程序,不就可以让系统性能增加了吗?反正 CPU
的运算能力还是没有用完啊!
那是怎么达成的啊这个 HT 功能?强者鸟哥的同事蔡董大大用个
简单的说明来解释。在每一个 CPU 内部将重要的寄存器 (register) 分
成两群, 而让程序分别使用这两群寄存器。也就是说,可以有两个程
序“同时竞争 CPU 的运算单元”,而非通过操作系统的多任务切换! 这
一过程就会让 CPU 好像“同时有两个核心”的模样!因此,虽然大部分
i7 等级的 CPU 其实只有四个实体核心,但通过 HT 的机制, 则操作系
统可以抓到八个核心!并且让每个核心逻辑上分离,就可以同时运行八
个程序了。
虽然很多研究与测试中,大多发现 HT 虽然可以提升性能,不
过,有些情况下却可能导致性能降低喔!因为,实际上明明就仅有一个
运算单元嘛! 不过在鸟哥使用数值模式的情况下,因为鸟哥操作的数
值模式主要为平行运算功能,且运算通常无法达到 100% 的 CPU 使用
率,通常仅有大约60%运算量而已。 因此在鸟哥的实作过程中,这个
HT 确实提升相当多的性能!至少应该可以节省鸟哥大约30%~50%的等
待时间喔!不过网络上大家的研究中, 大多说这个是 case by case,而
且使用的软件影响很大!所以,在鸟哥的例子是启用 HT 帮助很大!您
的案例就得要自行研究啰!0.2.2 内存
如同图0.2.2、华硕主板示意图中的右上方部分的那四根插槽,那
就是内存的插槽了。 内存插槽中间通常有个突起物将整个插槽稍微切
分成为两个不等长的距离, 这样的设计可以让使用者在安装内存时,不至于前后脚位安插错误,是一种防呆的设计喔。
前面提到CPU所使用的数据都是来自于内存(main memory),不
论是软件程序还是数据,都必须要读入内存后CPU才能利用。 个人电脑
的内存主要元件为动态随机存取内存(Dynamic Random Access
Memory, DRAM), 随机存取内存只有在通电时才能记录与使用,断电
后数据就消失了。因此我们也称这种RAM为挥发性内存。
DRAM根据技术的更新又分好几代,而使用上较广泛的有所谓的
SDRAM与DDR SDRAM两种。 这两种内存的差别除了在于脚位与工作
电压上的不同之外,DDR是所谓的双倍数据传送速度(Double Data
Rate), 他可以在一次工作周期中进行两次数据的传送,感觉上就好像
是CPU的倍频啦! 所以传输频率方面比SDRAM还要好。新一代的PC大
多使用DDR内存了。 下表列出SDRAM与DDR SDRAM的型号与频率及
带宽之间的关系。[11]
SDRAMDDR 型号 数据宽度
(bit)
内部频率
(MHz)
频率
速度
带宽(频率x宽
度)
SDRAM PC100 64 100 100 800MBytessec
SDRAM PC133 64 133 133 1064MBytessec
DDR DDR-
266
64 133 266 2.1GBytessec
DDR DDR-
400
64 200 400 3.2GBytessec
DDR DDR2-
800
64 200 800 6.4GBytessecTips
DDR DDR3-
1600
64 200 1600 12.8GBytessec
DDR SDRAM又依据技术的发展,有DDR, DDR2, DDR3, DDR4等
等,其中,DDR2 的频率倍数则是 4 倍而DDR3 则是 8 倍喔! 目前鸟哥
用到服务器等级的内存,已经到 DDR4 了耶!超快超快!
在图 0.2.1 中,内存的规格内提到 DDR3DDR3L 同时支
持,我们知道 DDR3 了,那 DDR3L 是啥鬼? 为了节省
更多的电力,新的制程中降低了内存的操作电压,因此 DDR3 标
准电压为 1.5V,但 DDR3L 则仅须 1.35V 喔!通常可以用在耗电
量需求更低的笔记本中! 但并非所有的系统都同步支持!这就
得要看主板的支持规格啰!否则你买了 DDR3L 安插在不支持的主板上,DDR3L 内存是
可能会烧毁的喔!
内存除了频率带宽与型号需要考虑之外,内存的容量也是很重要
的喔! 因为所有的数据都得要载入内存当中才能够被CPU判读,如果内
存容量不够大的话将会导致某些大容量数据无法被完整的载入, 此时
已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用
内存容量大于该数据,那份新数据才能够被载入呢! 所以,通常越大
的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的
数据。 以服务器来说,内存的容量有时比CPU的速度还要来的重要的!
多通道设计
由于所有的数据都必须要存放在内存,所以内存的数据宽度当然
是越大越好。 但传统的总线宽度一般大约仅达64位,为了要加大这个
宽度,因此芯片组厂商就将两个内存汇整在一起, 如果一支内存可达
64位,两支内存就可以达到128位了,这就是双通道的设计理念。
如上所述,要启用双通道的功能你必须要安插两支(或四支)内
存,这两支内存最好连型号都一模一样比较好, 这是因为启动双通道Tips
内存功能时,数据是同步写入读出这一对内存中,如此才能够提升整
体的带宽啊! 所以当然除了容量大小要一致之外,型号也最好相同
啦!
你有没有发现图 0.2.2、华硕主板示意图上那四根内存插槽的颜色
呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了
吗?是啦!这种颜色的设计就是为了双通道来的!要启动双通道的功能
时, 你必须要将两根容量相同的内存插在相同颜色的插槽当中喔!
服务器所需要的速度更快!因此,除了双通道之外,中
阶服务器也经常提供三信道,甚至四信道的内存环境!
例如 2014 年推出的服务器用 E5-2650 v3 的 Intel CPU 中,它可
以接受的最大信道数就是四信道且为 DDR4 喔!
DRAM与SRAM
除了内存条之外,事实上整部个人电脑当中还有许许多多的内存
存在喔!最为我们所知的就是CPU内的第二层高速缓存内存。 我们现在
知道CPU的数据都是由内存提供,但CPU到内存之间还是得要通过内存
控制器啊! 如果某些很常用的程序或数据可以放置到CPU内部的话,那
么CPU数据的读取就不需要跑到内存重新读取了! 这对于性能来说不就
可以大大的提升了?这就是第二层高速缓存的设计概念。第二层高速缓
存与内存及CPU的关系如下图所示:
图0.2.3、内存相关性因为第二层高速缓存(L2 cache)整合到CPU内部,因此这个L2内
存的速度必须要CPU频率相同。 使用DRAM是无法达到这个频率速度
的,此时就需要静态随机存取内存(Static Random Access Memory,SRAM)的帮忙了。 SRAM在设计上使用的电晶体数量较多,价格较
高,且不易做成大容量,不过由于其速度快, 因此整合到CPU内成为高
速缓存内存以加快数据的存取是个不错的方式喔!新一代的CPU都有内
置容量不等的L2高速缓存在CPU内部, 以加快CPU的运行性能。
只读存储器(ROM)
主板上面的元件是非常多的,而每个元件的参数又具有可调整
性。举例来说,CPU与内存的频率是可调整的; 而主板上面如果有内置
的网卡或者是显卡时,该功能是否要启动与该功能的各项参数, 是被
记录到主板上头的一个称为CMOS的芯片上,这个芯片需要借着额外的
电源来发挥记录功能, 这也是为什么你的主板上面会有一颗电池的缘
故。
那CMOS内的数据如何读取与更新呢?还记得你的电脑在开机的
时候可以按下[Del]按键来进入一个名为BIOS的画面吧? BIOS(Basic
Input Output System)是一套程序,这套程序是写死到主板上面的一个
内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那
就是只读存储器(Read Only Memory, ROM)。 ROM是一种非挥发性
的内存。另外,BIOS对于个人电脑来说是非常重要的, 因为他是系统
在开机的时候首先会去读取的一个小程序喔!
另外,固件(firmware)[12]
很多也是使用ROM来进行软件的写入
的。 固件像软件一样也是一个被电脑所执行的程序,然而他是对于硬
件内部而言更加重要的部分。例如BIOS就是一个固件, BIOS虽然对于
我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各
项硬件参数的取得! 所以我们会知道很多的硬件上头都会有ROM来写
入固件这个软件。Tips
BIOS 对电脑系统来讲是非常重要的,因为他掌握了系统硬件的详
细信息与开机设备的选择等等。但是电脑发展的速度太快了, 因此
BIOS 程序码也可能需要作适度的修改才行,所以你才会在很多主板官
网找到 BIOS 的更新程序啊!但是 BIOS 原本使用的是无法改写的 ROM
,因此根本无法修正 BIOS 程序码!为此,现在的 BIOS 通常是写入类
似闪存 (flash) 或 EEPROM
[13]
中。[14]
很多硬件上面都会有固件喔!例如鸟哥常用的磁盘阵列
卡、 10G 的网卡、交换器设备等等!你可以简单的这么
想!固件就是绑在硬件上面的控制软件!0.2.3 显卡
显卡插槽如同图 0.2.2、华硕主板示意图所示,在中左方有个 PCIe
3.0 的项目, 这张主板中提供了两个显卡插槽喔!
显卡又称为VGA(Video Graphics Array),他对于图形影像的显
示扮演相当关键的角色。 一般对于图形影像的显示重点在于分辨率与
色彩深度,因为每个图像显示的颜色会占用掉内存, 因此显卡上面会
有一个内存的容量,这个显存容量将会影响到你的屏幕分辨率与色彩深
度的喔!
除了显存之外,现在由于三度空间游戏(3D game)与一些3D动
画的流行,因此显卡的“运算能力”越来越重要。 一些3D的运算早期是
交给CPU去运行的,但是CPU并非完全针对这些3D来进行设计的,而且
CPU平时已经非常忙碌了呢! 所以后来显卡厂商直接在显卡上面嵌入一
个3D加速的芯片,这就是所谓的GPU称谓的由来。
显卡主要也是通过CPU的控制芯片来与CPU、内存等沟通。如前
面提到的,对于图形影像(尤其是3D游戏)来说, 显卡也是需要高速
运算的一个元件,所以数据的传输也是越快越好!因此显卡的规格由早
期的PCI导向AGP, 近期AGP又被PCI-Express规格所取代了。如前面华
硕主板图示当中看到的就是PCI-Express的插槽。 这些插槽最大的差异
就是在数据传输的带宽了!如下所示:
规格 宽度 速度 带宽
PCI 32 bits 33 MHz 133 MBytess
PCI 2.2 64 bits 66 MHz 533 MBytess
PCI-X 64 bits 133 MHz 1064 MBytess
AGP 4x 32 bits 66x4 MHz 1066 MBytess
AGP 8x 32 bits 66x8 MHz 2133 MBytessPCIe 1.0 x1 无 无 250 MBytess
PCIe 1.0 x8 无 无 2 GBytess
PCIe 1.0 x16 无 无 4 GBytess
比较特殊的是,PCIe(PCI-Express)使用的是类似管线的概念来
处理,在 PCIe 第一版 (PCIe 1.0) 中,每条管线可以具有250MBytess
的带宽性能, 管线越多(通常设计到 x16 管线)则总带宽越高!另
外,为了提升更多的带宽,因此 PCIe 还有进阶版本,目前主要的版本
为第三版,相关的带宽如下:[15]
规格 1x带宽 16x带宽
PCIe 1.0 250MBytes 4GBytes
PCIe 2.0 500MBytes 8GBytes
PCIe 3.0 ~1GBytes ~16GBytes
PCIe 4.0 ~2GBytes ~32GBytes
若以图0.2.2的主板为例,它使用的是 PCIe 3.0 的 16x,因此最大
带宽就可以到达接近 32GBytess 的传输量! 比起AGP是快很多的!好
可怕的传输量....
如果你的主机是用来打3D游戏的,那么显卡的选购是非常重要
喔!如果你的主机是用来做为网络服务器的, 那么简单的入门级显卡
对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形影
像功能。
例题:
假设你的桌面使用1024x768分辨率,且使用全彩(每个像素占用
3Bytes的容量),请问你的显卡至少需要多少内存才能使用这样的彩
度?
答:因为1024x768分辨率中会有786432个像素,每个像素占用3Bytes,所
以总共需要2.25MBytes以上才行! 但如果考虑屏幕的更新率(每秒钟
屏幕的更新次数),显卡的内存还是越大越好!
除了显卡与主板的连接接口需要知道外,那么显卡是通过什么格
式与电脑屏幕 (或电视) 连接的呢?目前主要的连接接口有:
D-Sub (VGA端子):为较早之前的连接接口,主要为 15 针的连
接,为模拟讯号的传输,当初设计是针对传统图像管屏幕而来。
主要的规格有标准的 640x350px @70Hz、1280x1024px @85Hz 及
2048x1536px @85Hz 等。
DVI:共有四种以上的接头,不过台湾市面上比较常见的为仅提供
数码讯号的 DVI-D,以及整合数码与模拟讯号的 DVI-I 两种。DVI
常见于液晶屏幕的链接, 标准规格主要有: 1920x1200px
@60Hz、 2560x1600px @60Hz 等。
HDMI:相对于 D-sub 与 DVI 仅能传送影像数据,HDMI 可以同时
传送影像与声音,因此被广泛的使用于电视屏幕中!电脑屏幕目前
也经常都有支持 HDMI 格式!
Display port:与 HDMI 相似的,可以同时传输声音与影像。不过这
种接口目前在台湾还是比较少屏幕的支持!0.2.4 硬盘与储存设备
电脑总是需要记录与读取数据的,而这些数据当然不可能每次都
由使用者经过键盘来打字!所以就需要有储存设备咯。 电脑系统上面
的储存设备包括有:硬盘、软盘、MO、CD、DVD、磁带机、U盘(闪
存)、还有新一代的蓝光光驱等, 乃至于大型机器的区域网络储存设
备(SAN, NAS)等等,都是可以用来储存数据的。而其中最常见的应
该就是硬盘了吧!
硬盘的物理组成
大家应该都看过硬盘吧!硬盘依据台式机与笔记本电脑而有分为
3.5英寸及2.5英寸的大小。我们以3.5英寸的台式机使用硬盘来说明。 在
硬盘盒里面其实是由许许多多的圆形盘片、机械手臂、 磁头与主轴马
达所组成的,整个内部如同下图所示:
图0.2.4、硬盘物理构造(图片取自维基百科)
实际的数据都是写在具有磁性物质的盘片上头,而读写主要是通
过在机械手臂上的磁头(head)来达成。 实际运行时, 主轴马达让盘
片转动,然后机械手臂可伸展让磁头在盘片上头进行读写的动作。 另
外,由于单一盘片的容量有限,因此有的硬盘内部会有两个以上的盘片
喔!盘片上的数据
既然数据都是写入盘片上头,那么盘片上头的数据又是如何写入
的呢?其实盘片上头的数据有点像下面的图示所示:
图0.2.5、盘片上的数据格式(图片取自维基百科)
由于盘片是圆的,并且通过机器手臂去读写数据,盘片要转动才
能够让机器手臂读写。因此,通常数据写入当然就是以圆圈转圈的方式
读写啰! 所以,当初设计就是在类似盘片同心圆上面切出一个一个的
小区块,这些小区块整合成一个圆形,让机器手臂上的磁头去存取。
这个小区块就是磁盘的最小物理储存单位,称之为扇区 (sector),那
同一个同心圆的扇区组合成的圆就是所谓的磁道(track)。 由于磁盘
里面可能会有多个盘片,因此在所有盘片上面的同一个磁道可以组合成
所谓的柱面 (cylinder)。
我们知道同心圆外圈的圆比较大,占用的面积比内圈多啊!所以,为了善用这些空间,因此外围的圆会具有更多的扇区[16]! 就如同
图 0.2.5 的示意一般。此外,当盘片转一圈时,外圈的扇区数量比较
多,因此如果数据写入在外圈,转一圈能够读写的数据量当然比内圈还
要多! 因此通常数据的读写会由外圈开始往内写的喔!这是默认值
啊!
另外,原本硬盘的扇区都是设计成 512Byte 的容量,但因为近期
以来硬盘的容量越来越大,为了减少数据量的拆解,所以新的大容量硬
盘已经有 4KByte 的扇区设计! 购买的时候也需要注意一下。也因为这
个扇区的设计不同了,因此在磁盘的分区方面,目前有旧式的 MSDOS
相容模式,以及较新的 GPT 模式喔! 在较新的 GPT 模式下,磁盘的分
区通常使用扇区号码来设计,跟过去旧的 MSDOS 是通过柱面号码来分
区的情况不同喔!相关的说明我们谈到磁盘管理 (第七章) 再来聊!
传输接口
为了要提升磁盘的传输速度,磁盘与主板的连接接口也经过多次
的改版,因此有许多不同的接口喔!传统磁盘接口包括有 SATA, SAS,IDE 与 SCSI 等等。 若考虑外接式磁盘,那就还包括了 USB, eSATA 等
等接口喔!不过目前 IDE 已经被 SATA 取代,而 SCSI 则被 SAS 取
代,因此我们下面将仅介绍 SATA, USB 与 SAS 接口而已。
SATA接口
如同华硕主板图示右下方所示为SATA硬盘的连接接口插槽。
这种插槽所使用的排线比较窄小, 而且每个设备需要使用掉一条
SATA线。因为SATA线比较窄小之故,所以对于安装与机箱内的通
风都比较好!因此原本的IDE粗排线接口就被SATA取代了! SATA
的插槽示意图如下所示:图0.2.6、SATA 接口的排线 (图示取自 Seagate 网站)
由于SATA一条排线仅接一颗硬盘,所以你不需要调整跳针。
不过一张主板上面SATA插槽的数量并不是固定的, 且每个插槽都
有编号,在连接SATA硬盘与主板的时候,还是需要留意一下。此
外,目前的 SATA 版本已经到了第三代
[17]
, 每一代之间的传输速
度如下所示,而且重点是,每一代都可以向下相容喔!只是速度上
会差很多就是了。目前主流都是使用 SATA3 这个接口速度可达
600MBytes 的接口!
版本 带宽 (Gbits) 速度 (MBytes)
SATA 1.0 1.5 150
SATA 2.0 3 300
SATA 3.0 6 600
因为 SATA 传输接口传输时,通过的数据演算法的关系,当传
输 10 位编码时,仅有 8 位为数据,其余 2 位为检验之用。因此带宽
的计算上面, 使用的换算 (bit 转 Byte) 为 1:10 而不是 1Byte=8bits
喔!上表的对应要稍微注意一下。另外,虽然这个 SATA3 接口理论
上可达 600MBytess 的传输速度, 不过目前传统的硬盘由于其物理
组成的限制,一般极限速度大约在 150~200MBytes 而已啦!所以厂商们才要发展固态硬盘啊! ^_^
SAS接口
早期工作站或大型大脑上面,为了读写速度与稳定性,因此在
这样的机器上面,大多使用的是 SCSI 这种高阶的连接接口。 不过
这种接口的速度后来被 SATA 打败了!但是 SCSI 有其值得开发的
功能,因此后来就有串行式 SCSI (Serial Attached SCSI, SAS) 的
发展。这种接口的速度比 SATA 来的快,而且连接的 SAS 硬盘的盘
片转速与传输的速度也都比 SATA 硬盘好! 只是...好贵喔!而且一
般个人电脑的主板上面通常没有内置 SAS 连接接口,得要通过外接
卡才能够支持。因此一般个人电脑主机还是以 SATA 接口为主要的
磁盘连接接口啰。
版本 带宽 (Gbits) 速度 (MBytes)
SAS 1 3 300
SAS 2 6 600
SAS 3 12 1200
因为这种接口的速度确实比较快喔!而且还支持例如热拔插等
功能,因此,许多的设备连接会以这种接口来链接! 例如我们经常
会听到的磁盘阵列卡的连接插槽,就是利用这种 SAS 接口开发出来
的支持的 SFF-8087 设备等等的
[18]。
USB接口
如果你的磁盘是外接式的接口,那么很可能跟主板链接的就是
USB 这种接口了!这也是目前 (2015) 最常见到的外接式磁盘接口
了。 不过传统的 USB 速度挺慢的,即使是比较慢的传统硬盘,其传
输率大概兜还有 80~120MBytess ,但传统的 USB 2.0 仅有大约
60MBytess 的理论传输率, 通常实做在主板上面的连接口,竟然都仅有 30~40 MBytes 而已呢!实在发挥不出磁盘的性能啊!
为了改善 USB 的传输率,因此新一代的 USB 3.0 速度就快很
多了!据说还有更新的 USB 3.1 正在发展中!这几代版本的带宽与
速度制表如下
[19]
:
版本 带宽 (Mbits) 速度 (MBytes)
USB 1.0 12 1.5
USB 2.0 480 60
USB 3.0 5G 500
USB 3.1 10G 1000
跟 SATA 接口一样,不是理论速度到达该数值,实际上就可以
跑到这么高!USB 3.0 虽然速度很快,但如果你去市面上面买 USB
的传统磁盘或闪存盘, 其实他的读写速度还是差不多在
100MBytess 而已啦!不过这样就超级快了!因为一般 USB2.0 的闪
存盘读写速度大约是 40MBytes10MBytes 左右而已说。 在购买这方
面的外接式磁盘时,要特别考虑喔!
固态硬盘 (Solid State Disk, SSD)
传统硬盘有个很致命的问题,就是需要驱动马达去转动盘片~这
会造成很严重的磁盘读取延迟!想想看,你得要知道数据在哪个扇区上
面,然后再命令马达开始转, 之后再让磁头去读取正确的数据。另
外,如果数据放置的比较离散(扇区分佈比较广又不连续),那么读写
的速度就会延迟更明显!速度快不起来。因此, 后来就有厂商拿闪存
去制作成大容量的设备,这些设备的连接接口也是通过 SATA 或 SAS,而且外型还做的跟传统磁盘一样!所以, 虽然这类的设备已经不能称
为是磁盘 (因为没有磁头与盘片啊!都是内存!)。但是为了方便大
家称呼,所以还是称为磁盘!只是跟传统磁盘 (Hard Disk Drive,HDD) 不同, 就称为固态硬盘 (Solid State Disk 或 Solid State Driver,Tips
SSD)。
固态硬盘最大的好处是,它没有马达不需要转动,而是通过内存
直接读写的特性,因此除了没数据延迟且快速之外,还很省电! 不过
早期的 SSD 有个很重要的致命伤,就是这些闪存有“写入次数的限
制”,因此通常 SSD 的寿命大概两年就顶天了!所以数据存放时, 需要
考虑到备份或者是可能要使用 RAID 的机制来防止 SSD 的损毁[20]!
SSD 真的好快!鸟哥曾经买过 Intel 较顶级的 SSD 来做
过服务器的读取系统盘,然后使用类似 dd 的指令去看看
读写的速度,竟然真的如同 intel 自己官网说的, 极速可以到达
500MBytess 哩!几乎就是 SATA3.0 的理论极限速度了!所以,近来在需要大量读取的环境中,鸟哥都是使用 SSD 阵列来处
理!
其实我们在读写磁盘时,通常没有连续读写,大部分的情况下都
是读写一大堆小文件,因此,你不要妄想传统磁盘一直转很少圈就可以
读到所有的数据! 通常很多小文件的读写,会很耗硬盘,因为盘片要
转好多圈!这也很花人类的时间啊!SSD 就没有这个问题!也因为如
此,近年来在测试磁盘的性能时, 有个很特殊的单位,称为每秒读写
操作次数 (InputOutput Operations Per Second, IOPS)!这个数值越
大,代表可操作次数较高,当然性能好的很!
选购与运行须知
如果你想要增加一颗硬盘在你的主机里头时,除了需要考虑你的
主板可接受的插槽接口(SATASAS)之外,还有什么要注意的呢?
HDD 或 SSD
毕竟 HDD 与 SSD 的价格与容量真的差很多!不过,速度也差很多
就是了!因此,目前大家的使用方式大多是这样的,使用 SSD 作为系统盘, 然后数据储存大多放置在 HDD 上面!这样系统运行快
速 (SSD),而数据储存量也大 (HDD)。
容量
毕竟目前数据量越来越大,所以购买磁盘通常首先要考虑的就是容
量的问题!目前(2015)主流市场HDD容量已经到达 2TB以上,甚至有的厂商已经生产高达 8TB 的产品呢!硬盘可能可以算是一
种消耗品,要注意重要数据还是得常常备份出来喔! 至于 SSD 方
面,目前的容量大概还是在 128~256GB 之间吧!
缓冲内存
硬盘上头含有一个缓冲内存,这个内存主要可以将硬盘内常使用的
数据高速缓存起来,以加速系统的读取性能。 通常这个缓冲内存
越大越好,因为缓冲内存的速度要比数据从硬盘盘中被找出来要快
的多了! 目前主流的产品可达64MB左右的内存大小喔。
转速
因为硬盘主要是利用主轴马达转动盘片来存取,因此转速的快慢会
影响到性能。 主流的台式机硬盘为每分钟7200转,笔记本电脑则
是5400转。有的厂商也有推出高达10000转的硬盘, 若有高性能的
数据存取需求,可以考虑购买高转速硬盘。
运行须知
由于硬盘内部机械手臂上的磁头与硬盘盘的接触是很细微的空间,如果有抖动或者是脏污在磁头与硬盘盘之间就会造成数据的损毁或
者是实体硬盘整个损毁~ 因此,正确的使用电脑的方式,应该是
在电脑通电之后,就绝对不要移动主机,并免抖动到硬盘, 而导
致整个硬盘数据发生问题啊!另外,也不要随便将插头拔掉就以为
是顺利关机!因为机械手臂必须要归回原位, 所以使用操作系统
的正常关机方式,才能够有比较好的硬盘保养啊!因为他会让硬盘Tips
的机械手臂归回原位啊!
可能因为环境的关系,电脑内部的风扇常常会卡灰尘而
造成一些声响。很多朋友只要听到这种声响都是二话不
说的 “用力拍几下机箱”就没有声音了~现在你知道了,这么做的
后果常常就是你的硬盘容易坏掉! 下次千万不要再这样做啰!0.2.5 扩展卡与接口
你的服务器可能因为某些特殊的需求,因此需要使用主板之外 ......
这本书的所有内容是学习Linux的基础,这些内容是基础中的基础,如果您能将其中
的文字都看完并且消化过,那么未来在管理 Linux主机以及架设网站方面,就能够达到“事半
功倍”的成效,请不要忽略这些内容了!否则,再怎么讨论都是枉然的啦!^_^。 Linux的资
料非常的多,每份资料彼此的相关性都很强,要单独的一项一项讲解并不容易, 那么这本
书件该怎么看呢?建议先按照顺序将内容大致浏览过一次,看不懂的地方也可以先略过不要
紧。 全部看完之后,再从头开始“仔细”的实际操作过一遍,那应该就能够进入Linux的世界
啰~
另外,每个章节下面的日期,指的是重大改版日期而非最新日期,最新日期请以该
章节结束部分的工作日志为主的喔!
Linux 的学习曲线,一个老人家的建议!
1. VBird 与 Linux
2. VBird 的 Linux 学习之路
3. 学习心态的分别
4. 基本的学习流程
5. 基本的建站流程表
6. 简易的安全防护第一部份 Linux 的规划与安装
常常听到Linux具有非常优良的血统,所以具有相当良好的多用户多任务环境,可以方
便程序设计师来开发软件。 此外,Linux本身是不用钱的“自由软件”,使用上面并没有所谓
的“盗版”问题。但是,为什么Linux不用钱? 随便修改或发布Linux为什么不会被罚?为什么
Linux有这么多的版本?包括Fedora, SuSE, CentOS, Debian等等? 这个都是我们必须要来了解的
部分!了解这些部分,你才会对Linux有一个正确的理解,才能够跟你的同事、同学、 上司说
明,为什么使用Linux具有很多优点与好处! ^_^
Linux并不好学习,鸟哥也是“重伤”过好几次才能对Linux有一些基础的认知。那么到底
应该如何学习Linux呢?关键在实作。 既然要实作就得要实际的安装一部Linux,那么Linux要安
装前需要熟悉哪些基础观念?计算机概论是非常重要的一环! 因为Linux与硬件的关系还不小
~此外,打造一台WindowsLinux共存的主机也是很有用的, 至少对于需要多平台但又缺乏空
间与金钱的朋友来说,这样的处理是非常有用的!
在第一篇里面,我们会由计算机概论谈起,再讲到Linux的历史渊源与自由软件的关
系,然后重点在于如何规划硬件与Linux安装, 最后谈到如何登陆与使用Linux图形命令行的环
境。本篇数据较多,第一次接触Linux的新朋友, 很多数据若看不懂可以先略过,等到后续文
章都读完了再回来看,才会有帮助喔! ^_^
第零章 计算机概论
鸟哥在大专院校的教学经验中发现到,由于对 Linux 有兴趣的朋友很多可能并非信息相
关专业出身, 因此对于计算机硬件及计算机方面的概念不熟。然而操作系统这种咚咚跟硬
件.....20150416
0.1 电脑:辅助人脑的好工具
0.1.1 计算机硬件的五大单元
0.1.2 一切设计的起点:CPU 的架构, RISC与ARM, CISC与x86
0.1.3 其他单元的设备
0.1.4 运行流程
0.1.5 电脑按用途分类
0.1.6 电脑上面常用的计算单位 (容量、速度等)
0.2 个人电脑架构与相关设备元件
0.2.1 执行脑袋运算与判断的 CPU:CPU的工作频率,32位与64
位,CPU等级, 超线程
0.2.2 内存:多通道, DRAM与SRAM, ROM
0.2.3 显卡:PCIe 规格
0.2.4 硬盘与储存设备:物理组成,盘片与扇区,传输接口
(SATA,SAS,USB..),SSD,购买与运行
0.2.5 扩展卡与接口
0.2.6 主板
0.2.7 电源供应器0.2.8 选购须知
0.3 数据表示方式
0.3.1 数字系统
0.3.2 文字编码系统
0.4 软件程序运行
0.4.1 机器程序与编译程序
0.4.2 操作系统
0.4.3 应用程序
0.5 重点回顾
0.6 本章习题
0.7 参考资料与延伸阅读
第一章 Linux是什么如何学习
众所皆知的,Linux的核心原型是1991年由托瓦兹(Linus Torvalds)写出来的,但是托
瓦兹为何可以写出Linux这个操作系统? 为什么他要选择386的计算机来开发?为什么Linux的发
展可以这么迅速?又为什么Linux是免费的?.....20150423
1.1 Linux是什么
1.1.1 Linux是什么?操作系统应用程序?
1.1.2 Linux之前,Unix的历史
1.1.3 关于GNU计划、自由软件与开放源代码
1.2 Torvalds的Linux发展
1.2.1 与Minix之间
1.2.2 对386硬件的多任务测试
1.2.3 初次释出Linux 0.02
1.2.4 Linux的发展:虚拟团队的产生
1.2.5 Linux 的核心版本
1.2.6 Linux distributions
1.3 Linux当前应用的角色
1.3.1 企业环境的利用
1.3.2 个人环境的使用
1.3.3 云端运用
1.4 Linux 该如何学习
1.4.1 从头学习Linux基础
1.4.2 选择一本易读的工具书
1.4.3 实作再实作
1.4.4 发生问题怎么处理啊?建议流程是这样...1.4.5 鸟哥的建议(重点在solution的学习)
1.5 重点回顾
1.6 本章习题
1.7 参考资料与延伸阅读
第二章 主机规划与磁盘分区
事实上,要安装好一部Linux主机并不是那么简单的事情,你必须要针对distributions的
特性、服务器的软件能力、 未来的升级需求、硬件扩充性需求等等来考虑,还得要知道磁盘分
区、文件系统.....20150428
2.1 Linux与硬件的搭配
2.1.1 认识计算机的硬件配备
2.1.2 选择与Linux搭配的主机配备: 硬件支持相关网站
2.1.3 各硬件设备在Linux中的文件名
2.1.4 使用虚拟机学习
2.2 磁盘分区
2.2.1 磁盘连接的方式与设备文件名的关系
2.2.2 MSDOS(MBR) 与 GPT 磁盘分区表(partition
table)
2.2.3 开机流程中的 BIOS 与 UEFI 开机检测程序
2.2.4 Linux安装模式下,磁盘分区的选择(极重要)
2.3 安装Linux前的规划
2.3.1 选择适当的distribution
2.3.2 主机的服务规划与硬件的关系
2.3.3 主机硬盘的主要规划(partition)
2.3.4 鸟哥的两个实际案例
2.4 重点回顾
2.5 本章习题
2.6 参考资料与延伸阅读
第三章 安装CentOS 7.x与多重开机技巧
Linux distributions越作越成熟,所以在安装方面也越来越简单!虽然安装非常的简单,但是刚刚前一章所谈到的基础认知还是需要了解的,包括MBR, partition, boot loader, mount,software的.....20150506
3.1 本练习机的规划--尤其是分区参数3.2 开始安装CentOS 7
3.2.1 调整开机媒体(BIOS)与虚拟机创建流程
3.2.2 选择安装模式与开机:inst.gpt 参数
3.2.3 在地设置之时区、语系与键盘配置
3.2.4 安装来源设置与软件选择
3.2.5 磁盘分区与文件系统设置
3.2.6 核心管理与网络设置
3.2.7 开始安装、设置 root 密码与新增可切换身份之一般用
户
3.2.8 准备使用系统前的授权同意
3.2.9 其他功能:RAM testing, 安装笔记本电脑的核心参数
(Option)
3.3 多重开机安装流程与管理(Option)
3.3.1 安装 CentOS 7.x + windows 7 的规划
3.3.2 进阶安装 CentOS 7.x 与 Windows 7
3.3.3 救援 MBR 内的开机管理程序与设置多重开机菜单
3.4 重点回顾
3.5 本章习题
3.6 参考资料与延伸阅读
第四章 首次登陆与线上求助 man page
终于可以开始使用Linux这个有趣的系统了!由于Linux系统使用了非同步的磁盘内存数
据传输模式, 同时又是个多用户多任务的环境,所以你不能随便的不正常关机,关机有一定的
程序喔!错误的关机方法.....20150602
4.1 首次登陆系统
4.1.1 首次登陆CentOS 7.x图形接口
4.1.2 GNOME的操作与登出,应用程序,文件资源管理器,中文输
入法,登出窗口,快速重启 X
4.1.3 X Window与文字模式的切换, startx
4.1.4 在终端接口登陆linux
4.2 文字模式下指令的下达
4.2.1 开始下达指令, 语系的支持
4.2.2 基础指令的操作, cal, bc
4.2.3 重要的几个热键[Tab], [ctrl]-c, [ctrl]-d,[shift]+[UPDOWN]
4.2.4 错误讯息的查看4.3 Linux系统的线上求助man page与info page
4.3.1 指令的 --help 求助说明
4.3.2 man page, mandbmakewhatis
4.3.3 info page
4.3.4 其他有用的文件(documents)
4.4 超简单文书编辑器: nano
4.5 正确的关机方法: sync, shutdown, reboot, halt,poweroff, systemctl
4.6 重点回顾
4.7 本章习题
4.8 参考资料与延伸阅读第二部分 Linux 文件、目录与磁盘格式
安装完了 Linux 之后,接着下来自然就是要使用他了!我们在 开机与关机及简易指令操
作 稍微说明了指令下达的方法,以及指令线上查询的方式, 因此您可以轻易的使用命令行界面
来进行诸多的动作与工作。那么接着下来呢?当然就是想要知道 Linux 里面有什么东西啰,所
以,在这一个部分当中,我们将介绍 Linux 最基本的文件权限概念, 与每个文件目录所带有的
意涵。
当然啰,要了解权限的概念,那么对于不同的“身份”就需要了解一下才行, 不同的身份
的人,所创建的或拥有的文件是否会相同呢?例如系统管理员与一般身份使用者的文件? 当然
不太一样!除此之外,如果您的硬盘空间不足,需要增加硬盘时,应该要如何新增呢? 还有,内存不足的情况下,有没有增进虚拟内存容量的方法?在接下来的几个章节之中,我们将介绍
Linux 主要的文件架构、以及磁盘在 Linux 当中该如何使用及挂载等问题。
第五章 Linux文件权限与目录配置
Linux最优秀的地方之一,就在于他的多用户多任务的环境。而为了让各个使用者具有
较保密的文件数据, 因此文件的权限管理就变的很重要了。 Linux一般将文件可存取的身份分
为三个类别,分别是 ownergroupother, 且三种身份各有readwriteexecute.....20150603
5.1 使用者与群组
5.2 Linux文件权限概念
5.2.1 Linux文件属性, 改变语系的 locale
5.2.2 如何改变文件属性与权限:chgrp, chown, chmod
5.2.3 目录与文件之权限意义:, 数据夹与抽屉,各项动作所
需最小权限
5.2.4 Linux文件种类与扩展名
5.3 Linux目录配置
5.3.1 Linux目录配置的依据--FHS:, usr, var
5.3.2 目录树(directory tree)
5.3.3 绝对路径与相对路径
5.3.4 CentOS 的观察:lsb_release
5.4 重点回顾
5.5 本章练习
5.6 参考资料与延伸阅读
第六章 Linux文件与目录管理
在第五章我们认识了Linux系统下的文件权限概念以及目录的配置说明。 在这个章节当
中, 我们就直接来进一步的操作与管理文件与目录吧!包括在不同的目录间变换、 创建与删除
目录、创建与删除文件, 还有寻找文件、查阅文件内容.....201506166.1 目录与路径
6.1.1 相对路径与绝对路径
6.1.2 目录的相关操作: cd, pwd, mkdir, rmdir
6.1.3 关于可执行文件路径的变量: PATH
6.2 文件与目录管理
6.2.1 文件与目录的检视: ls
6.2.2 复制、删除与移动: cp, mv
6.2.3 取得路径的文件名称与目录名称
6.3 文件内容查阅
6.3.1 直接检视文件内容: cat, tac, nl
6.3.2 可翻页检视: more, less
6.3.3 数据撷取: head, tail
6.3.4 非纯文本文件: od
6.3.5 修改文件时间与创建新文件: touch
6.4 文件与目录的默认权限与隐藏权限
6.4.1 文件默认权限:umask
6.4.2 文件隐藏属性:chattr, lsattr
6.4.3 文件特殊权限:SUID, SGID,SBIT, 权限设置
6.4.4 观察文件类型:file
6.5 指令与文件的搜寻
6.5.1 指令文件名的搜寻:which
6.5.2 文件文件名的搜寻:whereis,locate updatedb,find
6.6 极重要的复习!权限与指令间的关系
6.7 重点回顾
6.8 本章习题
6.9 参考资料与延伸阅读
第七章 Linux 磁盘与文件系统管理
系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不
能太小,太大会造成磁盘容量的浪费, 太小则会产生文件无法储存的困扰。此外,我们在前面
几章谈到的文件权限与属性中, 这些权限与属性分别记录在.....20150626
7.1 认识 Linux 文件系统
7.1.1 磁盘组成与分区的复习
7.1.2 文件系统特性: 索引式文件系统
7.1.3 Linux 的 EXT2 文件系统(inode): data block,superblock,dumpe2fs
7.1.4 与目录树的关系
7.1.5 EXT2EXT3 文件的存取与日志式文件系统的功能
7.1.6 Linux 文件系统的运行
7.1.7 挂载点的意义 (mount point)
7.1.8 其他 Linux 支持的文件系统与 VFS
7.1.9 XFS 文件系统简介: xfs_info
7.2 文件系统的简单操作
7.2.1 磁盘与目录的容量:df, du
7.2.2 实体链接与符号链接:ln
7.3 磁盘的分区、格式化、检验与挂载
7.3.1 观察磁盘分区状态:, parted
7.3.2 磁盘分区 gdiskfdisk:gdisk, fdisk
7.3.3 磁盘格式化(创建文件系统):mkfs.xfs, mkfs.xfs
for raid,mkfs.ext4, mkfs
7.3.4 文件系统检验:xfs_repair, fsck.ext4
7.3.5 文件系统挂载与卸载: mount, umount
7.3.6 磁盘文件系统参数修订: mknod, xfs_admin,tune2fs
7.4 设置开机挂载
7.4.1 开机挂载 etcfstab 及 etcmtab
7.4.2 特殊设备 loop 挂载(镜像文件不烧录就挂载使用):
挂载DVD,大型文件, dd
7.5 内存交换空间(swap)之创建
7.5.1 使用实体分区创建swap:mkswap, free, swapon,swapoff
7.5.2 使用文件创建swap
7.6 文件系统的特殊观察与操作
7.6.1 磁盘空间之浪费问题
7.6.2 利用 GNU 的 parted 进行分区行为 (Optional)
7.7 重点回顾
7.8 本章习题 - 第一题一定要做
7.9 参考资料与延伸阅读
第八章 文件的压缩与打包
在 Linux 下面有相当多的压缩指令可以运行喔!这些压缩指令可以让我们更方便从网络上面下载大型的文件呢! 此外,我们知道在 Linux 下面的扩展名是没有什么很特殊的意义的,不过,针对这些压缩指令所做出来的压缩文件, 为了方便记忆.....20150716
8.1 压缩文件的用途与技术
8.2 Linux 系统常见的压缩指令
8.2.1 gzip, zcatzmorezlesszgrep
8.2.2 bzip2, bzcatbzmorebzlessbzgrep
8.2.3 xz, xzcatxzmorexzlessxzgrep
8.3 打包指令:tar, 解压后的 SELinux 课题
8.4 XFS 文件系统的备份与还原
8.4.1 XFS 文件系统备份 xfsdump
8.4.2 XFS 文件系统还原 xfsrestore
8.5 光盘写入工具
8.5.1 mkisofs:创建镜像文件: isoinfo
8.5.2 cdrecord:光盘烧录工具
8.6 其他常见的压缩与备份工具
8.6.1 dd
8.6.2 cpio
8.7 重点回顾
8.8 本章习题
8.9 参考资料与延伸阅读第三部分:学习 Shell 与 Shell scripts
了解了基本的 Linux 文件属性与目录的配置之后,在进入更深入的 Linux 世界之前,有
几个课题还是一定要知道的,那就是我们所使用的这个文字模式接口,也就是所谓的“Shell”这
个咚咚。在 Linux 的世界中,使用的是 GNU 发展出来的强化的第二代 shell ,称为 BASH Shell
,他有什么特异功能呢?简单的说,我们之前下达的几个指令都是 bash 管理的,除此之外, 他
还可以记录指令、文件或命令的补全功能、环境变量的使用等等,还有很多功能等着你去发掘
呢!
在知道了部分的 bash 功能后,在接着下来,我们还得了解一下什么是数据流重导向?
还有常规表达式等等的问题, 这都是未来我们系统管理员在管理主机上面,一个不可缺乏的利
器!当然啰,要将这些功能整合起来运用的话, 就不能不学习一下所谓的脚本“ shell scripts ”,他具有基础的程序能力( Program ),当真是个管理系统的好帮手呢!
再来,在未来的建站设置当中,常会使用到文字编辑器来编辑参数配置文件,这个时
候, 系统管理员至少务必要熟悉一套命令行下的文书编辑软件,当然不限制哪一套软件啦,但
是 vi 是最标准的 Unix-Like 的命令行之文书处理软件,所以,我们几乎一定可以在每部 Unix-
Like 上面发现他的踪迹,所以,就来了解他一下吧,这也是挺重要的工作呢!
第九章 vim程序编辑器
系统管理员的重要工作就是得要修改与设置某些重要软件的配置文件, 因此至少得要学
会一种以上的命令行的文书编辑器。 在所有版本的 Linux 上头都会有的一套文书编辑器就是 vi
,而且很多软件.....20150707
9.1 vi 与 vim
9.1.1 为何要学 vim
9.2 vi 的使用
9.2.1 简易执行范例
9.2.2 按键说明
9.2.3 一个案例的练习
9.2.4 vim 的暂存盘、救援回复与打开时的警告讯息
9.3 vim 的额外功能
9.3.1 区块选择(Visual Block)
9.3.2 多文件编辑
9.3.3 多窗口功能
9.3.4 vim 的挑字补全功能
9.3.5 vim 环境设置与记录: ~.vimrc, ~.viminfo
9.3.6 vim 常用指令示意图
9.4 其他 vim 使用注意事项
9.4.1 中文编码的问题
9.4.2 DOS 与 Linux 的断行字符: dos2unix,unix2dos9.4.3 语系编码转换: iconv
9.5 重点回顾
9.6 本章习题
9.7 参考资料与延伸阅读
第十章 认识与学习 BASH
在 Linux 的环境下,如果你不懂 bash 是什么,那么其他的东西就不用学了! 因为前面
几章我们使用终端机下达指令的方式, 就是通过 bash 的环境来处理的喔! 所以说,他很重要
吧!bash 的东西非常的多,包括变量.....20150709
10.1 认识 BASH 这个 Shell
10.1.1 硬件、核心与 Shell
10.1.2 为何要学命令行的 shell
10.1.3 系统的合法 shell 与 etcshells 功能
10.1.4 Bash shell 的功能
10.1.5 查询指令是否为 Bash shell 的内置命令: type
10.1.6 指令的下达与快速编辑按钮
10.2 Shell 的变量功能
10.2.1 什么是变量?
10.2.2 变量的取用与设置:echo, 变量设置规则, unset
10.2.3 环境变量的功能:env 与常见环境变量说明, set,export
10.2.4 影响显示结果的语系变量 (locale)
10.2.5 变量的有效范围
10.2.6 变量键盘读取、阵列与宣告: read, declare, array
10.2.7 与文件系统及程序的限制关系: ulimit
10.2.8 变量内容的删除、取代与替换 (Optional):删除与
取代,测试与替换
10.3 命令别名与历史命令
10.3.1 命令别名设置: alias, unalias
10.3.2 历史命令: history, HISTSIZE
10.4 Bash shell 的操作环境
10.4.1 路径与指令搜寻顺序
10.4.2 bash 的进站与欢迎讯息: etcissue, etcmotd
10.4.3 环境配置文件:login, non-login shell,etcprofile, ~.bash_profile, source, ~.bashrc
10.4.4 终端机的环境设置: stty, set10.4.5 万用字符与特殊符号
10.5 数据流重导向 (Redirection)
10.5.1 何谓数据流重导向?
10.5.2 命令执行的判断依据: ; , , ||
10.6 管线命令 (pipe)
10.6.1 撷取命令:cut, grep
10.6.2 排序命令:sort, uniq, wc
10.6.3 双向重导向:tee
10.6.4 字符转换命令:tr, col, join, expand
10.6.5 分区命令: split
10.6.6 参数代换: xargs
10.6.7 关于减号 - 的用途
10.7 重点回顾
10.8 本章习题
10.9 参考资料与延伸阅读
第十一章 正则表达式与文件格式化处理
正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排
列, 用以“搜寻取代删除”一列或多列文字字串, 简单的说, 正则表达式就是用在字串的处理
上面的一项“表示式”。正则表达式并.....20150714
11.1 开始之前:什么是正则表达式
11.2 基础正则表达式
11.2.1 语系对正则表达式的影响
11.2.2 grep 的一些进阶选项
11.2.3 基础正则表达式练习
11.2.4 基础正则表达式字符汇整(characters)
11.2.5 sed 工具:行的新增删除, 行的取代显示,搜寻并取
代, 直接改档
11.3 延伸正则表达式
11.4 文件的格式化与相关处理
11.4.1 printf: 格式化打印
11.4.2 awk:好用的数据处理工具
11.4.3 文件比对工具:, cmp, patch
11.4.4 文件打印准备工具: pr
11.5 重点回顾
11.6 本章习题11.7 参考资料与延伸阅读
第十二章 学习 shell scripts
如果你真的很想要走信息这条路,并且想要好好的管理好属于你的主机,那么,别说鸟
哥不告诉你, 可以自动管理你的系统的好工具: Shell scripts 真的是得要好好学习学习的! 基
本上, shell script 有点像是早期的批处理文件,亦即是.....20150717
12.1 什么是 Shell Script
12.1.1 干嘛学习 shell scripts
12.1.2 第一支 script 的撰写与执行
12.1.3 撰写 shell script 的良好习惯创建
12.2 简单的 shell script 练习
12.2.1 简单范例: 对谈式脚本, 随日期变化, 计算 pi
12.2.2 script 的执行方式差异 (source, sh script,.script)
12.3 善用判断式
12.3.1 利用 test 指令的测试功能
12.3.2 利用判断符号 [ ]
12.3.3 Shell script 的默认变量(0, 1...): shift
12.4 条件判断式
12.4.1 利用 if .... then: 单层简单条件,多重复杂条件,网络状态,退伍
12.4.2 利用 case ..... esac 判断
12.4.3 利用 function 功能
12.5 循环 (loop)
12.5.1 while...do...done, until...do...done (不定循
环)
12.5.2 for...do...done (固定循环): 帐号检查,网络状
态 (seq )
12.5.3 for...do...done 的数值处理
12.5.4 搭配乱数与阵列的实验
12.6 shell script 的追踪与 debug
12.7 重点回顾
12.8 本章习题第四部分:Linux 使用者管理
好了!终于要到了管理 Linux 帐号的时刻了!对于 Linux 有一定的熟悉度之后,再来就
是要管理连上 Linux 的帐号问题了!这个帐号的问题可大可小啦!大到可以限制他使用 Linux
主机的各项资源,小到甚至一般帐号的密码订定规则都可以进行规定!端看您对于安全的需求
啦! 此外,如果站在资源平均分配的角度上,那么 Linux 主机上面有限的资源当然是平均分配
给大家比较好!这个时候就得来规定一下“谁可以使用多少的硬盘空间?”那就是 Quota 喔!呵
呵!厉害吧!
在订定完了一些帐号的规则之后,那么我们就继续来管理一下主机的系统与程序的管理
吧! 这个包括了观察每个程序 (Process) 与工作调度及工作管理 ( jobs control ),这些也都
是很重要的工作呢!
第十三章 Linux 帐号管理与 ACL 权限控制
要登陆 Linux 系统一定要有帐号与密码才行,否则怎么登陆,您说是吧?不过, 不同的
使用者应该要拥有不同的权限才行吧?我们还可以通过 usergroup 的特殊权限设置,来规范出
不同的群组开发专案呢.....20150722
13.1 Linux 的帐号与群组
13.1.1 使用者识别码: UID 与 GID
13.1.2 使用者帐号:etcpasswd 文件结构, etcshadow
文件结构
13.1.3 关于群组: etcgroup 文件结构,有效与初始群组,groups, newgrp, etcgshadow
13.2 帐号管理
13.2.1 新增与移除使用者: useradd, useradd 参考档,passwd, chage, userdel
13.2.2 使用者功能:id, finger,chfn, chsh
13.2.3 新增与移除群组:groupadd, groupmod,groupdel,gpasswd 群组管理员
13.2.4 帐号管理实例
13.2.5 使用外部身份认证系统
13.3 主机的细部权限规划:ACL 的使用
13.3.1 什么是 ACL 与如何支持启动 ACL
13.3.2 ACL 的设置技巧:setfacl, getfacl,ACL 的设置
(user, group mask, default)
13.4 使用者身份切换
13.4.1 su
13.4.2 sudo: sudo 指令, visudo (etcsudoers)(帐号, 限制指令, 别名, 配合 su)
13.5 使用者的特殊 shell 与 PAM 模块
13.5.1 特殊的 shell :sbinnologin, nologin.txt
13.5.2 PAM 模块简介
13.5.3 PAM 模块设置语法:验证类别(type)、控制标准
(flag)、模块与参数
13.5.4 常用模块简介: securetty,nologin,pam_pwquality,login流程
13.5.5 其他相关文件: limits.conf
13.6 Linux 主机上的使用者讯息传递
13.6.1 查询使用者: w, who, last, lastlog
13.6.2 使用者对谈: write, mesg, wall
13.6.3 使用者邮件信箱: mail
13.7 CentOS 7 环境下大量创建帐号的方法
13.7.1 一些帐号相关的检查工具:pwck, pwconv, chpasswd
13.7.2 大量创建帐号范本(适用 passwd --stdin 选项)
13.8 重点回顾
13.9 本章习题
13.10 参考资料与延伸阅读
第十四章 磁盘配额(Quota)与进阶文件系统管理
如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的
公平使用,磁盘配额 (Quota) 就是一项非常有用的工具!另外,如果你的用户常常抱怨磁盘
容量不够用,那么更进阶的文件系统就得要学习学习.....20150728
14.1 磁盘配额 (Quota) 的应用与实作
14.1.1 什么是 Quota:一般用途, 限制, 规范
(inodeblock, softhard, grace time)
14.1.2 一个 XFS 文件系统的 Quota 的实作范例
14.1.3 实作 Quota 流程-1:文件系统的支持与观察
(etcfstab, etcmtab)
14.1.4 实作 Quota 流程-2:观察 Quota 报告数据
(xfs_quota,print, df, report, state)
14.1.5 实作 Quota 流程-3:限制值设置方式 (limit,grace_time)
14.1.6 实作 Quota 流程-4:project 的限制 (针对目录限
制) (Optional)14.1.7 XFS quota 的管理与额外指令对照表
14.1.8 不更动既有系统的 Quota 实例
14.2 软件磁盘阵列 (Software RAID)
14.2.1 什么是 RAID: RAID-0, RAID-1,RAID1+0, Spare
disk
14.2.2 software, hardware RAID
14.2.3 软件磁盘阵列的设置: mdadm --create
14.2.4 仿真 RAID 错误的救援模式: mdadm --manage
14.2.5 开机自动启动 RAID 并自动挂载
14.2.6 关闭软件 RAID(重要!)
14.3 逻辑卷轴管理员 (Logical Volume Manager)
14.3.1 什么是 LVM: PV, PE, VG, LV 的意义
14.3.2 LVM 实作流程: PV 阶段, VG 阶段,LV 阶段, 文件系
统阶段
14.3.3 放大 LV 容量: xfs_growfs
14.3.4 使用 LVM thin Volume 让 LVM 动态自动调整磁盘使
用率
14.3.5 LVM 的磁盘快照: 创建传统快照, 以快照还原,用于
测试环境
14.3.6 LVM 相关指令汇整与 LVM 的关闭
14.4 重点回顾
14.5 本章习题
14.6 参考资料与延伸阅读
第十五章 例行性工作调度 (crontab)
学习了基础篇也一阵子了,你会发现到为什么系统常常会主动的进行一些任务? 这些任
务到底是谁在设置工作的? 如果你想要让自己设计的备份程序可以自动的在系统下面执
行,.....20150731
15.1 什么是例行性工作调度
15.1.1 Linux 工作调度的种类: at, crontab
15.1.2 CentOS Linux 系统上常见的例行性工作
15.2 仅执行一次的工作调度
15.2.1 atd 的启动与 at 运行的方式: etcat.deny
15.2.2 实际运行单一工作调度: at,atq atrm, batch
15.3 循环执行的例行性工作调度
15.3.1 使用者的设置: etccron.deny, crontab15.3.2 系统的配置文件: etccrontab, etccron.d
15.3.3 一些注意事项
15.4 可唤醒停机期间的工作任务
15.4.1 什么是 anacron
15.4.2 anacron 与 etcanacrontab
15.5 重点回顾
15.6 本章习题
第十六章 程序管理与 SELinux 初探
一个程序被载入到内存当中运行,那么在内存内的那个数据就被称为程序(process)。
程序是操作系统上非常重要的概念, 所有系统上面跑的数据都会以程序的型态存在。那么系统
的程序有哪些状态.....20150808
16.1 什么是程序 (Process)
16.1.1 程序与程序 (process program):子程序与父程
序, fork-and-exec,系统服务
16.1.2 Linux 的多用户多任务环境
16.2 工作管理 (job control)
16.2.1 什么是工作管理
16.2.2 job control 的管理:, [ctrl]-z, jobs, kill
16.2.3 离线管理问题: nohup
16.3 程序管理
16.3.1 程序的观察: ps -l,ps aux, top,pstree
16.3.2 程序的管理: signal, kill, killall
16.3.3 关于程序的执行顺序: priority, nice, renice
16.3.4 系统资源的观察: free, uname, uptime, netstat,vmstat
16.4 特殊文件与程序
16.4.1 具有 SUIDSGID 权限的指令执行状态
16.4.2 proc 代表的意义
16.4.3 查询已打开文件或已执行程序打开之文件: fuser,lsof, pidof
16.5 SELinux 初探
16.5.1 什么是 SELinux: 目标, DAC,MAC
16.5.2 SELinux 的运行模式: 元件, 安全性本
文,domaintype
16.5.3 SELinux 三种模式的启动、关闭与观察:getenforce,sestatus, setenforce
16.5.4 SELinux 政策内的规则管理: getsebool, seinfo,sesearch, setsebool
16.5.5 SELinux 安全本文的修改:chcon,restorecon,semanage
16.5.6 一个网络服务案例及登录文件协助:所需服务, FTP
实例, 匿名者范例, 一般用户主文件夹, 非正规目录, 非正规
port
16.6 重点回顾
16.7 本章习题
16.8 参考资料与延伸阅读第五部分:Linux 系统管理员
嗯!终于来到系统管理员 ( root ) 要注意的工作事项之篇幅了!各位准系统管理员心
理准备好了吗? 我们要管理机器啰,呵呵!那么管理员的工作是什么?看报喝茶?!没错!管
理员最大的享受就是看报喝茶了。 一个好的系统管理员,平时不会希望挂载网站上面一再不断
的查询、检查漏洞等等的, 因为果真如此的话,那么就表示“机器一定有问题了!”。为了让我
们的 Linux 机器跑得更稳更顺畅,好让我这个管理员有更多的时间去看报喝茶,哈哈! 更深入
的了解系统是需要的!所以,这一篇我们由开机关机的整体流程谈起,好了解一下 Linux 在开
机的过程中到底做了哪些事情,这样才能知道我们在什么时候应该做什么事情呐!
此外,由于“没有一个套件是永远安全的!”,所以套件管理是相当重要的一部份,这里
我们以 RPM 与 Tarball 来介绍一下如何管理你系统上面的套件。再来,你知道你的系统上面跑
了多少数据吗? 虽然知道什么是 ps 来查询程序,但是总是得知道我的系统有哪些服务吧!嘿
嘿! 来看看先?不但如此,还得针对登录文件进行解析,以及对于系统进行备份。呵呵! 管理
员的工作还真多那。不止不止,还要进行核心的管理呢!哇!果然是忙毙了!无论如何, 还是
得要了解呐!
第十七章 认识系统服务(daemon)
在 Unix-Like 的系统中,你常常听到 daemon 这个字眼!那么什么是传说中的 daemon
呢?这些 daemon 放在什么地方?他的功能是什么?该如何启动这些 daemon ?又如何有效的将
这些 daemon 管理妥当.....20150814
17.1 什么是 daemon 与服务 (service)
17.1.1 早期 Systemp V 的 init 管理行为中 daemon 的主要
分类
17.1.2 systemd 使用的 unit 分类
17.2 通过 systemctl 管理服务
17.2.1 通过 systemctl 管理单一服务 (service unit) 的
启动开机启动与观察状态
17.2.2 通过 systemctl 观察系统上所有的服务
17.2.3 通过 systemctl 管理不同的操作环境 (target
unit)
17.2.4 通过 systemctl 分析各服务之间的相依性
17.2.5 与 systemd 的 daemon 运行过程相关的目录简
介:etcservices
17.2.6 关闭网络服务
17.3 systemctl 针对 service 类型的配置文件
17.3.1 systemctl 配置文件相关目录简介
17.3.2 systemctl 配置文件的设置项目简介
17.3.3 两个 vsftpd 运行的实例
17.3.4 多重的重复设置方式:以 getty 为例17.3.5 自己的服务自己作
17.4 systemctl 针对 timer 的配置文件
17.5 CentOS 7.x 默认启动的服务简易说明
17.6 重点回顾
17.7 本章习题
17.8 参考资料与延伸阅读
第十八章 认识与分析登录文件
当你的 Linux 系统出现不明原因的问题时,很多人都告诉你,你要查阅一下登录文件才
能够知道系统出了什么问题了, 所以说,了解登录文件是很重要的事情呢。登录文件可以记录
系统在什么时间、哪个主机、哪个服务.....20150820
18.1 什么是登录文件:
18.1.1 CentOS 7 登录文件简易说明:重要性, 常见文件名,服务与程序,systemd-journald
18.1.2 登录文件内容的一般格式
18.2 rsyslog.service :记录登录文件的服务
18.2.1 rsyslog.service 的配置文件: etcrsyslog.conf,默认的 rsyslog.conf 内容
18.2.2 登录文件的安全性设置
18.2.3 登录文件服务器的设置
18.3 登录文件的轮替 (logrotate)
18.3.1 logrotate 的配置文件
18.3.2 实际测试 logrotate 的动作
18.3.3 自订登录文件的轮替功能
18.4 systemd-journald.service 简介:
18.4.1 使用 journalctl 观察登录信息
18.4.2 logger 指令的应用
18.4.3 保存 journal 的方式
18.5 分析登录文件
18.5.1 CentOS 默认提供的 logwatch
18.5.2 鸟哥自己写的登录文件分析工具:
18.6 重点回顾
18.7 本章习题练习
18.8 参考资料与延伸阅读第十九章 开机流程、模块管理与 loader
系统开机其实是一项非常复杂的程序,因为核心得要侦测硬件并载入适当的驱动程序
后, 接下来则必须要调用程序来准备好系统运行的环境,以让使用者能够顺利的操作整部主机
系统。 如果你能够理解开机的原理.....20150831
19.1 Linux 的开机流程分析
19.1.1 开机流程一览
19.1.2 BIOS, boot loader 与 kernel 载入:lsinitrd
19.1.3 第一支程序 systemd 及使用 default.target 进入开
机程序分析
19.1.4 systemd 执行 sysinit.target 初始化系统、basic.target 准备系统
19.1.5 systemd 启动 multi-user.target 下的服务:相容的
rc.local,getty.target 启动
19.1.6 systemd 启动 graphical.target 下面的服务
19.1.7 开机过程会用到的主要配置文件
19.2 核心与核心模块
19.2.1 核心模块与相依性: depmod
19.2.2 核心模块的观察: lsmod, modinfo
19.2.3 核心模块的载入与移除:insmod, modprobe, rmmod
19.2.4 核心模块的额外参数设置:etcmodprobe.dconf
19.3 Boot loader: Grub2
19.3.1 boot loader 的两个 stage
19.3.2 grub2 的配置文件 bootgrub2grub.cfg 初探: 磁
盘代号, grub.cfg
19.3.3 grub2 配置文件维护 etcdefaultgrub 与
etcgrub.d:grub,40_custom
19.3.4 initramfs 的重要性与创建新 initramfs 文件:
dracutmkinitrd
19.3.5 测试与安装 grub2: grub2-install
19.3.6 开机前的额外功能修改
19.3.7 关于开机画面与终端机画面的图形显示方式
19.3.8 为个别菜单加上密码: grub2-mkpasswd-pbkdf2
19.4 开机过程的问题解决
19.4.1 忘记 root 密码的解决之道
19.4.2 直接开机就以 root 执行 bash 的方法
19.4.3 因文件系统错误而无法开机19.5 重点回顾
19.6 本章习题
19.7 参考资料与延伸阅读
第二十章 网络设置与备份策略
新的 CentOS 7 有针对不同的服务提供了相当大量的命令行设置模式,因此过去那个
setup 似乎没有什么用了! 取而代之的是许多加入了 bash-complete 提供了不少参数补全的设置
工具!甚至包括网络设置也是通过这个机制哩! 我们这个小章.....20150903
20.1 系统基本设置
20.1.1 网络设置 (手动设置与DHCP自动取得):手动,自动,改主机名称
20.1.2 日期与时间设置
20.1.3 语系设置
20.1.4 防火墙简易设置
20.2 服务器硬件数据的收集
20.2.1 以系统内置 dmidecode 解析硬件配备
20.2.2 硬件资源的收集与分析: lspci, lsusb,iostat...
20.2.3 了解磁盘的健康状态
20.3 备份要点
20.3.1 备份数据的考虑
20.3.2 哪些 Linux 数据具有备份的意义
20.3.3 备份用储存媒体的选择
20.4 备份的种类、频率与工具的选择
20.4.1 完整备份之累积备份 (Incremental backup),使用
软件
20.4.2 完整备份之差异备份 (Differential backup)
20.4.3 关键数据备份
20.5 VBird 的备份策略与 scripts
20.5.1 每周系统备份的 script
20.5.2 每日备份数据的 script
20.5.3 远端备援的 script
20.6 灾难复原的考虑
20.7 重点回顾
20.8 本章习题
20.9 参考资料与延伸阅读第二十一章 软件安装:源代码与 Tarball
我们在第一章、Linux是什么当中提到了 GNU 计划与 GPL 授权所产生的自由软件与开
放源码等咚咚。 不过,前面的章节都还没有提到真正的开放源码是什么的讯息!在这一章当
中,我们将借由 Linux 操作系统里面的可执行文件.....20150906
21.1 开放源码的软件安装与升级简介
21.1.1 什么是开放源码、编译器与可可执行文件
21.1.2 什么是函数库
21.1.3 什么是 make 与 configure
21.1.4 什么是 Tarball 的软件
21.1.5 如何安装与升级软件
21.2 使用传统程序语言进行编译的简单范例
21.2.1 单一程序:印出 Hello World
21.2.2 主、副程序链接:副程序的编译
21.2.3 调用外部函数库:加入链接的函数库
21.2.4 gcc 的简易用法 (编译、参数与链结)
21.3 用 make 进行宏编译
21.3.1 为什么要用 make
21.3.2 makefile 的基本语法与变量
21.4 Tarball 的管理与建议
21.4.1 使用源代码管理软件所需要的基础软件
21.4.2 Tarball 安装的基本步骤
21.4.3 一般 Tarball 软件安装的建议事项 (如何移除?升
级?)
21.4.4 一个简单的范例、利用 ntp 来示范
21.4.5 利用 patch 更新源代码
21.5 函数库管理
21.5.1 动态与静态函数库
21.5.2 ldconfig 与 etcld.so.conf
21.5.3 程序的动态函数库解析: ldd
21.6 检验软件的正确性
21.6.1 md5sum sha1sum sha256sum
21.7 重点回顾
21.8 课后练习
21.9 参考资料与延伸阅读第二十二章 软件安装:RPM, SRPM 与 YUM 功能
虽然使用源代码进行编译可以进行客制化的设置,但对于 Linux distribution 的原本发布
商来说, 则有软件管理不易的问题, 毕竟不是每个人都会进行源代码编译的。 如果能够将软
件预先在相同的硬件与操作系统上面编译好才发布的话.....20150909
22.1 软件管理员简介
22.1.1 Linux 界的两大主流: RPM 与 DPKG
22.1.2 什么是 RPM 与 SRPM
22.1.3 什么是 i386, i586, i686, noarch, x86_64
22.1.4 RPM 的优点
22.1.5 RPM 属性相依的克服方式: YUM 线上升级
22.2 RPM 软件管理程序: rpm
22.2.1 RPM 默认安装的路径
22.2.2 RPM 安装 (install)
22.2.3 RPM 升级与更新 (upgradefreshen)
22.2.4 RPM 查询 (query)
22.2.5 RPM 验证与数码签章 (Verifysignature)
22.2.6 RPM 反安装与重建数据库 (eraserebuilddb)
22.3 YUM 线上升级机制
22.3.1 利用 yum 进行查询、安装、升级与移除功能
22.3.2 yum 的配置文件
22.3.3 yum 的软件群组功能
22.3.4 EPELELRepo 外挂软件以及自订配置文件
22.3.5 全系统自动升级
22.3.6 管理的抉择:RPM 还是 Tarball
22.3.7 基础服务管理:以 Apache 为例
22.4 SRPM 的使用: rpmbuild (Optional)
22.4.1 利用默认值安装 SRPM 文件 (--rebuid--
recompile)
22.4.2 SRPM 使用的路径与需要的软件
22.4.3 配置文件的主要内容 (.spec)
22.4.4 SRPM 的编译指令 (-ba-bb)
22.4.5 一个打包自己软件的范例
22.5 重点回顾
22.6 本章习题
22.7 参考资料与延伸阅读第二十三章 X Window 设置介绍
在 Linux 上头的图形接口我们称之为 X Window System,简称为 X 或 X11 啰!为何称之
为系统呢?这是因为 X 窗口系统又分为 X server 与 X client ,既然是 ServerClient (主从架
构) 这就表示其实 X 窗口系统是可以跨网络且跨平台的.....20150919
23.1 什么是 X Window System
23.1.1 X Window 的发展简史
23.1.2 主要元件: X ServerX ClientWindow
ManagerDisplay Manager
23.1.3 X Window 的启动流程:startx, xinit
23.1.4 X 启动流程测试
23.1.5 我是否需要启用 X Window System
23.2 X Server 配置文件解析与设置
23.2.1 解析 xorg.conf 设置
23.2.2 字体管理
23.2.3 显示器参数微调
23.3 显卡驱动程序安装范例
23.3.1 NVidia
23.3.2 AMD (ATI)
23.3.3 Intel
23.4 重点回顾
23.5 本章习题
23.6 参考资料与延伸阅读
第二十四章 核心编译
我们说的 Linux 其实指的就是核心 (kernel) 而已。这个核心控制你主机的所有硬件并
提供系统所有的功能, 所以说,他重不重要啊!我们开机的时候其实就是利用开机管理程序载
入这个核心文件来侦测硬件, 在核心载入适当的驱动程序后.....20151020
24.1 编译前的任务:认识核心与取得核心源代码
24.1.1 什么是核心 (Kernel)
24.1.2 更新核心的目的
24.1.3 核心的版本
24.1.4 核心源代码的取得方式:distributions 默认、最
新、patch
21.1.5 核心源代码的解压缩安装观察24.2 核心编译的前处理与核心功能选择
24.2.1 硬件环境检视与核心功能要求
24.2.2 保持干净源代码: make mrproper
24.2.3 开始挑选核心功能: make XXconfig
24.2.4 核心功能细项选择
a. 一般设置(General setup):附加版本名称、IPC 通
讯、程序相关等
b. 核心模块与 block layer 支持
c. CPU 的类型与功能选择(含虚拟化技术)
d. 电源管理功能
e. 核心的网络功能
f. 各项设备的驱动程序
g. 文件系统的支持
h. 虚拟化与函数库
24.3 核心的编译与安装
24.3.1 编译核心与核心模块
24.3.2 实际安装模块
24.3.3 开始安装新核心与多重核心菜单 (grub)
24.4 额外(单一)核心模块编译
24.4.1 编译前注意事项
24.4.2 单一模块编译
24.4.3 核心模块管理
24.5 以最新核心版本编译 CentOS 7.x 的核心
24.6 重点回顾
24.7 本章习题
24.8 参考资料与延伸阅读Linux 的学习曲线,一个老人家的建议! 最近更新日期:20
学习 Linux 的过程并不简单!因为我们过去一直都是在某些特定软件的支配之下,所以对于这个由一群素眛谋面的工程师因为“兴趣”而发明出来的操作系统, 其实开始时
候的接受度并不是很好的。 然而因为 Linux 的学习会使用到很多的基础观念,因此, 对
于想要更深入认识您所使用的操作系统的朋友来说, 其实 Linux 真的是一套很棒很棒的操
作系统喔!
这个网站的内容,是由鸟哥在刚刚接触 linux 的时候就开始写起的, 简单的来
说,这个网站的内容基本上就是“鸟哥的 Linux 血泪史~” 因为鸟哥在新手的时候遇到相
当多的问题,虽然一步一步的找出问题,并且解决他, 不过,刚开始时,并不是那么容易
就可以解决一个小问题的。 因为很多的知识都是来自于 Internet 上面的,所以也就回馈
这样的一个网站给朋友们了。 请大家看一看鸟哥是如何学习 Linux 的吧!1. VBird 与 Linux
在开始给 Linux 的新手建议前,得先让您晓得的是,为什么鸟哥
要这样的建议新手学习呢? 所以,先交代一下 VBird 学习 Linux 的心路
历程啰,好让您了解到, 为何 VBird 会比较熟悉 Linux 这门艺术!
数年前 VBird 因工作的需要,“被迫”得去学习 Unix 系统, 那个时
候我们使用的 Unix 系统是 Sun 这家公司的机器, 当时的 Sun Unix 可不
是一般人玩的起的,当然, VBird 也是一般人,所以当然也就玩不起
Sun Unix 啰!然而工作的案子还是需要进行的, 那怎么办呢?这个时
候就得要想一些替代方案啦!
咦!听说有另外一种可以在个人计算机 ( Personal Computer, PC) 跑的 Unix-Like 系统,叫做 Linux 的, 他的接口啦、功能啦、以及基
本的文件架构都跟 Unix 差不多, 甚至连系统稳定性也可以说是一模一
样,而且对于硬件配备的要求并不高。 嗯!既然玩不起几十万起跳的
Unix 系统, 那么使用一些即将废弃的计算机配备来架设一部 Linux 主
机吧!
在经过了一些时候的努力之后,呵呵!竟然真的给我架起来了
(当时的版本是 Red Hat 6.1)! 哇!好高兴!那么就赶快先来熟悉
他,然后等到有了一定的经验值“升级”成老手级之后, 再来玩 Unix
吧,以免玩坏了几十万的大计算机!嗯!这似乎是不错的方式, 所以
就开始了 VBird 的 Linux 学习之路啦!2. VBird 的 Linux 学习之路
由于 VBird 之前从未玩过 Linux 这套操作系统,而且听说还需要
使用到命令行界面! 刚开始碰还真的有点紧张。还好,VBird 玩计算机
的历史可以追溯之前的 DOS 年代, 所以对于命令行界面多多少少还有
点概念,或许应该可以撑上一阵子吧!? 但是没想到 Linux 的指令真
是“博大精深”呐!早期的 DOS 概念简直就是不够用啊~ 因此,为了偷
懒,一开始 VBird 就舍弃命令行界面,直接在 X-Window 上面玩起来
了!
在还没有安装 Linux 之前,VBird 买了两三本书,每本都看了 N
遍,发现到每一本书的前半段, 在 Linux 的基础方面的介绍谈的不多,了不起就是以一些工具教你如何设置一些很重要的参数文件, 但偏偏
没有告诉你这些工具到底做了什么事情或修改了哪些文件? 不过书的
后半段却放上了很多的建站文件,然而却都有点“点到为止”, 所以当时
总觉得 Linux 很有点朦朦胧胧的感觉,而且在当时最严重的现象是 “只
要一出现问题,身为使用者的 VBird 完全无法解决, 所以只好重新安
装,选择设置与书本教的内容完全一模一样!”不过,即使如此, 很多
时候仍然解决不了发生问题的窘境!
在当时,由于知道 Linux 可以用来做为很多功能的服务器,而
VBird 的研究室当时又需要一部 mail server , 所以就很高兴的借由书上
的说明,配合 Linux distribution 提供的一些工具程序,例如:
Linuxconf, netcfg 等等的工具来架设。然而由于工具程序的整合度并不
见得很好, 所以常常修改一个小地方会搞上一整天!
好不容易使用了所有的知道的工具来架设好了我的 mail server ,哈哈!真高兴, 请注意呦!这个时候我的 Linux 主机上面开了多少的
portsservices 其实 VBird 并不清楚, 当时认为“我的机器就只有我认识
的一些朋友知道而已, 所以反正机器能跑就好了,其他的设置似乎也
就不这么重要”。然而事实上,这种学习心态却造成了后来 VBird 恶梦的开端! 怎
么说呢?首先,虽然 Linux 号称需要的硬件等级不高,不过 X-Window
却是很耗系统资源的一项软件, 因为只要涉及到图形接口的话,需要
友好度嘛!就需要多一点 RAM 啦、多一些硬盘空间啦、 显卡与 CPU
要好一点啦等等的,且早期的图形接口整合度不是很高, 所以造成 X-
Window 死掉的机会是很高的。
在 VBird 当时安装的 Linux 主机当中, 使用的是旧旧的计算机,系统的配备并不高,在跑了 X-Window 之后,剩下可以使用的实体内存
其实已经不多了, 再跑其他的服务,例如 mail server ,实际上有点很
吃力! 所以当时的一些同仁常常抱怨我们的机器怎么老是服务不良?
怪怪! 这个 Linux 怎么跟“号称稳定”的名号不符?而在 VBird 进入系统
检查之后,才发现,哇! X-Window 又挂了?当时还不清楚原来可以使
用 ps 及 kill 等指令将 X-Window 杀掉即可让 Linux 恢复正常, 竟然是
用 reset 的方式来重新启动 Linux ,现在想起来,当时真糗....
后来再重新安装一次 ( 嗄?由图形接口转到命令行要重新安装?
不要怀疑,当初没有学好的时候, 就是以为需要重新安装,因为
Windows 的经验告诉我这样做是“对的!” ) 选择了命令行登陆系统,呵呵!果然系统是稳定多了!服务上面似乎也就安定了许多。 不过,您以为恶梦这样就解决了吗?当然不是! 在我的机器服务了一阵子之
后,我老板竟然接到上层单位的来信, 信中说明“贵单位的主机可能有
尝试入侵国外主机之嫌,敬请妥善改善!” 哇!这不就是警告信吗?还
好不是律师存证信函~还好, 当时至少还知道有所谓的系统登录文件
可以分析确切日期有谁在线上,没想到一登陆之后才发现, 搞了老半
天,原来我们的机器被入侵了!而身为管理者的 VBird 竟然还茫然不知
~这真是一大败笔....
在赶快重新安装,并且重新参考很多文件,架设好了防火墙之
后,以为终于从此就可以高枕无忧了! 唉~结果还是不尽然的,因为
我们的 mail server 早就被当成垃圾转信站, 造成区域网络内网络流量的大量提高,导致常常会无法连上 Internet .....
在经过了这么多的事件之后,终于发现,如果想要 Linux 帮我做
好我想要达成的工作, 则 Linux 的学习并不是只要“会用就好”, 这样
的心态会造成相当大程度的伤害,不论是针对您自己还是您服务的单
位, 君不见上头的警告信函吗?
所以,在经过了这多灾多难的一年多之后,终于还是痛定思痛,定下心来重新的再出发,将 Linux 的概念完整的创建起来,包括 Linux
最最基础的文件架构、 指令模式与脚本(Shell and shell scripts)、套件
管理方式和资源与帐号管理等等, 而在将这些基础的架构理解之后,再回头看一下各式各样的 server 启动服务与相关的技巧, 发现“哇!原
来如此呀!怎么这么简单的东西当初搞了我几天几夜睡不好!” 尤其
最重要的登录信息的追踪,帮 VBird 避免了很多不必要的系统伤害行
为。
此外,而为了方便 VBird 本身的管理,于是开始了一些脚本
(shell scripts) 的编写, 他可以化繁为简,让日常的管理变的更轻松
而有效率!当然,这些工作几乎都是在命令行下面完成的, 图形接口
之下的工作毕竟还是有限的。
经过上面 VBird 学习之路的经验分享之后,我想,您应该也慢慢
的了解 VBird 想要提出这本经验谈的书籍最主要的目的了, 那就是
想“让想要学习 Linux 的玩家可以快速且以较为正确的心态来进入
Linux 的世界!”而不要像 VBird 在 Linux 的环境中打转了一年之后才
来正确的创建概念。说到这里要跟大家谈一谈目前的 Linux 学习心态。3. 学习心态的分别
大家都知道 Linux 最强项的地方在于网络,而 Windows 是赢在使
用者接口较为好友。 然而很多使用者还是常常会比较 Linux 与
Windows 这两套相当流行的操作系统, 初次接触 Linux 的人比到最后
的结果都是 “Linux 怎么都要使用命令行来建站,怎么这么麻烦,还是
Windows 比较好用”, 事实上这么比较实在是有点不公平且没有意义,为什么呢?基本上, Windows 是很普及的一个操作系统,这点我们都
无法否认,但是,一般使用 Windows 的使用者用 Windows 来做什么?
上网聊天打屁
无可否认的,用 Windows 来上网浏览信息与聊天对于一般使用者
来说是很重要的!^_^ 不过,这点在 Linux 下面的 X-Window 就能
做到啦!请问您,需要用到命令行吗?不需要对不对! 而且 X-
window 越来越美丽(例如 GNOMEKDE 等等),能使用的空间越
来越大! 使用者想要使用 Linux 来上网打屁,没有问题啰!
打打文书工作、做做电子试算表
文书工作也是目前计算机族群最重要的课题了。这个工作目前在
X-Window 也有相当多的免费软件! 例如 KDE 的 Koffice, 例如
Open office , 呵呵!同样的,在 X-Windows 下面, 很棒对不
对!!是的!真的很容易学习!尤其接口都是图形化的!这也没有
问题!
打打 game、做做休闲娱乐
玩一些较新的3D 游戏可能在 Linux 下面稍微麻烦一点, 因为目前
游戏对于 Linux 的支持度还不是很足够! 但是如果是一般上班族群
的话,那么 Linux 内附的小游戏是相当多的! 让您玩不完,所以,这一点对于大部分的上班族来说,也应该还好!
当然啦,Windows 的工作环境还有很多可以发展的空间,不过这里我们主要以一般使用者的角度来看。 OK!好了,说了上面这几个工
作,请问一下, “一般使用者谁有在使用 Windows 玩建站!”?很少对
不对! 是的!真的是很少人在玩 Windows 的建站!那么如何可以说
Linux 无法普及是命令行惹的祸呢?! VBird 相信,如果是一般使用
者,应该不至于想要使用 Linux 来架设网站, 所以美美的 X-Window 对
于一般使用者已经相当的好用了,实在没有必要来学习建站的原理与过
程, 还有防火墙的注意事项等等的。
话再说回来,那么您干嘛要使用 Linux 建站呢?“因为 Linux 的网
络功能比较强呀!” 说的没错,但是,相对的,比较强的项目可能也具
有比较“危险”的指数, 当您一开始学习 Linux 就只想满脑子的玩建站,却又不好好的弄懂一点点 Linux 与网络基础的话, 呵呵!在 Windows
下面了不起是被攻击到您的 Windows 死掉,但是在 Linux 下面, 却有
可能让您吃上官司的!像上面提到的 VBird 之前的经验。 而如果您已
经习惯以 图形化接口 来管理您的 Linux 主机时, 请特别留意,因为
Linux 的套件是由多个团队研发出来的,( NFS, SAMBA, Sendmail...)
图形接口也仅是一个团队的研发成果,您认为,一个团队的东西可以将
所有团队的内容都完整无缺的表现出来吗? 想必肯定可能会有一些问
题发生,这个时候怎么办?如果您依赖图形久了,呵呵! 看来就只能
求助于外面的工程师了,如此一来,有学跟没有学有何不同?!
曾经有个朋友问我说“唉! Linux 怎么这么麻烦?架设一个 DNS
真是不容易呀!不像 Windows ,简单的很,按几个按钮就搞定了!”这
个时候 VBird 就回答了一句话“不会呀!如果您只是想要安装 DNS 的
话,网络上面一大堆按部就班的设置方式教学,照着做,一样可以在十
分钟之内就完成一个 DNS 主机的设置呀!”他想一想,确实有道理!同
时 VBird 又反问的一件事:“您以为学 Windows 就不需要了解 DNS 的
概念吗?您有尝试过使用 Windows 架设 DNS 却无法让他实地跑的问题
吗? 果真如此的话,这个时候你怎么解决?”他愣住了!因为在
Windows 上面他确实也没有办法解决!所以说,不论是学哪一套系统,“基础的理论都是不变的”,也只有了解了基础的咚咚之后, 其他的技能才能够“触类旁通”呀!
网络上一些老手不太喜欢搞图形接口,是因为觉得他默认的设置
常常不合他们的意, 尤其是,因为图形化接口管理为了方便使用者,常常自己加入一些设置, 但是这些设置却往往是因地制宜的,所以反
而常常会导致架设的网站无法正常工作! 这点在网络新闻群组上面讨
论的已经相当清楚了!与其如此,何不一开始就玩命令行,去弄懂他
呢?
此外,很多玩过 Linux 的朋友大概都会碰到这样的一个问题, 就
是 Linux 的 distribution ( 发展厂商 ) 事实上是非常多的!而每个
distribution 所提供的套件内容虽然大同小异,然而其整合的工具却都不
一样,同时,每种套件在不同的 distribution 上面摆放的目录位置虽然也
是大同小异,然而某些配置文件就是摆在不同的目录下, 这个时候您
怎么找到该信息?难道非得来一套 distribution 就学他的主要内容吗?这
么一来,市面上少说也有数十套 Linux distribution ,每一套都学?如果
您时间多到如此地步,那 VBird 也不知道该说什么好了! 如果是我的
话,那么我会干脆直接学习一些 Linux 的基本技巧, 可以让我很轻易的
就找到不同版本之间的差异性,而且学习之路也会变的更宽广呢!
VBird 的观念不见得一定适合您,不过就只是以一个过来人的身
份给个小建议,要么就不要拿 Linux 来建站,跟 Windows 一样,玩玩
X-Window 就很开心了,要嘛真的得花一点时间来玩一玩比较深入的东
西, 中国话不是说过吗:“要怎么收获就怎么栽”虽然努力不一定有成
果,但最起码, 有成果的时候,成果肯定是自己的!4. 基本的学习流程
由上面鸟哥的经验谈,你不难了解到,学习 Linux 还是需要按部
就班是比较好的! 常常我们会看到初学者最常问的问题就是:“我已经
安装好了 Linux 了,接下来要干嘛?!”呵呵!老师们最常讲的一句话
就是: “那就开始学习如何开机跟关机呀!”不要笑喔! 说真的,安
装好了 Linux 之后,最先要学习的就是正确与安全的开机与关机方法!
否则由于不正常的开关机造成硬盘的损害怎么办!?好了!那么我也会
开机关机了, 那接下来要干嘛?哈!建议买本书来看看吧!
基本上,由于 Linux 是一个开放的架构,所以根本没有所谓的“规
格品!”, 也就是说,每个人所安装好并且设置好的主机都不是相同
的!加上 Linux 的历史差不多十多年左右而已, 并且,他的发展并不是
由一家公司所主导的,而是由一群热血青年相互研究开发的! 也就是
如此,所以一些操作方法与 HOW-TO 的文章并不是十分的多,尤其是
中文译本更是少的可怜! 因此,要学习好 Linux 的话,最好手边有一
本“工具书”, 那么要选择什么型式的工具书呢?!就鸟哥的看法而言,基本上,如果你对于 Linux 的基础操作指令与他的文件架构、工作方
法、安全防火墙设置等有一定的了解时,那么打开网络服务如 WWW、FTP、Mail、DNS 等等的服务就真是太简单了!所以,选择较为基础的
工具书作为你第一本的 Linux 参考书会比较好!早期不要急着买跟建站
有关的书籍啦!那方面的文章太简单了! 还是创建基础的功力比较有
用呢!也有朋友这样建议,找一天有空的时间,然后一整天泡在书店,好好的选择一本入门书籍,嗯!蛮不错的建议!鸟哥也好想找一天泡在
书店呀~
因此,这里建议想要学习 Linux 的朋友们,基础的功夫要学好,往后就不需要太麻烦人家啰!:
先从 Linux 的安装与指令学起:
没有 Linux 怎么学习 Linux 呢?所以好好的安装起一套你需要的Linux 吧!虽然说 Linux 的 distributions 很多,不过基本上架构都是
大同小异的, 差别在于接口的友好度与套件的选择不同罢了!所
以,选择一套你喜欢的就好了, 倒是没有哪一套特别好说~~
了解 Linux 的文件架构与权限概念:
这个重要!由于不同的权限设置会妨碍你的使用者的便利性,但是
太过于便利又会导致入侵的可能! 所以这里需要了解一下你的系
统呦!
多接触命令行:
尽量以命令行学习一些基本的 Linux 使用技巧,虽然一开始进度较
慢,但是熟悉之后, 您未来的学习之路将是以指数增加的型态来
增长您的 Linux 技术呦!
认识与 BASH 相关的咚咚:
既然要玩命令行,那么 BASH shell 这个玩意儿,与里面的“正则表
达式”、 “管线命令”与“命令重导向”等等,真的需要了解比较好
呦!此外,为了帮助您未来的管理, shell scripts 也是挺重要的!
学习一下如何使用 Shell 与 Shell scripts 的写法:
这个是稍微进阶了点,不过也建议学一学呢!对于管理 Linux 主机
的用途很大呦!
至少一定要了解套件管理员:
记得将最重要的套件管理员,亦即 RPM 与 Tarball 的技巧完整的创
建概念, 这将是您相当重要的一门课!
实作的重要性:
在看过书本或者网络上的相关介绍之后,请千万记得自己实作看
看, 没有任何事情比自己实作学的更快的!此外,不要尽信书本或者网络上的教学, 自己亲身去理解,才能体会个中的含意与技
巧。
在进入网络的世界之前,先将基础打稳,那么进入网络的世界将
一点都不困难!
另外,这里还要建议大家,就鸟哥观察一些现象的结果来看
(喔!这是结果论啦!), 常常在网络上发问的朋友们都是一遇到问
题就想要马上得到一些老手的帮助的朋友,不过, 其实这些朋友遇到
的问题的解决方案都已经显示在屏幕上啦! 因为 Linux 的错误讯息本来
就含有相当大量的解决方案的说明在内!此外,在 varlog 这个目录中
的错误讯息也常常提供大量的解决方案!这些都是可以帮你自己节省时
间的参考工具!5. 基本的建站流程表
好了,既然 Linux 的网络功能很强,那么当然很多朋友的目的即
是利用 Linux 来达成建站的目的啰!呵呵!没错!因此,接下来,就是
要玩建站啦!不过, 除非您对于 Linux 已经够熟悉,或者是没办法,真的有公司的压力在,否则,在认识整个 Linux 架构之前,真的不要
玩建站!! 因为,架设不成功那就算了,万一被入侵并且被用来做坏
事,那可就太划不来啦!
此外,鸟哥常常发现一件事情,就是朋友们常常会问一些很怪异
的问题,这些问题提出后, 一看就晓得大概这个朋友没有建站的经验
啦!任何事情都有先后之分,在你尚未学到的咚咚前, 先放着不动也
没有关系!但千万不要跳着学习!!这是大忌讳~例如:不要连
Apache 都还不会架设,就想要架设一个在 NAT 后面的 Apache 主机,那根本就是一个很难完成的任务!即使完成了,可能也会衍生出更多的
小问题来困扰你! 与其如此,不如一步一步的慢慢创建你的网站,不
要想着一步登天啦!很困扰的!
说实在的,通常每个人都有特别喜好的建站方法,当然鸟哥也不
例外, 如果您对于鸟哥还有点信心的话,那么你可以依照下面的方式
一步一步的创建起属于你的 Linux 工作环境喔!
给新手的建议:
这里有一篇 果正兄 给 Linux 新手的建议,非常建议你看一下, 学
一学概念性的东西。另外,里头说的“常用指令”是一定要学会的
喔!此外, man 与 info 这两个指令请一定要会使用!
认识选择硬件配备:
Linux 与硬件的关系是“极为重要的”! 所以你一定要知道你的硬
件等级!你应该要知道即将装 Linux 的硬件是什么? 所以你要了解
你手边的硬件是否可以支持 Linux ,或者说,是否可以满足你的Linux 需求。
进行安装:
这一部分就视你的需求而定,每个人所喜好的 Linux 版本不见得相
同! 不过,如果是新手的话,当然就比较建议使用 Mandrake 或
Red Hat 系统,因为他会比较简单!
了解 Linux 的基础:
这部份包含了 Linux 的群组与使用者概念、文件的权限问题、磁盘
与硬件的管理、资源管理的问题、 quota 与帐号管理、还有很多很
多基本的数据,这些“一定要学会!” 不然,就不要玩建站啦!
认识与编译核心:
其实安装完了 Linux 之后的第一件事,就是将你的核心重新编译一
次,以符合你的需求。 不过,目前市面上的书籍大多将核心编译
摆在最后面才说,这是顾及到新手通常不知道何为核心, 当然也
就不知道核心的功能以及编译核心所带来的稳定性啦!
认识网络:
在实际进入建站的阶段之前,鸟哥希望大家能够对于网络基础有一
定程度的认识!尤其是 DNS 这个观念!!如果对于网络有一定程
度的认识之后,对于您自己的网络除错一定能有长远的帮助的!!
架设区域网络:
通常在一个区域中,不太可能仅有一部 PC ,所以,为了分享彼此
的信息,或者说是多部计算机的数据分享, 呵呵!这就需要用到
区域网络的概念。
连上网际网络:
既然是要建站,当然就要连上 Internet 啦,如果使用的是学术网络,就必须要晓得 gateway 与您的 IP 及 Netmask ,而如果使用
ADSL 的话,使用 rp-pppoe 即可搞定网络拨接的问题!那么如果是
Cable 的话,嗯! DHCP 的设置就得给他知道一下啰!
为你的主机申请一个名字啦:
建站就是要连上 Internet ,所以当然要申请一些必备的数据啰!除
非您要自掏腰包去注册固定的 DNS 名称,否则动态 IP 应该够您使
用的啰!
架设 NAT:
既然要分享网络带宽的话,当然就是要架设 NAT 啦,架设完了之
后,区域内所有的计算机都可以连线了!
架设 Proxy :
而既然所有的计算机都是通过这一台 NAT 主机来对外连线,当
然,设置一个 Proxy 将对你的内部网络的浏览速度应该会有所帮助
的!
架设 Mail:
架设 Linux 主机的附属功能,就是可以拥有并控管自己的信箱,以
及自己的网页!这时,就需要来架设 E-Mail 了!
架设 WWW :
如同 mail server , WWW server 也是很重要的一环, Linux 可以提
供给你相当不错的网页空间喔! 更重要的是,设置上很方便很方
便....
架设 SAMBA :
另外一个需要的服务就是 samba 服务了,这个软件让你的 Linux 可
以在 Windows 系统的“网络上的芳邻”被看到!很不错的优!因为,Linux 是一套很稳定的系统,而且不容易受到类似 “红色警戒”
这一类的攻击型病毒,因此,你可以使用“网络上的芳邻”将你在
Windows 的数据直接备份,或者直接取用于 Linux 主机中,如此还
可具有备份文件的功能!
基本上,鸟哥所架设的主机大概就只有上面几个服务,不过, 有
上面的几项服务也足够应付你所需要的网络信息啰!如果还有需要的
话,才建议去研究 DHCP、DNS 与 FTP 等服务啦!6. 简易的安全防护
其实在架设网站的过程就应该要注意到这方面的技巧了!“网站安
全” 真的是很重要的一环!那一天跟一些朋友在聊天的时后聊到了某天
VBird 在报纸上看到的消息!话说美国几乎是全世界骇客最喜欢去入侵
的国家(像是微软啦,FBI 啦, CIA 啦等等的!),毕竟他号称是强
者,而强者最容易遭到对现实不满或者被欺压者的报复了!
但是这些骇客总不希望自己的行踪被发现而使自己的国家蒙受委
屈吧!所以他们总是会通过 Internet 找寻合适的“中继跳板”站作为入侵
的门口, 您晓得吗,在该篇报导中指出,美国最不满的国家之一就是
台湾(唉~可怜的台湾, 动不动就要被不满!我们要自立自强才
行!!咦!我可不是叫大家去做骇客呦! 我是说我们需要正本清源!
从本身做起!好好的注意自己的网站安全呢!),为什么呢? 因为台
湾的很多网站普遍缺乏“安全”概念, 甚至有些大型的网站几乎没有安全
防护机制!这就容易成为骇客的目标了! 因为大型网站的流量通常够
大,足够骇客们进行任何网络破坏行为了!
想想看,如此一来不只美国,其他国家甚至可能会对于台湾的网
络流量进行减缩的动作, 以防止不良的连线封包进入!那么我们以后
想要连到国外去不就很龟速了吗?! 是呀!所以安全的网站也是相当
重要的呀!
那么您认为“嗯!反正我的流量又不大,只是 56 kbps 的 ADSL
流量罢了,骇客总不会想要入侵我这种小站吧?!”
错!!
进行网络骇客的行为根本不需要大流量! 只要能连线就能进行任何的
破坏行为了!而且这些连线的讯息通常不会运用来传输数据, 而是用
来下达一些简单的指令而已!所以流量也根本就不需要太大的!要知
道,如果被骇客侵入后, 将可能变成骇客攻击的中继站!也就是说,后门程序将会帮助骇客经由你的主机去攻击他想要攻击的目标! 那就够严重的了!因为如果对方追查该封包得最后结果是您的网站,呵呵!
可是要吃上官司的!!
所以呢,当然要对于你的 Linux 做一些手术,让他变的更安全才
行啦! 在安装完了主机之后,请确认一下:
架设安全的 Linux 主机;
限制 Linux 主机的连线计算机;
更改 wu-ftp 成为 proftp 系统;
简单的防火墙设置;
Linux 的套件升级;
2001xxxx:不知道是什么时候完成的第一篇内容;
20030121:将原本的数据,配合 VBird 的 Linux 学习之路,完成这一篇短文。
20041019:将风格改写为最近设置的样式!第零章、计算机概论 最近更新日期:20
由过去的经验当中,鸟哥发现到因为兴趣或生活所逼而必须要接触 Linux 的朋友,很多可能并非信息相关专业出身, 因此对于电脑软硬件方面的概念不熟。然而操作系统这
种咚咚跟硬件有相当程度的关连性, 所以,如果不了解一下计算机概论,要很快的了解
Linux 的概念是有点难度的。因此,鸟哥就自作聪明的新增一个小章节来谈谈计概啰! 因
为鸟哥也不是信息相关学科出身,所以,写的不好的地方请大家多多指教啊!^_^Tips
0.1 电脑:辅助人脑的好工具
现在的人们几乎无时无刻都会碰电脑!不管是桌面电脑(台式
机)、笔记本电脑(笔记本)、平板电脑、智能手机等等,这些东西都
算是电脑。 虽然接触的这么多,但是,你了解电脑里面的元件有什么
吗?以台式机来说,电脑的机箱里面含有什么元件?不同的电脑可以应
用在哪些工作? 你生活周遭有哪些电器用品内部是含有电脑相关元件
的?下面我们就来谈一谈这些东西呢!
所谓的电脑就是一种计算机,而计算机其实是:“接受使用者输入
指令与数据,经由中央处理器的数学与逻辑单元运算处理后, 以产生
或储存成有用的信息”。因此,只要有输入设备 (不管是键盘还是触摸
屏) 及输出设备 (例如电脑屏幕或直接由打印机打印出来),让你可
以输入数据使该机器产生信息的, 那就是一部计算机了。
电脑可以协助人们进行大量的运算!以前如果要计算化
学反应式都得要算个老半天,有了电脑仿真软件后,就
有不一样的情况发生了! 以下图为例,鸟哥的工作中,有一项
是需要将人们排放的空气污染物带入电脑模式进行仿真后,计算
出可能产生的空气污染并得到空气品质状态,最后经过分析软件
得到各式各样的图表。 经过这些图表的解析,就可以让人们知道什么样的污染排放来
源可能会产生什么样的空气品质变化啰。
图0.1.1、计算器的功能
好了,根据这个定义你知道哪些东西是计算机了吗?其实包括一
般商店用的简易型加减乘除计算器、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你上课会使用的桌上型
个人电脑、外出可能会带的笔记本电脑 (包括 notebook 与 netbook),还有近几年 (2015前后) 非常热门的平板电脑与智能手机, 甚至是未
来可能会大流行的单版电脑 (Xapple pi, banana pi, Raspberry pi,[1]) 与
智能手表,甚至于更多的智能穿戴式电脑[2]
等等,这些都是计算机喔!
那么计算机主要的组成元件是什么呢?下面我们以常见的个人电
脑主机或服务器工作站主机来作为说明好了。
0.1.1 计算机硬件的五大单元
关于电脑的硬件组成部分,其实你可以观察你的台式机来分析一
下,依外观来说这家伙主要可分为三部分,分别是:
输入单元:包括键盘、鼠标、读卡机、扫描仪、手写板、触摸屏等
等一堆;
主机部分:这个就是系统单元,被主机机箱保护住了,里面含有一
堆板子、CPU 与内存等;
输出单元:例如屏幕、打印机等等
我们主要通过输入设备如鼠标与键盘来将一些数据输入到主机里
面,然后再由主机的功能处理成为图表或文章等信息后, 将结果传输
到输出设备,如屏幕或打印机上面。那主机里面含有什么元件呢?如果
你曾经拆开过电脑主机机箱 (包括拆开你的智能手机也一样喔!),会发现其实主机里面最重要的就是一块主板,上面安插了中央处理器
(CPU) 以及内存、硬盘 (或记忆卡) 还有一些适配卡设备而已。 当
然大部分智能手机是将这些元件直接焊接在主板上面而不是插卡啦!
整部主机的重点在于中央处理器 (Central Processing Unit,CPU),CPU 为一个具有特定功能的芯片, 里头含有微指令集,如果
你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关
内置的微指令集才可以。 由于 CPU 的工作主要在于管理与运算,因此Tips
在 CPU 内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单
元。[3]
其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主
要在协调各周边元件与各单元间的工作。
既然 CPU 的重点是在进行运算与判断,那么要被运算与判断的数
据是从哪里来的? CPU 读取的数据都是从内存来的! 内存内的数据则
是从输入单元所传输进来!而 CPU 处理完毕的数据也必须要先写回内
存中,最后数据才从内存传输到输出单元。
为什么我们都会说,要加快系统性能,通常将内存容量
加大就可以获得相当好的成效?如同下图以及上面的说
明,因为所有的数据都要经过内存的传输, 所以内存的容量如
果太小,数据高速缓存就不足~影响性能相当大啊!尤其针对
Linux 作为服务器的环境下!这点要特别记忆喔!
综合上面所说的,我们会知道其实电脑是由几个单元所组成的,包括输入单元、 输出单元、CPU 内部的控制单元、算数逻辑单元与内
存五大部分。 这几个东西的相关性如下所示:图0.1.2、电脑的五大单元[4]
上面图示中的“系统单元”其实指的就是电脑机箱内的主要元件,而重点在于 CPU 与内存。 特别要看的是实线部分的传输方向,基本上
数据都是流经过内存再转出去的! 至于数据会流进流出内存则是 CPU
所发布的控制命令!而 CPU 实际要处理的数据则完全来自于内存 (不
管是程序还是一般文件数据)!这是个很重要的概念喔! 这也是为什
么当你的内存不足时,系统的性能就很糟糕!也是为什么现在人们买智
能手机时,对于可用内存的要求都很高的原因!
而由上面的图示我们也能知道,所有的单元都是由 CPU 内部的控
制单元来负责协调的,因此 CPU 是整个电脑系统的最重要部分! 那么
目前世界上有哪些主流的 CPU 呢?是否刚刚我们谈到的硬件内全部都
是相同的 CPU 架构呢?下面我们就来谈一谈。
0.1.2 一切设计的起点: CPU 的架构
如前面说过的,CPU 其实内部已经含有一些微指令,我们所使用
的软件都要经过 CPU 内部的微指令集来达成才行。 那这些指令集的设
计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要
CPU 架构, 分别是:精简指令集 (RISC) 与复杂指令集 (CISC) 系
统。下面我们就来谈谈这两种不同 CPU 架构的差异啰!
精简指令集 (Reduced Instruction Set Computer, RISC):[5]
这种 CPU 的设计中,微指令集较为精简,每个指令的执行时间都
很短,完成的动作也很单纯,指令的执行性能较佳; 但是若要做复杂
的事情,就要由多个指令来完成。常见的 RISC 微指令集 CPU 主要例如
甲骨文 (Oracle) 公司的 SPARC 系列、 IBM 公司的 PowerArchitecture (包括 PowerPC) 系列、与安谋公司 (ARM Holdings)
的 ARM CPU 系列等。
在应用方面,SPARC CPU 的电脑常用于学术领域的大型工作站
中,包括银行金融体系的主要服务器也都有这类的电脑架构; 至于
PowerPC架构的应用上,例如索尼(Sony)公司出产的Play Station
3(PS3)就是使用PowerPC架构的Cell处理器; 那安谋的 ARM 呢?你
常使用的各厂牌手机、PDA、导航系统、网络设备(交换器、路由器
等)等,几乎都是使用 ARM 架构的 CPU 喔! 老实说,目前世界上使
用范围最广的 CPU 可能就是 ARM 这种架构的呢!
[6]
复杂指令集(Complex Instruction Set Computer, CISC):[7]
与RISC不同的,CISC在微指令集的每个小指令可以执行一些较低
阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因
为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令
可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。
由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个
人电脑(Personal computer)用途上面, 因此,个人电脑常被称为x86
架构的电脑!那为何称为x86架构[8]
呢? 这是因为最早的那颗Intel发展
出来的CPU代号称为8086,后来依此架构又开发出80286, 80386..., 因
此这种架构的CPU就被称为x86架构了。
在2003年以前由Intel所开发的x86架构CPU由8位升级到16、32
位,后来AMD依此架构修改新一代的CPU为64位, 为了区别两者的差
异,因此64位的个人电脑CPU又被统称为x86_64的架构喔!
所谓的位指的是CPU一次数据读取的最大量!64位CPU代表CPU一次可以读写64bits这
么多的数据,32位CPU则是CPU一次只能读取32位的意思。 因为CPU读取数据量有限
制,因此能够从内存中读写的数据也就有所限制。所以,一般32位的CPU所能读写的最Tips
大数据量,大概就是4GB左右。
那么不同的x86架构的CPU有什么差异呢?除了
CPU的整体结构(如第二层高速缓存、每次运行可执行的指令数等)之
外, 主要是在于微指令集的不同。新的x86的CPU大多含有很先进的微
指令集, 这些微指令集可以加速多媒体程序的运行,也能够加强虚拟
化的性能,而且某些微指令集更能够增加能源效率, 让CPU耗电量降低
呢!由于电费越来越高,购买电脑时,除了整体的性能之外, 节能省
电的CPU特色也可以考虑喔!
例题:
最新的IntelAMD的x86架构中,请查询出多媒体、虚拟化、省电功能
各有哪些重要的微指令集?(仅供参考)
答:
多媒体微指令集:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!
虚拟化微指令集:Intel-VT, AMD-SVM
省电功能:Intel-SpeedStep, AMD-PowerNow!
6432位相容技术:AMD-AMD64, Intel-EM64T
0.1.3 其他单元的设备
五大单元中最重要的控制、算术逻辑被整合到 CPU 的封装中,但
系统当然不可能只有 CPU 啊!那其他三个重要电脑单元的设备还有哪
些呢? 其实在主机机箱内的设备大多是通过主板 (main board) 连接
在一块,主板上面有个链接沟通所有设备的芯片组,这个芯片组可以将
所有单元的设备链接起来, 好让 CPU 可以对这些设备下达命令。其他单元的重要设备主要有:
系统单元:如图 0.1.2 所示,系统单元包括 CPU 与内存及主板相关
元件。而主板上头其实还有很多的连接接口与相关的适配卡,包括
鸟哥近期常使用的 PCI-E 10G 网卡、 磁盘阵列卡、还有显卡等
等。尤其是显卡,这东西对于玩3D游戏来说是非常重要的一环,他与显示的精致度、色彩与分辨率都有关系。
存储单元:包括内存 (main memory, RAM) 与辅助内存,其中辅
助内存其实就是大家常听到的“储存设备”啰!包括硬盘、软盘、光
盘、磁带等等的。
输入、输出单元:同时涵盖输入输出的设备最常见的大概就是触摸
屏了。至于单纯的输入设备包括前面提到的键盘鼠标之外,目前的
体感设备也是重要的输入设备喔! 至于输出设备方面,除了屏幕
外,打印机、音效喇叭、HDMI电视、投影机、蓝牙耳机等等,都
算喔!
更详细的各项主机与周边设备我们将在下个小节进行介绍!在这
里我们先来了解一下各元件的关系啰!那就是,电脑是如何运行的呢?
0.1.4 运行流程
如果不是很了解电脑的运行流程的话,鸟哥拿个简单的想法来思
考好了~假设电脑是一个人体,那么每个元件对应到那个地方呢?可以
这样思考:图0.1.3、各元件运行
CPU=脑袋瓜子:每个人会作的事情都不一样(微指令集的差
异),但主要都是通过脑袋瓜子来进行判断与控制身体各部分的活
动;
内存=脑袋中放置正在被思考的数据的区块:在实际活动过程中,我们的脑袋瓜子需要有外界刺激的数据 (例如光线、环境、语言
等) 来分析,那这些互动数据暂时存放的地方就是内存,主要是
用来提供给脑袋瓜子判断用的信息。
硬盘=脑袋中放置回忆的记忆区块:跟刚刚的内存不同,内存是提
供脑袋目前要思考与处理的信息,但是有些生活琐事或其他没有要
立刻处理的事情, 就当成回忆先放置到脑袋的记忆深处吧!那就
是硬盘!主要目的是将重要的数据记录起来,以便未来将这些重要
的经验再次的使用;
主板=神经系统:好像人类的神经一样,将所有重要的元件连接起来,包括手脚的活动都是脑袋瓜子发布命令后, 通过神经(主
板)传导给手脚来进行活动啊!
各项周边设备=人体与外界沟通的手、脚、皮肤、眼睛等:就好像
手脚一般,是人体与外界互动的重要关键!
显卡=脑袋中的影像:将来自眼睛的刺激转成影像后在脑袋中呈
现,所以显卡所产生的数据来源也是CPU控制的。
电源供应器 (Power)=心脏:所有的元件要能运行得要有足够的
电力供给才行!这电力供给就好像心脏一样,如果心脏不够力,那么全身也就无法动弹的!心脏不稳定呢?那你的身体当然可能断
断续续的~不稳定!
由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜
子! 而脑袋瓜子当中与现在正在进行的工作有关的就是CPU与内存!任
何外界的接触都必须要由脑袋瓜子中的内存记录下来, 然后给脑袋中
的CPU依据这些数据进行判断后,再发布命令给各个周边设备!如果需
要用到过去的经验, 就得由过去的经验(硬盘)当中读取啰!
也就是说,整个人体最重要的地方就是脑袋瓜子,同样的,整部
主机当中最重要的就是CPU与内存, 而CPU的数据来源通通来自于内
存,如果要由过去的经验来判断事情时, 也要将经验(硬盘)挪到目
前的记忆(内存)当中,再交由CPU来判断喔!这点得要再次的强调
啊! 下个章节当中,我们就对目前常见的个人电脑各个元件来进行说
明啰!
0.1.5 电脑按用途分类知道了电脑的基本组成与周边设备,也知道其实电脑的CPU种类
非常的多,再来我们想要了解的是,电脑如何分类? 电脑的分类非常
多种,如果以电脑的复杂度与运算能力进行分类的话,主要可以分为这
几类:
超级计算机(Supercomputer)
超级计算机是运行速度最快的电脑,但是他的维护、操作费用也最
高!主要是用于需要有高速计算的计划中。 例如:国防军事、气
象预测、太空科技,用在仿真的领域较多。详情也可以参考: 国
家高速网络与计算中心http:www.nchc.org.tw的介绍! 至于全世界
最快速的前500大超级计算机,则请参考:http:www.top500.org。
大型计算机(Mainframe Computer)
大型计算机通常也具有数个高速的CPU,功能上虽不及超级计算
机,但也可用来处理大量数据与复杂的运算。 例如大型企业的主
机、全国性的证券交易所等每天需要处理数百万笔数据的企业机
构, 或者是大型企业的数据库服务器等等。
迷你电脑(Minicomputer)
迷你电脑仍保有大型计算机同时支持多使用者的特性,但是主机可
以放在一般作业场所, 不必像前两个大型计算机需要特殊的空调
场所。通常用来作为科学研究、工程分析与工厂的流程管理等。
工作站(Workstation)
工作站的价格又比迷你电脑便宜许多,是针对特殊用途而设计的电
脑。在个人电脑的性能还没有提升到目前的状况之前, 工作站电
脑的性能价格比是所有电脑当中较佳的,因此在学术研究与工程
分析方面相当常见。
微电脑(Microcomputer)
个人电脑就属于这部份的电脑分类,也是我们本章主要探讨的目标!体积最小,价格最低,但功能还是五脏俱全的! 大致又可分
为桌上型、笔记型等等。
若光以性能来说,目前的个人电脑性能已经够快了,甚至已经比
工作站等级以上的电脑运算速度还要快! 但是工作站电脑强调的是稳
定不死机,并且运算过程要完全正确,因此工作站以上等级的电脑在设
计时的考虑与个人电脑并不相同啦! 这也是为啥工作站等级以上的电
脑售价较贵的原因。
0.1.6 电脑上面常用的计算单位 (容量、速度等)
电脑的运算能力除了 CPU 微指令集设计的优劣之外,但主要还是
由速度来决定的。至于存放在电脑储存设备当中的数据容量也是有单位
的。
容量单位
电脑对数据的判断主要依据有没有通电来记录信息,所以理论上
对于每一个纪录单位而言,它只认识 0 与 1 而已。01 这个二进制的的
单位我们称为 bit。 但 bit 实在太小了,所以在储存数据时每份简单的数
据都会使用到 8 个 bits 的大小来记录,因此定义出 Byte 这个单位,他
们的关系为:
1 Byte = 8 bits
不过同样的,Byte 还是太小了,在较大的容量情况下,使用 Byte
相当不容易判断数据的大小,举例来说,1000000 Bytes 这样的显示方
式你能够看得出有几个零吗?所以后来就有一些常见的简化单位表达
式,例如 K 代表 1024Byte,M 代表 1024K 等。 而这些单位在不同的进Tips
位制下有不同的数值表示,下面就列出常见的单位与进位制对应:
进位制 Kilo Mega Giga Tera Peta Exa Zetta
二进制 1024 1024K 1024M 1024G 1024T 1024P 1024E
十进制 1000 1000K 1000M 1000G 1000T 1000P 1000E
一般来说,文件大小使用的是二进制的方式,所以 1GBytes 的文
件大小实际上为:1024x1024x1024Bytes 这么大! 速度单位则常使用十
进制,例如 1GHz 就是 1000x1000x1000Hz 的意思。
那么什么是“进位”呢?以人类最常用的十进制为例,每
个“位置”上面最多仅能有一个数值,这个数值不可以比 9
还要大!那比 9 还大怎办? 就用“第二个位置来装一个新的 1 ”!
所以, 9 还是只有一个位置, 10 则是用了两个位置了。好了那
如果是 16 进位怎办?由于每个位置只能出现一个数值, 但是数
字仅有 0~9 而已啊!因此 16 进位中,就以 A 代表 10 的意思,以 B 代表 11 的意思,所
以 16 进位就是 0~9, a, b, c, d, e, f,有没有看到, “每个位置最多还是只有一个数值而
已”喔!好了,那回来谈谈二进制。因为每个位置只能有 0, 1 而已,不能出现 2 (逢 2
进一位) 啦!这样了解乎?
速度单位
CPU的运算速度常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其
实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少
Mbit。举例来说,大家常听到的 20M5M 光世代传输速度,如果转成文
件大小的 Byte 时,其实理论最大传输值为:每秒 2.5MByte 每秒
625KByte的下载上传速度喔!
例题:
假设你今天购买了500GB的硬盘一颗,但是格式化完毕后却只剩下460GB左右的容量,这是什么原因?
答:
因为一般硬盘制造商会使用十进制的单位,所以500GByte代表为
500100010001000Byte之意。 转成文件的容量单位时使用二进制
(1024为底),所以就成为466GB左右的容量了。
硬盘厂商并非要骗人,只是因为硬盘的最小物理量为512Bytes,最小
的组成单位为扇区(sector), 通常硬盘容量的计算采用“多少个
sector”,所以才会使用十进制来处理的。相关的硬盘信息在这一章后
面会提到的!0.2 个人电脑架构与相关设备元件
一般消费者常说的电脑通常指的就是x86的个人电脑架构,因此我
们有必要来了解一下这个架构的各个元件。事实上,Linux最早在发展
的时候,就是依据个人电脑的架构来发展的, 所以真的得要了解一下
呢!另外,早期两大主流x86开发商(Intel, AMD)的CPU架构与设计理
念都有些许差异。不过互相学习对方长处的结果,就是两者间的架构已
经比较类似了。 由于目前市场占有率还是以 Intel 为大宗,因此下面以
目前(2015)相对较新的 Intel 主板架构来谈谈:
图 0.2.1、Intel芯片架构
由于主板是链接各元件的一个重要项目,因此在主板上面沟通各Tips
部元件的芯片组设计优劣,就会影响性能不少喔!早期的芯片组通常分
为两个桥接器来控制各元件的沟通, 分别是:(1)北桥:负责链接速
度较快的CPU、内存与显卡接口等元件;(2)南桥:负责连接速度较
慢的设备接口, 包括硬盘、USB、网卡等等。(芯片组的南北桥与三国
的大小乔没有关系 @_@)。不过由于北桥最重要的就是 CPU 与内存之
间的桥接,因此目前的主流架构中, 大多将北桥内存控制器整合到
CPU 封装当中了。所以上图你只会看到 CPU 而没有看到以往的北桥芯
片喔!
早期芯片组分南北桥,北桥可以连接 CPU、内存与显
卡。只是 CPU 要读写到内存的动作,还需要北桥的支
持,也就是 CPU 与内存的交流, 会瓜分掉北桥的总可用带宽,真浪费!因此目前将内存控制器整合到 CPU 后,CPU与内存之
间的沟通是直接交流,速度较快之外,也不会消耗更多的带宽!
毕竟目前世界上x86的CPU主要供应商为Intel,所以下面鸟哥将以
Intel的主板架构说明各元件啰! 我们以华硕公司出的主板,型号:Asus
Z97-AR 作为一个说明的范例,搭配着主板芯片组逻辑图 0.2.1 的说明,主板各元件如下所示:图 0.2.2、ASUS 主板 (图片为华硕公司所有)
上述的图片中,主板上面设计的插槽主要有 CPU (Intel LGA
1150 Socket)、内存 (DDR3 3200 support)、显卡接口 (PCIe3.0)、SATA 磁盘插槽 (SATA express)等等。 下面的元件在解说的时候,请参考上述两张图示来印证喔!0.2.1 执行脑袋运算与判断的 CPU
如同华硕主板示意图上半部的中央部分,那就是CPU插槽。 由于
CPU负责大量运算,因此CPU通常是具有相当高发热量的元件。所以如
果你曾经拆开过主板, 应该就会看到CPU上头通常会安插一颗风扇来主
动散热的。
x86个人电脑的CPU主要供应商为Intel与AMD,目前(2015)主流
的CPU都是双核以上的架构了! 原本的单核心CPU仅有一个运算单元,所谓的多核心则是在一颗CPU封装当中嵌入了两个以上的运算核心, 简
单的说,就是一个实体的CPU外壳中,含有两个以上的CPU单元就是
了。
不同的CPU型号大多具有不同的脚位(CPU上面的插脚),能够
搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只
考虑CPU,你还得要留意你的主板上面所支持的CPU型号喔! 不然买了
最新的CPU也不能够安插在你的旧主板上头的!目前主流的CPU有Intel
的 i3i5i7 系列产品中,甚至先后期出厂的类似型号的脚位也不同, 例
如 i7-2600 使用 LGA1155 脚位而 i7-4790 则使用 FCLGA1150 脚位,挑
选时必须要很小心喔!
我们前面谈到CPU内部含有微指令集,不同的微指令集会导致
CPU工作效率的优劣。除了这点之外, CPU性能的比较还有什么呢?那
就是CPU的频率了!什么是频率呢?简单的说, 频率就是CPU每秒钟可
以进行的工作次数。 所以频率越高表示这颗CPU单位时间内可以作更多
的事情。举例来说,Intel的 i7-4790 CPU频率为3.6GHz, 表示这颗CPU
在一秒内可以进行3.6x109次工作,每次工作都可以进行少数的指令运行
之意。
注意,不同的CPU之间不能单纯的以频率来判断运算性能喔!这是因为每颗CPU的微指
令集不相同,架构也不见得一样,可使用的第二层高速缓存及其计算机制可能也不同,加上每次频率能够进行的工作指令数也不同!所以,频率目前仅能用来比较同款CPU的Tips
Tips
速度!
CPU的工作频率:外频与倍频
早期的 CPU 架构主要通过北桥来链接系统最重要的 CPU、内存与
显卡设备。因为所有的设备都得通过北桥来链接,因此每个设备的工作
频率应该要相同。 于是就有所谓的前端总线 (FSB) 这个东西的产
生。但因为 CPU 的运算速度比其他的设备都要来的快,又为了要满足
FSB 的频率,因此厂商就在 CPU 内部再进行加速, 于是就有所谓的外
频与倍频了。
总结来说,在早期的 CPU 设计中,所谓的外频指的是CPU与外部
元件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作性能的
一个倍数, 两者相乘才是CPU的频率速度。例如 Intel Core 2 E8400 的
内频为 3.0GHz,而外频是333MHz,因此倍频就是9倍啰!
(3.0G=333Mx9, 其中1G=1000M)
很多计算机硬件玩家很喜欢玩“超频”,所谓的超频指的
是: 将CPU的倍频或者是外频通过主板的设置功能更改
成较高频率的一种方式。但因为CPU的倍频通常在出厂时已经被
锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将他的外
频333MHz调整成为400MHz,但如此一来整个主板的各个元件的运行频率可能都会被增
加成原本的1.333倍(43), 虽然CPU可能可以到达3.6GHz,但却因为频率并非正常速
度,故可能会造成死机等问题。
但如此一来所有的数据都被北桥卡死了,北桥又不可能比 CPU 更
快,因此这家伙常常是系统性能的瓶颈。为了解决这个问题,新的 CPU
设计中, 已经将内存控制器整合到 CPU 内部,而链接 CPU 与内存、显
卡的控制器的设计,在Intel部份使用 QPI (Quick Path Interconnect) 与Tips
DMI 技术,而 AMD 部份则使用 Hyper Transport 了,这些技术都可以让
CPU 直接与内存、显卡等设备分别进行沟通,而不需要通过外部的链接
芯片了。
因为现在没有所谓的北桥了 (整合到 CPU 内),因此,CPU 的
频率设计就无须考虑得要同步的外频,只需要考虑整体的频率即可。
所以,如果你经常有查阅自己 CPU 频率的习惯,当使用 cpu-z
[9]
这个
软件时,应该会很惊讶的发现到,怎么外频变成 100MHz 而倍频可以到
达 30 以上!相当有趣呢!
现在 Intel 的 CPU 会主动帮你超频喔!例如 i7-4790 这颗
CPU 的规格
[10]
中,基本频率为 3.6GHz,但是最高可
自动超频到 4GHz 喔! 通过的是 Intel 的 turbo 技术。同时,如果
你没有大量的运算需求,该 CPU 频率会降到 1.xGHz 而已,借此
达到节能省电的目的!所以,各位好朋友, 不需要自己手动超
频了!Intel 已经自动帮你进行超频了...所以,如果你用 cpu-z 观察 CPU 频率,发现该频
率会一直自动变动,很正常!你的系统没坏掉!
32位与64位的CPU与总线“宽度”
从前面的简易说明中,我们知道 CPU 的各项数据通通得要来自于
内存。因此,如果内存能提供给 CPU 的数据量越大的话,当然整体系
统的性能应该也会比较快! 那如何知道内存能提供的数据量呢?此时
还是得要借由 CPU 内的内存控制芯片与内存间的传输速度“前端总线速
度(Front Side Bus, FSB) 来说明。
与 CPU 的频率类似的,内存也是有其工作的频率,这个频率限制
还是来自于 CPU 内的内存控制器所决定的。以图0.2.1 为例, CPU 内置
的内存控制芯片对内存的工作频率最高可达到 1600MHz。这只是工作
频率(每秒几次)。一般来说,每次频率能够传输的数据量,大多为
64 位,这个 64 位就是所谓的“宽度”了! 因此,在图0.2.1 这个系统中,Tips
CPU可以从内存中取得的最快带宽就是 1600MHz 64bit = 1600MHz 8
Bytes = 12.8GBytes。
与总线宽度相似的,CPU每次能够处理的数据量称为字组大小
(word size), 字组大小依据CPU的设计而有32位与64位。我们现在所
称的电脑是32或64位主要是依据这个 CPU解析的字组大小而来的!早期
的32位CPU中,因为CPU每次能够解析的数据量有限, 因此由内存传来
的数据量就有所限制了。这也导致32位的CPU最多只能支持最大到
4GBytes的内存。
得利于北桥整合到 CPU 内部的设计,CPU 得以“个别”跟
各个元件进行沟通!因此,每种元件与 CPU 的沟通具有
很多不同的方式!例如内存使用系统总线带宽来与 CPU 沟通。
而显卡则通过PCI-E的序列信道设计来与CPU沟通喔!详细说明
我们在本章稍后的主板部份再来谈谈。
CPU等级
由于x86架构的CPU在Intel的Pentium系列(1993年)后就有不统一
的脚位与设计,为了将不同种类的CPU规范等级, 所以就有
i386,i586,i686等名词出现了。基本上,在Intel Pentium MMX与AMD K6
年代的CPU称为i586等级, 而Intel Celeron与AMD Athlon(K7)年代之
后的32位CPU就称为i686等级。 至于目前的64位CPU则统称为x86_64等
级。
目前很多的程序都有对CPU做最优化的设计,万一哪天你发现一
些程序是注明给x86_64的CPU使用时, 就不要将他安装在686以下等级
的电脑中,否则可是会无法执行该软件的! 不过,在x86_64的硬件下
倒是可以安装386的软件喔!也就是说,这些东西具有向下相容的能力
啦!超线程 (Hyper-Threading, HT)
我们知道现在的 CPU 至少都是两个核心以上的多核心 CPU 了,但是 Intel 还有个很怪的东西,叫做 CPU 的超线程 (Hyper-Threading)
功能! 那个是啥鬼东西?我们知道现在的 CPU 运算速度都太快了,因
此运算核心经常处于闲置状态下。而我们也知道现在的系统大多都是多
任务的系统, 同时间有很多的程序会让 CPU 来执行。因此,若 CPU 可
以假象的同时执行两个程序,不就可以让系统性能增加了吗?反正 CPU
的运算能力还是没有用完啊!
那是怎么达成的啊这个 HT 功能?强者鸟哥的同事蔡董大大用个
简单的说明来解释。在每一个 CPU 内部将重要的寄存器 (register) 分
成两群, 而让程序分别使用这两群寄存器。也就是说,可以有两个程
序“同时竞争 CPU 的运算单元”,而非通过操作系统的多任务切换! 这
一过程就会让 CPU 好像“同时有两个核心”的模样!因此,虽然大部分
i7 等级的 CPU 其实只有四个实体核心,但通过 HT 的机制, 则操作系
统可以抓到八个核心!并且让每个核心逻辑上分离,就可以同时运行八
个程序了。
虽然很多研究与测试中,大多发现 HT 虽然可以提升性能,不
过,有些情况下却可能导致性能降低喔!因为,实际上明明就仅有一个
运算单元嘛! 不过在鸟哥使用数值模式的情况下,因为鸟哥操作的数
值模式主要为平行运算功能,且运算通常无法达到 100% 的 CPU 使用
率,通常仅有大约60%运算量而已。 因此在鸟哥的实作过程中,这个
HT 确实提升相当多的性能!至少应该可以节省鸟哥大约30%~50%的等
待时间喔!不过网络上大家的研究中, 大多说这个是 case by case,而
且使用的软件影响很大!所以,在鸟哥的例子是启用 HT 帮助很大!您
的案例就得要自行研究啰!0.2.2 内存
如同图0.2.2、华硕主板示意图中的右上方部分的那四根插槽,那
就是内存的插槽了。 内存插槽中间通常有个突起物将整个插槽稍微切
分成为两个不等长的距离, 这样的设计可以让使用者在安装内存时,不至于前后脚位安插错误,是一种防呆的设计喔。
前面提到CPU所使用的数据都是来自于内存(main memory),不
论是软件程序还是数据,都必须要读入内存后CPU才能利用。 个人电脑
的内存主要元件为动态随机存取内存(Dynamic Random Access
Memory, DRAM), 随机存取内存只有在通电时才能记录与使用,断电
后数据就消失了。因此我们也称这种RAM为挥发性内存。
DRAM根据技术的更新又分好几代,而使用上较广泛的有所谓的
SDRAM与DDR SDRAM两种。 这两种内存的差别除了在于脚位与工作
电压上的不同之外,DDR是所谓的双倍数据传送速度(Double Data
Rate), 他可以在一次工作周期中进行两次数据的传送,感觉上就好像
是CPU的倍频啦! 所以传输频率方面比SDRAM还要好。新一代的PC大
多使用DDR内存了。 下表列出SDRAM与DDR SDRAM的型号与频率及
带宽之间的关系。[11]
SDRAMDDR 型号 数据宽度
(bit)
内部频率
(MHz)
频率
速度
带宽(频率x宽
度)
SDRAM PC100 64 100 100 800MBytessec
SDRAM PC133 64 133 133 1064MBytessec
DDR DDR-
266
64 133 266 2.1GBytessec
DDR DDR-
400
64 200 400 3.2GBytessec
DDR DDR2-
800
64 200 800 6.4GBytessecTips
DDR DDR3-
1600
64 200 1600 12.8GBytessec
DDR SDRAM又依据技术的发展,有DDR, DDR2, DDR3, DDR4等
等,其中,DDR2 的频率倍数则是 4 倍而DDR3 则是 8 倍喔! 目前鸟哥
用到服务器等级的内存,已经到 DDR4 了耶!超快超快!
在图 0.2.1 中,内存的规格内提到 DDR3DDR3L 同时支
持,我们知道 DDR3 了,那 DDR3L 是啥鬼? 为了节省
更多的电力,新的制程中降低了内存的操作电压,因此 DDR3 标
准电压为 1.5V,但 DDR3L 则仅须 1.35V 喔!通常可以用在耗电
量需求更低的笔记本中! 但并非所有的系统都同步支持!这就
得要看主板的支持规格啰!否则你买了 DDR3L 安插在不支持的主板上,DDR3L 内存是
可能会烧毁的喔!
内存除了频率带宽与型号需要考虑之外,内存的容量也是很重要
的喔! 因为所有的数据都得要载入内存当中才能够被CPU判读,如果内
存容量不够大的话将会导致某些大容量数据无法被完整的载入, 此时
已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用
内存容量大于该数据,那份新数据才能够被载入呢! 所以,通常越大
的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的
数据。 以服务器来说,内存的容量有时比CPU的速度还要来的重要的!
多通道设计
由于所有的数据都必须要存放在内存,所以内存的数据宽度当然
是越大越好。 但传统的总线宽度一般大约仅达64位,为了要加大这个
宽度,因此芯片组厂商就将两个内存汇整在一起, 如果一支内存可达
64位,两支内存就可以达到128位了,这就是双通道的设计理念。
如上所述,要启用双通道的功能你必须要安插两支(或四支)内
存,这两支内存最好连型号都一模一样比较好, 这是因为启动双通道Tips
内存功能时,数据是同步写入读出这一对内存中,如此才能够提升整
体的带宽啊! 所以当然除了容量大小要一致之外,型号也最好相同
啦!
你有没有发现图 0.2.2、华硕主板示意图上那四根内存插槽的颜色
呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了
吗?是啦!这种颜色的设计就是为了双通道来的!要启动双通道的功能
时, 你必须要将两根容量相同的内存插在相同颜色的插槽当中喔!
服务器所需要的速度更快!因此,除了双通道之外,中
阶服务器也经常提供三信道,甚至四信道的内存环境!
例如 2014 年推出的服务器用 E5-2650 v3 的 Intel CPU 中,它可
以接受的最大信道数就是四信道且为 DDR4 喔!
DRAM与SRAM
除了内存条之外,事实上整部个人电脑当中还有许许多多的内存
存在喔!最为我们所知的就是CPU内的第二层高速缓存内存。 我们现在
知道CPU的数据都是由内存提供,但CPU到内存之间还是得要通过内存
控制器啊! 如果某些很常用的程序或数据可以放置到CPU内部的话,那
么CPU数据的读取就不需要跑到内存重新读取了! 这对于性能来说不就
可以大大的提升了?这就是第二层高速缓存的设计概念。第二层高速缓
存与内存及CPU的关系如下图所示:
图0.2.3、内存相关性因为第二层高速缓存(L2 cache)整合到CPU内部,因此这个L2内
存的速度必须要CPU频率相同。 使用DRAM是无法达到这个频率速度
的,此时就需要静态随机存取内存(Static Random Access Memory,SRAM)的帮忙了。 SRAM在设计上使用的电晶体数量较多,价格较
高,且不易做成大容量,不过由于其速度快, 因此整合到CPU内成为高
速缓存内存以加快数据的存取是个不错的方式喔!新一代的CPU都有内
置容量不等的L2高速缓存在CPU内部, 以加快CPU的运行性能。
只读存储器(ROM)
主板上面的元件是非常多的,而每个元件的参数又具有可调整
性。举例来说,CPU与内存的频率是可调整的; 而主板上面如果有内置
的网卡或者是显卡时,该功能是否要启动与该功能的各项参数, 是被
记录到主板上头的一个称为CMOS的芯片上,这个芯片需要借着额外的
电源来发挥记录功能, 这也是为什么你的主板上面会有一颗电池的缘
故。
那CMOS内的数据如何读取与更新呢?还记得你的电脑在开机的
时候可以按下[Del]按键来进入一个名为BIOS的画面吧? BIOS(Basic
Input Output System)是一套程序,这套程序是写死到主板上面的一个
内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那
就是只读存储器(Read Only Memory, ROM)。 ROM是一种非挥发性
的内存。另外,BIOS对于个人电脑来说是非常重要的, 因为他是系统
在开机的时候首先会去读取的一个小程序喔!
另外,固件(firmware)[12]
很多也是使用ROM来进行软件的写入
的。 固件像软件一样也是一个被电脑所执行的程序,然而他是对于硬
件内部而言更加重要的部分。例如BIOS就是一个固件, BIOS虽然对于
我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各
项硬件参数的取得! 所以我们会知道很多的硬件上头都会有ROM来写
入固件这个软件。Tips
BIOS 对电脑系统来讲是非常重要的,因为他掌握了系统硬件的详
细信息与开机设备的选择等等。但是电脑发展的速度太快了, 因此
BIOS 程序码也可能需要作适度的修改才行,所以你才会在很多主板官
网找到 BIOS 的更新程序啊!但是 BIOS 原本使用的是无法改写的 ROM
,因此根本无法修正 BIOS 程序码!为此,现在的 BIOS 通常是写入类
似闪存 (flash) 或 EEPROM
[13]
中。[14]
很多硬件上面都会有固件喔!例如鸟哥常用的磁盘阵列
卡、 10G 的网卡、交换器设备等等!你可以简单的这么
想!固件就是绑在硬件上面的控制软件!0.2.3 显卡
显卡插槽如同图 0.2.2、华硕主板示意图所示,在中左方有个 PCIe
3.0 的项目, 这张主板中提供了两个显卡插槽喔!
显卡又称为VGA(Video Graphics Array),他对于图形影像的显
示扮演相当关键的角色。 一般对于图形影像的显示重点在于分辨率与
色彩深度,因为每个图像显示的颜色会占用掉内存, 因此显卡上面会
有一个内存的容量,这个显存容量将会影响到你的屏幕分辨率与色彩深
度的喔!
除了显存之外,现在由于三度空间游戏(3D game)与一些3D动
画的流行,因此显卡的“运算能力”越来越重要。 一些3D的运算早期是
交给CPU去运行的,但是CPU并非完全针对这些3D来进行设计的,而且
CPU平时已经非常忙碌了呢! 所以后来显卡厂商直接在显卡上面嵌入一
个3D加速的芯片,这就是所谓的GPU称谓的由来。
显卡主要也是通过CPU的控制芯片来与CPU、内存等沟通。如前
面提到的,对于图形影像(尤其是3D游戏)来说, 显卡也是需要高速
运算的一个元件,所以数据的传输也是越快越好!因此显卡的规格由早
期的PCI导向AGP, 近期AGP又被PCI-Express规格所取代了。如前面华
硕主板图示当中看到的就是PCI-Express的插槽。 这些插槽最大的差异
就是在数据传输的带宽了!如下所示:
规格 宽度 速度 带宽
PCI 32 bits 33 MHz 133 MBytess
PCI 2.2 64 bits 66 MHz 533 MBytess
PCI-X 64 bits 133 MHz 1064 MBytess
AGP 4x 32 bits 66x4 MHz 1066 MBytess
AGP 8x 32 bits 66x8 MHz 2133 MBytessPCIe 1.0 x1 无 无 250 MBytess
PCIe 1.0 x8 无 无 2 GBytess
PCIe 1.0 x16 无 无 4 GBytess
比较特殊的是,PCIe(PCI-Express)使用的是类似管线的概念来
处理,在 PCIe 第一版 (PCIe 1.0) 中,每条管线可以具有250MBytess
的带宽性能, 管线越多(通常设计到 x16 管线)则总带宽越高!另
外,为了提升更多的带宽,因此 PCIe 还有进阶版本,目前主要的版本
为第三版,相关的带宽如下:[15]
规格 1x带宽 16x带宽
PCIe 1.0 250MBytes 4GBytes
PCIe 2.0 500MBytes 8GBytes
PCIe 3.0 ~1GBytes ~16GBytes
PCIe 4.0 ~2GBytes ~32GBytes
若以图0.2.2的主板为例,它使用的是 PCIe 3.0 的 16x,因此最大
带宽就可以到达接近 32GBytess 的传输量! 比起AGP是快很多的!好
可怕的传输量....
如果你的主机是用来打3D游戏的,那么显卡的选购是非常重要
喔!如果你的主机是用来做为网络服务器的, 那么简单的入门级显卡
对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形影
像功能。
例题:
假设你的桌面使用1024x768分辨率,且使用全彩(每个像素占用
3Bytes的容量),请问你的显卡至少需要多少内存才能使用这样的彩
度?
答:因为1024x768分辨率中会有786432个像素,每个像素占用3Bytes,所
以总共需要2.25MBytes以上才行! 但如果考虑屏幕的更新率(每秒钟
屏幕的更新次数),显卡的内存还是越大越好!
除了显卡与主板的连接接口需要知道外,那么显卡是通过什么格
式与电脑屏幕 (或电视) 连接的呢?目前主要的连接接口有:
D-Sub (VGA端子):为较早之前的连接接口,主要为 15 针的连
接,为模拟讯号的传输,当初设计是针对传统图像管屏幕而来。
主要的规格有标准的 640x350px @70Hz、1280x1024px @85Hz 及
2048x1536px @85Hz 等。
DVI:共有四种以上的接头,不过台湾市面上比较常见的为仅提供
数码讯号的 DVI-D,以及整合数码与模拟讯号的 DVI-I 两种。DVI
常见于液晶屏幕的链接, 标准规格主要有: 1920x1200px
@60Hz、 2560x1600px @60Hz 等。
HDMI:相对于 D-sub 与 DVI 仅能传送影像数据,HDMI 可以同时
传送影像与声音,因此被广泛的使用于电视屏幕中!电脑屏幕目前
也经常都有支持 HDMI 格式!
Display port:与 HDMI 相似的,可以同时传输声音与影像。不过这
种接口目前在台湾还是比较少屏幕的支持!0.2.4 硬盘与储存设备
电脑总是需要记录与读取数据的,而这些数据当然不可能每次都
由使用者经过键盘来打字!所以就需要有储存设备咯。 电脑系统上面
的储存设备包括有:硬盘、软盘、MO、CD、DVD、磁带机、U盘(闪
存)、还有新一代的蓝光光驱等, 乃至于大型机器的区域网络储存设
备(SAN, NAS)等等,都是可以用来储存数据的。而其中最常见的应
该就是硬盘了吧!
硬盘的物理组成
大家应该都看过硬盘吧!硬盘依据台式机与笔记本电脑而有分为
3.5英寸及2.5英寸的大小。我们以3.5英寸的台式机使用硬盘来说明。 在
硬盘盒里面其实是由许许多多的圆形盘片、机械手臂、 磁头与主轴马
达所组成的,整个内部如同下图所示:
图0.2.4、硬盘物理构造(图片取自维基百科)
实际的数据都是写在具有磁性物质的盘片上头,而读写主要是通
过在机械手臂上的磁头(head)来达成。 实际运行时, 主轴马达让盘
片转动,然后机械手臂可伸展让磁头在盘片上头进行读写的动作。 另
外,由于单一盘片的容量有限,因此有的硬盘内部会有两个以上的盘片
喔!盘片上的数据
既然数据都是写入盘片上头,那么盘片上头的数据又是如何写入
的呢?其实盘片上头的数据有点像下面的图示所示:
图0.2.5、盘片上的数据格式(图片取自维基百科)
由于盘片是圆的,并且通过机器手臂去读写数据,盘片要转动才
能够让机器手臂读写。因此,通常数据写入当然就是以圆圈转圈的方式
读写啰! 所以,当初设计就是在类似盘片同心圆上面切出一个一个的
小区块,这些小区块整合成一个圆形,让机器手臂上的磁头去存取。
这个小区块就是磁盘的最小物理储存单位,称之为扇区 (sector),那
同一个同心圆的扇区组合成的圆就是所谓的磁道(track)。 由于磁盘
里面可能会有多个盘片,因此在所有盘片上面的同一个磁道可以组合成
所谓的柱面 (cylinder)。
我们知道同心圆外圈的圆比较大,占用的面积比内圈多啊!所以,为了善用这些空间,因此外围的圆会具有更多的扇区[16]! 就如同
图 0.2.5 的示意一般。此外,当盘片转一圈时,外圈的扇区数量比较
多,因此如果数据写入在外圈,转一圈能够读写的数据量当然比内圈还
要多! 因此通常数据的读写会由外圈开始往内写的喔!这是默认值
啊!
另外,原本硬盘的扇区都是设计成 512Byte 的容量,但因为近期
以来硬盘的容量越来越大,为了减少数据量的拆解,所以新的大容量硬
盘已经有 4KByte 的扇区设计! 购买的时候也需要注意一下。也因为这
个扇区的设计不同了,因此在磁盘的分区方面,目前有旧式的 MSDOS
相容模式,以及较新的 GPT 模式喔! 在较新的 GPT 模式下,磁盘的分
区通常使用扇区号码来设计,跟过去旧的 MSDOS 是通过柱面号码来分
区的情况不同喔!相关的说明我们谈到磁盘管理 (第七章) 再来聊!
传输接口
为了要提升磁盘的传输速度,磁盘与主板的连接接口也经过多次
的改版,因此有许多不同的接口喔!传统磁盘接口包括有 SATA, SAS,IDE 与 SCSI 等等。 若考虑外接式磁盘,那就还包括了 USB, eSATA 等
等接口喔!不过目前 IDE 已经被 SATA 取代,而 SCSI 则被 SAS 取
代,因此我们下面将仅介绍 SATA, USB 与 SAS 接口而已。
SATA接口
如同华硕主板图示右下方所示为SATA硬盘的连接接口插槽。
这种插槽所使用的排线比较窄小, 而且每个设备需要使用掉一条
SATA线。因为SATA线比较窄小之故,所以对于安装与机箱内的通
风都比较好!因此原本的IDE粗排线接口就被SATA取代了! SATA
的插槽示意图如下所示:图0.2.6、SATA 接口的排线 (图示取自 Seagate 网站)
由于SATA一条排线仅接一颗硬盘,所以你不需要调整跳针。
不过一张主板上面SATA插槽的数量并不是固定的, 且每个插槽都
有编号,在连接SATA硬盘与主板的时候,还是需要留意一下。此
外,目前的 SATA 版本已经到了第三代
[17]
, 每一代之间的传输速
度如下所示,而且重点是,每一代都可以向下相容喔!只是速度上
会差很多就是了。目前主流都是使用 SATA3 这个接口速度可达
600MBytes 的接口!
版本 带宽 (Gbits) 速度 (MBytes)
SATA 1.0 1.5 150
SATA 2.0 3 300
SATA 3.0 6 600
因为 SATA 传输接口传输时,通过的数据演算法的关系,当传
输 10 位编码时,仅有 8 位为数据,其余 2 位为检验之用。因此带宽
的计算上面, 使用的换算 (bit 转 Byte) 为 1:10 而不是 1Byte=8bits
喔!上表的对应要稍微注意一下。另外,虽然这个 SATA3 接口理论
上可达 600MBytess 的传输速度, 不过目前传统的硬盘由于其物理
组成的限制,一般极限速度大约在 150~200MBytes 而已啦!所以厂商们才要发展固态硬盘啊! ^_^
SAS接口
早期工作站或大型大脑上面,为了读写速度与稳定性,因此在
这样的机器上面,大多使用的是 SCSI 这种高阶的连接接口。 不过
这种接口的速度后来被 SATA 打败了!但是 SCSI 有其值得开发的
功能,因此后来就有串行式 SCSI (Serial Attached SCSI, SAS) 的
发展。这种接口的速度比 SATA 来的快,而且连接的 SAS 硬盘的盘
片转速与传输的速度也都比 SATA 硬盘好! 只是...好贵喔!而且一
般个人电脑的主板上面通常没有内置 SAS 连接接口,得要通过外接
卡才能够支持。因此一般个人电脑主机还是以 SATA 接口为主要的
磁盘连接接口啰。
版本 带宽 (Gbits) 速度 (MBytes)
SAS 1 3 300
SAS 2 6 600
SAS 3 12 1200
因为这种接口的速度确实比较快喔!而且还支持例如热拔插等
功能,因此,许多的设备连接会以这种接口来链接! 例如我们经常
会听到的磁盘阵列卡的连接插槽,就是利用这种 SAS 接口开发出来
的支持的 SFF-8087 设备等等的
[18]。
USB接口
如果你的磁盘是外接式的接口,那么很可能跟主板链接的就是
USB 这种接口了!这也是目前 (2015) 最常见到的外接式磁盘接口
了。 不过传统的 USB 速度挺慢的,即使是比较慢的传统硬盘,其传
输率大概兜还有 80~120MBytess ,但传统的 USB 2.0 仅有大约
60MBytess 的理论传输率, 通常实做在主板上面的连接口,竟然都仅有 30~40 MBytes 而已呢!实在发挥不出磁盘的性能啊!
为了改善 USB 的传输率,因此新一代的 USB 3.0 速度就快很
多了!据说还有更新的 USB 3.1 正在发展中!这几代版本的带宽与
速度制表如下
[19]
:
版本 带宽 (Mbits) 速度 (MBytes)
USB 1.0 12 1.5
USB 2.0 480 60
USB 3.0 5G 500
USB 3.1 10G 1000
跟 SATA 接口一样,不是理论速度到达该数值,实际上就可以
跑到这么高!USB 3.0 虽然速度很快,但如果你去市面上面买 USB
的传统磁盘或闪存盘, 其实他的读写速度还是差不多在
100MBytess 而已啦!不过这样就超级快了!因为一般 USB2.0 的闪
存盘读写速度大约是 40MBytes10MBytes 左右而已说。 在购买这方
面的外接式磁盘时,要特别考虑喔!
固态硬盘 (Solid State Disk, SSD)
传统硬盘有个很致命的问题,就是需要驱动马达去转动盘片~这
会造成很严重的磁盘读取延迟!想想看,你得要知道数据在哪个扇区上
面,然后再命令马达开始转, 之后再让磁头去读取正确的数据。另
外,如果数据放置的比较离散(扇区分佈比较广又不连续),那么读写
的速度就会延迟更明显!速度快不起来。因此, 后来就有厂商拿闪存
去制作成大容量的设备,这些设备的连接接口也是通过 SATA 或 SAS,而且外型还做的跟传统磁盘一样!所以, 虽然这类的设备已经不能称
为是磁盘 (因为没有磁头与盘片啊!都是内存!)。但是为了方便大
家称呼,所以还是称为磁盘!只是跟传统磁盘 (Hard Disk Drive,HDD) 不同, 就称为固态硬盘 (Solid State Disk 或 Solid State Driver,Tips
SSD)。
固态硬盘最大的好处是,它没有马达不需要转动,而是通过内存
直接读写的特性,因此除了没数据延迟且快速之外,还很省电! 不过
早期的 SSD 有个很重要的致命伤,就是这些闪存有“写入次数的限
制”,因此通常 SSD 的寿命大概两年就顶天了!所以数据存放时, 需要
考虑到备份或者是可能要使用 RAID 的机制来防止 SSD 的损毁[20]!
SSD 真的好快!鸟哥曾经买过 Intel 较顶级的 SSD 来做
过服务器的读取系统盘,然后使用类似 dd 的指令去看看
读写的速度,竟然真的如同 intel 自己官网说的, 极速可以到达
500MBytess 哩!几乎就是 SATA3.0 的理论极限速度了!所以,近来在需要大量读取的环境中,鸟哥都是使用 SSD 阵列来处
理!
其实我们在读写磁盘时,通常没有连续读写,大部分的情况下都
是读写一大堆小文件,因此,你不要妄想传统磁盘一直转很少圈就可以
读到所有的数据! 通常很多小文件的读写,会很耗硬盘,因为盘片要
转好多圈!这也很花人类的时间啊!SSD 就没有这个问题!也因为如
此,近年来在测试磁盘的性能时, 有个很特殊的单位,称为每秒读写
操作次数 (InputOutput Operations Per Second, IOPS)!这个数值越
大,代表可操作次数较高,当然性能好的很!
选购与运行须知
如果你想要增加一颗硬盘在你的主机里头时,除了需要考虑你的
主板可接受的插槽接口(SATASAS)之外,还有什么要注意的呢?
HDD 或 SSD
毕竟 HDD 与 SSD 的价格与容量真的差很多!不过,速度也差很多
就是了!因此,目前大家的使用方式大多是这样的,使用 SSD 作为系统盘, 然后数据储存大多放置在 HDD 上面!这样系统运行快
速 (SSD),而数据储存量也大 (HDD)。
容量
毕竟目前数据量越来越大,所以购买磁盘通常首先要考虑的就是容
量的问题!目前(2015)主流市场HDD容量已经到达 2TB以上,甚至有的厂商已经生产高达 8TB 的产品呢!硬盘可能可以算是一
种消耗品,要注意重要数据还是得常常备份出来喔! 至于 SSD 方
面,目前的容量大概还是在 128~256GB 之间吧!
缓冲内存
硬盘上头含有一个缓冲内存,这个内存主要可以将硬盘内常使用的
数据高速缓存起来,以加速系统的读取性能。 通常这个缓冲内存
越大越好,因为缓冲内存的速度要比数据从硬盘盘中被找出来要快
的多了! 目前主流的产品可达64MB左右的内存大小喔。
转速
因为硬盘主要是利用主轴马达转动盘片来存取,因此转速的快慢会
影响到性能。 主流的台式机硬盘为每分钟7200转,笔记本电脑则
是5400转。有的厂商也有推出高达10000转的硬盘, 若有高性能的
数据存取需求,可以考虑购买高转速硬盘。
运行须知
由于硬盘内部机械手臂上的磁头与硬盘盘的接触是很细微的空间,如果有抖动或者是脏污在磁头与硬盘盘之间就会造成数据的损毁或
者是实体硬盘整个损毁~ 因此,正确的使用电脑的方式,应该是
在电脑通电之后,就绝对不要移动主机,并免抖动到硬盘, 而导
致整个硬盘数据发生问题啊!另外,也不要随便将插头拔掉就以为
是顺利关机!因为机械手臂必须要归回原位, 所以使用操作系统
的正常关机方式,才能够有比较好的硬盘保养啊!因为他会让硬盘Tips
的机械手臂归回原位啊!
可能因为环境的关系,电脑内部的风扇常常会卡灰尘而
造成一些声响。很多朋友只要听到这种声响都是二话不
说的 “用力拍几下机箱”就没有声音了~现在你知道了,这么做的
后果常常就是你的硬盘容易坏掉! 下次千万不要再这样做啰!0.2.5 扩展卡与接口
你的服务器可能因为某些特殊的需求,因此需要使用主板之外 ......
您现在查看是摘要介绍页, 详见PDF附件(27941KB,1772页)。





