本页使用了标题或全文手工转换

統一可延伸韌體介面

维基百科,自由的百科全书
跳到导航 跳到搜索
可扩展固件接口在软件层次中的位置

統一可延伸韌體介面英语:Unified Extensible Firmware Interface,缩写UEFI)是一种個人電腦系统規格,用來定義作業系統與系統固件之間的軟件界面,作為BIOS的替代方案[1]。可扩展固件接口負責加電自檢(POST)、联系作業系統以及提供連接作業系統與硬體的介面。

UEFI的前身是Intel在1998年开始開發的Intel Boot Initiative,后来被重命名为可延伸韌體介面Extensible Firmware Interface,缩写EFI)。Intel在2005年将其交由统一可扩展固件接口论坛(Unified EFI Forum)來推廣與發展,為了凸顯這一點,EFI也更名為UEFI(Unified EFI)。UEFI论坛的創始者是11家知名電腦公司,包括Intel、IBM等硬件廠商,軟件廠商Microsoft,及BIOS廠商AMI英语American MegatrendsInsydePhoenix

規格[编辑]

可延伸韌體介面(EFI)最初是由英特尔开发,于2002年12月英特尔释出其订定的版本——1.1版,之后英特尔不再有其他关于EFI的规范格式发布。有关EFI的规范,英特尔已于2005年将此规范格式交由UEFI论坛来推广与发展,后来并更改名称为Unified EFI(UEFI)。UEFI论坛于2007年1月7日释出并发放2.1版本的规格,其中较1.1版本增加与改进了加密编码(cryptography)、网络认证(network authentication)与用户接口架构(User Interface Architecture)。

相关方面的制定[编辑]

2009年5月9日,发布2.3版本。截至今日为止,2.7版是最新的公开的版本。

統一可延伸韌體介面(UEFI)的产生[编辑]

EFI開機管理員與 EFI drivers的溝通方式

众所周知,英特尔在近二十年来引领以x86系列处理器为基础的PC技术潮流,其产品如CPU芯片组等在PC生产线中占据绝对领导的位置。因此,不少人认为此舉显示英特尔公司欲染指固件产品市场的野心。事实上,EFI技术源于英特尔安腾处理器(Itanium)平台的推出。安腾处理器是英特尔瞄准服务器高端市场投入近十年研发力量设计产生的与x86系列完全不同的64位新架构。在x86系列处理器进入32位的时代,由于相容性的原因,新的处理器(80386)保留16位的运行方式(实模式),此后多次处理器的升级换代都保留这种运行方式。甚至在包含EM64T技術的至强系列处理器中,处理器加电启动时仍然会切换到16位的实模式下运行(BIOS)。英特尔将这种情况归咎于BIOS技术的发展缓慢。自从IBM PC兼容机厂商通过净室的方式复制出第一套BIOS源程序,BIOS就以16位汇编代码,寄存器参数调用方式,静态链接,以及1MB以下内存固定编址的形式存在十几年。虽然由于各大BIOS厂商近年来的努力,有许多新元素添加到产品中,如PnP BIOS、ACPI、传统USB设备支援等等,但BIOS的根本性质没有得到任何改变。这迫使英特尔在开发新的处理器时,都必须考虑加进使效能大大降低的相容模式。用一個比喻來講:这就像保时捷新一代的全自排跑车,被人套上去一个蹩脚打檔器。

然而,安腾处理器并没有这样的顾虑,它是一个新生的处理器架构,系统固件和操作系统之间的接口都可以完全重新定义。并且这一次,英特尔将其定义为一个可扩展的,标准化的固件接口规范,不同于传统BIOS的固定的,缺乏文档的,完全基于经验和晦涩约定的一个事实标准。基于EFI的第一套系统产品的出现至今已经有五年的时间,如今,英特尔试图将成功运用在高端服务器上的技术推广到市场占有率更有优势的PC产品线中,并承诺在2006年间会投入全力的技术支持。

比较統一可延伸韌體介面(UEFI)和BIOS[编辑]

二者显著的区别就是UEFI是用模块化,C语言风格的参数堆栈传递方式,动态链接的形式构建的系统,较BIOS而言更易于实现,容错和纠错特性更强,缩短了系统研发的时间。它可以執行於x86-64、IA32、IA64等架構上(在個人電腦上通常是x86-64平台),突破传统16位代码的寻址能力,达到处理器的最大寻址。它利用加载EFI驱动程序的形式,识别及操作硬件,不同于BIOS利用挂载真实模式中断的方式增加硬件功能。后者必须将一段类似于驱动程序的16位代码(如RAID卡的Option ROM)放置在固定的0x000C00000x000DFFFF之间存储区中,运行这段代码的初始化部分,它将挂载实模式下约定的中断向量向其他程序提供服务。例如,VGA图形及文本输出中断(INT 10h),磁盘存取中断服务(INT 13h)等等。由于这段存储空间有限(128KB),BIOS对于所需放置的驱动程序代码大小超过空间大小的情况无能为力。另外,BIOS的硬件服务程序都以16位代码的形式存在,这就给运行于增强模式的操作系统访问其服务造成了困难。因此BIOS提供的服务在现实中只能提供给操作系统引导程序或MS-DOS类操作系统使用。而UEFI系统下的驱动程序可以由EFI Byte Code(EBC)编写而成,EFI Byte Code是一组专用于EFI驱动程序的虚拟机器语言,必须在EFI驱动程序运行环境(Driver Execution Environment,或DXE)下被解释运行。採用EBC編寫的EFI驅動程式擁有平台無關性,打个比方说,一个带有EBC EFI驱动程序的PCIe设备,既可以将其安装于採用x64 UEFI韌體的伺服器中,也可以將其安裝到採用UEFI韌體的ARM系統中,而它的EFI驱动不需要重新编写。實際上絕大部分Intel/AMD電腦的UEFI韌體都是x64架構的。另外,由于EFI驱动程序开发简单,所有的PC部件提供商都可以参与,情形非常类似于现代操作系统的开发模式,这个开发模式曾使Windows在短短的两三年时间内成为功能强大,性能优越的操作系统。基於EFI的驅動模型可以使UEFI系統接觸到所有的硬體功能,在作業系統執行以前瀏覽全球資訊網站,實現圖形化、多語言的BIOS設定界面,或者無需執行作業系統即可線上更新BIOS等等不再是天方夜譚,甚至实现起来也非常简单。这对基于传统BIOS的系统来说是件难以实现的任务,在BIOS中添加几个简单的USB设备支持都曾使很多BIOS设计师痛苦万分,更何况除了添加对无数网络硬件的支持外,还得凭空构建一个16位模式下的TCP/IP协议栈

BIOS多使用CMOS晶片保存BIOS設定值與硬體偵測資料,CMOS保存資料需要電力供應,如果主板上的CMOS電池已沒有電量,那麼在電腦斷電後,CMOS中儲存的資料會遺失,且系統時鐘無法運作。UEFI多採用NVRAM儲存韌體設定及硬體偵測資料。

一些人认为BIOS只不过是由于兼容性问题遗留下来的无足轻重的部分,不值得为它花费太大的升级努力。而反对者认为,当BIOS的出现约制了PC技术的发展时,必须有人对它作必要的改变。

統一可延伸韌體介面(UEFI)和操作系统[编辑]

UEFI在概念上非常类似于一个低阶的操作系统,并且具有操控所有硬件资源的能力。不少人感觉它的不断发展将有可能代替现代的操作系统。事实上,EFI的缔造者们在第一版规范出台时就将EFI的能力限制于不足以威胁操作系统的统治地位。首先,它只是硬件和预启动软件间的接口规范;其次,UEFI环境下不提供中断的机制,也就是说每个EFI驱动程序必须用轮询(polling)的方式来检查硬件状态,并且需要以解释的方式运行,较操作系统下的机械码驱动效率更低;再则,UEFI系统不提供复杂的缓存器保护功能,它只具备简单的缓存器管理机制,具体来说就是指运行在x64x86处理器的64位元模式或保护模式下,以最大寻址能力为限把缓存器分为一个平坦的段(Segment),所有的程序都有权限存取任何一段位置,并不提供真实的保护服务。当UEFI所有组件加载完毕时,便會啟動作業系統啟動程式,如果UEFI韌體內建EFI Shell,也可以启动EFI Shell命令提示(部分UEFI固件内置EFI Shell),在这里,用户可以调入执行EFI应用程序,这些EFI程序可以是OEM提供的硬體診斷軟體,OEM提供的備份軟體,作業系統的啟動程式等等,也可以載入EFI分區(ESP)中的EFI驅動程式檔案(如檔案系統驅動程式)。實際上大部分OEM PC的UEFI BIOS會在UEFI開機功能表上提供執行內建診斷程式、內建還原程式的功能。EFI應用程式和EFI驅動程式可以是PE格式的.efi檔案,可用C語言編寫。在UEFI開機模式下,作業系統的啟動程式也是EFI應用程式,啟動程式的EFI檔案儲存在EFI系統分區(ESP)上。作業系統的啟動程式将控制权交给操作系统並完成作業系統核心的啟動後,絕大部分UEFI的程式將停止工作,由作業系統直接控制硬體,UEFI的少部分運行時服務如Runtime等等則继续工作,為作業系統提供系統時間等功能。

統一可延伸韌體介面(UEFI)的组成[编辑]

x64電腦平台的UEFI通常包含以下几个部分:

  1. Pre-EFI初始化模块
  2. EFI驱动程序执行环境
  3. EFI驱动程序
  4. 兼容性支持模块(CSM)
  5. EFI應用程式
  6. GUID磁盘分区表

在实现中,統一可延伸韌體介面(UEFI)初始化模块和驱动执行环境通常被集成在一个只读存储器中。Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU,晶片組及記憶體的初始化工作,紧接着载入UEFI的驱动程序执行环境(DXE)。当DXE被载入运行时,系统便具有了枚举并加载其他UEFI驱动程序的能力。在基于PCI Express架构的x64電腦系统中,系統會載入UEFI內建的驅動程式模組,完成CPU、記憶體、晶片組及主板的進一步初始化,初始化各PCIe控制器、PCIe适配器(如RAID擴充卡或顯示卡)及晶片組內建PCIe適配器(如晶片組內建的SATAUSB網卡等功能)並載入這些PCIe裝置的UEFI驅動程式(如果有的話,也有可能是載入PCIe裝置的Legacy Option ROM)。UEFI驅動程式不僅可以包含在PCIe適配器的ROM中(作為PCIe裝置的UEFI Option ROM),還可以以.EFI檔案的形式被方便的載入。在UEFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入,新结构中,磁盘的主分区数不再受限制(在MBR结构下,只能存在4个主分区),另外UEFI+GPT磁碟分割表结合还可以支持2.1 TB以上硬盘(有测试显示,3TB硬盘使用MBR磁碟分割表,并且安装Windows 64位系统,Windows只能识别到2.1TB),并且分区类型将由GUID来表示。在众多的分区类型中,EFI系统分区(ESP)可以被UEFI固件存取,可用于存放操作系统的引导程序、EFI应用程序(如OEM的備份程式和硬體診斷程式)和EFI驱动程序。EFI系統分區採用FAT檔案系統,在Windows作業系統下預設是不顯示的。UEFI韌體通過執行EFI系統分區中的啟動程式檔案(副檔名為.EFI的UEFI應用程式)啟動作業系統。CSM是在x86平台UEFI系统中的一个特殊的模块,它将为不具备UEFI引导能力的操作系统以及16位的传统Option ROM(即非EFI的Option ROM)提供类似于传统BIOS的系统服务。Secure Boot功能要求原生UEFI(即關閉CSM),因此在UEFI韌體設定中開啟CSM前,需要在UEFI韌體設定中關閉Secure Boot。

統一可延伸韌體介面(UEFI)的发展[编辑]

英特尔无疑是推广EFI的积极因素,近年来由于业界对其认识的不断深入,更多的厂商正投入这方面的研究。包括英特尔,AMD在内的一些PC生产厂家联合成立了UEFI论坛。另外各大BIOS提供商如Insyde,Phoenix,AMI等,他们原先被认为是EFI发展的阻碍力量,现在也不断的推出各自的解决方案。分析人士指出,这是由于BIOS厂商在EFI架构中重新找到了诸如Pre-EFI启动环境之类的市场位置,然而随着EFI在PC系统上的成功运用,以及英特尔新一代芯片组的推出,这一部分市场份额将会不出意料的在英特尔的掌控之中。2011年以前大部分個人電腦並不支援UEFI開機,最早採用EFI韌體的電腦之一是Apple的Intel Mac(Apple自推出Intel Mac後,所有採用Intel處理器的麥金塔電腦都使用EFI韌體,Mac的macOS系統以EFI及GPT磁碟分割表開機。Intel Mac採用Boot Camp作為CSM的實作,以支援在Mac上安裝Windows等作業系統)。隨後微星科技推出了少數支援UEFI的主板,2009年IBMDell也推出了採用UEFI韌體的伺服器,同時期HP等電腦廠商也推出了少量支援UEFI開機的高階個人電腦。部分採用EFI技術的BIOS並不支援EFI開機,尤其是許多早年的OEM PC BIOS(尤其是筆記型電腦),這些BIOS雖然採用EFI規範,但是只支援Legacy開機。從2011年的Intel Sandy Bridge平台(第二世代英特爾酷睿i系列處理器)及AMD Llano平台(初代AMD APU)開始,大多數零售主機板採用UEFI技術並支援UEFI開機,但在2011年時大部分顯示卡(包括Intel處理器的Intel HD Graphics內顯)未支援UEFI GOP規範,需要UEFI韌體的CSM才可以識別顯示卡,該時期大部分的PC主板的UEFI BIOS也不能關閉CSM。英特爾的Ivy Bridge平台(第三世代英特爾酷睿i系列處理器)進一步完善UEFI支援,比如改善Intel HD Graphics內顯的UEFI GOP支援,支援原生UEFI(即沒有CSM的UEFI),支援Secure Boot,從Ivy Bridge平台開始,大部分PC主板的UEFI BIOS可以關閉CSM(雖然UEFI BIOS提供關閉CSM的選項,但是如果顯示卡不支援UEFI GOP規範,則無法關閉CSM,或者關閉CSM後系統無法開機),隨後,微軟又要求,預裝Windows 8的電腦,必須採用UEFI開機模式,以及Secure Boot。從2014年開始,大部分零售獨立顯示卡開始逐步支援UEFI GOP及Secure Boot。

作業系統支援[编辑]

Linux內核自2000年開始,已經支援EFI啟動。早期使用ELILO作為EFI下的啟動程式。現在,GRUB的EFI版本已代替ELILO,大多數Linux發行版已使用GRUB作為UEFI下的啟動程式。從Linux版本3.15起,來自英代爾的工程師Matt Fleming將64位元核心提供了支援32位元UEFI韌體的可能,前提只需要UEFI作業系統啟動程式支援EFI handover協定[2] ,譬如流行的GRUB2。同樣流行的32位元版Linux,譬如Ubuntu 16.04.3 LTS,也可以使用這類啟動程式在64位元版UEFI韌體的機器上使用。

安騰版本的Windows 2000已於2002年加入對EFI 1.10的支持。安騰版本的Windows Server 2003Windows XP 64-Bit Edition(以IA-64架構作為執行平台)已支援EFI。

Windows Vista SP1開始,x86-64架構的Windows作業系統已支援UEFI。但是,若在UEFI模式下安裝和啟動Windows Vista SP1(或Windows Server 2008)或Windows 7(或Windows Server 2008 R2)通常需要在UEFI韌體設定中開啟CSM[3],因為Windows 7/Windows Server 2008 R2並不支援原生UEFI顯示使用的UEFI GOP協定。32位元的Windows Vista和Windows 7不支援UEFI啟動。從Windows 8開始,支援Secure Boot,UEFI模式下的啟動亦無須CSM(支援原生UEFI),32位元版本的Windows 8亦支援32位元的UEFI(不支援64位元的UEFI)。

現在,x86-64架構的FreeBSDOpenBSDNetBSD已支援UEFI。

虛擬機器對UEFI的模擬[编辑]

VMware Workstation支援對UEFI的模擬,但是在VMware Workstation 11以前,VMware Workstation並未正式支援UEFI,需要手動編輯虛擬機的.vmx檔案以開啟虛擬機器的UEFI。VMware Workstation 11及以後的版本正式支援對UEFI的模擬。從VMware Workstation 14開始支援Secure Boot。

VirtualBox支援對UEFI的模擬,但是VirtualBox的UEFI並不支援Windows Vista和Windows 7。

QEMU/KVM可通過OVMF支援對UEFI的模擬。

微軟Hyper-V英语Hyper-V的第二代虛擬機器支援對UEFI的模擬,以及Secure Boot。

採用UEFI韌體的x86/x64系統類別[编辑]

類別0,這類系統使用x86 BIOS韌體,只支援傳統作業系統。

類別1,這類系統採用支援UEFI和Pi規範的韌體,啟用CSM層功能,只支援傳統作業系統。

類別2,這類系統採用支援UEFI和Pi規範的韌體,啟用CSM層功能,同時支援傳統和UEFI啟動的作業系統。

類別3,這類系統採用支援UEFI和Pi規範的韌體,不再提供或完全關閉CSM層功能,只支援由UEFI啟動的作業系統。

類別3+,在類別3的系統基礎上提供並啟用Secure Boot功能。

微軟公司的Windows 8及之後的作業系統適用於上述所有類別的電腦,之前支援UEFI韌體的作業系統適用於類別0至類別2型電腦,不支援UEFI韌體的作業系統僅可用於類別0和類別1的電腦。所有支援UEFI啟動的Linux作業系統適用於類別0至類別3型電腦,多數現行分發版也支援類別3+中的Secure Boot功能,譬如Ubuntu等。 Intel计划将于2020年推出的UEFI Class 3规范中,将Legacy BIOS界面完全舍弃,Intel旗下的所有产品将使用UEFI Class 3(有一部分产品可能是3+)[4]

批評[编辑]

Ronald G. Minnich(coreboot的共同作者)和 Cory Doctorow(科幻小說家)和數位權利運動者批評EFI是企圖藉由禁止使用者完整控制他們的電腦,來保護智慧財產權[5][6]它並沒有解決BIOS長期以來對多數硬體需要兩種不同驅動程式的問題--一個給韌體,一個給作業系統[7]

TianoCore(一個提供製作基於UEFI自由韌體工具的開放原始碼專案)[8]缺乏用來啟動晶片組的專門的驅動程式,因此需要晶片組廠商提供額外的功能。TianoCore是coreboot的一個附加選項,它包含了啟動晶片組的程式碼。

由於UEFI比起原先的BIOS技術可以對遠端網路開機提供更高的彈性,因此在標準的安全規定有一些疑慮。[9]

Secure Boot[编辑]

在UEFI 2.3.1 Errata C規範中定義了一項名為「Secure Boot」的協定,Secure Boot只允許載入有適當數位簽章的EFI驅動程式和EFI啟動程式,作業系統核心也只載入有特定有效數位簽章的驅動程式(尤其是Windows 10,當開啟UEFI Secure Boot後,對驅動程式數位簽章的檢查更嚴格),因此Secure Boot可讓開機過程更安全。但是Red Hat開發者Matthew Garrett在他的文章"UEFI secure booting"中憂慮UEFI的Secure Boot功能可能會影響Linux(貼有Windows 8認證貼紙的機器,預設Secure Boot啟動,只預載了OEM微軟金鑰,可能無法以Linux開機)。[10][11]微軟回應稱顧客可以停用UEFI韌體中的secure boot。[12][13]然而,某些OEM廠商仍然可能在其產品中省略這項功能。稍晚,報告指出微軟顯然禁止在ARM系統上實作停用Secure Boot的功能。[14][15]

自由軟體基金會(FSF)的Josh Gay對UEFI的"Secure Boot"實作提出憂慮,並發表公開聲明及連署說:

我們—連署者—敦促所有實作了UEFI中稱為"Secure Boot"的電腦製造商立即允許自由的作業系統可以被安裝。基於尊重使用者的自由權以及確切保護使用者安全,製造商必須允許電腦擁有者停用開機限制,或是提供一個確切可能的方法讓他們安裝並執行自由的作業系統。我們承諾我們將不會購買、也不會推薦剝奪使用者重要自由的電腦,並且,我們將積極地敦促社會大眾避免如此禁錮使用者的系統。[16][17]

2012年1月,微軟釋出一份關於OEM硬體認證的文件,指出所有的x86x86-64裝置應該將UEFI Secure Boot啟動,不過可以改用一個可讓使用者增加數位簽章的自訂secure boot模式。然而,在執行Windows的ARM裝置上使用自訂secure boot模式或停用都是不可能的[18]。這份稱為Windows硬體認證需求(英语:Windows Hardware Certification Requirements[19]證實了執行Windows 8、基於ARM的裝置被禁止了任何安裝其他作業系統的可能性。現在,UbuntuFedoraopenSUSERHEL(從RHEL 7開始)、CentOS(從CentOS 7開始)等Linux發行版已經支援Secure Boot。大部分PC/x86伺服器也可以關閉Secure Boot(包括微軟Surface)。Windows 8以後的微軟Windows作業系統可支援Secure Boot,Windows 10在開啟Secure Boot的情況下更可使用Device Guard等功能。Secure Boot要求原生UEFI環境,即不能開啟CSM,也就是開啟Secure Boot的系統不支援Legacy開機及Legacy Option ROM。

安全性[编辑]

針對UEFI進行攻擊的可行性已經被證實,不過首支被確認的感染UEFI的rootkit惡意程式在2018年9月底才被發現。[20]該惡意程式在東歐、巴爾幹地區甚至到中歐均有被感染案例,去除該惡意程式的唯一方法是重新灌寫UEFI韌體,欲防止再次被感染則是要額外開啟Secure Boot或依靠主機板禁止更新韌體的功能,Intel 5 系列 PCH 以後的裝置也許不受影響,但不少政府部門、公司機構中仍保有大量的舊型且使用UEFI韌體的電腦,仍有大規模爆發的危險。[21]

注釋[编辑]

  1. ^ Kinney, Michael. Solving BIOS Boot Issues with EFI (PDF). Intel DeveloperUPDATEMagazine: 1. 
  2. ^ Linux kernel 3.15, Section 1.3. EFI 64-bit kernels can be booted from 32-bit firmware. kernelnewbies.org. 2014-06-08 [2014-06-15]. 
  3. ^ UEFI 的 Windows 支援, Microsoft, [2017-11-25], (原始内容存档于2017-12-01) 
  4. ^ Richardson, Brian. "Last Mile" Barriers to Removing Legacy BIOS (PDF). 30 October 2017 [22 November 2017]. 
  5. ^ Interview: Ronald G Minnich. Fosdem. 2007-02-06 [2010-09-14]. [永久失效連結]
  6. ^ Cory Doctorow, The Coming War on General Purpose Computation, 2011-12-27 [2013-07-11] 
  7. ^ coreboot (aka LinuxBIOS): The Free/Open-Source x86 Firmware. YouTube. 2008-10-31 [2010-09-14]. 
  8. ^ Welcome, TianoCore, SourceForge, (原始内容存档于2012-04-23) .
  9. ^ Risks, UK: NCL .
  10. ^ Garrett, Matthew. UEFI secure booting. [2011-09-20]. 
  11. ^ Garrett, Matthew. UEFI secure booting. [2011-09-23]. 
  12. ^ MS denies secure boot will exclude Linux. The Register. 2011-09-23 [2011-09-24]. 
  13. ^ Protecting the pre-OS Environment with UEFI. Microsoft. 2011-09-22 [2011-09-24]. 
  14. ^ http://www.softwarefreedom.org/blog/2012/jan/12/microsoft-confirms-UEFI-fears-locks-down-ARM/
  15. ^ 存档副本. [2017-03-07]. (原始内容存档于2012-03-09).  已忽略文本“2012-03-09” (帮助)
  16. ^ Gay, Josh. Will your computer's "Secure Boot" turn out to be "Restricted Boot"?. www.fsf.org. Free Software Foundation. [2011-10-25]. 
  17. ^ Stand up for your freedom to install free software. www.fsf.org. Free Software Foundation. [2011-10-25]. 
  18. ^ http://www.softwarefreedom.org/blog/2012/jan/12/microsoft-confirms-UEFI-fears-locks-down-ARM/
  19. ^ 存档副本 (PDF). [2014-04-24]. (原始内容 (PDF)存档于2014-06-11).  已忽略文本“2014-06-11” (帮助)
  20. ^ ESET 發現第一個 UEFI rootkit 惡意程式 LoJax,感染後連重灌系統也沒轍. techbang.com. 2018-09-28 (中文(台灣)‎). 
  21. ^ LoJax: First UEFI rootkit found in the wild, courtesy of the Sednit group. WeLiveSecurity. 2018-09-27. 

參看[编辑]

外部链接[编辑]