BIOS和CMOS
名词解释
BIOS
"Basic Input Output System"
BIOS是个人电脑启动时加载的第一个软件。
它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。
BIOS是一组固化到计算机内主板上、一个ROM芯片上的程序,那么ROM是什么?
ROM
Read Only Memory,只读存储器
ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如果发现资料有任何错误,则只有舍弃不用。
经过发展,ROM出现了更高级的形式,从而实现了BIOS的可升级
EPROM
EPROM(Erasable Programmable ROM,可擦除可编程ROM)
可重复擦除和写入,解决了ROM芯片只能写入一次的弊端。
在其正面的陶瓷封装上,开有一个玻璃窗口,透过该窗口,可以看到其内部的集成电路,紫外线透过该孔照射内部芯片就可以擦除其内的数据,完成芯片擦除的操作要用到EPROM擦除器。EPROM内资料的写入要用专用的编程器,并且往芯片中写内容时必须要加一定的编程电压(VPP=12—24V,随不同的芯片型号而定)。
EEPROM
Electrically Erasable Programmable ROM,电可擦除可编程ROM)
通过跳线开关和系统配带的驱动程序盘,可以对EEPROM进行重写,方便地实现BIOS升级。
BIOS程序
中主要包含:
- 自诊断程序:通过读取CMOS RAM中的内容识别硬件配置,并对其进行自检和初始化;
- CMOS设置程序:引导过程中,用特殊热键启动,进行设置后,存入CMOS RAM中;
- 系统自举装载程序:在自检成功后将磁盘相对0道0扇区上的引导程序装入内存,让其运行以装入DOS系统;
- 主要I/O设备的驱动程序和中断服务:由于BIOS直接和系统硬件资源打交道,因此总是针对某一类型的硬件系统,而各种硬件系统又各有不同,所以存在各种不同种类的BIOS,随着硬件技术的发展,同一种BIOS也先后出现了不同的版本,新版本的BIOS比起老版本来说,功能更强。
那么什么是CMOS?
CMOS
Complementary Metal Oxide Semiconductor CMOS
(本意是指互补金属氧化物半导体——一种大规模应用于集成电路芯片制造的原料)CMOS RAM是电脑主板上的一块可读写的RAM芯片,用它来保护当前系统的硬件配置和用户对某些参数的设定。现在的厂商把BIOS程序做到了CMOS芯片中,当开机时就可按特定键进入CMOS设置程序对系统进行设置。所以又被人们叫做BIOS设置。
RAM
随机存取存储器(random access memory,RAM)又称作“随机存储器”
是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
关系总结
- BIOS是软件、一组程序; CMOS是芯片、硬件; 通过BIOS程序,可以设置CMOS里的参数; 厂商把BIOS程序做到了CMOS芯片中,当开机时就可按特定键进入CMOS设置程序对系统进行设置。所以CMOS设置又被人们叫做BIOS设置。
- CMOS是一块芯片,在主板上,保存着重要的开机参数,会用CMOS纽扣电池来维持电量; CMOS里存放参数,通过程序把设置好的参数写入CMOS去设置它;
由于CMOS与BIOS都跟电脑系统设置密切相关,所以才有CMOS设置和BIOS设置的说法。也正因此,初学者常将二者混淆。
CMOS RAM是系统参数存放的地方,而BIOS中系统设置程序是完成参数设置的手段。因此,准确的说法应是通过BIOS设置程序对CMOS参数进行设置。而我们平常所说的CMOS设置和BIOS设置是其简化说法,也就在一定程度上造成了两个概念的混淆。
UEFI和Legacy
名词解释
uefi和legacy是两种不同的引导方式。
uefi是新式的BIOS,legacy是传统BIOS。
在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。uefi只支持64为系统且磁盘分区必须为gpt模式,传统BIOS使用Int 13中断读取磁盘,每次只能读64KB,非常低效,而UEFI每次可以读1MB,载入更快。此外,Win8,更是进一步优化了UEFI支持,号称可以实现瞬时开机。
GPT分区一般搭配UEFI引导方式
MBR分区一般搭配Legacy引导方式
UEFI
统一的可扩展固件接口(Unified Extensible Firmware Interface,UEFI)
可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是有近20多年历史的 BIOS 的继任者。
UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织。
不管是UEFI还是Legacy,他们都是BIOS,BIOS就是固件。
固件
固件(Firmware)就是写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。
BIOS就是固件。
固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。
固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
区别总结
与legacy BIOS 相比,UEFI最大的几个区别在于:
- BIOS用的是8086汇编,UEFI99%以上用C,UEFI的APP和Drives可以用C/C++;
- 64位的UEFI固件是64位的操作系统(少数二合一平板用32位UEFI固件的可以忽略不计),BIOS是16位的。
- 一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式;
- 将不支持X86实模式,而直接采用Flat mode(也就是不能用DOS了,现在有些 EFI 或 UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了);
- 输出也不再是单纯的二进制code,改为Removable Binary Drivers;
- OS启动不再是调用Int19,而是直接利用protocol/device Path;
- 对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到ROM的大小限制,而后者就便利多了。
- 弥补BIOS对新硬件的支持不足的问题。
MBR和GPT
名词解释
分区方式通常有两种:MBR分区方案,GPT分区方案
在解释MBR和GPT之前,需要先了解硬盘相关的观念。
硬盘
硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。一个盘片可以有两个盘面。
扇区
盘面被分成许多扇形的区域,每个区域叫一个扇区 (sector)
磁道
盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道(track) ,磁道由扇区组成。
(柱面)磁柱
扇区、磁道示意图.jpg硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,(即柱面是一个立体概念,磁道是一个平面概念,同一个盘面上的,柱面大小是所有盘面相同半径的磁道大小总和),称之为磁盘的柱面 (cylinder) 。
每个盘面都有自己的磁头。
这张图只能看见扇区和磁道,柱面的俯视图可以就看做这张图的磁道
通常数据的读写会由外圈开始往内写。
原本硬盘的扇区都是设计成 512byte 的容量,但因为近期以来硬盘的容量越来越大,为了减少数据量的拆解,所以新的高容量硬盘已经有 4Kbyte 的扇区设计。
也因为这个扇区的设计不同了,因此在磁盘的分区方面,目前有旧式的 MBR模式,以及较新的 GPT 模式! 在较新的 GPT 模式下,磁盘的分区通常使用扇区号码来设计,跟过去旧的MBR是透过磁柱号码来分区的情况不同!
对于MBR分区方案来说:
MBR
MBR(Master Boot Record),即硬盘的主引导记录。是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
为了便于理解,一般将MBR分为广义和狭义两种:
广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;
狭义的MBR仅指引导程序而言。通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。
主引导扇区由三部分组成:
- 主引导程序即主引导记录(MBR)(占446个字节)
- 磁盘分区表项(DPT,Disk Partition Table),由四个分区表项构成(每个16个字节)。
- 结束标志(占2个字节)。值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。
分区说明
MBR下的硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。
主分区
也称为主磁盘分区,是一种分区类型。主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的,逻辑分区则必须建立于扩展分区中)。
一个硬盘的主分区包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则硬盘必须有一个主分区。
最多只能有4个主分区。
扩展分区
所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。
一个硬盘可以没有扩展分区,最多一个扩展分区。
但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。
逻辑分区
逻辑分区是硬盘上一块连续的区域。
逻辑分区和扩展分区的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。
磁盘分区表项(DPT,Disk Partition Table),由四个分区表项构成(每个16个字节),因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。
分区总结:
- 其实『分区』就是针对DPT表进行设定,设定共有多少个分区,每个分区的启始与结束位置
- 硬盘默认的分区表仅能写入四组分区信息
- 这四组分区信息我们称为主分区(Primary)或扩展(Extended)分区
- 分区的最小单位『通常』为柱面(cylinder)
- 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理
图为硬盘顺着直径切下的横截面,左侧为硬盘外圈,右侧为硬盘内圈,横坐标看做硬盘半径,纵坐标看做不同盘片堆叠成的柱面。
MBR中记录着四个分区的数据,P代表主分区,一共四个主分区。
既然DPT只能记录四笔数据, 那可否利用额外的扇区来记录更多的分区信息?
磁盘分区-扩展分区.png硬盘的四个分区记录区仅使用到两个, P1 为主分区,而 P2 为扩展分区。请注意, 扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。 然后我们可以透过扩展分区所指向的那个区块继续作分区的记录。
扩展分区继续分区出五个分区, 这五个由扩展分区继续切出来的分区,就被称为逻辑分区(logical partition)。
上述的分区在 Linux 系统中的装置文件名分别如下:
- P1:/dev/sda1
- P2:/dev/sda2
- L1:/dev/sda5
- L2:/dev/sda6
- L3:/dev/sda7
- L4:/dev/sda8
- L5:/dev/sda9
在过去 MBR 分区表的限制中经常可以发现如下的问题:
- 操作系统无法抓取到 2.2T 以上的磁盘容量!
- MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
- MBR 内的存放开机管理程序的区块仅 446bytes,无法容纳较多的程序代码。
然后接下来看下例题:
在 Windows 操作系统当中,如果你想要将 D盘 与 E 盘整合成为一个新的分区,而如果有两种分区的情况如下图所示, 图中的特殊颜色区块为 D 盘与 E 盘的示意,请问这两种方式是否均可将 D盘 与 E盘 整合成为一个新的分区?
分区例题.png- 上图可以整合:因为上图的 D盘与 E盘 同属于扩展分区内的逻辑分区,因此只要将两个分区删除,然后再重新建立一个新的分区, 就能够在不影响其他分区槽的情况下,将两个分区的容量整合成为一个。
- 下图不可整合:因为 D 与 E 分属主分区与逻辑分区,两者不能够整合在一起。除非将扩展分区破坏掉后再重新分区。 但如此一来会影响到所有的逻辑分区,要注意的是: 如果扩展分区被破坏,所有逻辑分区将会被删除。 因为逻辑分区的信息都记录在扩展分区里面!
读取流程
-
BIOS 加电自检 ( Power On Self Test -- POST )。
BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
-
读取主引导记录(MBR)。
当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
-
检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示“NO ROM BASIC”然后死机。
-
当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。
启动设备的MBR将自己复制到0000:0600H处,然后继续执行。
-
根据MBR中的引导代码启动引导程序。
事实上,BIOS不仅检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,往往还对磁盘是否有写保护、主引导扇区中是否存在活动分区等进行检查。如果发现磁盘有写保护,则显示磁盘写保护出错信息;如果发现磁盘中不存在活动分区,则显示类似如下的信息“Remove disk or other media Press any key to restart”。
GPT
GPT (GUID partition table GUID分区表)
GUID (GUID,Globally Unique Identifier 全局唯一标识符)
GPT分区方案使用GUID分区表,是源自EFI标准的一种较新的磁盘分区表结构的标准。与普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。
它具有如下优点:
- 支持2TB以上的大硬盘。
- 分区大小几乎没有限制。因为它用64位的整数表示扇区号。夸张一点说,一个64位整数能代表的分区大小已经是个“天文数字”了,若干年内你都无法见到这样大小的硬盘,更不用说分区了。
- 分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表。其中一份被破坏后,可以通过另一份恢复。
- 每个分区可以有一个名称(不同于卷标)。
以前的扇区只有512个字节大小,只有64个字节用来记录分区信息,所以MBR不支持容量大于2TB的分区(DPT记录不下),一些硬盘制造商(诸如希捷和西部数据)注意到了这个局限性,并且将他们的容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了16 TB。
这个看似“正确的”解决方案,在临时地降低了人们对改进磁盘分配表的需求的同时,也给市场带来了关于在有较大的块(block)的设备上从BIOS启动时,如何最佳的划分磁盘分区的困惑。
所以GPT分区方案产生了。
了解GPT之前就需要先了解什么是LBA。
LBA
逻辑区块地址(Logical Block Address, LBA)是描述电脑存储设备上数据所在区块的通用机制
为了兼容大容量的磁盘,在扇区的定义上面, GPT大多会使用逻辑区块地址来处理。而第一个 LBA 称为 LBA0 (从0 开始编号)。
与 MBR 仅使用第一个 512bytes 区块(MBR扇区)来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!
同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份。
假设扇区为512个字节,详细的结构有点像底下的模样 :
GUID分区表示意图.png-
LBA0 (MBR 兼容区块)
与 MBR 模式相似,这个兼容区块分为两个部份,一个就是跟之前 446 bytes 相似的区块, 储存了引导程序。 而在原本的DPT区内,这个兼容模式仅放入一个特殊标志,用来表示此磁盘为 GPT 格式。而不懂 GPT 分区表的引导程序(grub), 就不会认识这颗磁盘,除非用户有特别方式要处理这颗磁盘,否则该引导程序不能修改此分区信息,进一步保护了此磁盘! -
LBA1 (GPT 表头纪录)
分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。
在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个分区项其中每个分区项都是128字节。(那么4个项为一组,一组也就是512字节,一个扇区的大小。128个分区总共占据32个LBA区块)。
LBA1 同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 33 个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以透过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运作!
-
LBA2-33 (实际记录分区信息处)
从 LBA2 区块开始, 每个 LBA 都可以纪录 4 组分区项,所以在默认的情况下,总共可以有 4*32 = 128 组分区项!因为每个 LBA 有 512bytes,因此每组分区项用到 128bytes 的空间,除了每组分区项所需要的标识符与相关的纪录之外, GPT 在每组分区项中分别提供了 64bits 来记载开始/结束的扇区号码,因此, GPT 分区表对于单一分区来说, 他的最大容量限制就会在『2 ^ 64 * 512 bytes(每个扇区大小) = 2 ^ 63 * 1Kbytes = 2 ^ 33 TB = 8 ZB 』,要注意 1ZB =230TB !
此外, GPT 分区已经没有所谓的主、延伸、逻辑分区的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分区!每一个分区都可以拿来格式化使用喔!
在磁盘管理工具上面, fdisk 这个老牌的软件并不认识 GPT 喔!要使用 GPT 的话,得要操作类似 gdisk 或者是 parted 指令才行!
另外,引导程序方面, grub 第一版并不认识 GPT !得要 grub2 以后才会认识的!
并不是所有的操作系统都可以读取到 GPT 的磁盘分区格式。同时,也不是所有的硬件都可以支持GPT 格式。是否能够读写 GPT 格式又与开机的检测程序有关,就是 BIOS 与 UEFI。
windows
对于windows的GPT分区方案来说,除了原本的分区外,还需要额外的两个分区,MSR和ESP
MSR
MSR分区(Microsoft Reserved Partition,缩写MSR)即Microsoft 保留 (MSR) 分区。
是每个 在GUID 分区表 (GPT) 上的 Windows操作系统(windows7以上)都要求的分区。系统组件可以将 MSR 分区的部分分配到新的分区以供它们使用。
MSR 分区的大小会因 GPT 磁盘的大小不同而发生变化。对于小于 16 GB 的磁盘,MSR 分区为 32 MB。对于大于 16 GB 的磁盘,MSR 分区为 128 MB。MSR 分区在“磁盘管理”中不可见,用户也无法在 MSR 分区上存储或删除数据。
对于在GPT磁盘上的Windows操作系统,MSR分区是必须保留的,不可删除(无法启动可能是由于用part1,part2…等表示的分区因为msr分区的删除而改变导致的)。而对于GPT磁盘中的其他操作系统,如linux,mac则不受影响。
ESP
EFI系统分区,即 EFI system partition,简写为 ESP。
EFI 系统分区包含BOOT LOADER引导程序来启动操作系统。操作系统存储在其他分区或者其他存储介质中。
ESP虽然 是一个 FAT16 或 FAT32 格式的物理分区,但是其分区标识是 EF (十六进制) 而非常规的 0E 或 0C。因此,该分区在 Windows 操作系统下一般是不可见的。支持 EFI 模式的电脑需要从 ESP 启动系统,EFI 固件可从 ESP 加载 EFI 启动程序和应用程序。
ESP是一个独立于操作系统之外的分区,操作系统被引导之后,就不再依赖它。这使得 ESP 非常适合用来存储那些系统级的维护性的工具和数据,比如:引导管理程序、驱动程序、系统维护工具、系统备份等
4K对齐
“4K对齐”就是符合“4K扇区”定义格式化过的硬盘,并且按照“4K 扇区”的规则写入数据。
对于有固态硬盘的设备,一般需要勾选4K对齐
为什么会有4k对齐的概念?
新标准的"4K扇区"的硬盘在厂商为了保证与操作系统兼容的前提下,将扇区模拟成512B,这时才会有4K扇区和4K簇不对齐的情况发生。所以就要用“4K对齐"的方式,将硬盘模拟扇区对齐“4k扇区”。
“4K对齐”主要是将硬盘的模拟扇区(512B)对齐到8的整数倍个“实际”4K扇区,即4096B*8=32768B,其正好跨过了63扇区的特性,从第64个扇区对齐。
什么是4k不对齐
“4K”对不齐是因为在NTFS6.x 以前的规范中,数据的写入点正好会介于在两个4K 扇区的之间,也就是说即使是写入最小量的数据,也会使用到两个4K扇区,显然这样对写入速度和读取速度都会造成很大的影响。
固态硬盘
为此对于“4K不对齐”的情况来说,一定要修改成“4K 对齐”才行,否则对于固态硬盘来说,不但会极大的降低数据写入和读取速度,还会造成固态硬盘不必要的写入次数。
linux
GPT下的linux必须有ESP分区,有些显示为EFI系统分区
ESP
EFI系统分区,即 EFI system partition,简写为 ESP。
EFI 系统分区包含BOOT LOADER引导程序来启动操作系统。操作系统存储在其他分区或者其他存储介质中。
ESP虽然 是一个 FAT16 或 FAT32 格式的物理分区,但是其分区标识是 EF (十六进制) 而非常规的 0E 或 0C。因此,该分区在 Windows 操作系统下一般是不可见的。支持 EFI 模式的电脑需要从 ESP 启动系统,EFI 固件可从 ESP 加载 EFI 启动程序和应用程序。
ESP是一个独立于操作系统之外的分区,操作系统被引导之后,就不再依赖它。这使得 ESP 非常适合用来存储那些系统级的维护性的工具和数据,比如:引导管理程序、驱动程序、系统维护工具、系统备份等
区别总结
1、GPT和MBR是不同的分区表类型:
1)MBR分区表的硬盘最多能划分4个主分区磁盘,并且MBR最大仅支持2TB的硬盘,但拥有最好的兼容性。
2)GPT分区表类型,此分区表类型不受分区个数、硬盘大小的限制,最大支最大支持18EB 大容量(EB=1024 PB,PB=1024 TB),而且GPT是一种新的硬盘分区标准
2、MBR的意思是“主引导记录”,它有自己的启动器,也就是启动代码,一旦启动代码被破坏,系统就没法启动,只有通过修复才能启动系统。但是容量方面有很大的限制。
3、GPT是一个正逐渐取代MBR的新标准,它由UEFI辅住而形成的,这样就有了UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR。磁盘驱动器容量可以大得多,大到操作系统和文件系统都没法支持。它同时还支持几乎有的64位的win0,win8,win7和Vista,以及所对应的服务器都能从GPT启动。
相关知识点运用和参考:
网友评论