Solaris 10 发行说明

预安装问题和错误

本节包含在安装或升级到 Solaris 10 OS 之前,需要了解的严重安装问题。这些问题造成的影响可能导致安装或升级无法成功完成。如果本节中的错误适用于您的系统,您可能需要在进行安装或升级前执行建议的解决方法。

对不属于 Solaris OS 的产品的支持

虽然已对 Solaris 10 软件与早期版本的兼容性进行了测试,但某些第三方应用程序可能无法与 ABI 完全兼容。有关兼容性的信息,请直接与这些应用程序的供应商联系。

您的系统既可以运行 Solaris OS,也可以运行不属于 Solaris 软件的其他产品。这些产品可能是 Sun 或另一家公司提供的。如果将此系统升级到 Solaris 10 发行版,请确保 Solaris 10 OS 上也支持这些其他产品。根据这些产品中每个产品的状态,可执行下列可选操作之一:

关于 Solaris 10 3/05 HWx 发行版的信息

Solaris 10 3/05 HWx 发行版是临时的限制版本,将被 Solaris 10 1/06 软件所替代。本节中的信息仅适用于其平台最初需要 HW1 或 HW2,但尚未更新到 Solaris 10 1/06 OS 的用户。

某些系统上必须安装 Solaris 10 3/05 HW1 OS

Solaris 10 3/05 HW1 操作系统基于 Solaris 10 3/05 OS,但添加了对特定的新增 Sun 硬件的支持。仅应在一些特定的系统或域上安装 Solaris 10 3/05 HW1 OS,这些系统或域使用的硬件产品需要该操作系统。对于所有其他的系统或域,仍应使用原有的 Solaris 10 3/05 软件。

要确定您的硬件是否需要 Solaris 10 3/05 HW1 OS,请参见该硬件的文档。如果您的系统包含 UltraSPARC IV+ 板,则可能需要其他信息才能在该硬件上使用 Solaris 10 3/05 HW1 OS。这些信息包含在 http://www.sun.com/products-n-solutions/hardware/docs/Software/Solaris_on_SunHardware/Solaris_10/index.html 上的《Solaris 10 Sun 硬件平台指南》中。

以下信息仅适用于仍在运行临时的 Solaris 10 3/05 HW1 发行版的平台。该信息不适用于运行 Solaris 10 3/05、Solaris 10 3/05 HW2 或 Solaris 10 1/06 OS 的系统。

Solaris 安装启动程序退出导致重新引导 (6300863)

在某些情况下,如果 Solaris 安装启动程序找不到 find_device.out,则会导致 Solaris 10 3/05 HW1 安装失败,从而导致重新引导,然后到达相同点并提示再次重新引导。

解决方法:请在引导时指定 -text 选项:


boot net -text

EF/kcfd 与 IPsec 算法可用性之间出现竞争情况 (6266083)

此问题可能会出现在刚刚安装的系统或在引导期间导入大量新的服务管理工具 (Service Management Facility, SMF) 清单的系统上。出现这些引导情况后,IPsec(svc:/network/initial:default 的一部分)可能会在加密框架(svc:/system/cryptosvc:default 的一部分)之前进行初始化。由于验证或加密算法不可用,可能无法创建 IPsec 安全关联,并将显示如下所示的错误消息:


PF_KEY error: type=ADD, errno=22:
Invalid argument, diagnostic  code=40:
Unsupported authentication algorithm

例如,在 Sun Fire E25K 系统上使用 DR 时可能会出现此错误,因为该操作涉及 IPsec 服务。

解决方法:在执行使用 IPsec 服务的操作前,如果在引导期间导入大量新 SMF 清单,请在引导后执行以下步骤:

  1. 在引导后发出此命令:


    ipsecalgs -s
    
  2. 如果系统中存在 /etc/inet/secret/ipseckeys,则还需要发出此命令:


    ipseckey -f /etc/inet/secret/ipseckeys
    

现在您可以执行需要创建 IPsec 安全关联的操作,如在 Sun Fire E25K 系统上使用 DR。

仅当在引导期间导入大量新 SMF 清单的情况下需要重复本过程。

某些系统上必须安装 Solaris 10 3/05 HW2 OS

该Solaris 10 3/05 HW2 操作系统是带有附加修补程序的Solaris 10 3/05 OS,以支持成为新 Sun UltraSPARC T1 处理器的特色的 Sun FireTM T2000 系统。HW2 OS 为 T2000 系统所需,不应安装在任何其他系统上。有关更多信息请参见 Sun Fire T2000 产品说明和《Solaris 10 Sun 硬件平台指南》。


注 –

该 HW2 OS 不是Solaris 10 3/05 操作系统或 Solaris 10 3/05 HW1 操作系统的替代品。基于 Sun UltraSPARC IV+ 和 T1 处理器的系统除外,所有的 Sun 系统都应运行Solaris 10 3/05 OS。


不支持从 Solaris Express 或 Solaris 10 Beta 发行版升级


注 –

有关从 Solaris 10 1/06 发行版开始的升级支持的最新信息,请参见Solaris 发行版在升级支持方面的变化


仅在从以下发行版之一升级时,才支持升级到 Solaris 10 OS:

无论是使用标准升级还是 Live Upgrade,都不支持从任何 Solaris Express 或 Solaris 10 Beta 发行版升级。要从这些发行版升级,必须安装 Solaris 10 OS。

升级到 Solaris 10 OS 后部分可执行文件未签名

Solaris 10 中的大多数可执行文件包含可用于验证文件真实性的数字签名。有关此功能的信息,请参见《Solaris 10 ????》中的“为 ELF 对象签名”

在从 Solaris Express 或 Solaris 10 Beta 发行版升级期间,可能无法使用带有数字签名的版本替换某些文件。缺少签名不影响运行程序的功能,但无法验证文件的真实性。为避免此问题,请执行 Solaris 10 OS 的完全安装而不要执行升级。请参见不支持从 Solaris Express 或 Solaris 10 Beta 发行版升级

Sun Fire V250 服务器安装

在 Sun Fire V250 服务器上必须安装 SUNWCXall 软件元簇 (metacluster)。

NFS 版本 4 在第一次系统引导时引入新提示符

Solaris 10 OS 使用 NFS 版本 4 (NFSv4) 作为缺省的分布式文件系统机制。在 NFSv4 中,文件用户和组属性分别作为 "user@domain" 和 "group@domain" 形式的字符串交换。

该字符串的域部分在客户机和服务器之间应是公用的。此信息自动从系统的名称服务域名派生。不过,在某些情况下,派生域可能在客户机与服务器之间不匹配。一般,在下列条件之一成立的情况下发生此不匹配:

如果客户机与服务器之间的域信息不匹配,则访问 NFSv4 的文件可能显示为由 "nobody" 所有。

要确保正确配置,在第一次系统引导时,系统会提示您输入用于 NFSv4 的域。如果您的部署为下列配置之一,则对此提示回答 "no":

自定义 JumpStart 和高级安装

使用自定义 JumpStartTM 方法执行无人值守系统安装的环境只需要最少调优即可抑制第一次引导提示。

Solaris 10 分发介质中提供样例脚本 set_nfs4_domain,该脚本位于 ${CDrom_mnt_pt}/Solaris_10/Misc/jumpstart_sample 目录中。应修改此脚本的副本以便将 NFS4_DOMAIN 变量设置为符合站点的特定需要,并应从 JumpStart 的完成脚本中调用该副本。因此,目标系统的 NFSv4 域预配置为 JumpStart 完成阶段的一部分,从而抑制所有第一次引导提示。

按照以下步骤执行无人值守安装:

  1. 在 JumpStart 的 finish.sh 脚本所在的相同目录中创建 set_nfs4_domain 脚本的副本。

  2. 编辑该脚本,根据您的特定需要设置 NFS4_DOMAIN 变量。

  3. 编辑 finish.sh 脚本,并附加对 set_nfs4_domain 的调用。

  4. 照常执行 JumpStart 安装。

有关进一步的详细信息,请参阅 sysidconfig(1M)sysidtool(1M)nfsmapid(1M)nfs(4) 手册页。另请参见《System Administration Guide: Network Services》

x86: 具有 elxpcelx 网卡的系统无法进行网络配置

无法安装具有 elxpcelx 网络接口卡 (NIC) 的系统。在配置 NIC 期间,可能会显示下列错误消息:


WARNING: elx: transmit or jabber underrun: d0<UNDER, INTR, CPLT>

有关更多信息,请参见 elxl(7D)pcelx(7D) 手册页。

解决方法:安装并运行不具有 elxpcelx NICs 的系统。

/var 文件系统的缺省大小不足以支持 Extra Value 产品

在下列情况下,/var 文件系统的缺省大小可能不足以支持 Extra Value 产品:

必须为 /var 文件系统手动指定更大的片大小。


注 –

如果 /var 文件系统不位于单独片或分区上,则不会发生此问题。


解决方法:请选择以下解决方法之一。

x86: 请勿升级带有 BIOS GG.06.13 版的 Hewlett-Packard (HP) Vectra XU 系列系统

Solaris 10 软件提供了使您能够安装大分区的新功能。系统 BIOS 必须支持逻辑块寻址 (LBA)。BIOS GG.06.13 版不支持 LBA 存取。Solaris 引导程序不能管理此类冲突。此问题还可能影响其他 HP Vectra 系统。

如果执行这种升级,HP 系统将无法启动,而只显示带有不断闪烁的下划线光标的黑色空屏。

解决方法:不要将具有最新 BIOS GG.06.13 版的 HP Vectra XU 系列系统升级到Solaris 10 发行版。此版本不再支持这些系统。

因为引导路径不使用硬盘代码,所以仍可以使用引导软盘或引导 CD 来引导系统。然后选择将硬盘(而不是网络或 CD-ROM 驱动器)作为您的可引导设备。

SPARC: 旧固件可能需要更新引导快擦写存储器

在基于 SPARC 的系统上,Solaris 10 OS 仅在 64 位模式下运行。对于某些 Sun4UTM 系统,可能需要将快擦写存储器中的 OpenBootTM 固件更新为更高的级别,这样才能在 64 位模式下运行该操作系统。下列系统可能需要快擦写存储器更新:

下表列出 UltraSPARC 系统和运行 64 位 Solaris 10 OS 所需的最低固件版本。其中 System typeuname -i 命令的输出。使用 prtconf -V 命令,可以确定正在运行的固件版本。

表 2–1 在 UltraSPARC 系统上运行 64 位 Solaris 软件所需的最低固件版本

来自 uname -i 的系统类型

来自 prtconf -V 的最低固件版本

SUNW,Ultra-2 

3.11.2 

SUNW,Ultra-4 

3.7.107 

SUNW,Ultra-Enterprise 

3.2.16 


注 –

如果某一系统未在上表中列出,则该系统并不需要进行快擦写存储器更新。


有关执行快擦写存储器更新的说明,请参见 http://docs.sun.com 上《Solaris 8 Sun Hardware Platform Guide》的任何版本。

运行 Solaris Live Upgrade 需要附加的修补程序

要使 Solaris Live Upgrade 正常运行,必须为给定 OS 版本安装一组有限的修补程序版本。通过访问 http://sunsolve.sun.com 确保您拥有最新的修补程序列表。有关其他信息,请在 SunSolveSM Web 站点上搜索信息文档 72099。

安装 Solaris Live Upgrade 软件包时的局限性

如果运行 Solaris 7 或 Solaris 8 发行版,您可能无法运行 Solaris Live Upgrade 安装程序。这些发行版未提供运行 Java 2 运行时环境所需的修补程序集。

由此导致的常见故障是 Java 异常错误。系统可能会显示以下信息:


InvocationTargetException in ArchiveReader constructornull
          java.lang.reflect.InvocationTargetException
                 at install.instantiateArchiveReader(Compiled Code)
                 at install.<init>(Compiled Code)
                 at install.main(Compiled Code)

要运行 Solaris Live Upgrade 安装程序并安装软件包,必须装有 Java 2 运行时推荐的修补程序簇。

解决方法:完成以下解决方法:

Solaris 管理控制台 2.1 软件与 Solaris 管理控制台 1.0、1.0.1 或 1.0.2 软件不兼容

Solaris 管理控制台 2.1 软件与 Solaris 管理控制台 1.0、1.0.1 或 1.0.2 软件不兼容。如果要升级到 Solaris 10 发行版,并且系统已安装 Solaris 管理控制台 1.0、1.0.1 或 1.0.2 软件,则在升级之前必须先卸载 Solaris 管理控制台软件。如果您安装了 SEAS 2.0 overbox、SEAS 3.0 overbox 或 Solaris 8 Admin Pack,则系统中已经存在 Solaris 管理控制台。

解决方法:请选择以下解决方法之一:

在空引导环境中使用 Solaris Live Upgrade 安装 Solaris Flash 归档文件时安装失败 (6222925)

如果使用 Solaris Live Upgrade 在空的备用引导环境中安装 Solaris Flash 归档文件,安装会失败。此时将显示与以下错误类似的消息。


sh:  /path_to_install_image/Solaris_10/Tools/Boot/usr/sbin/install.d
/mergescripts/merge_name_service:  not found

ERROR: Transfer list entry (/a/var/svc/profile/name_service.xml):
mergescript failed (/path_to_install_image/Solaris_10/Tools/Boot/usr
/sbin/install.d/mergescripts/merge_name_service)

ERROR: Unable to copy a temporary file to it's final location

ERROR: Flash installation failed

Extracting Flash Archive: 100% completed (of 4361.24 megabytes)
The Solaris flash install of the BE S10B74L2 failed.

在上例中,path_to_install_image 是用于安装的网络安装映像的目录路径。

解决方法:执行以下步骤。

  1. 将目录转至用于安装的网络安装映像中的 mergescripts 目录。


    # cd path_to_install_image/Solaris_10/Tools
    /Boot/usr/sbin/install.d/mergescripts
    
  2. 创建 merge_name_service 文件。


    # touch merge_name_service
    
  3. 使 merge_name_service 文件可执行。


    # chmod a+x merge_name_service
    
  4. 在要进行安装的系统上,使用 Solaris Live Upgrade 在备用引导环境中安装 Solaris Flash 归档文件。

    有关如何使用 Solaris Live Upgrade 安装 Solaris Flash 归档文件的说明,请参见《Solaris 10 安装指南:Solaris Live Upgrade 和升级规划》中的“在引导环境中安装 Solaris Flash 归档文件”

  5. 在步骤 4 中安装的备用引导环境中安装文件系统。


    # lumount alt_boot_env 
    mount-point
    

    在前一个命令中,alt_boot_env 是步骤 4 中安装的引导环境。mount-point 是备用引导环境的挂载点。

  6. 将目录转至备用引导环境中的 /var/svc/profile 目录。


    # cd mount-point/var/svc/profile
    
  7. 删除 name_service.xml 配置文件。


    # rm name_service.xml
    
  8. 为名称服务配置文件创建指向 name_service.xml 文件的符号链接。


    # ln -s ns_name-service.xml name_service.xml
    

    在上例中,name-service 是要用于系统的名称服务。为该值使用下列字符串之一。

    • nis

    • nisplus

    • dns

    • ldap

    • files

如果配置非主接口并启用 DHCP,则 Solaris GUI 安装程序失败 (6215739)

如果试图在安装 Solaris 10 期间配置非主板接口,则在下列情况下,安装会失败。

将显示以下错误消息:


An error has occurred in configuring the system.
Please go back and check your settings.

解决方法 1:使用 Solaris 交互式文本(桌面会话)安装程序。

解决方法 2:使用 Solaris 安装 GUI 程序。

  1. 当安装程序提示您输入网络连接信息时,选择“非联网”。

  2. 完成安装。

  3. 完成安装后,使用 sys-unconfig 命令,将系统重新配置为启用 DHCP 支持的联网系统。

    有关使用 sys-unconfig 命令重新配置系统的更多信息,请参见 sys-unconfig(1M) 手册页。

x86: 从 Solaris 10 Operating System DVD 引导时 Sun Java Workstation 2100Z 可能出现紧急情况 (6214356)

Sun Java Workstation 2100Z 中的 DVD 组合驱动器固件可能导致系统出现紧急情况。从 Solaris 10 Operating System DVD 引导工作站时发生紧急情况。显示内核标题后,以下消息会快速闪出:


panic[cpu0]/thread=fec1be20: mod_hold_stub: 
Couldn't load stub module sched/TS_DTBL
fec25cb0 genunix:mod_hold_stub+139 (fec04088, 63, fea11)
fec25cc4 unix:stubs_common_code+9 (1, 8, fec026e4)
fec25ce4 unix:disp_add+3d (fec026dc)
fec25d00 genunix:mod_installsched+a4 (fef01530, fef01518)
fec25d20 genunix:mod_install+2f (fef01518, fec25d3c,)
fec25d2c TS:_init+d (0, d6d89c88, fec25d)
fec25d3c genunix:modinstall+d9 (d6d89c88)
fec25d50 genunix:mod_hold_installed_mod+2e (d6d77640, 1, fec25d)
fec25d7c genunix:modload+ac (fec026c4, fec26c4)
fec25d98 genunix:scheduler_load+3d (fec026c4, fec026dc)
fec25db4 genunix:getcid+50 (fec026c4, fec28514)
fec25dcc unix:dispinit+df (fec25ddc, fe814ba9)
fec25dd4 unix:startup_modules+d5 (fec25dec, fe8cac37)
fec25ddc unix:startup+19 (fe800000, 166130, 7)
fec25dec genunix:main+16 ()

然后,系统自动复位。

解决方法:选择下列选项之一:

解决方法 1:修改部分 BIOS 配置设置。通过此临时解决方法,可以完成 Solaris 10 安装。不过,此方法可能导致读取 DVD 的性能较差。执行以下步骤:

  1. 在系统引导期间,在提示时按 F2 以进入设置过程。

    屏幕显示与下例类似的附着类型选项:


    Primary Master [ ]
    Primary Slave [ ]
    Secondary Master [CD-ROM]
    Secondary Slave [ ]
  2. 通过为 CD-ROM 选择附着类型来选择 DVD 驱动器的附着类型。


    注 –

    屏幕可能显示多种 CD-ROM 附着类型,例如,在系统具有多个光学驱动器的情况下。在上述情况下,可能需要打开系统机箱以确定 DVD 驱动器的附着点。确保选择适用于 DVD 驱动器的正确附着类型。


  3. 选择正确的 CD-ROM 附着类型后,按 Enter 键。

    会显示下一个屏幕,且已自动选中 Type:[Auto]

  4. 按两次空格键,将选中项更改为 Type:[CD-ROM]

  5. 使用箭头键选择 Transfer Mode

  6. 按 Enter 键以显示其他“传输模式”选项列表。

  7. 使用箭头键选择 "Standard",然后按 Enter 键接受选择。

  8. 按 F10 键保存配置更改并退出 BIOS 设置过程。

    系统重新启动。

解决方法 2:将 DVD 组合驱动器的固件更新为 v1.12。此选项要求 DVD 组合驱动器连接到运行 Microsoft Windows 的系统。执行以下步骤。

  1. 从 Sun Java Workstation 2100z 卸下 DVD 组合驱动器。有关正确卸下驱动器的步骤,请参见工作站的用户指南。

  2. 将驱动器连接到运行 Microsoft Windows 的系统。确保在需要时更改驱动器的主/从跳线设置。

  3. 访问位于 http://download.aopen.com.tw/default.aspx 的 AOpen 下载中心。

  4. 使用以下信息,搜索 DVD 驱动器的固件:

    • 产品:组合驱动器

    • 型号:COM5232/AAH

    • 类别:固件

  5. 下载和安装固件版本 R1.12。

  6. 在工作站上重新安装驱动器。如果需要,恢复原始主/从跳线设置。


注 –

在站点上,较新的固件版本可能已可用。Sun 的测试确认了 v1.12 发行版解决了紧急情况问题。Sun 无法确认 v1.12 之后的更新固件版本是否同样能解决问题。


x86: 安装 Solaris Flash 归档文件时 Solaris 安装 GUI 可能失败 (6208656)

如果使用 Solaris 安装图形用户界面 (GUI) 在基于 x86 的系统上安装 Solaris FlashTM 归档文件,安装可能会失败。在开始安装前,在没有运行 Solaris OS 或 Linux 操作系统的系统上会发生此故障。

将显示以下错误消息:


Unexpected error found with media or archive selected

解决方法:当 Solaris 安装程序提示您选择安装类型时,不要选择 Solaris 交互式选项。选择选项 3 或 4 ,然后执行 Solaris 交互式文本安装。系统提示您指定安装期间要使用的介质时,键入 Solaris Flash 归档文件的路径。

x86: 某些 Sun Fire 系统的串行控制台不工作 (6208412)

下列 Sun Fire 系统上的串行控制台 (ttya) 在缺省情况下不工作:

要使用串行控制台,必须手动配置系统的 BIOS。

解决方法:此解决方法要求您的系统使用 Sun 键盘和显示器。执行以下步骤:

  1. 引导计算机。

  2. 在系统引导期间,在提示时按 F2 键以访问 Phoenix BIOS。

  3. 在 "Peripherals" 下,将 comm 端口从禁用更改为启用。

  4. 保存配置,然后引导系统。

  5. 使用 eeprom 命令,将输入设备和输出设备更改为 ttya。


注 –

在这些系统上,在系统引导时按 Stop 和 N 键无法复位低级固件为缺省设置。


在具有现有 x86 fdisk 引导分区的系统上 Solaris 安装 GUI 程序可能失败 (6186606)

在具有现有 x86 引导分区的系统上 Solaris 安装 GUI 程序可能失败。如果使用基于文本的 Solaris 安装程序创建现有 x86 引导分区,则会发生此故障。将显示以下错误消息:


Default layout will not work on this system.
Error:
Error: ERROR: Could not create explicit fdisk partition on c0t0d0,
requested cylinders 14581 - 14597 in use by fdisk partition 1
Error:
Error: ERROR: System installation failed
Pfinstall failed. Exit stat= java.lang.UNIXProcess@a89ce3 2 
artition on c0t0d0, requested cylinders 14581 - 14597 in use by fdisk
partition 1  ERROR: System installation failed

解决方法:请选择以下解决方法之一。

解决方法 1:当安装程序提示您选择安装类型时,选择 3 Solaris 交互式文本(桌面会话)。

解决方法 2:如果使用 Solaris 安装 GUI 程序,请执行以下步骤。

  1. 开始安装。

  2. 在系统提示选择安装类型时,选择“自定义安装”。

    自定义安装面板会提示您输入有关要安装的语言环境、软件和磁盘的信息。

  3. 根据您的系统,回答屏幕上的问题。

  4. 在“Fdisk 选择”屏幕上,选择包含 x86boot 分区的磁盘。

  5. 在下拉菜单中将 x86boot 分区更改为 UNUSED 以删除该分区。

  6. 通过将 UNUSED 重新更改为 x86boot,可重新添加 x86boot 分区。

  7. 继续安装。

x86: 仅部分磁盘可用于 fdiskformat 命令 (5042195)

在基于 x86 的系统上,当磁盘设备超过 65,535 柱面时,Solaris OS 仅使用柱面计数的后 16 位。因此,可用于 Solaris OS 的实际磁盘空间大小已减小。例如,磁盘的报告柱面数为 70,000。70,000 与 65,535 之差等于可用于 Solaris OS 的柱面数,即 4,464。

要验证磁盘是否已超过 65,535 个柱面,请使用以下公式计算磁盘的大约容量:

磁盘容量 = 柱面数 * 头数 * 扇区数 * 512

然后,将结果与磁盘的标示容量比较。如果两个值之差较大,说明您的磁盘超过 65,535 个柱面。

解决方法:以下是可供选择的两种方案:

x86: X 服务器无法在 Sun LX50 Server 上打开鼠标设备 (5027771)

在 Sun LX50 系统中,X 服务器可能无法打开 PS/2 鼠标设备。该错误可能在安装过程中发生,也可能在系统重新引导时发生。如果发生问题,会显示以下错误消息:


ddxSUNWmouse: Error opening mouse device '/dev/kdmouse;
     /dev/kdmouse: No such device or address

因此,Solaris 安装程序将只能在命令行界面模式下继续执行。完成安装后,该问题可能将在 Solaris 运行时仍然存在。

解决方法:在连接到服务器 PS/2 接口的 Y 形电缆上,切换 PS/2 键盘连接和鼠标连接。

如果系统重新引导后仍不能识别 PS/2 鼠标,请按 LX50 服务器上的 "Reset" 按钮。也可以在出现以下引导提示时,使用重新配置选项 (b -r):


Select (b)oot or (i)nterpreter:

运行 Solaris 7 软件时无法访问 Solaris 10 操作系统 DVD 上的数据 (4511090)

如果您的系统正在运行 Solaris 7 软件,卷管理器会错误地装载 Solaris 10 Operating System DVD。能够装载 DVD,但不能访问数据。结果是无法设置安装服务器、执行 Live Upgrade 或访问介质上的任何数据。

解决方法:请选择以下解决方法之一: