Starting method of basic input / output system of server and server

By optimizing the BIOS boot process, non-serial devices are initialized first, necessary drivers are loaded, and the hard drive and network card are started according to their priorities. This solves the problems of long BIOS boot time and heavy development and testing workload, and enables fast and reliable server boot.

CN121833064APending Publication Date: 2026-04-10XIAMEN YUANCHOU INTELLIGENT COMPUTING TECHNOLOGY CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
XIAMEN YUANCHOU INTELLIGENT COMPUTING TECHNOLOGY CO LTD
Filing Date
2025-12-30
Publication Date
2026-04-10

AI Technical Summary

Technical Problem

The existing BIOS boot process not only affects the normal operation of existing functions, but also involves a huge amount of development and testing work and a long boot time.

Method used

By scanning and initializing the server's non-serial input/output devices, such as USB keyboards and VGA monitors, loading necessary system device drivers, determining the boot priorities of hard drives and network cards, and booting the corresponding devices based on priorities, the BIOS boot process is optimized.

Benefits of technology

It significantly shortens server boot time, improves startup efficiency and reliability, reduces development and testing workload, and maintains system stability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121833064A_ABST
    Figure CN121833064A_ABST
Patent Text Reader

Abstract

The invention discloses a starting method of a basic input and output system of a server and the server, and relates to the technical field of servers, and the starting method comprises the following steps: scanning and initializing an input and output device of the server, which is used for realizing an interaction function between the server and a user or an external system; loading a system equipment drive program of the server, wherein the system equipment drive program comprises a drive program of hardware equipment and a software system of the server and a drive program of an interface of a hard disk; determining starting priorities of a hard disk and a network card of the server, and starting the hard disk or the network card according to the starting priorities; and starting a basic input / output system of the server at least based on the started hard disk or network card, the input / output equipment and the system equipment driving program. According to the BIOS starting method and device, the technical problems that normal operation of existing functions can be affected in the existing BIOS starting process, the development and test workload is huge, and the starting time is long are solved, and the technical effects that the development and test workload and the starting time are reduced while normal operation of the existing functions is guaranteed are achieved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of server technology, and in particular to a method for starting a basic input / output system of a server and a server. Background Technology

[0002] With the rapid development of cloud computing technology and the internet industry, servers are increasingly widely used in practical applications, especially in large data centers and cloud computing bases. A data center often deploys tens of thousands or even hundreds of thousands of servers. The boot speed of these servers is crucial for energy conservation in the data center. Therefore, optimizing server boot speed has become a primary concern in BIOS development. However, the existing BIOS boot process not only affects the normal operation of existing functions but also involves a huge workload in development and testing, and has a long boot time. Summary of the Invention

[0003] This application provides a method for starting the basic input / output system of a server and a server, in order to at least solve the problems in the related art where the existing BIOS startup process not only affects the normal operation of existing functions, but also involves a huge amount of development and testing work and a long startup time.

[0004] This application provides a method for starting a server's basic input / output system, comprising: scanning and initializing the server's input / output devices, wherein the input / output devices are devices used to implement interaction functions between the server and users or external systems, and the input / output devices are non-serial port devices, which are devices not connected using a serial communication interface; loading the server's system device drivers, wherein the system device drivers include drivers for the server's hardware devices, drivers for the server's software system, and drivers for the server's hard disk interface; determining the boot priority of the server's hard disk and the boot priority of the server's network interface card, and starting the hard disk or network interface card according to the boot priority of the hard disk and the network interface card; and starting the server's basic input / output system based at least on the booted hard disk or network interface card, the input / output devices, and the system device drivers.

[0005] This application also provides a server, including: the server's basic input / output system is started using any of the server's basic input / output system startup methods.

[0006] This application addresses the technical problems of existing BIOS boot processes, which not only affect the normal operation of existing functions but also involve significant development and testing workloads and long boot times, thus achieving the desired technical effect. The method scans and initializes the server's input / output devices (non-serial port devices, meaning devices not connected via a serial communication interface). It loads the server's system device drivers, including drivers for the server's hardware devices, software systems, and hard drive interfaces. It determines the boot priority of the server's hard drive and network interface card (NIC), and boots either the hard drive or NIC based on these priorities. Finally, it boots the server's basic input / output system based on the booted hard drive or NIC, the input / output devices, and the system device drivers. Attached Figure Description

[0007] To more clearly illustrate the embodiments of this application, the accompanying drawings used in the embodiments will be briefly introduced below. Obviously, the drawings described below are only some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.

[0008] Figure 1 This is a hardware structure block diagram of a mobile terminal for a server's basic input / output system startup method according to an embodiment of this application.

[0009] Figure 2 This is a flowchart of the UEFI BIOS boot process according to an embodiment of this application;

[0010] Figure 3 This is a diagram of a USB keyboard / mouse and a monitor control console according to an embodiment of this application;

[0011] Figure 4 This is a diagram of a serial port terminal console according to an embodiment of this application;

[0012] Figure 5 This is a diagram of the SOL terminal control console according to an embodiment of this application;

[0013] Figure 6 This is a flowchart of the BDS detection hotkey in an embodiment of this application;

[0014] Figure 7 This is a network protocol stack driver dependency diagram according to an embodiment of this application;

[0015] Figure 8 This is a startup diagram showing the startup option loading strategy sequence according to an embodiment of this application;

[0016] Figure 9 This is a flowchart illustrating the first startup option loading strategy according to an embodiment of this application;

[0017] Figure 10 This is a flowchart illustrating the second startup option loading strategy according to an embodiment of this application;

[0018] Figure 11 This is a flowchart illustrating the control of the "Quick Start" option in an embodiment of this application.

[0019] Figure 12 This is a flowchart of a method for starting a server's basic input / output system according to an embodiment of this application;

[0020] Figure 13 This is a flowchart illustrating the key steps of the BDS stage execution process in existing technologies;

[0021] Figure 14 This is a flowchart of another method for starting the basic input / output system of a server according to an embodiment of this application;

[0022] Figure 15 This is a flowchart of another method for starting a server's basic input / output system according to an embodiment of this application;

[0023] Figure 16 This is a structural block diagram of a startup device for a server's basic input / output system, according to an embodiment of this application. Detailed Implementation

[0024] The technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, and not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those of ordinary skill in the art without creative effort are within the protection scope of this application.

[0025] It should be noted that, in the description of this application, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. The terms "first," "second," etc., in this application are used to distinguish similar objects and are not used to describe a specific order or sequence.

[0026] To enable those skilled in the art to better understand the present application, the present application will be further described in detail below with reference to the accompanying drawings and specific embodiments.

[0027] The specific application environment architecture or specific hardware architecture on which the execution of the server's basic input / output system startup method depends is described here.

[0028] The embodiments of this application provide a method for starting a server's basic input / output system. The method is described in detail below in conjunction with the execution flow of the method for starting a server's basic input / output system.

[0029] The following explains the technical terms used in this application:

[0030] BIOS: Basic Input / Output System, a program of code that runs on a server before the operating system starts.

[0031] BIOS SETUP: The human-machine interface for setting BIOS parameters, hereinafter referred to as SETUP;

[0032] PXE (Preboot Execution Environment), also known as a pre-execution environment, provides a mechanism for booting a computer using a network interface. This mechanism allows the computer to boot without relying on local data storage devices (such as hard drives) or a locally installed operating system.

[0033] HDD: Hard Disk;

[0034] OS: Operating System;

[0035] FAT32: A hard disk partition format that is supported and compatible with the vast majority of operating systems;

[0036] NVMe: A hardware interface protocol;

[0037] OPTION ROM: Special code located on the PCIe card used to initialize the card. When this code is executed, it can generally only be executed on the CPU core via serial port and cannot be executed in parallel on multiple CPU cores. Other similar names include PCIe card UEFI DRIVER, which will be referred to as "driver" in the following text.

[0038] PCIe: A data communication bus;

[0039] BMC: Baseboard Manager. A commonly used monitoring and management component in servers;

[0040] IPMI: An interface protocol for BMC management servers. The BIOS can accept commands sent by users through BMC IPMI and execute specific functions.

[0041] As described in the background section, with the rapid development of cloud computing technology and the internet industry, servers are increasingly widely used in practical applications, especially in large data centers and cloud computing bases. A single data center often deploys tens or even hundreds of thousands of servers. Server boot speed is crucial for power saving in data centers; therefore, optimizing server boot speed has become a primary concern in BIOS development. However, existing BIOS boot processes not only affect the normal operation of existing functions but also involve a huge workload in development and testing, and have long boot times.

[0042] To address the issues that existing BIOS boot processes not only affect the normal operation of existing functions but also involve a huge workload for development and testing and have long boot times, embodiments of this application provide a boot method for a server's basic input / output system and a server.

[0043] The technical solutions in the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings.

[0044] The methods and embodiments provided in this application can be executed on a mobile terminal, computer terminal, or similar computing device. Taking running on a mobile terminal as an example, Figure 1 This is a hardware structure block diagram of a mobile terminal for a method of determining whether transaction traffic exceeds the limit, according to an embodiment of the present invention. Figure 1 As shown, a mobile terminal may include one or more ( Figure 1 Only one is shown in the diagram. A processor 102 (which may include, but is not limited to, a microprocessor MCU or a programmable logic device FPGA, etc.) and a memory 104 for storing data are also shown. The mobile terminal may further include a transmission device 106 for communication functions and an input / output device 108. Those skilled in the art will understand that... Figure 1 The structure shown is for illustrative purposes only and does not limit the structure of the mobile terminal described above. For example, the mobile terminal may also include components that are more... Figure 1 The more or fewer components shown, or having the same Figure 1 The different configurations shown.

[0045] The memory 104 can be used to store computer programs, such as application software programs and modules, like the computer program corresponding to the method for determining whether transaction traffic exceeds the limit in this embodiment of the invention. The processor 102 executes various functional applications and data processing by running the computer program stored in the memory 104, thereby implementing the above-described method. The memory 104 may include high-speed random access memory and may also include non-volatile memory, such as one or more magnetic storage devices, flash memory, or other non-volatile solid-state memory. In some instances, the memory 104 may further include memory remotely located relative to the processor 102, and these remote memories can be connected to the mobile terminal via a network. Examples of the above-described networks include, but are not limited to, the Internet, corporate intranets, local area networks, mobile communication networks, and combinations thereof. The transmission device 106 is used to receive or send data via a network. Specific examples of the above-described networks may include wireless networks provided by the mobile terminal's communication provider. In one example, the transmission device 106 includes a network interface controller (NIC), which can be connected to other network devices via a base station to communicate with the Internet. In one example, the transmission device 106 may be a radio frequency (RF) module, which is used to communicate with the Internet wirelessly.

[0046] With the rapid development of cloud computing technology and the Internet industry, servers are increasingly widely used in practical applications, especially in large data centers and cloud computing bases. Tens of thousands or even hundreds of thousands of servers are often deployed in a data center. The boot speed of servers is crucial to the power saving of the data center. Therefore, optimizing the boot speed of servers has become the most important issue in the BIOS development process.

[0047] After the server powers on, the BIOS boot process mainly consists of the following stages, executed sequentially from SEC, PEI, DXE, BDS, to RUNTIME, until the OS is booted. The specific process is as follows: Figure 2 As shown.

[0048] Step S1: SEC (Security Phase): This is the initial stage after power-on, marking the start of the entire system. The computer enters this stage first after power-on. The main task of the SEC phase is to handle system startup, restart, and exception signals. At this time, only the CPU and its internal resources are initialized; external devices and memory are not initialized. The system requires some temporary memory during this phase, generally using cache for code and data storage. Typically, the code in this phase is the same for different models using the same generation of chips, so there is no need to differentiate between them.

[0049] Step S2: PEI (Pre-EFI Initialization) Stage: Most of the code in this stage runs on FLASH, mainly initializing the CPU and related hardware, with memory initialization being the most important task. The parameters required by the DXE stage are encapsulated in the form of a HOB (Hardware Object Block) list and passed to the DXE stage. The module running in the PEI stage is abbreviated as PEI-M.

[0050] Step S3: DXE (Dynamic Executable) Stage: The main task of this stage is to perform a large amount of driver loading and initialization work. The module running in the DXE stage is abbreviated as DXE-M. By traversing all drivers in the firmware, the system initialization is completed when all drivers have been executed. All code in the DXE stage runs in memory, and global variables defined in the DXE stage module are readable and can be modified.

[0051] Step S4: BDS (Boot Device Selection) Stage: In this stage, the BIOS scans PCI devices, initializes console devices, and loads various drivers. It attempts to find a bootable device according to the preset boot order and loads the operating system's boot loader from that device. Users can also manually select the boot device at this time through the UEFI interface. The specific steps include:

[0052] Step S4.1: Scan PCI devices;

[0053] Step S4.2: Initialize the console device and activate the input / output devices required for user interaction;

[0054] Step S4.3: Load and connect the console device driver.

[0055] The console refers to the interface through which the system interacts with the user for input and output during the BIOS phase. The BIOS provides a standard set of console services to support basic text input and output. The UEFI specification abstracts physical input / output devices into three standard interfaces: Console In, Console Out, and Error Out.

[0056] Console In: An abstraction for one or more input-enabled devices, such as a keyboard, serial port, etc. This interface provides EFI_SIMPLE_TEXT_INPUT_PROTOCOL or the newer EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL and allows users to perform key operations in the BIOS setup interface or boot menu.

[0057] Console Out: An abstraction for one or more output devices, such as a graphics card and monitor, serial port, etc. It provides EFI_GRAPHICS_OUTPUT_PROTOCOL (graphics mode) and / or EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL (text mode). This interface is responsible for displaying BIOS information, boot menu, error messages, etc.

[0058] Error Out: Error output device, such as a serial port. This interface usually shares the protocol stack with ConOut, so only interfaces involving Console In / Console Out types are generally discussed.

[0059] In typical server systems, consoles exist in the following forms (separate single functions) depending on the actual connected device, such as... Figure 3 , Figure 4 and Figure 5 As shown, it is divided into: USB keyboard / mouse, monitor console; serial terminal console; and SOL terminal console.

[0060] Various terminal console interfaces are typically supported simultaneously in server systems, but not all of them will necessarily be connected in actual use; usually, one or two console interfaces are selected. For example, in scenarios where users have direct access to the machine, interfaces such as... Figure 3 The USB keyboard / mouse, monitor console, or shown Figure 4 The serial terminal console shown is typically used in scenarios where users manage machines via a BMC network. Figure 5 The SOL terminal console shown in this mode, because the serial port is also implemented by the BMC, the BMC internally forwards the received serial port data and supports the ipmitool sol terminal through the network IPMI protocol. Therefore, from the perspective of the BIOS software, what is ultimately seen is only the serial port.

[0061] In steps S4.2 and S4.3, the BIOS involves the following drivers:

[0062] Step S4.3.1: USB keyboard and mouse input driver, VGA output driver;

[0063] Step S4.3.2: Serial port input driver, serial port output driver.

[0064] Step S4.4: Create a timer and a keyboard input detection callback function. In the callback function, periodically check whether there is an input hotkey on the console input device. If there is an input hotkey, set the corresponding hotkey flag.

[0065] Step S4.5: Obtain CPU, memory, and hard disk information, call the console on the platform to output the relevant services, and print the information;

[0066] Step S4.6: Load and connect the drivers for the onboard and external PCIe cards;

[0067] Step S4.7: Load the hard drive driver, such as the driver for a SATA / NVME interface hard drive;

[0068] Step S4.8: Load other drivers included in the BIOS, such as the network protocol stack driver (hereinafter referred to as the network protocol stack);

[0069] Step S4.9: Process and categorize different types of boot options, such as HDD hard drives, PXE networks, CD-ROMs, USB storage devices (hereinafter referred to as USB), etc.

[0070] Step S4.10: Create a boot entry, which includes scanning hard drives that meet the boot criteria, identifying the operating system loader on the partition, and generating boot options. For example, if the OS is already installed on the HDD, a FAT32 partition will be created on the HDD, which contains a fixed boot file path. The boot file information for common mainstream OSes is shown in Table 1; other OSes are not listed here.

[0071] Table 1. OS Startup File Information Table

[0072]

[0073] Step S4.11: Start sequentially, including attempting to load and execute boot options, or boot entries, according to pre-set priorities. For example, first try the boot option on the HDD. If the boot is successful, transfer control to the operating system; if the boot fails, try to start / stop from the next priority option according to the pre-set policy, displaying a prompt message on the screen or entering the BIOS SETUP interface.

[0074] Step S4.12: Successfully load the operating system bootloader, such as Windows Boot Manager or Linux Grub, and the BDS stage ends.

[0075] Step S5: Load startup options;

[0076] Step S6: Enter the OS. In the RT (Runtime Services) stage, the role of the BIOS is basically over, and the operating system loading process begins. However, the BIOS still provides some runtime services, such as handling power management events.

[0077] During the BDS phase, from steps S4.4 to S4.11, a timer is started to periodically check in the background whether the console input device has an input hotkey. If the user has pressed the SETUP hotkey (referred to as the hotkey) or the out-of-band BMC has configured the BIOS to enter SETUP via IPMI commands, the BIOS will not load from the boot menu and will eventually enter the SETUP interface. Regardless of whether there is an input hotkey, the background periodic check of the console input device will call the serial port input driver and serial port output driver during each check, ultimately resulting in time consumption. Specifically, as follows... Figure 6 As shown.

[0078] When loading a boot option, different boot options require corresponding driver support. For example, booting the OS from an HDD requires loading the driver for a SATA / NVME interface hard drive, while other drivers, such as the network protocol stack, are not needed. If loading a PXE network boot option, the network card driver and network protocol stack are required, while other drivers, such as hard drive drivers for SATA / NVME interface hard drives, are not needed.

[0079] During the BIOS boot process, various drivers are loaded and run. These drivers may have dependencies on each other at runtime, depending on their actual functions. These dependencies can be broadly categorized into two types:

[0080] 1. PCIe card drivers can often run independently without dependencies;

[0081] 2. The network protocol stack is further divided into various drivers depending on the supported protocols, such as: ARP protocol stack driver (hereinafter referred to as ARP driver), IP protocol stack driver (hereinafter referred to as IP driver), UDP protocol stack driver (hereinafter referred to as UDP driver), DHCP protocol stack driver (hereinafter referred to as DHCP driver), and PXE protocol stack driver (hereinafter referred to as PXE driver).

[0082] Furthermore, the PXE driver depends on the UDP driver and the DHCP driver. The UDP driver depends on the IP driver, and the IP driver depends on the ARP driver. Subsequent drivers can only run after the preceding driver has finished. The specific dependency relationships are as follows: Figure 7 As shown.

[0083] Step S7: Startup options grouping and loading strategy.

[0084] exist Figure 2Steps S4.8, S4.9, S4.10, and S4.11 involve BIOS boot option grouping and priority settings. Boot options of the same type are often grouped together. The currently commonly used setting order is classified into 4 groups: HDD, PXE, CDROM, and USB. Different priority boot strategies can be set according to actual needs.

[0085] For example: first try to boot from the HDD; if the HDD has no OS or the boot process fails, then try booting from PXE, then CD-ROM, and finally USB storage device. Figure 2 Step S4.8, loading startup items according to the startup option strategy, is broken down in detail as follows: Figure 8 As shown.

[0086] For servers in data centers, the most common scenarios for BIOS boot are as follows:

[0087] Step S7.1: As Figure 9 As shown, the default boot option order in the BIOS is: HDD, PXE, CDROM, USB, with each type grouped together. If there are multiple HDDs in the HDD group, it will try HDD0, HDD1, and HDDn in sequence. If it fails to boot, it will enter the PXE group. Once in the PXE group, it cannot be exited and will continue to loop until a certain PXE option successfully boots the OS.

[0088] Step S7.2: As Figure 10 As shown, during a certain boot, the PXE boot option is set to the highest priority using IPMI commands or other methods, and the OS is installed onto the HDD from PXE.

[0089] Step S7.3: During a boot, the IPMI command is used to manually configure the BIOS to automatically enter SETUP upon startup. The BDS phase takes the longest time during the entire boot process and needs optimization. Optimization can be performed in the following four situations;

[0090] Step S7.4: After step S4.3 is completed, steps S4.4 to S4.8 will call the drivers in steps S4.3.1 and S4.3.1 to print output to the console and query input. Because the serial port transmission speed is relatively slow, loading and connecting the serial port input / output driver will take a considerable amount of time, affecting the BIOS startup time in the BDS stage.

[0091] During the BIOS boot process of a server, users typically don't care about the information generated during the boot process, so there's no need to load the serial terminal driver. The serial terminal driver is only needed in the following scenarios: when a user remotely manages the machine via the BMC network, sends configuration commands to the BMC using ipmitool, and the BIOS detects the relevant BMC settings during boot, automatically enters BIOS SETUP, and then the user can view and modify the relevant settings using the ipmtool sol terminal.

[0092] 7.5: For machines with multiple network cards, loading and connecting the drivers for all network cards, and loading the network protocol stack included in the BIOS takes a considerable amount of time. If an operating system has already been pre-installed on the HDD, for example, an OS is already installed on HDD0, then... Figure 9 and Figure 10 The OS is ultimately loaded from the HDD during startup. Figure 2 In step S4.4, after loading the hard drive driver, such as the driver for a SATA / NVME interface hard drive, and detecting that an OS has already been installed on the hard drive, the network card driver loaded in the BDS stage is unnecessary.

[0093] Step S7.6: In Figure 8 , Figure 9 and Figure 10 When finally loading the boot options corresponding to the network card, if the previous PXE has already been successfully loaded, the subsequent PXE boot options will not be loaded. For example... Figure 9 If PXE0 successfully boots and loads the OS, then PXEn for other network cards will not be loaded subsequently.

[0094] The following solutions exist in the current technology to accelerate the BIOS boot process:

[0095] Option 1: Set one or more options in SETUP, such as setting an option: "Fast Startup", which includes two options: "On / Off", which the user can choose to control whether to load certain drivers in the BIOS.

[0096] When "Fast Startup" is turned off, the startup process is no different from the normal process, but the startup time is longer.

[0097] When "Fast Startup" is enabled, the BDS stage... Figure 2 The steps S4.3 (loading and connecting the onboard and external PCIe card drivers) and S4.5 (loading other drivers included in the BIOS, such as the network protocol stack) are no longer loaded, which can greatly reduce boot time. The specific process is as follows: Figure 11 As shown, Figure 11 The PEI and DXE stages are omitted; other stages are the same as those in the original text. Figure 2 Same as above.

[0098] This solution requires separate settings, depends on user selection, and is enabled when "Fast Startup" is selected. Figure 2 Steps S4.3 and S4.5 will no longer be executed. If PXE boot support is required from the network protocol stack at the end of the BDS stage, it will not be supported.

[0099] Option 2: During the BIOS boot process, Figure 11 Steps S4.3 to S4.5 are executed serially. After loading and connecting the driver for one PCIe card, the driver for the next PCIe card is loaded and connected, and so on, until all card drivers are loaded. In addition, other drivers in the BIOS are also executed serially.

[0100] The acceleration scheme adopted in this plan is as follows: Figure 11 In steps S4.3 and S4.5, for drivers that can run independently of a PCIe card, the driver is loaded onto different CPU cores during execution, using a multi-core parallel execution method to reduce the long execution time caused by serial execution.

[0101] This solution loads drivers for PCIe cards that can run independently onto different CPU cores during execution, using a multi-core parallel execution approach. The existing BIOS architecture does not support this approach, requiring significant modifications to the BIOS architecture and code, resulting in a huge workload for development and testing, and stability is also difficult to guarantee.

[0102] Option 3: In step S4.3.2, the serial port input driver and serial port output driver involve serial port transmission and reception speeds measured in baud rate. Commonly used speeds are 9600bps, 38400bps, 57600bps, 115200bps, 230400bps, and 460800bps. A higher baud rate results in faster data transmission and reception, and less time spent on data transmission and reception per unit of time. When loading and connecting the serial port input driver in the BDS stage, and when subsequently calling the serial port input driver to print information to the terminal, a higher baud rate can be selected, thus reducing the time spent on these steps.

[0103] The plan is in Figure 4 and Figure 5 In this process, the baud rates of both the serial port and the serial terminal must be consistent to avoid communication errors. The baud rates supported by the serial terminal and the IPMITool Sol terminal cannot be increased indefinitely; therefore, simply increasing the baud rate will not effectively reduce startup time.

[0104] This embodiment provides a method for determining whether transaction traffic running on a mobile terminal, computer terminal or similar computing device exceeds the limit. It should be noted that the steps shown in the flowchart in the accompanying drawings can be executed in a computer system such as a set of computer-executable instructions. Although the logical order is shown in the flowchart, in some cases, the steps shown or described may be executed in a different order than that shown here.

[0105] This embodiment provides a method for starting the basic input / output system of a server. Figure 12 This is a flowchart of a method for starting the basic input / output system of a server according to an embodiment of this application, such as... Figure 12 As shown, the method includes the following steps:

[0106] Step S201: Scan and initialize the server's input / output devices. Input / output devices are devices used to realize the interaction function between the server and the user or external system. Input / output devices are non-serial port devices, which are devices that are not connected using a serial communication interface.

[0107] Specifically, during the initial server boot process, the system first scans and initializes all non-serial input / output devices—devices that do not rely on serial communication, such as USB keyboards, mice, and VGA displays. This is done to ensure that the system can quickly complete initialization even when no user is remotely managing the system via serial port, reducing unnecessary boot time. Prioritizing the initialization of non-serial devices significantly speeds up server startup, as these devices typically initialize faster than serial devices. Furthermore, since most modern servers do not immediately require serial port functionality during boot, this method avoids redundant initialization of serial communication devices, thereby improving the overall operating efficiency of the BIOS.

[0108] Step S202: Load the server's system device drivers, which include drivers for the server's hardware devices, drivers for the server's software system, and drivers for the server's hard disk interface.

[0109] Specifically, system device drivers are critical components ensuring the proper functioning of server hardware and software systems. These drivers include, but are not limited to, hard drive interface drivers (SATA / NVMe), VGA drivers, USB drivers, etc. Once it's confirmed that an operating system already exists on the hard drive, there's no need to load network protocol stack drivers, further optimizing the boot process. Loading only necessary drivers, especially those directly related to the boot options to be used, can significantly shorten BIOS boot time. This is because driver loading and initialization are typically time-consuming, especially for complex network protocol stacks. This optimization ensures that the server can quickly boot into the required operating system, rather than wasting time initializing unused hardware or software.

[0110] Step S203: Determine the boot priority of the server's hard drive and the boot priority of the server's network card, and boot the hard drive or the network card according to the boot priority of the hard drive and the boot priority of the network card.

[0111] Specifically, the server's boot strategy requires setting the priorities of the hard drive and network interface card (NIC). If an operating system already exists on the hard drive, its priority is set to the highest, meaning the system will boot directly from the hard drive. If hard drive boot fails, the system checks the NIC's priority and attempts network boot (PXE). Dynamically adjusting the boot priorities of the hard drive and NIC can avoid unnecessary boot attempts, especially when an operating system already exists on the hard drive. This intelligent priority scheduling not only reduces boot time but also improves boot reliability, ensuring the server can reach a working state more quickly.

[0112] Step S204: Start the server's basic input / output system based at least on the bootable hard disk or the bootable network card, input / output devices, and system device drivers.

[0113] Specifically, the server's BIOS boot process is based on the selected boot device (hard drive or network card) and the corresponding input / output devices and drivers. This means that if the hard drive boots successfully, the system will not attempt to load the network boot option, and vice versa. This decision-making process ensures that the server can efficiently boot the required operating system. By loading and executing parts of the boot process on demand, server boot time can be significantly reduced. This efficiency improvement is crucial for data center and cloud computing environments, as it reduces server boot wait times, improves overall data center responsiveness and resource utilization, thereby saving power consumption and operating costs.

[0114] This embodiment provides a method for starting a server's basic input / output system, including: scanning and initializing the server's input / output devices, wherein the input / output devices are devices used to implement interaction functions between the server and users or external systems, and the input / output devices are non-serial port devices, which are devices not connected using a serial communication interface; loading the server's system device drivers, wherein the system device drivers include drivers for the server's hardware devices, drivers for the server's software system, and drivers for the server's hard disk interface; determining the boot priority of the server's hard disk and the boot priority of the server's network interface card, and starting the hard disk or network interface card according to the boot priority of the hard disk and the network interface card; and starting the server's basic input / output system based at least on the started hard disk or network interface card, the input / output devices, and the system device drivers.

[0115] In this embodiment, the startup method of the server's basic input / output system is optimized, significantly shortening the server's boot time. This method first focuses on the initialization of non-serial port input / output devices, including VGA, USB keyboards, and mice. These devices are quickly configured during the initial server startup, eliminating the need to wait for the lengthy initialization process of serial port devices. This step ensures efficient interaction between the server and users or external systems. Subsequently, the loading of system device drivers is precisely planned, covering drivers for hardware devices, software systems, and hard drive interfaces. This allows the system to identify and prepare all critical components in the shortest possible time. Startup priority decisions further accelerate the startup process, prioritizing the startup of the hard drive or network card according to the set priority, avoiding unnecessary device detection and driver loading. Especially when an operating system is already installed on the hard drive, skipping the loading of network drivers greatly improves startup speed.

[0116] By implementing the above method, the server's basic input / output system startup time is effectively reduced, especially in environments with multiple hard drives and network cards, and when serial terminal interaction is not necessary. This method eliminates the unnecessary time overhead of loading and detecting serial port and network drivers. Specifically, the priority initialization of non-serial devices ensures the rapid availability of the console, while the reasonable arrangement of hard drive and network card startup priorities reduces the number of redundant driver loadings, thereby improving the overall startup efficiency and performance of the server. Furthermore, this method avoids major adjustments to the BIOS architecture, reduces development and testing workload, and also maintains system stability and reliability.

[0117] In some embodiments, the hard drive or network card is started based on its boot priority and the network card's boot priority, including the following steps:

[0118] Step S201: If the boot priority of the hard disk is higher than that of the network card, execute the first loading step to load the boot options of the hard disk. If the boot options of the hard disk are successfully loaded, determine to start the hard disk. If the boot options of the hard disk fail to load, execute the second loading step to load the driver data of the network card.

[0119] In step S202, if the network card's boot priority is higher than the hard disk's boot priority, a second loading step is executed to load the network card's driver data. If the network card's driver data is successfully loaded, the network card is determined to boot. If the network card's driver fails to load, a first loading step is executed to load the hard disk's boot options.

[0120] In this embodiment, the boot process is adjusted based on the boot priorities of the hard drive and the network card to optimize server boot speed. When the hard drive has a higher boot priority than the network card, the first loading step is executed first to load the hard drive's boot options. If loading is successful, the hard drive is determined to boot, avoiding redundant network card driver loading and thus saving boot time. If the hard drive boot options fail to load, the second loading step is executed to load the network card's driver data and attempt to boot from the network. This process ensures that other boot methods can be tried in a timely manner when the hard drive is unavailable. Conversely, when the network card has a higher boot priority than the hard drive, the second loading step prioritizes loading the network card's driver data. If loading is successful, the network card is determined to boot and network boot is performed. If the network card driver loading fails, the process reverts to the first loading step to load the hard drive boot options. This method of adjusting the loading order based on priority effectively reduces unnecessary driver loading processes, improves boot speed, and also ensures boot flexibility and system stability.

[0121] This strategic loading method avoids the inefficient practice of loading all drivers regardless of actual needs during the traditional BIOS boot process. By dynamically adjusting the driver loading order, only loading relevant drivers when necessary, it not only reduces the time of the BIOS boot phase, but also allows for flexible adjustment of the boot path according to the actual application scenario and needs of the server. This ensures both boot efficiency and maintains boot diversity, providing a more efficient boot solution for data center servers.

[0122] In some embodiments, there are multiple hard drives, and the first loading step includes: loading the boot options of multiple hard drives sequentially until the boot option of one hard drive is successfully loaded.

[0123] In this embodiment, when the server is configured with multiple hard drives, the first loading step includes loading the boot options of multiple hard drives sequentially until the boot option of one hard drive is successfully loaded. This strategy makes full use of the hard drive's arrangement order. By trying each hard drive as a boot device in sequence, the search can be stopped immediately when a valid operating system loader is detected on a hard drive, thus avoiding redundant loading of boot options for all hard drives. In practice, after the system identifies the operating system loader on the first hard drive partition and generates the corresponding boot option, it no longer continues to load boot options for subsequent hard drives. This method not only simplifies the boot process but also significantly shortens the time from server power-on to operating system loading completion.

[0124] In some embodiments, there are multiple network interface cards (NICs), and the second loading step includes:

[0125] Step S301: Determine if multiple network cards exist;

[0126] Step S302: In the presence of multiple network cards, the driver data of multiple network cards are loaded sequentially until the driver data of a certain network card is successfully loaded. The driver data includes the network card driver, the network protocol stack of the network card, and the boot options of the network card's pre-boot execution environment protocol.

[0127] In this embodiment, when the server is configured with multiple network interface cards (NICs), the method further optimizes the boot process to improve boot speed. After determining the presence of multiple NICs, the system employs an efficient strategy: sequentially loading the driver data for multiple NICs, including the NIC driver program, the NIC's network protocol stack, and the boot options of the NIC's pre-boot execution environment protocol, until the driver data for one NIC is successfully loaded. Successful loading means that PXE network boot can be attempted from that NIC. This design avoids unnecessary loading of all NIC driver data, reduces unnecessary resource consumption, and thus shortens the boot time of the BDS stage. By loading driver data on demand, the server boot process becomes more agile, especially when a hard disk boot option is available and has a high priority. This optimization is particularly significant, ensuring that the server boots quickly without affecting support for network boot options.

[0128] In some embodiments, the driver data of multiple network cards is loaded sequentially, including the following steps:

[0129] Step S401: Load the network card driver and the network protocol stack of the network card in sequence;

[0130] Step S402: Install the network card's loading file protocol. The loading file protocol is used to generate the network card's pre-boot execution environment protocol boot options.

[0131] Step S403: Load the boot options of the network card's pre-boot execution environment protocol according to the loading file protocol.

[0132] In this embodiment, an innovative solution is proposed to address the issue of optimizing server boot speed. This method focuses on improving the BDS stage of UEFI BIOS and related boot processes. Specifically, through intelligent analysis of boot option strategies, an on-demand driver loading process is implemented, significantly reducing unnecessary boot time consumption. First, when an operating system loader is detected on a hard drive partition, the system prioritizes loading the hard drive boot option, avoiding redundant network protocol stack driver loading steps and effectively shortening the boot sequence. Second, for serial port input / output drivers, they are only loaded when a SETUP hotkey or IPMI setting command is received. This adjustment avoids wasting driver loading time in most cases where serial port interaction is not required. Furthermore, when loading the PXE network boot option, the system dynamically loads the corresponding network card driver and its network protocol stack, rather than loading all network card driver data at the beginning. This reduces the burden on the BIOS during the initial boot process and ensures the normal activation of network boot functionality.

[0133] In some embodiments, the hard drive or network card is started based on its boot priority and the network card's boot priority, including the following steps:

[0134] Step S501: If the boot options of the hard disk and the driver data of the network card both fail to load, load the boot options of the optical disc read-only memory. If the boot options of the optical disc read-only memory are successfully loaded, determine the boot hard disk or the boot network card, input / output devices and system device drivers, and start the server's basic input / output system.

[0135] Step S502: If the boot option of the optical disc read-only memory fails to load, the boot option of the universal serial bus is loaded. If the boot option of the universal serial bus is successfully loaded, the server's basic input / output system is started based on the boot hard disk or the boot network card, input / output device and system device driver.

[0136] Step S503: If the boot options for the Universal Serial Bus fail to load, determine that the server's Basic Input / Output System has failed to boot.

[0137] In this embodiment, the server's Basic Input / Output System (BIOS) dynamically adjusts the timing and order of driver loading during the boot process according to the set boot priority policy to optimize the boot process and reduce boot time. When both the hard disk (HDD) boot option and network card driver data loading fail, the system switches to loading the optical disc read-only memory (CDROM) boot option. Once the CDROM boot option loads successfully, the BIOS determines the drivers based on the hard disk or network card, input / output devices, and system devices, and continues the boot process. If the CDROM boot option also fails to load, it attempts to load the Universal Serial Bus (USB) boot option. Similarly, after the USB boot option loads successfully, the BIOS determines the drivers based on the hard disk or network card, input / output devices, and system devices for subsequent booting. However, if the USB boot option also fails to load, the BIOS determines that the server boot has failed and stops further boot attempts.

[0138] Through this series of dynamic loading strategies, this embodiment avoids wasting time on unnecessary boot options. For example, if the operating system (OS) on the hard drive can boot directly, the loading of network drivers and serial port drivers will be delayed or omitted until there is a clear need, such as entering the BIOS SETUP interface or attempting PXE network boot. This optimization scheme not only maintains the flexibility of server booting but also significantly improves boot efficiency, especially in scenarios with a large number of servers deployed in data centers, effectively saving power consumption and improving operational efficiency. The application of dynamic loading strategies allows the system to intelligently adjust the loading order and timing of drivers according to current boot requirements, minimizing boot time while ensuring the rational utilization of hardware resources.

[0139] In some embodiments, after determining the boot priority of the server's hard drive and the boot priority of the server's network interface card (NIC), and before booting the hard drive or the NIC based on their boot priorities, the method further includes the following steps:

[0140] Step S601: Generate boot options for storage devices other than hard drives and network cards, wherein the storage devices are used to boot the server's basic input / output system;

[0141] Step S602: Set the start-up / end flag of the basic input / output system. The start-up / end flag indicates the start-up / end of the basic input / output system.

[0142] Step S603: Determine whether the intelligent platform management interface has a human-computer interaction identifier and whether a human-computer interaction request has been received;

[0143] Step S604: If a human-machine interaction identifier is present or a human-machine interaction request is received, initialize the serial port device and load and connect the serial port driver to enter the human-machine interaction interface.

[0144] Step S605: If there is no human-computer interaction identifier and no human-computer interaction request is received, determine whether to start the hard drive or the network card based on the boot priority of the hard drive and the boot priority of the network card.

[0145] In this embodiment, when the server starts the Basic Input / Output System (BIOS), it first generates boot options for storage devices other than the hard drive and network card. These options are used to start the server's BIOS. Then, a boot end flag is set to indicate the end of the BIOS boot process. Based on this, the method further determines whether a human-machine interface (HMI) identifier exists and whether an HMI request has been received. If an HMI identifier exists or an HMI request is received, such as a request to enter BIOS SETUP via a BMC network management command, the server initializes the serial port device and loads and connects the serial port driver, thereby entering the HMI for user operation. Conversely, if no HMI identifier exists and no HMI request is received, the server will directly attempt to boot the hard drive or network card according to the pre-set hard drive boot priority and network card boot priority, without loading the serial port driver. This improvement reduces unnecessary boot processes by loading drivers on demand and optimizing boot option strategies, significantly shortening BIOS boot time and improving server boot efficiency. Simultaneously, it avoids significant modifications to existing BIOS functions and architecture, ensuring the stability and compatibility of the boot process.

[0146] In some embodiments, scanning and initializing the server's input / output devices includes the following steps:

[0147] Step S701: Scan and initialize peripheral component interconnect devices;

[0148] Step S702: Initialize the video graphics array device, load and connect the driver for the video graphics array device;

[0149] Step S703: Initialize the Universal Serial Bus and Universal Serial Bus devices, and load and connect the Universal Serial Bus driver.

[0150] Step S704: Initialize the console device and activate the input / output devices required for user interaction;

[0151] Step S705: Create a timer for the server and a keyboard input detection callback function. The timer is used to wake up the server at a preset time, and the keyboard input detection callback function is used to process information entered by the user through the keyboard.

[0152] Step S706: Obtain information about the server's central processing unit, memory, and hard disk.

[0153] In this embodiment, when the server boots up and enters the BDS stage of the UEFI BIOS, the specific technical solution involves optimizing the boot process. The optimization mainly focuses on dynamically adjusting the loading timing and strategy of drivers, aiming to reduce unnecessary loading steps and thus shorten the overall boot time. First, the server's input / output devices are scanned and initialized, including peripheral interconnect devices, video graphics array devices, universal serial bus devices, and console devices. The drivers for the video graphics array devices and the universal serial bus are loaded in an early stage to ensure basic user interaction capabilities, while the serial port input / output drivers are loaded with a delay based on whether or not the BIOS SETUP interface is needed, avoiding unnecessary impact on boot time. Second, a timer for the server and a callback function for detecting keyboard input are created. The timer wakes the server at a preset time to respond promptly to user input; the callback function handles information that the user may input via the keyboard, such as requests to enter the BIOS SETUP. Third, the server's CPU information, memory information, and hard disk information are acquired, providing the necessary prerequisites for subsequent loading of boot items. Based on this, and according to the actual boot strategy, a strategy for dynamically loading drivers and network protocol stacks is proposed. Specifically: if an operating system is already installed on the hard drive, the step of loading the network protocol stack and its related drivers is skipped before generating boot options; for network boot options, the corresponding network card driver and network protocol stack are only loaded when attempting to load a specific PXE boot option, rather than loading all network card drivers and protocol stacks at the beginning. This effectively avoids resource waste and prolonged boot time caused by repeated loading. Through the implementation of the above technical solutions, not only are redundant operations in the BIOS boot process reduced, but the flexibility and stability of the server under different boot strategies are also maintained, ultimately achieving a significant improvement in boot speed.

[0154] In some embodiments, the server's system device drivers include drivers for PCIe cards (excluding network cards), drivers for SATA interfaces, drivers for NVMe interface hard drives, and file system drivers.

[0155] In this embodiment, a cleverly designed server BIOS boot process optimization strategy improves boot speed while maintaining functional integrity. Specifically, for servers equipped with hard drives and multiple network cards, the BDS stage processing is adjusted to load drivers on demand, thereby reducing unnecessary boot time. Through meticulous streamlining of the boot process, flexible adjustments to the boot option strategy are achieved. First, the loading of serial port input / output drivers is delayed until a hotkey is detected or an ipmitool setting command is received to enter the SETUP interface, thus avoiding the extra time consumption caused by loading these drivers during most normal boots to the hard drive boot option. Second, the loading of network card drivers and network protocol stacks is only executed before loading the corresponding PXE boot option, further optimizing the boot process. This on-demand loading strategy not only avoids significant modifications to the BIOS code framework, ensuring system stability and compatibility, but also significantly reduces the time spent in the BIOS boot stage, improving boot efficiency. Especially for common boot scenarios, such as booting the operating system from the hard drive or booting via network PXE, the streamlined boot process reduces boot time without affecting the final boot functionality and user experience.

[0156] In the above embodiments, Figure 2 The BDS and related boot processes are thoroughly analyzed, and certain steps are skipped when different boot options load strategies. Figure 9 When loading strategy 1 during startup, the key steps of the BDS phase execution process are as follows: Figure 13 As shown.

[0157] Figure 13 When booting normally to the HDD0 boot option, the process includes the following 25 steps:

[0158] S13.1, S13.2, S13.3, S13.4, S13.5, S13.6, S13.7, S13.8, S13.9, S13.10, S13.11, S13.12, S13.13, S 13.14, S13.15, S13.16, S13.17, S13.18, S13.19, S13.20, S13.21, S13.22, S13.24, S13.25, S13.38.

[0159] Step S13.5: Initialize the serial port device, load and connect the serial port driver;

[0160] As explained in step S7.4 above, it can be removed and moved to be executed before step S13.22 proceeds to step S13.23.

[0161] Step S13.18: Identify the operating system loader on the hard disk partition and generate boot options. As described in step S7.5 above, steps S13.15 to S13.18 are moved to the step before step S13.10 for judgment. If the operating system loader exists on the hard disk partition, then steps S13.11 to S13.14 can be skipped.

[0162] Steps S13.11 to S13.14, as described in step S7.6 above, can be moved to step S13.29, before loading the PXE boot option in step S13.31. In order to generate the PXE boot option in step S13.19, steps S13.11 to S13.14 are moved to step S13.28, and two additional steps are needed to install the LoadFile protocol of the corresponding network card.

[0163] After the above processing, when the system boots normally to the HDD 0 boot option, it includes the following steps, totaling 19 steps, which is 6 fewer than the original 25 steps.

[0164] S13.1, S13.2, S13.3, S13.4, S13.6, S13.7, S13.8, S13.9, S13.15, S13.16, S13.17, S13.18, S13.19, S13.20, S13.21, S13.22, S13.24, S13.25, S13.38.

[0165] Figure 13 When booting normally to the PXE0 boot option, the process includes the following steps, totaling 29 steps.

[0166] S13.1, S13.2, S13.3, S13.4, S13.5, S13.6, S13.7, S13.8, S13.9, S13.10, S13.11, S13.12, S13.13, S13.14, S13.15, S13. 16, S13.17, S13.18, S13.19, S13.20, S13.21, S13.22, S13.24, S13.25, S13.26, S13.27, S13.28, S13.29, S13.30, S13.38.

[0167] Step S13.5: Initialize the serial port device, load and connect the serial port driver. As described in step S7.4 above, this step can be removed and moved to be executed before step S13.22 leading to step S13.23. Steps S13.11 to S13.14, as described in step S7.6 above, can be moved to step S13.29, before loading the PXE boot option in step S13.31. To generate the PXE boot option in step S13.19, after moving steps S13.11 to S13.14 to step S13.28, two additional steps are needed to install the corresponding network card's LoadFile protocol.

[0168] After the above processing, when the PXE0 boot option is successfully booted, the process includes the following steps, totaling 28 steps, which is 1 step less than the original 29 steps.

[0169] S13.1, S13.2, S13.3, S13.4, S13.5, S13.6, S13.7, S13.8, S13.9, S13.10, S13.15, S13.16, S13.17, S13. 18, S13.19, S13.20, S13.21, S13.22, S13.24, S13.25, S13.26, S13.27, S13.28, S13.29, S13.30, S13.38.

[0170] Figure 9 When loading option 2, or when booting to the HDD n, PXE n boot option, a similar method is used, and the steps can be reduced accordingly. They will not be listed one by one in this section. The specific implementation of the above technical solutions is listed in the most basic implementation scheme section of this invention.

[0171] The specific implementation steps of this application are as follows: Figure 9 Startup option loading strategy 1, based on Figure 13 The process has been refined, and the improved flowchart is as follows: Figure 14 As shown:

[0172] Step S14.1: BDS phase begins;

[0173] Step S14.2: Scan all PCI devices in the system and initialize the detected PCI devices;

[0174] Step S14.3: Initialize the VGA device, load and connect the VGA device driver;

[0175] Step S14.4: Initialize the USB and USB keyboard and mouse devices, load and connect the drivers for the USB keyboard and mouse devices;

[0176] Step S14.5: Initialize the console device and activate the input / output devices required for user interaction;

[0177] Step S14.6: Create a timer and a callback function to detect keyboard input;

[0178] Step S14.7: Obtain CPU, memory, and hard disk information, call the console output service, and print the information;

[0179] Step S14.8: Load and connect the drivers for the PCIe cards (excluding the network card);

[0180] Step S14.9: Load the drivers for SATA and NVMe hard drives;

[0181] Step S14.10: Load the file system driver;

[0182] Step S14.11: Load other drivers;

[0183] Step S14.12: Identify the operating system loader on the hard disk partition and generate boot options;

[0184] Step S14.14: The OS boot path exists on the hard disk partition (refer to Table 1) and the boot option priority is the hard disk. If yes, go to S14.17; otherwise, go to S14.14.

[0185] Step S14.14: Does network card 0-network card n exist? If yes, jump to S14.15; if no, jump to S14.17.

[0186] Step S14.15: Install the empty LoadFile protocol for network card 0 to generate PXE0 boot options;

[0187] Step S14.16: Install the LoadFile protocol for the network card n to generate PXEn boot options;

[0188] Step S14.17: Generate other boot options, sort the boot options, etc.;

[0189] Step S14.18: Set the BDS phase end flag;

[0190] Step S14.19: Is the SETUP flag set by ipmitool? If yes, proceed to S14.21; otherwise, proceed to S14.20.

[0191] Step S14.20: Is there a hotkey pressed indicator? If yes, proceed to S14.21; otherwise, proceed to S14.21.

[0192] Step S14.21: Initialize the serial port device, load and connect the serial port driver;

[0193] Step S14.22: Enter SETUP;

[0194] Step S14.23: Load HDD 0 boot options;

[0195] Step S14.24: Was loading successful? If yes, proceed to S14.41; if no, proceed to S14.25.

[0196] Step S14.25: Load the HDD n boot option;

[0197] Step S14.26: Was loading successful? If yes, proceed to S14.41; if no, proceed to S14.27.

[0198] Step S14.27: Does network card 0-network card n exist? If yes, jump to S14.28; if no, jump to S14.36.

[0199] Step S14.28: Load the driver for network card 0;

[0200] Step S14.29: Load the network protocol stack of network interface card 0;

[0201] Step S14.30: Load PXE 0 boot options;

[0202] Step S14.31: Was loading successful? If yes, proceed to S14.41; if no, proceed to S14.32.

[0203] Step S14.32: Load the driver for network card n;

[0204] Step S14.33: Load the network protocol stack of network card n;

[0205] Step S14.34: Load PXE n boot options;

[0206] Step S14.35: Was loading successful? If yes, proceed to S14.41; if no, proceed to S14.28.

[0207] Step S14.36: Load CD-ROM boot options;

[0208] Step S14.37: Was loading successful? If yes, proceed to S14.41; if no, proceed to S14.38.

[0209] Step S14.38: Load the USB boot option;

[0210] Step S14.39: Was loading successful? If yes, proceed to S14.41; if no, proceed to S14.40.

[0211] Step S14.40: Prompt a startup failure message and stop;

[0212] Step S14.41: Enter OS.

[0213] Figure 10 Startup option loading strategy 2, based on Figure 13 The process has been refined, and the improved flowchart is as follows: Figure 15 As shown:

[0214] Step S15.1: BDS phase begins;

[0215] Step S15.2: Scan all PCI devices in the system and initialize the detected PCI devices;

[0216] Step S15.3: Initialize the VGA device, load and connect the VGA device driver;

[0217] Step S15.4: Initialize the USB and USB keyboard and mouse devices, load and connect the drivers for the USB keyboard and mouse devices;

[0218] Step S15.5: Initialize the console device and activate the input / output devices required for user interaction;

[0219] Step S15.6: Create a timer and a callback function to detect keyboard input;

[0220] Step S15.7: Obtain CPU, memory, and hard disk information, call the console output service, and print the information;

[0221] Step S15.8: Load and connect the drivers for the PCIe cards (excluding the network card);

[0222] Step S15.9: Load the drivers for SATA and NVMe hard drives;

[0223] Step S15.10: Load the file system driver;

[0224] Step S15.11: Load other drivers;

[0225] Step S15.12: Identify the operating system loader on the hard disk partition and generate boot options;

[0226] Step S15.13: The OS boot path exists on the hard disk partition (refer to Table 1) and the boot option priority is the hard disk. If yes, go to S15.17; otherwise, go to S15.14.

[0227] Step S15.14: Does network card 0-network card n exist? If yes, jump to S15.15; if no, jump to S15.17.

[0228] Step S15.15: Install the LoadFile protocol for empty network card 0 to generate PXE0 boot options;

[0229] Step S15.16: Install the LoadFile protocol for the network card n to generate PXEn boot options;

[0230] Step S15.17: Generate other boot options, sort the boot options, etc.;

[0231] Step S15.18: Set the BDS phase end flag;

[0232] Step S15.19: Is the SETUP flag set in ipmitool? If yes, proceed to S15.21; otherwise, proceed to S15.20.

[0233] Step S15.20: Is there a hotkey pressed indicator? If yes, proceed to S15.21; if no, proceed to S15.23.

[0234] Step S15.21: Initialize the serial port device, load and connect the serial port driver;

[0235] Step S15.22: Enter SETUP;

[0236] Step S15.23: Does network card 0-network card n exist? If yes, jump to S15.24; if no, jump to S15.32.

[0237] Step S15.24: Load the driver for network card 0;

[0238] Step S15.25: Load the network protocol stack of network card 0;

[0239] Step S15.26: Load PXE 0 boot options;

[0240] Step S15.27: Was loading successful? If yes, proceed to S15.41; if no, proceed to S15.28.

[0241] Step S15.28: Load the driver for network card n;

[0242] Step S15.29: Load the network protocol stack of network card n;

[0243] Step S15.30: Load PXE n boot options;

[0244] Step S15.31: Was loading successful? If yes, proceed to S15.41; if no, proceed to S15.24.

[0245] Step S15.32: Load HDD 0 boot option;

[0246] Step S15.33: Was loading successful? If yes, proceed to S15.41; if no, proceed to S15.34.

[0247] Step S15.34 Load HDDn boot options;

[0248] Step S15.35: Was loading successful? If yes, proceed to S15.41; if no, proceed to S15.36.

[0249] Step S15.36: Load CD-ROM boot options;

[0250] Step S15.37: Was loading successful? If yes, proceed to S15.41; if no, proceed to S15.38.

[0251] Step S15.38: Load the USB boot option;

[0252] Step S15.39: Was loading successful? If yes, proceed to S15.41; if no, proceed to S15.40.

[0253] Step S15.40: Prompt a startup failure message and stop;

[0254] Step S15.41: Enter OS.

[0255] This application also provides a startup device for a server's basic input / output system. It should be noted that the startup device for the server's basic input / output system in this application can be used to execute the startup method for the server's basic input / output system provided in this application. This device is used to implement the above embodiments and preferred embodiments; details already described will not be repeated. As used below, the term "module" can refer to a combination of software and / or hardware that performs a predetermined function. Although the device described in the following embodiments is preferably implemented in software, hardware implementation, or a combination of software and hardware, is also possible and contemplated.

[0256] The following describes the startup device of the basic input / output system of the server provided in the embodiments of this application.

[0257] Figure 16 This is a schematic diagram of the startup device of the basic input / output system of a server according to an embodiment of this application. Figure 16As shown, the device includes a scanning unit 10, a loading unit 20, a determining unit 30, and a starting unit 40. The scanning unit 10 scans and initializes the server's input / output devices, which are devices used to enable interaction between the server and users or external systems. These input / output devices are non-serial port devices, meaning devices not connected via a serial communication interface. The loading unit 20 loads the server's system device drivers, which include drivers for the server's hardware devices, software systems, and hard disk interfaces. The determining unit 30 determines the boot priority of the server's hard disk and network interface card (NIC), and starts either the hard disk or the NIC based on these priorities. The starting unit 40 starts the server's basic input / output system based at least on the started hard disk or NIC, the input / output devices, and the system device drivers.

[0258] This application discloses a startup device for a server's basic input / output system, comprising a scanning unit, a loading unit, a determining unit, and a startup unit. The scanning unit scans and initializes the server's input / output devices, which are devices used to enable interaction between the server and users or external systems. These input / output devices are non-serial port devices, meaning devices not connected via a serial communication interface. The loading unit loads the server's system device drivers, which include drivers for the server's hardware devices, software systems, and hard drive interfaces. The determining unit determines the startup priority of the server's hard drive and network interface card (NIC), and starts either the hard drive or NIC based on these priorities. The startup unit starts the server's basic input / output system based on at least the started hard drive or NIC, the input / output devices, and the system device drivers. This device achieves the technical effect of reducing development and testing workload and startup time while ensuring the normal operation of existing functions. It solves the technical problems of existing BIOS startup processes not only affecting the normal operation of existing functions but also resulting in a huge development and testing workload and long startup time.

[0259] In some embodiments, the boot unit includes a first loading module and a second loading module. Based on the boot priority of the hard drive and the network card, it boots either the hard drive or the network card. The first loading module, when the hard drive's boot priority is higher than the network card's, executes a first loading step to load the hard drive's boot options. If the hard drive's boot options are successfully loaded, the hard drive is determined to boot. If the hard drive's boot options fail to load, a second loading step is executed to load the network card's driver data. The second loading module, when the network card's boot priority is higher than the hard drive's, executes a second loading step to load the network card's driver data. If the network card's driver data is successfully loaded, the network card is determined to boot. If the network card's driver fails to load, the first loading step is executed to load the hard drive's boot options. This effectively reduces unnecessary driver loading processes, improves boot speed, and also ensures boot flexibility and system stability.

[0260] In some embodiments, there are multiple hard drives, and the first loading module also includes a third loading module. The third loading module is used to load the boot options of multiple hard drives in sequence until the boot option of a certain hard drive is successfully loaded. This not only simplifies the boot process, but also significantly shortens the time from server power-on to the completion of operating system loading.

[0261] In some embodiments, there are multiple network interface cards (NICs). The second loading module further includes a first determining module and a fourth loading module. The first determining module is used to determine whether multiple NICs exist. The fourth loading module is used to load the driver data of multiple NICs sequentially when multiple NICs exist, until the driver data of a certain NIC is successfully loaded. The driver data includes the NIC driver program, the NIC's network protocol stack, and the startup options of the NIC's pre-boot execution environment protocol, which can ensure that the server starts up quickly without affecting the support for network startup options.

[0262] In some embodiments, the fourth loading module further includes a fifth loading module, a first boot module, and a second boot module, which sequentially load driver data for multiple network cards. The fifth loading module is used to sequentially load the network card's driver program and network protocol stack; the first boot module is used to install the network card's loading file protocol, which is used to generate boot options for the network card's pre-boot execution environment protocol; and the second boot module is used to load the network card's pre-boot execution environment protocol boot options according to the loading file protocol. This reduces the burden on the BIOS during the initial boot process while ensuring the normal activation of the network boot function.

[0263] In some embodiments, the first loading module further includes a second determining module, a third determining module, and a fourth determining module. Based on the boot priority of the hard drive and the network card, the hard drive or network card is started. The second determining module is used to load the boot option of the optical disc read-only memory (ODM) if both the hard drive boot option and the network card driver data fail to load. If the ODM boot option loads successfully, it determines the server's basic input / output system (BIP) based on the bootable hard drive or network card, input / output devices, and system device drivers. The third determining module is used to load the Universal Serial Bus (USB) boot option if the ODM boot option fails to load. If the USB boot option loads successfully, it determines the server's BIP based on the bootable hard drive or network card, input / output devices, and system device drivers. The fourth determining module is used to determine that the server's BIP system has failed to start if the USB boot option fails to load. The application of a dynamic loading strategy enables the system to intelligently adjust the loading order and timing of drivers according to current boot requirements, minimizing boot time while ensuring the rational utilization of hardware resources.

[0264] In some embodiments, the apparatus further includes a fifth loading module, a fifth determining module, a sixth determining module, a third startup module, and a seventh determining module. After determining the startup priority of the server's hard drive and the server's network card, and before starting the hard drive or network card according to their startup priorities, the fifth loading module generates startup options for storage devices other than the hard drive and network card, wherein the storage devices are used to start the server's basic input / output system. The fifth determining module sets a startup end flag for the basic input / output system, which indicates the end of the basic input / output system startup. The sixth determining module determines whether a human-machine interaction flag exists in the intelligent platform management interface and whether a human-machine interaction request has been received. The third startup module initializes the serial port device and loads and connects the serial port driver to enter the human-machine interface when a human-machine interaction flag exists or a human-machine interaction request has been received. The seventh determining module determines whether to start the hard drive or network card according to their startup priorities when no human-machine interaction flag exists and no human-machine interaction request has been received. This reduces unnecessary startup processes, significantly shortens BIOS startup time, and improves server startup efficiency.

[0265] In some embodiments, the scanning unit further includes a first scanning module, a sixth loading module, a seventh loading module, a fourth startup module, a fifth startup module, and an eighth determining module. The first scanning module is used to scan and initialize peripheral component interconnect devices; the sixth loading module is used to initialize video graphics array devices, load and connect the driver for the video graphics array devices; the seventh loading module is used to initialize the Universal Serial Bus (USB) and USB devices, load and connect the USB driver; the fourth startup module is used to initialize console devices and activate input / output devices required for user interaction; the fifth startup module is used to create a timer for the server and a keyboard input detection callback function. The timer is used to wake up the server at a preset time, and the keyboard input detection callback function is used to process information input by the user via the keyboard; the eighth determining module is used to obtain information about the server's central processing unit, memory, and hard disk. This not only reduces redundant operations during the BIOS startup process but also maintains the server's flexibility and stability under different startup strategies.

[0266] In some embodiments, the server's system device drivers include drivers for PCIe cards (excluding network cards), SATA interface drivers, NVMe interface hard drive drivers, and file system drivers. By streamlining the boot process, boot time is reduced without affecting the final boot functionality and user experience.

[0267] As an alternative implementation, this application also provides a server whose basic input / output system is started using any of the server's basic input / output system startup methods.

[0268] Through the above description of the embodiments, those skilled in the art can clearly understand that the methods according to the above embodiments can be implemented by means of software plus necessary general-purpose hardware platforms. Of course, they can also be implemented by hardware, but in many cases the former is a better implementation method.

[0269] Those skilled in the art will further recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of both. To clearly illustrate the interchangeability of hardware and software, the components and steps of the various examples have been generally described in terms of functionality in the foregoing description. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0270] The above provides a detailed description of the startup method and server of a basic input / output system for a server provided in this application. Specific examples have been used to illustrate the principles and implementation methods of this application. The descriptions of the embodiments above are only intended to help understand the method and core ideas of this application. It should be noted that those skilled in the art can make various improvements and modifications to this application without departing from its principles, and these improvements and modifications also fall within the protection scope of the claims of this application.

Claims

1. A method for starting a server's basic input / output system, characterized in that, include: Scan and initialize the server's input / output devices, which are devices used to implement the interaction function between the server and the user or external system. The input / output devices are non-serial port devices, which are devices that are not connected using a serial communication interface. Load the system device drivers for the server, which include drivers for the server's hardware devices, drivers for the server's software system, and drivers for the server's hard disk interface. Determine the boot priority of the server's hard drive and the boot priority of the server's network card, and boot the hard drive or the network card according to the boot priority of the hard drive and the boot priority of the network card; The server's basic input / output system is started at least based on the hard disk that is started or the network card, the input / output device, and the system device driver that are started.

2. The startup method of the basic input / output system according to claim 1, characterized in that, Based on the boot priority of the hard drive and the boot priority of the network card, booting the hard drive or the network card includes: If the boot priority of the hard disk is higher than that of the network card, a first loading step is executed to load the boot options of the hard disk. If the boot options of the hard disk are successfully loaded, the hard disk is determined to be started. If the boot options of the hard disk fail to be loaded, a second loading step is executed to load the driver data of the network card. If the network card's boot priority is higher than the hard disk's boot priority, the second loading step is executed to load the network card's driver data. If the network card's driver data is successfully loaded, the network card is determined to be started. If the network card's driver fails to load, the first loading step is executed to load the hard disk's boot options.

3. The startup method of the basic input / output system according to claim 2, characterized in that, There are multiple hard drives, and the first loading step includes: The boot options of multiple hard drives are loaded sequentially until the boot option of one of the hard drives is successfully loaded.

4. The startup method of the basic input / output system according to claim 2, characterized in that, There are multiple network cards, and the second loading step includes: Determine if multiple network interface cards (NICs) exist; In the presence of multiple network cards, the driver data of multiple network cards is loaded sequentially until the driver data of one network card is successfully loaded. The driver data includes the driver program of the network card, the network protocol stack of the network card, and the boot options of the pre-boot execution environment protocol of the network card.

5. The startup method of the basic input / output system according to claim 4, characterized in that, The driver data for multiple network cards is loaded sequentially, including: The driver program for the network card and the network protocol stack of the network card are loaded sequentially; Install the load file protocol of the network card, which is used to generate the boot options of the network card's pre-boot execution environment protocol; The boot options of the pre-boot execution environment protocol of the network card are loaded according to the loading file protocol.

6. The startup method of the basic input / output system according to claim 2, characterized in that, Based on the boot priority of the hard drive and the boot priority of the network card, booting the hard drive or the network card includes: If both the hard drive's boot options and the network card's driver data fail to load, the optical disc read-only memory's boot options are loaded. If the optical disc read-only memory's boot options are successfully loaded, the server's basic input / output system is started based on the booted hard drive or the booted network card, the input / output device, and the system device driver. If the boot option of the optical disc read-only memory fails to load, the boot option of the Universal Serial Bus (USB) is loaded. If the boot option of the USB is successfully loaded, the server's basic input / output system is started based on the hard disk to be started or the network card, the input / output device, and the system device driver. If the boot options for the Universal Serial Bus fail to load, it is determined that the server's Basic Input / Output System (BIOS) has failed to boot.

7. The startup method of the basic input / output system according to claim 1, characterized in that, After determining the boot priority of the server's hard drive and the boot priority of the server's network interface card (NIC), and before booting the hard drive or the NIC according to their boot priorities, the method further includes: Generate boot options for storage devices other than the hard disk and the network card, wherein the storage devices are used to boot the server's basic input / output system; Set a startup end flag for the basic input / output system, wherein the startup end flag indicates that the basic input / output system has finished starting; Determine whether the intelligent platform management interface has a human-computer interaction identifier and whether a human-computer interaction request has been received; If the human-computer interaction identifier is present or the human-computer interaction request is received, initialize the serial port device and load and connect the serial port driver to enter the human-computer interaction interface. If the human-computer interaction identifier is not present and the human-computer interaction request is not received, determine whether to start the hard drive or the network card based on the boot priority of the hard drive and the boot priority of the network card.

8. The startup method of the basic input / output system according to claim 1, characterized in that, Scan and initialize the server's input / output devices, including: Scan and initialize peripheral component interconnect devices; Initialize the video graphics array device, load and connect the driver for the video graphics array device; Initialize the Universal Serial Bus (USB) and USB devices, and load and connect the USB driver. Initialize the console device and activate the input / output devices required for user interaction; Create a timer for the server and a keyboard input detection callback function. The timer is used to wake up the server at a preset time, and the keyboard input detection callback function is used to process information entered by the user via the keyboard. Obtain information about the server's central processing unit, memory, and hard disk.

9. The startup method of the basic input / output system according to claim 1, characterized in that, The server's system device drivers include drivers for PCIe cards (excluding the network card), SATA interface drivers, NVMe interface hard drive drivers, and file system drivers.

10. A server, characterized in that, The server's basic input / output system is started using the startup method of the server's basic input / output system as described in any one of claims 1 to 9.