AUTOMATED UPGRADE AND FALLBACK ACROSS MULTIPLE OPERATING SYSTEM INSTANCES

In general, the current subject matter relates to automated upgrade and fallback across multiple operating system (“OS”) instances. In some implementations, automated upgrade and fallback across multiple OS instances can include attempting to boot an OS from a first Basic Input/Output System (BIOS) pre-stored in a first partition of a memory of a communication device in a wireless communication system. The OS can run on the communication device in response to the OS booting successfully from the first BIOS, and the method can further include, in response to the OS not booting successfully from the first BIOS, automatically attempting to boot the OS from a second BIOS pre-stored in a second partition of the memory of the communication device.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to Indian Patent Appl. No. 202241055504 filed Sep. 28, 2022, and entitled “Automated Upgrade and Fallback Across Multiple Operating System Instances,” and incorporates its disclosure herein by reference in its entirety.

TECHNICAL FIELD

In some implementations, the current subject matter relates to telecommunications systems, and in particular, to automated upgrade and fallback across multiple operating system (“OS”) instances, such as for communication devices in wireless communication systems.

BACKGROUND

In today's world, cellular networks provide on-demand communications capabilities to individuals and business entities. Typically, a cellular network is a wireless network that can be distributed over land areas, which are called cells. Each such cell is served by at least one fixed-location transceiver, which is referred to as a cell site or a base station. Each cell can use a different set of frequencies than its neighbor cells in order to avoid interference and provide improved service within each cell. When cells are joined together, they provide radio coverage over a wide geographic area, which enables a large number of mobile telephones, and/or other wireless devices or portable transceivers to communicate with each other and with fixed transceivers and telephones anywhere in the network. Such communications are performed through base stations and are accomplished even if the mobile transceivers are moving through more than one cell during transmission. Major wireless communications providers have deployed such cell sites throughout the world, thereby allowing communications mobile phones and mobile computing devices to be connected to the public switched telephone network and public Internet.

A mobile telephone is a portable telephone that is capable of receiving and/or making telephone and/or data calls through a cell site or a transmitting tower by using radio waves to transfer signals to and from the mobile telephone. In view of a large number of mobile telephone users, current mobile telephone networks provide a limited and shared resource. In that regard, cell sites and handsets can change frequency and use low power transmitters to allow simultaneous usage of the networks by many callers with less interference. Coverage by a cell site can depend on a particular geographical location and/or a number of users that can potentially use the network. For example, in a city, a cell site can have a range of up to approximately ½ mile; in rural areas, the range can be as much as 5 miles; and in some areas, a user can receive signals from a cell site 25 miles away.

The following are examples of some of the digital cellular technologies that are in use by the communications providers: Global System for Mobile Communications (“GSM”), General Packet Radio Service (“GPRS”), cdmaOne, CDMA2000, Evolution-Data Optimized (“EV-DO”), Enhanced Data Rates for GSM Evolution (“EDGE”), Universal Mobile Telecommunications System (“UMTS”), Digital Enhanced Cordless Telecommunications (“DECT”), Digital AMPS (“IS-136/TDMA”), and Integrated Digital Enhanced Network (“iDEN”). The Long Term Evolution, or 4G LTE, which was developed by the Third Generation Partnership Project (“3GPP”) standards body, is a standard for a wireless communication of high-speed data for mobile phones and data terminals. A 5G standard is currently being developed and deployed. 3GPP cellular technologies like LTE and 5G NR are evolutions of earlier generation 3GPP technologies like the GSM/EDGE and UMTS/HSPA digital cellular technologies and allows for increasing capacity and speed by using a different radio interface together with core network improvements.

Cellular networks can be divided into radio access networks and core networks. The radio access network (RAN) can include network functions that can handle radio layer communications processing. The core network can include network functions that can handle higher layer communications, e.g., internet protocol (IP), transport layer and applications layer. In some cases, the RAN functions can be split into baseband unit functions and the radio unit functions, where a radio unit connected to a baseband unit via a fronthaul network, for example, can be responsible for lower layer processing of a radio physical layer while a baseband unit can be responsible for the higher layer radio protocols, e.g., MAC, RLC, etc.

A computer system at a cell, such as a base station and/or components of a base station, runs an operating system (“OS”) to manage its operations including management of its hardware components and software resources. An OS may be installed on the computer system that is used initially when the hardware is deployed at the cell. The OS may, however, experience an error at some point during the computer system's operation that partially or fully impairs operation of the computer system. The computer system may thus be partially or fully non-operational, thereby impairing functionality of the cell site while the computer system experiences downtime. Further, traditionally, a maintenance worker physically visits the cell site to assess the errors and repair the OS, which may include a reinstallation of an OS on the computer system, such as if OS boot failure occurred. Waiting for a maintenance worker to reach the cell site and then address the OS error prolongs the downtime. Some computer systems may allow for remote OS repair or reinstallation, but such remote access of the computer system may not be secure and still requires manual intervention by a maintenance worker.

Additionally, an OS typically requires updating over time to address various issues such as newly located software bugs, provide improved security, and other issues. Traditionally, the computer system at the cell site must be taken offline while the OS updates, thereby impairing functionality of the cell site while the computer system experiences downtime.

SUMMARY

In some implementations, the current subject matter relates to a computer-implemented method. The method can include attempting to boot an operating system (OS) from a first Basic Input/Output System (BIOS) pre-stored in a first partition of a memory of a communication device in a wireless communication system. The OS can run on the communication device in response to the OS booting successfully from the first BIOS, and the method can further include, in response to the OS not booting successfully from the first BIOS, automatically attempting to boot the OS from a second BIOS pre-stored in a second partition of the memory of the communication device.

In some implementations, the current subject matter can include one or more of the following optional features.

In some implementations, the OS can run on the communication device in response to the OS booting successfully from the second BIOS, and the method can further include, in response to the OS not booting successfully from the second BIOS, automatically booting the OS from a third BIOS pre-stored in a third partition of the memory of the communication device. Further, the third BIOS can be pre-stored in the third partition of the memory during manufacturing of the communication device. Further, the first BIOS and the second BIOS can each be configured to be upgraded, and the third BIOS cannot be upgraded.

In some implementations, the method can further include during the running of the OS on the communication device, upgrading the second BIOS, and, in response to the second BIOS successfully upgrading, automatically rebooting the OS from the upgraded second BIOS. Further, the method can further include, after the rebooting and during the running of the OS on the communication device, upgrading the first BIOS, and, in response to the first BIOS successfully upgrading, automatically rebooting the OS from the upgraded first BIOS.

In some implementations, the first BIOS can have been pre-stored in the first partition of the memory during manufacturing of the communication device, the second BIOS can have been pre-stored in the second partition of the memory during manufacturing of the communication device, the second BIOS can be configured to be upgraded during the running of the OS booted successfully from the first BIOS, and the first BIOS can be configured to be upgraded during the running of the OS booted successfully from the second BIOS.

In some implementations, attempting to boot the OS from the first BIOS can include attempting to boot a first bootloader; and the method can further include, in response to the first bootloader boot failing, automatically attempting to boot the OS from the second BIOS, in response to the first bootloader boot succeeding, determining if bootloader booting has been attempted for the communication device more than a predetermined threshold number of times, in response to determining that the bootloader booting has not been attempted for the communication device more than the predetermined threshold number of times, continuing the attempt to boot the OS from the first BIOS, and, in response to determining that the bootloader booting has been attempted for the communication device more than the predetermined threshold number of times, automatically attempting to boot the OS from the second BIOS. Further, the method can further include, after continuing the attempt to boot the OS from the first BIOS, attempting to load a first kernel image of the first BIOS, in response to the first kernel image not successfully loading, triggering a reboot of the OS from the first BIOS, in response to the first kernel image successfully loading, attempting to load a first initrid image of the first BIOS, in response to the first initrid image not successfully loading, triggering a reboot of the OS from the first BIOS, and, in response to the first initrid image successfully loading, continuing the attempt to boot the OS from the first BIOS; and/or attempting to boot the OS from the second BIOS can include attempting to boot a second bootloader, and the method can further include, in response to the second bootloader boot failing, automatically booting the OS from a third BIOS pre-stored in a third partition of the memory of the communication device, in response to the second bootloader boot succeeding, determining if bootloader booting has been attempted more than the predetermined threshold number of times, in response to determining that the bootloader booting has not been attempted more than the predetermined threshold number of times, continuing the attempt to boot the OS from the second BIOS, and, in response to determining that the second bootloader booting has been attempted more than the predetermined threshold number of times, automatically attempting to boot the OS from the third BIOS. Further, the third BIOS can have been pre-stored in the third partition of the memory during manufacturing of the communication device. Further, the first BIOS and the second BIOS can each be configured to be upgraded, and the third BIOS cannot be upgraded.

In some implementations, the communication device can be a distributed unit (DU).

In some implementations, at least one of the attempting and the automatically attempting can be performed by a base station in the wireless communication system. Further, the base station can include at least one of an eNodeB base station, a gNodeB base station, a wireless base station, and any combination thereof.

In some implementations, the wireless communication system can be at least one of a long term evolution communications system, a new radio communications system, and any combination thereof.

DETAILED DESCRIPTION

The current subject matter can provide for systems and methods that can be implemented in wireless communications systems. Such systems can include various wireless communications systems, including 5G New Radio communications systems, long term evolution communication systems, etc.

In general, the current subject matter relates to automated upgrade and fallback across multiple operating system (“OS”) instances.

In some implementations of the current subject matter, a computer system can have multiple instances of an OS installed thereon. The OS instances, also referred to herein as OS partitions, are partitioned from one another in a memory of the computer system. Thus, an error with one of the OS instances may be isolated from and not affect any of the other OS instances. In the event that an instance of the OS being booted is unable to boot successfully, the other OS instances may provide redundancy with one of the other OS instances being automatically booted.

In some implementations of the current subject matter, an OS can be attempted to be booted from a first Basic Input/Output System (“BIOS”) pre-stored in a first partition of a memory of a computer system, e.g., a computer system of a communication device in a wireless communication system such as a long term evolution communications system, a new radio communications system, or other wireless communication system. The OS can run on the communication device in response to the OS booting successfully from the first BIOS. In response to the OS not booting successfully from the first BIOS, the OS can be automatically attempted to be rebooted from a second BIOS pre-stored in a second partition of the memory of the communication device.

In some implementations of the current subject matter, during the running of the OS on the communication device after the OS booted successfully from the first BIOS, the second BIOS can be upgraded. In response to the second BIOS successfully upgrading, the OS can be automatically rebooted from the upgraded second BIOS.

One or more aspects of the current subject matter can be incorporated into transmitter and/or receiver components of base stations (e.g., gNodeBs, eNodeBs, etc.) in such communications systems. The following is a general discussion of long-term evolution communications systems and 5G New Radio communication systems.

I. Long Term Evolution Communications System

FIGS.1a-cand2illustrate an exemplary conventional long-term evolution (“LTE”) communication system100along with its various components. An LTE system or a 4G LTE, as it is commercially known, is governed by a standard for wireless communication of high-speed data for mobile telephones and data terminals. The standard is an evolution of the GSM/EDGE (“Global System for Mobile Communications”/“Enhanced Data rates for GSM Evolution”) as well as UMTS/HSPA (“Universal Mobile Telecommunications System”/“High Speed Packet Access”) network technologies. The standard was developed by the 3GPP (“3rd Generation Partnership Project”).

As shown inFIG.1a, the system100can include an evolved universal terrestrial radio access network (“EUTRAN”)102, an evolved packet core (“EPC”)108, and a packet data network (“PDN”)101, where the EUTRAN102and EPC108provide communication between a user equipment104and the PDN101. The EUTRAN102can include a plurality of evolved node B's (“eNodeB” or “ENODEB” or “enodeb” or “eNB”) or base stations106(a, b, c) (as shown inFIG.1b) that provide communication capabilities to a plurality of user equipment104(a, b, c). The user equipment104can be a mobile telephone, a smartphone, a tablet, a personal computer, a personal digital assistant (“PDA”), a server, a data terminal, and/or any other type of user equipment, and/or any combination thereof. The user equipment104can connect to the EPC108and eventually, the PDN101, via any eNodeB106. Typically, the user equipment104can connect to the nearest, in terms of distance, eNodeB106. In the LTE system100, the EUTRAN102and EPC108work together to provide connectivity, mobility and services for the user equipment104.

FIG.1billustrates further detail of the network100shown inFIG.1a. As stated above, the EUTRAN102includes a plurality of eNodeBs106, also known as cell sites. The eNodeBs106provides radio functions and performs key control functions including scheduling of air link resources or radio resource management, active mode mobility or handover, and admission control for services. The eNodeBs106are responsible for selecting which mobility management entities (MMEs, as shown inFIG.1c) will serve the user equipment104and for protocol features like header compression and encryption. The eNodeBs106that make up an EUTRAN102collaborate with one another for radio resource management and handover.

Communication between the user equipment104and the eNodeB106occurs via an air interface122(also known as “LTE-Uu” interface). As shown inFIG.1b, the air interface122provides communication between user equipment104band the eNodeB106a. The air interface122uses Orthogonal Frequency Division Multiple Access (“OFDMA”) and Single Carrier Frequency Division Multiple Access (“SC-FDMA”), an OFDMA variant, on the downlink and uplink respectively. OFDMA allows use of multiple known antenna techniques, such as, Multiple Input Multiple Output (“MIMO”).

The air interface122uses various protocols, which include a radio resource control (“RRC”) for signaling between the user equipment104and eNodeB106and non-access stratum (“NAS”) for signaling between the user equipment104and MME (as shown inFIG.1c). In addition to signaling, user traffic is transferred between the user equipment104and eNodeB106. Both signaling and traffic in the system100are carried by physical layer (“PHY”) channels.

Multiple eNodeBs106can be interconnected with one another using an X2 interface130(a, b, c). As shown inFIG.1b, X2 interface130aprovides interconnection between eNodeB106aand eNodeB106b; X2 interface130bprovides interconnection between eNodeB106aand eNodeB106c; and X2 interface130cprovides interconnection between eNodeB106band eNodeB106c. The X2 interface can be established between two eNodeBs in order to provide an exchange of signals, which can include a load- or interference-related information as well as handover-related information. The eNodeBs106communicate with the evolved packet core108via an S1 interface124(a, b, c). The S1 interface124can be split into two interfaces: one for the control plane (shown as control plane interface (S1-MME interface)128inFIG.1c) and the other for the user plane (shown as user plane interface (S1-U interface)125inFIG.1c).

The EPC108establishes and enforces Quality of Service (“QoS”) for user services and allows user equipment104to maintain a consistent internet protocol (“IP”) address while moving. It should be noted that each node in the network100has its own IP address. The EPC108is designed to interwork with legacy wireless networks. The EPC108is also designed to separate control plane (i.e., signaling) and user plane (i.e., traffic) in the core network architecture, which allows more flexibility in implementation, and independent scalability of the control and user data functions.

The EPC108architecture is dedicated to packet data and is shown in more detail inFIG.1c. The EPC108includes a serving gateway (S-GW)110, a PDN gateway (P-GW)112, a mobility management entity (“MME”)114, a home subscriber server (“HSS”)116(a subscriber database for the EPC108), and a policy control and charging rules function (“PCRF”)118. Some of these (such as S-GW, P-GW, MME, and HSS) are often combined into nodes according to the manufacturer's implementation.

The S-GW110functions as an IP packet data router and is the user equipment's bearer path anchor in the EPC108. Thus, as the user equipment moves from one eNodeB106to another during mobility operations, the S-GW110remains the same and the bearer path towards the EUTRAN102is switched to talk to the new eNodeB106serving the user equipment104. If the user equipment104moves to the domain of another S-GW110, the MME114will transfer all of the user equipment's bearer paths to the new S-GW. The S-GW110establishes bearer paths for the user equipment to one or more P-GWs112. If downstream data are received for an idle user equipment, the S-GW110buffers the downstream packets and requests the MME114to locate and reestablish the bearer paths to and through the EUTRAN102.

The P-GW112is the gateway between the EPC108(and the user equipment104and the EUTRAN102) and PDN101(shown inFIG.1a). The P-GW112functions as a router for user traffic as well as performs functions on behalf of the user equipment. These include IP address allocation for the user equipment, packet filtering of downstream user traffic to ensure it is placed on the appropriate bearer path, enforcement of downstream QoS, including data rate. Depending upon the services a subscriber is using, there may be multiple user data bearer paths between the user equipment104and P-GW112. The subscriber can use services on PDNs served by different P-GWs, in which case the user equipment has at least one bearer path established to each P-GW112. During handover of the user equipment from one eNodeB to another, if the S-GW110is also changing, the bearer path from the P-GW112is switched to the new S-GW.

The MME114manages user equipment104within the EPC108, including managing subscriber authentication, maintaining a context for authenticated user equipment104, establishing data bearer paths in the network for user traffic, and keeping track of the location of idle mobiles that have not detached from the network. For idle user equipment104that needs to be reconnected to the access network to receive downstream data, the MME114initiates paging to locate the user equipment and re-establishes the bearer paths to and through the EUTRAN102. MME114for a particular user equipment104is selected by the eNodeB106from which the user equipment104initiates system access. The MME is typically part of a collection of MMEs in the EPC108for the purposes of load sharing and redundancy. In the establishment of the user's data bearer paths, the MME114is responsible for selecting the P-GW112and the S-GW110, which will make up the ends of the data path through the EPC108.

The PCRF118is responsible for policy control decision-making, as well as for controlling the flow-based charging functionalities in the policy control enforcement function (“PCEF”), which resides in the P-GW110. The PCRF118provides the QoS authorization (QOS class identifier (“QCI”) and bit rates) that decides how a certain data flow will be treated in the PCEF and ensures that this is in accordance with the user's subscription profile.

As stated above, the IP services119are provided by the PDN101(as shown inFIG.1a).

FIG.1dillustrates an exemplary structure of eNodeB106. The eNodeB106can include at least one remote radio head (“RRH”)132(typically, there can be three RRH132) and a baseband unit (“BBU”)134. The RRH132can be connected to antennas136. The RRH132and the BBU134can be connected using an optical interface that is compliant with common public radio interface (“CPRI”)/enhanced CPRI (“eCPRI”) 142 standard specification either using RRH specific custom control and user plane framing methods or using O-RAN Alliance compliant Control and User plane framing methods. The operation of the eNodeB106can be characterized using the following standard parameters (and specifications): radio frequency band (Band4, Band9, Band17, etc.), bandwidth (5, 10, 15, 20 MHz), access scheme (downlink: OFDMA; uplink: SC-OFDMA), antenna technology (Single user and multi user MIMO; Uplink: Single user and multi user MIMO), number of sectors (6 maximum), maximum transmission rate (downlink: 150 Mb/s; uplink: 50 Mb/s), S1/X2 interface (1000Base-SX, 1000Base-T), and mobile environment (up to 350 km/h). The BBU134can be responsible for digital baseband signal processing, termination of S1 line, termination of X2 line, call processing and monitoring control processing. IP packets that are received from the EPC108(not shown inFIG.1d) can be modulated into digital baseband signals and transmitted to the RRH132. Conversely, the digital baseband signals received from the RRH132can be demodulated into IP packets for transmission to EPC108.

The RRH132can transmit and receive wireless signals using antennas136. The RRH132can convert (using converter (“CONV”)140) digital baseband signals from the BBU134into radio frequency (“RF”) signals and power amplify (using amplifier (“AMP”)138) them for transmission to user equipment104(not shown inFIG.1d). Conversely, the RF signals that are received from user equipment104are amplified (using AMP138) and converted (using CONV140) to digital baseband signals for transmission to the BBU134.

FIG.2illustrates an additional detail of an exemplary eNodeB106. The eNodeB106includes a plurality of layers: LTE layer 1202, LTE layer 2204, and LTE layer 3206. The LTE layer 1 includes a physical layer (“PHY”). The LTE layer 2 includes a medium access control (“MAC”), a radio link control (“RLC”), a packet data convergence protocol (“PDCP”). The LTE layer 3 includes various functions and protocols, including a radio resource control (“RRC”), a dynamic resource allocation, eNodeB measurement configuration and provision, a radio admission control, a connection mobility control, and radio resource management (“RRM”). The RLC protocol is an automatic repeat request (“ARQ”) fragmentation protocol used over a cellular air interface. The RRC protocol handles control plane signaling of LTE layer 3 between the user equipment and the EUTRAN. RRC includes functions for connection establishment and release, broadcast of system information, radio bearer establishment/reconfiguration and release, RRC connection mobility procedures, paging notification and release, and outer loop power control. The PDCP performs IP header compression and decompression, transfer of user data and maintenance of sequence numbers for Radio Bearers. The BBU134, shown inFIG.1d, can include LTE layers L1-L3.

One of the primary functions of the eNodeB106is radio resource management, which includes scheduling of both uplink and downlink air interface resources for user equipment104, control of bearer resources, and admission control. The eNodeB106, as an agent for the EPC108, is responsible for the transfer of paging messages that are used to locate mobiles when they are idle. The eNodeB106also communicates common control channel information over the air, header compression, encryption and decryption of the user data sent over the air, and establishing handover reporting and triggering criteria. As stated above, the eNodeB106can collaborate with other eNodeB106over the X2 interface for the purposes of handover and interference management. The eNodeBs106communicate with the EPC's MME via the S1-MME interface and to the S-GW with the S1-U interface. Further, the eNodeB106exchanges user data with the S-GW over the S1-U interface. The eNodeB106and the EPC108have a many-to-many relationship to support load sharing and redundancy among MMEs and S-GWs. The eNodeB106selects an MME from a group of MMEs so the load can be shared by multiple MMEs to avoid congestion.

II. 5G NR Wireless Communications Networks

In some implementations, the current subject matter relates to a 5G new radio (“NR”) communications system. The 5G NR is a next telecommunications standard beyond the 4G/IMT-Advanced standards. 5G networks offer at higher capacity than current 4G, allow higher number of mobile broadband users per area unit, and allow consumption of higher and/or unlimited data quantities in gigabyte per month and user. This can allow users to stream high-definition media many hours per day using mobile devices, even when it is not possible to do so with Wi-Fi networks. 5G networks have an improved support of device-to-device communication, lower cost, lower latency than 4G equipment and lower battery consumption, etc. Such networks have data rates of tens of megabits per second for a large number of users, data rates of 100 Mb/s for metropolitan areas, 1 Gb/s simultaneously to users within a confined area (e.g., office floor), a large number of simultaneous connections for wireless sensor networks, an enhanced spectral efficiency, improved coverage, enhanced signaling efficiency, 1-10 ms latency, reduced latency compared to existing systems.

FIG.3illustrates an exemplary virtual radio access network300. The network300can provide communications between various components, including a base station (e.g., eNodeB, gNodeB)301, a radio equipment, a centralized unit302, a digital unit304, and a radio device306. The components in the system300can be communicatively coupled to a core using a backhaul link305. A centralized unit (“CU”)302can be communicatively coupled to a distributed unit (“DU”)304using a midhaul connection308. The radio frequency (“RU”) components306can be communicatively coupled to the DU304using a fronthaul connection310.

In some implementations, the CU302can provide intelligent communication capabilities to one or more DU units304. The units302,304can include one or more base stations, macro base stations, micro base stations, remote radio heads, etc. and/or any combination thereof.

In lower layer split architecture environment, a CPRI bandwidth requirement for NR can be 100s of Gb/s. CPRI compression can be implemented in the DU and RU (as shown inFIG.3). In 5G communications systems, compressed CPRI over Ethernet frame is referred to as eCPRI and is the recommended fronthaul network. The architecture can allow for standardization of fronthaul/midhaul, which can include a higher layer split (e.g., Option 2 or Option 3-1 (Upper/Lower RLC split architecture)) and fronthaul with L1-split architecture (Option 7).

In some implementations, the lower layer-split architecture (e.g., Option 7) can include a receiver in the uplink, joint processing across multiple transmission points (TPs) for both DL/UL, and transport bandwidth and latency requirements for ease of deployment. Further, the current subject matter's lower layer-split architecture can include a split between cell-level and user-level processing, which can include cell-level processing in remote unit (“RU”) and user-level processing in DU. Further, using the current subject matter's lower layer-split architecture, frequency-domain samples can be transported via Ethernet fronthaul, where the frequency-domain samples can be compressed for reduced fronthaul bandwidth.

FIG.4illustrates an exemplary communications system400that can implement a 5G technology and can provide its users with use of higher frequency bands (e.g., greater than 10 GHz). The system400can include a macro cell402and small cells404,406.

A mobile device408can be configured to communicate with one or more of the small cells404,406. The system400can allow splitting of control planes (C-plane) and user planes (U-plane) between the macro cell402and small cells404,406, where the C-plane and U-plane are utilizing different frequency bands. In particular, the small cells404,406can be configured to utilize higher frequency bands when communicating with the mobile device408. The macro cell402can utilize existing cellular bands for C-plane communications. The mobile device408can be communicatively coupled via U-plane412, where the small cell (e.g., small cell406) can provide higher data rate and more flexible/cost/energy efficient operations. The macro cell402, via C-plane410, can maintain good connectivity and mobility. Further, in some cases, LTE and NR can be transmitted on the same frequency.

FIG.5aillustrates an exemplary 5G wireless communication system500, according to some implementations of the current subject matter. The system500can be configured to have a lower layer split architecture in accordance with Option 7-2. The system500can include a core network502(e.g., 5G Core) and one or more gNodeBs (or gNBs), where the gNBs can have a centralized unit gNB-CU. The gNB-CU can be logically split into control plane portion, gNB-CU-CP,504and one or more user plane portions, gNB-CU-UP,506. The control plane portion504and the user plane portion506can be configured to be communicatively coupled using an E1 communication interface514(as specified in the 3GPP Standard). The control plane portion504can be configured to be responsible for execution of the RRC and PDCP protocols of the radio stack.

The control plane and user plane portions504,506of the centralized unit of the gNB can be configured to be communicatively coupled to one or more distributed units (DU)508,510, in accordance with the higher layer split architecture. The distributed units508,510can be configured to execute RLC, MAC and upper part of PHY layers protocols of the radio stack. The control plane portion504can be configured to be communicatively coupled to the distributed units508,510using F1-C communication interfaces516, and the user plane portions506can be configured to be communicatively coupled to the distributed units508,510using F1-U communication interfaces518. The distributed units508,510can be coupled to one or more remote radio units (RU)512via a fronthaul network520(which may include one or switches, links, etc.), which in turn communicate with one or more user equipment (not shown inFIG.5a). The remote radio units512can be configured to execute a lower part of the PHY layer protocols as well as provide antenna capabilities to the remote units for communication with user equipments (similar to the discussion above in connection withFIGS.1a-2).

FIG.5billustrates an exemplary layer architecture530of the split gNB. The architecture530can be implemented in the communications system500shown inFIG.5a, which can be configured as a virtualized disaggregated radio access network (RAN) architecture, whereby layers L1, L2, L3 and radio processing can be virtualized and disaggregated in the centralized unit(s), distributed unit(s) and radio unit(s). As shown inFIG.5b, the gNB-DU508can be communicatively coupled to the gNB-CU-CP control plane portion504(also shown inFIG.5a) and gNB-CU-UP user plane portion506. Each of components504,506,508can be configured to include one or more layers.

The gNB-DU508can include RLC, MAC, and PHY layers as well as various communications sublayers. These can include an F1 application protocol (F1-AP) sublayer, a GPRS tunneling protocol (GTPU) sublayer, a stream control transmission protocol (SCTP) sublayer, a user datagram protocol (UDP) sublayer and an internet protocol (IP) sublayer. As stated above, the distributed unit508may be communicatively coupled to the control plane portion504of the centralized unit, which may also include F1-AP, SCTP, and IP sublayers as well as radio resource control, and PDCP-control (PDCP-C) sublayers. Moreover, the distributed unit508may also be communicatively coupled to the user plane portion506of the centralized unit of the gNB. The user plane portion506may include service data adaptation protocol (SDAP), PDCP-user (PDCP-U), GTPU, UDP and IP sublayers.

FIG.5cillustrates an exemplary functional split in the gNB architecture shown inFIGS.5a-b. As shown inFIG.5c, the gNB-DU508may be communicatively coupled to the gNB-CU-CP504and GNB-CU-UP506using an F1-C communication interface. The gNB-CU-CP504and GNB-CU-UP506may be communicatively coupled using an E1 communication interface. The higher part of the PHY layer (or Layer 1) may be executed by the gNB-DU508, whereas the lower parts of the PHY layer may be executed by the RUs (not shown inFIG.5c). As shown inFIG.5c, the RRC and PDCP-C portions may be executed by the control plane portion504, and the SDAP and PDCP-U portions may be executed by the user plane portion506.

Some of the functions of the PHY layer in 5G communications network can include error detection on the transport channel and indication to higher layers, FEC encoding/decoding of the transport channel, hybrid ARQ soft-combining, rate matching of the coded transport channel to physical channels, mapping of the coded transport channel onto physical channels, power weighting of physical channels, modulation and demodulation of physical channels, frequency and time synchronization, radio characteristics measurements and indication to higher layers, MIMO antenna processing, digital and analog beamforming, RF processing, as well as other functions.

The MAC sublayer of Layer 2 can perform beam management, random access procedure, mapping between logical channels and transport channels, concatenation of multiple MAC service data units (SDUs) belonging to one logical channel into transport block (TB), multiplexing/demultiplexing of SDUs belonging to logical channels into/from TBs delivered to/from the physical layer on transport channels, scheduling information reporting, error correction through HARQ, priority handling between logical channels of one UE, priority handling between UEs by means of dynamic scheduling, transport format selection, and other functions. The RLC sublayer's functions can include transfer of upper layer packet data units (PDUs), error correction through ARQ, reordering of data PDUs, duplicate and protocol error detection, re-establishment, etc. The PDCP sublayer can be responsible for transfer of user data, various functions during re-establishment procedures, retransmission of SDUs, SDU discard in the uplink, transfer of control plane data, and others.

Layer 3's RRC sublayer can perform broadcasting of system information to NAS and AS, establishment, maintenance and release of RRC connection, security, establishment, configuration, maintenance and release of point-point radio bearers, mobility functions, reporting, and other functions.

III. Automated Upgrade And Fallback Across Multiple Operating System Instances

In some implementations of the current subject matter, a computer system (e.g., a computer system at a base station (e.g., gNodeB or gNB, eNodeB or eNB, ng-eNodeB or ng-eNB), such as those shown in and discussed above with regard toFIGS.1a-5c, a commercial-off-the-shelf (COTS) server, etc.) can have multiple instances of an OS installed thereon. One of the OS instances may boot and run at a time. In the event that the instance of the OS being booted is unable to boot successfully, the other OS instances may provide redundancy with one of the other OS instances being automatically booted. The computer system may thus be booted and have OS functionality despite the computer system experiencing an OS boot failure. Human error may also be avoided. Further, the OS may be booted without requiring manual intervention, locally or remotely, to address the boot failure experienced by one of the OS instances. An OS may be unable to boot successfully for any of a variety of reasons, such as an error in installation of the OS on the computer system that prevents initial booting of the OS, a failure of the OS's bootloader during the boot process, a failure in loading the OS's kernal image during the boot process, a failure in loading the OS's initial RAM disk (“initrd”) during the boot process, occurrence of kernal panic, or occurrence of a kernal failure or critical failure that prevents successful booting.

The OS instances, also referred to herein as OS partitions, are partitioned from one another in a memory of the computer system. Thus, an error with one of the OS instances, e.g., an error in installation, an error that occurs during the boot process, an error that occurs during running of the OS, an error that occurs during upgrading or as a result of upgrading an OS, etc., may be isolated from and not affect any of the other OS instances. Only one of the OS instances is configured to be booted and run at a time such that each of the OS instances is configured to provide complete OS functionality to the computer system. The OS instances may thus provide redundancy to reduce or avoid computer system downtime since regardless of which OS instance is booted, the computer system may be functional. Reducing or avoiding downtime may reduce the loss of revenue and degradation of key performance indicators (“KPIs”) (accessibility) for the computer system's operator. When the computer system is a device in a wireless communications network, avoiding downtime may allow a cell site at which the computer system is located to remain fully functional and properly handle cell traffic as needed.

Each OS instance (other than a golden OS instance) can be configured to be upgraded independently from all the other OS instances. One of the OS instances may be a golden OS instance installed during manufacturing that cannot be upgraded, which may help ensure that the computer system always has a bootable OS available. Independent OS instance upgrading may help prevent any error that occurs with the OS instance being upgraded during or as a result of the upgrade from affecting any other OS instance. Independent OS instance upgrading may allow an OS instance to be upgraded without the computer system experiencing any downtime during the upgrade since the OS booted from another OS instance may be running during the upgrade.

Once an upgrade is successfully installed on an OS partition, the computer system can be configured to automatically reboot from the upgraded OS partition. The automatic rebooting may allow the upgrade to take effect as soon as possible, and thus more quickly achieve benefits of the upgrade, and without needing a person to manually cause the reboot, which may delay use of the upgrade at the computer system. The computer system experiences downtime during this reboot, but the downtime is significantly less than would be experienced if the computer system was down or in maintenance mode during the upgrade and if the computer system cannot successfully boot the upgraded OS (since the OS may be booted from one of the other partitions). Should the instance of the newly upgraded OS being booted be unable to boot successfully, the other OS instances may provide redundancy with one of the OS instances being automatically booted instead, as discussed herein.

In response to an OS instance being unable to boot successfully or unable to be upgraded successfully, a notification may be automatically generated and transmitted to an operations facility and/or an operations manager responsible for maintaining the computer system to provide notification of the boot failure or upgrade failure. The OS instance that failed to boot successfully or upgrade successfully may thus be assessed and repaired as needed, remotely and/or locally, such as by the operations manager who receives the notification or another maintenance worker who receives the notification directly or is otherwise informed of the need for assessment and/or repair as a result of the notification being transmitted to the operations facility and/or the operations manager. Such assessment and repair may not require any downtime of the computer system since another OS instance may be running to maintain functionality of the computer system despite an OS instance being unable to boot successfully or be upgraded successfully.

FIG.6illustrates one implementation of a computer system600according to some implementations of the current subject matter. The computer system600can be for a communication device (e.g., a base station (e.g., gNodeB or gNB, eNodeB or eNB, ng-eNodeB or ng-eNB), such as those shown in and discussed above with regard toFIGS.1a-5c) configured to be used in a wireless communication network, a COTS server, or other device.

The computer system600includes a first memory602that includes a plurality of OS partitions604(a first partition604a, a second partition604b, and a third partition604c) and a second memory606that includes a plurality of OS partitions608(a first partition608a, a second partition608b, and a third partition608c). Each of the first memory602and the second memory606includes three OS partitions604,608in this illustrated implementation but can include another plurality number of partitions greater than three, e.g., four, five, etc. Having three partitions may allow for, as shown inFIG.6, a first partition for an active OS that is the current OS to be booted or that is running, a second partition for a standby OS that is on standby for booting and running in the event that the active OS cannot be booted, and a third partition for a golden OS installed during manufacturing that is a backup for the active and standby partitions should each of the active and standby partitions be unable to be booted. Having more than three partitions may allow for at least one additional standby OS partition to be provided.

The first and second memories602,606may each include one or more types of memories or storage devices. Each of the first and second memories602,606is a solid state drive (“SSD”) in the illustrated implementation ofFIG.6but can be or includes at least one other type, such as nonvolatile memory express (“NVMe”), a disk device, or other type.

Each of the first and second memories602,606may be associated with a particular component of the computer system600. In other implementations, the computer system600may include only one memory. In still other implementations, the computer system600may include one or more additional memories each associated with a corresponding one or more additional components of the computer system600. For example, in some implementations of the current subject matter, the computer system600can be associated with a base station, the first memory602can be associated with a first DU (e.g., a DU such as the DU304ofFIG.3, the DU508or510ofFIGS.5a-5c, etc.; etc.) of the base station, and the second memory604can be associated with a second DU (e.g., a DU such as the DU304ofFIG.3, the DU508or510ofFIGS.5a-5c, etc.; etc.) of the base station. Any additional DUs of the base station may each be associated with an additional memory that is configured and used similar to the memories602,606discussed herein.

The computer system600may also include, as shown in the implementation ofFIG.6, a processor610, a complex programmable logic device (“CPLD”)612, a first multiplexor (“MUX”)614communicatively coupled with the processor610and the CPLD612, a second MUX616communicatively coupled with the processor610and the CPLD612, a first BIOS618communicatively coupled with the first MUX614(e.g., via a first serial peripheral interface (“SPI”)620), and a second BIOS622communicatively coupled with the second MUX616(e.g., via a second SPI624), the first memory602, and the second memory606. The processor610is an Ice Lake Xeon D (“ICX-D”) (Intel® Xeon® D processor) in this illustrated implementation but can be another type of processor.

As shown in the implementation ofFIG.6, the second BIOS622may include contents stored in a FLASH memory. The contents may include a primary BIOS image626and NVRAM628. As also shown in the implementation ofFIG.6, the first BIOS618may include contents stored in a FLASH memory. The contents may include a golden BIOS image630and NVRAM632. The NVRAM632of the first BIOS618may store a snapshot of the primary BIOS image626at a time of backup, which may help ensure version lock and that the golden OS always remains bootable. The NVRAM628of the second BIOS632may store extensible firmware (EFI) variables that store a first boot order for the first plurality of partitions604a,604b,604cof the first memory604and a second boot order for the second plurality of partitions608a,608b,608cof the second memory606.

Boot order indicates a priority order of the partitions from which the OS should be attempted to be booted. The processor610is configured to cause OS booting according to the boot order, as discussed herein. A first one of the OS partitions in the boot order is considered the active OS and is also referred to herein as the “current partition” to reflect that it is the current partition prioritized for booting or the current partition whose OS is running as having been successfully booted. The active OS is the first OS to be attempted to be booted and therefore, if successfully booted, be the OS actively running. The active OS is also referred A second one of the OS partitions in the boot order is considered the standby OS. The standby OS is the OS to be attempted to be booted in the event of active OS boot failure, as discussed further herein. A third one of the OS partitions in the boot order is the golden OS. The golden partition being last in the boot order generally reflects that one or more of the others of the plurality of partitions may have been upgraded and thus be a more preferable OS to run than the OS of the golden partition.

The plurality of partitions are ordered in a boot order stored in the non-volatile random access memory (NVRAM)628. Over time, the partitions in the boot order may change places as the active and standby partitions change designations, e.g., the standby partition becoming the active partition and the active partition become the standby partition, as discussed further herein. The golden partition always remains the golden partition and always remains last in the boot order.

FIG.6reflects a boot order for the first plurality of partitions604: the first partition604a(labeled as the “Active OS” inFIG.6), the second partition604b(labeled as the “Standby OS” inFIG.6), and the third partition604c(labeled as the “Golden OS” inFIG.6).FIG.6also reflects a boot order for the second plurality of partitions608: the first partition608a(labeled as the “Active OS” inFIG.6), the second partition608b(labeled as the Standby OS inFIG.6), and the third partition608c(labeled as the Golden OS inFIG.6).

It may be possible to override the boot order to force a boot from an OS partition that is not next in the boot order. The override may be performed locally or remotely through manual intervention by a maintenance worker who has authorized access to the computer system600. For example, as shown inFIG.6, in a “Recovery” mode, the golden OS of a plurality of partitions (e.g., the golden partition604cor the golden partition608c) may be forced to be first in the boot order. Since the golden OS is installed during manufacturing and cannot be upgraded, forcing a boot from the golden OS partition may help ensure that an OS is booted, which may be useful in repairing the computer system600, in assessing error(s), etc. Booting of the golden partition (e.g., the golden partition604cor the golden partition608c) may be achieved via a restore operation via the CPLD612, which is configured to copy contents of the golden BIOS image630to the primary BIOS image626to attempt booting using the golden OS.

FIGS.7and8illustrate a changing of boot order over time according to some implementations of the current subject matter.FIGS.7and8illustrate a BIOS700(e.g., the first BIOS618ofFIG.6, etc.) communicatively coupled with a memory702(e.g., the first memory602or the second memory606ofFIG.6, etc.). The BIOS700include contents stored in a FLASH memory, where the contents may include a primary BIOS image704(e.g., the primary BIOS image626ofFIG.6, etc.) and NVRAM706(e.g., the NVRAM628ofFIG.6, etc.). The memory702includes a plurality of OS partitions708(a first partition708a, a second partition708b, and a third partition708c) (e.g., the OS partitions604or the OS partitions608ofFIG.6, etc.). The memory702in this illustrated implantation includes a disk device, an SSD, and NVMe, but as discussed herein, the memory702may include one or more types.

FIG.7reflects a boot order for the plurality of partitions708: the first partition708a(labeled as the “Active OS” inFIG.7), the second partition708b(labeled as the “Standby OS” inFIG.7), and the third partition708c(labeled as the “Golden OS” inFIG.7).FIG.8reflects that the Active and Standby partitions have changed designations, with the boot order now being: the second partition708b(labeled as the “Active OS” inFIG.8), the first partition708a(labeled as the “Standby OS” inFIG.8), and the third partition708c(labeled as the “Golden OS” inFIG.8). The boot order shown inFIG.8reflects that the first partition708afailed to boot and that the second partition708bis to be attempted to be booted instead. The partitions in the boot order may change back to the boot order shown inFIG.7in the event of failure of the second partition708bto boot. The partitions in the boot order may change any number of times during use of the device that includes the BIOS700and the memory702.

FIG.6-8illustrate implementations according to the current subject matter in which a single memory includes multiple OS instances that have a boot order, e.g., the first memory602ofFIG.6including multiple OS partitions604, the second memory606ofFIG.6including multiple OS partitions608, and the memory702ofFIGS.7and8including multiple OS partitions708. In other implementations according to the current subject matter, a plurality of memories may each include a single OS instance where the OS instances collectively have a boot order. In still other implementations according to the current subject matter, a plurality of memories may each include a multiple OS instances where the OS instances collectively have a boot order. In yet other implementations according to the current subject matter, a plurality of memories may be combined in various redundant array of independent (or inexpensive) disks (“RAID”) configurations. The bootable RAID volume would include multiple OS instances.

FIG.9illustrates one implementation of a method900for performing automated fallback across multiple OS instances, according to some implementations of the current subject matter. The method900is described with respect to the implementation ofFIGS.7and8for ease of explanation but can be implemented using another device, such as the device ofFIG.6, etc., and with other configurations of memories and OS instances as discussed above. The method900may be executed by a base station (e.g., one or more base stations106ofFIGS.1b-2, base station301ofFIG.3, etc.) and/or one or more of its components that may incorporate one or more components of a computer system, such as the computer system600ofFIG.6, the computer system ofFIGS.7and8, a computer system1100ofFIG.11, etc.

As shown inFIG.9, the method900may include powering on902the device. The powering on902may trigger a plurality of setup actions904related to OS booting.

The setup actions904may include setting a boot order of the partitions708and storing the boot order in the NVRAM706of the BIOS700, e.g., the processor causing the setting and the storing. The boot order in this implementation is set and stored as shown inFIG.7: the first partition708a(labeled as the “Active OS” inFIG.7), the second partition708b(labeled as the “Standby OS” inFIG.7), and the third partition708c(labeled as the “Golden OS” inFIG.7). The first partition708a, being first in the boot order, is labeled as the “Active OS” inFIG.7. The first partition708a, being first in the boot order, is the current partition. The second partition708b, being second in the boot order, is labeled as the “Standby OS” inFIG.7. The third partition708c, being third and last in the boot order, is labeled as the “Golden OS” inFIG.7.

The setup actions904may also include setting a boot attempt counter to zero, e.g., the processor causing the stored boot attempt counter to be zero. The boot attempt counter may be stored at the BIOS700, e.g., in the NVRAM706, or elsewhere accessible to the BIOS700. The boot attempt counter may be set to zero before or after the boot order is set.

After the boot order has been set, the method900continues by starting OS booting from the current partition with a boot906from a bootloader of the current partition,FIGS.7and8show a first Grand Unified Bootloader (GRUB) bootloader710aof the first partition708a, a GRUB bootloader710bof the second partition708b, and a GRUB bootloader710cof the third partition708c. If the bootloader boot906is unsuccessful, the current partition cannot be booted. Thus, in response to bootloader boot906failure, a next partition in the boot order is set908as the current partition, which in this illustrated implementation is the second partition708b. The method900then continues by booting906the bootloader of the current partition, which is now the second GRUB bootloader710bof the second partition708b. If the bootloader boot906is unsuccessful, the Standby OS cannot be booted. Thus, in response to bootloader boot906failure, a next partition in the boot order is set908as the current partition, which in this illustrated implementation is the third partition708c. The method900then continues by booting906the bootloader of the current partition, which is now the third GRUB bootloader710cof the third partition708c. The Golden OS has thus started to be booted.

If the bootloader boot906of the first GRUB bootloader710ais successful, the current partition can continue attempting to be booted. The method900may thus include increasing910the boot attempt counter by one, e.g., the processor causing the stored boot attempt counter to increase by one.

The method900may include determining912, e.g., the processor determining, whether the boot attempt counter is greater than a threshold. The threshold may reflect a maximum number of times that the current partition may be attempted to be booted before the current partition is deemed to be unbootable such that the next partition in the boot order should be used for OS booting. The value of the threshold may be preset and stored at the BIOS700, e.g., in the NVRAM706, or elsewhere accessible to the BIOS700. The value of the threshold may be chosen based on any of a variety of factors, such as a processing power of the processor, a tolerance for downtime in OS booting, etc.

In response to determining912that the boot attempt counter is greater than the threshold, the method900may include determining914, e.g., the processor determining, whether the current partition is the active partition. If the current partition is determined914to be the active partition, the method900may include changing916partition designations for the boot order so the standby partition becomes the current partition. This change916reflects that booting of the active OS has failed enough times that the standby OS should be attempted to be booted instead. The current partition is set to be the standby partition, the standby partition is designated as the active partition, and the formerly active partition is set as the standby partition. This change in the designations is reflected in the difference betweenFIGS.7and8where the first partition708achanged from being the Active OS to being the Standby OS and the second partition708bchanged from being the Standby OS to being the Active OS.

If the current partition is determined914to not be the active partition, the method900may include changing918partition designations for the boot order so the golden partition becomes the current partition. This change918reflects that booting of the active OS and the standby OS has each failed enough times that the golden OS should be attempted to be booted instead.

After changing916the current partition to the standby partition or changing918the current partition to the golden partition, the method900may include chainloading920to the current partition's bootloader, e.g., the GRUB bootloader710bof the second partition708b(when the current partition was changed916to the standby partition) or the GRUB bootloader710cof the third partition708c(when the current partition was changed918to the golden partition). The method900then continues by booting906the bootloader of the current partition.

In response to determining912that the boot attempt counter is not greater than the threshold, the method900may continue attempting the OS boot by attempting to load the current partition's kernal image. If the kernal image loading is unsuccessful, the current partition cannot be booted. Thus, in response to kernal image loading failure, the method900may include determining914, e.g., the processor determining, whether the current partition is the active partition, as discussed above.

If the kernal image loading is successful, the current partition can continue attempting to be booted by attempting to load the current partition's initrd image. If the initrd image loading is unsuccessful, the current partition cannot be booted. Thus, in response to kernal image loading failure, the method900may include triggering922a reboot of the OS from the current partition, starting with a boot906from a bootloader of the current partition, as discussed above.

If the initrd image loading is successful, the current partition can continue attempting to be booted. If kernal panic occurs as the current partition continues to be booted, the method900may include triggering922a reboot of the OS from the current partition, starting with a boot906from a bootloader of the current partition, as discussed above. If kernal panic does not occur as the current partition continues to be booted, the method900may include performing924OS bringup using the current partition. If kernal failure or a critical failure occurs, the method900may include triggering922a reboot of the OS from the current partition, starting with a boot906from a bootloader of the current partition, as discussed above. If kernal failure or a critical failure does not occur, the method900may include setting926the boot attempt counter to zero and running928the OS, which has booted successfully. The setting926of the boot counter to zero reflects that the OS booted successfully.

FIG.10illustrates one implementation of a method1000for performing automated upgrade across multiple OS instances, according to some implementations of the current subject matter. The method1000is described with respect to the implementation ofFIGS.7and8and the method900of automated fallback ofFIG.9for ease of explanation but can be implemented using another device, such as the device ofFIG.6, etc., and another method of automated fallback.

The method1000is performed while an OS is running on the device, such as after being successfully booted according to the method900ofFIG.9. As shown inFIG.10, the method1000may begin when an OS upgrade is available. In some implementations, OS upgrades may be available on a predetermined time schedule, such as every six months or other time schedule, so as to provide atomic air gapped OS upgrades. In some implementations, OS upgrades may be available without accordance to any time schedule, e.g., OS upgrades are made available on an as-needed basis. In some implementations, some OS upgrades may be available on a predetermined time schedule and OS upgrades may be available without accordance to any time schedule.

In the method1000, an OS upgrade being available may trigger an upgrade1002of the standby partition in the background of the OS running (as booted from the current partition). The upgrade1002may be performed in accordance with the particular OS's requirements. For example, in the configuration ofFIG.7, the upgrade1002may be for the second partition708b. For another example, in the configuration ofFIG.8, the upgrade1002may be for the first partition708a. In implementations in which a device includes a plurality of memories each including a plurality of partitions, each of the device's standby partitions may be upgraded1002. For example, in the configuration ofFIG.6, the upgrade1002may be for the second partition604bof the first memory602and the second partition608bof the second memory606.

In response to the upgrade1002being unsuccessful, the upgrade1002may be attempted again. The upgrade1002may be attempted any number of times. A previously unsuccessful upgrade may be successful if attempted again, such as if the previous attempt(s) were unsuccessful due to a temporary problem, such as network failure or power failure, that has since resolved. In some implementations, the upgrade1002may be attempted only once. In some implementations, the upgrade1002may be attempted any number of times within a predetermined period of time until the upgrade1002is either successful or the predetermined period of time expires, in which case the upgrade1002was unsuccessful. In some implementations, the upgrade1002may be attempted up to a predetermined number of times, with the upgrade1002either being successful or the upgrade1002having been attempted the predetermined number of times without being successful.

In response to the upgrade1002being successful, the method1000may include changing1004partition designations for the boot order so the newly upgraded standby partition becomes the current partition. The current partition is set to be the standby partition, the standby partition is designated as the active partition, and the formerly active partition is set as the standby partition.

After changing1004the partition designations, the method1000may include rebooting1006the OS using the current partition, e.g., the newly upgraded partition. The OS may thus be rebooted automatically in response to a successful OS upgrade, which may allow the device to run on the most current OS available.

In some implementations, the current subject matter can be configured to be implemented in a system1100, as shown inFIG.11. The system1100can include one or more of a processor1110, a memory1120, a storage device1130, and an input/output device1140. Each of the components1110,1120,1130and1140can be interconnected using a system bus1150. The processor1110can be configured to process instructions for execution within the system600. In some implementations, the processor1110can be a single-threaded processor. In alternate implementations, the processor1110can be a multi-threaded processor. The processor1110can be further configured to process instructions stored in the memory1120or on the storage device1130, including receiving or sending information through the input/output device1140. The memory1120can store information within the system1100. In some implementations, the memory1120can be a computer-readable medium. In alternate implementations, the memory1120can be a volatile memory unit. In yet some implementations, the memory1120can be a non-volatile memory unit. The storage device1130can be capable of providing mass storage for the system1100. In some implementations, the storage device1130can be a computer-readable medium. In alternate implementations, the storage device1130can be a floppy disk device, a hard disk device, an optical disk device, a tape device, non-volatile solid state memory, or any other type of storage device. The input/output device1140can be configured to provide input/output operations for the system1100. In some implementations, the input/output device1140can include a keyboard and/or pointing device. In alternate implementations, the input/output device1140can include a display unit for displaying graphical user interfaces.

FIG.12illustrates an exemplary method1200for automated upgrade and fallback across multiple OS instances, according to some implementations of the current subject matter. The method1200may be performed, for example, using implementations shown in and described with respect toFIGS.6-8.

The method1200includes attempting1202to boot an OS from a first BIOS pre-stored in a first partition of a memory (e.g., the first memory602or the second memory606ofFIG.6, the memory702ofFIGS.7and8, the memory1020ofFIG.12, etc.) of a communication device (e.g., a DU such as the DU304ofFIG.3, the DU508or510ofFIGS.5a-5c, etc.; etc.) in a wireless communication system (e.g., a long term evolution communications system, a new radio communications system, etc.). The OS runs on the communication device in response to the OS booting successfully from the first BIOS. The method also includes, in response to the OS not booting successfully from the first BIOS, automatically attempting1204to boot the OS from a second BIOS pre-stored in a second partition of the memory of the communication device.

In some implementations, the current subject matter can include one or more of the following optional features.

In some implementations, the OS can run on the communication device in response to the OS booting successfully from the second BIOS, and the method can further include, in response to the OS not booting successfully from the second BIOS, automatically booting the OS from a third BIOS pre-stored in a third partition of the memory of the communication device. Further, the third BIOS can be pre-stored in the third partition of the memory during manufacturing of the communication device. Further, the first BIOS and the second BIOS can each be configured to be upgraded, and the third BIOS cannot be upgraded.

In some implementations, the method can further include during the running of the OS on the communication device, upgrading the second BIOS, and, in response to the second BIOS successfully upgrading, automatically rebooting the OS from the upgraded second BIOS. Further, the method can further include, after the rebooting and during the running of the OS on the communication device, upgrading the first BIOS, and, in response to the first BIOS successfully upgrading, automatically rebooting the OS from the upgraded first BIOS.

In some implementations, the first BIOS can have been pre-stored in the first partition of the memory during manufacturing of the communication device, the second BIOS can have been pre-stored in the second partition of the memory during manufacturing of the communication device, the second BIOS can be configured to be upgraded during the running of the OS booted successfully from the first BIOS, and the first BIOS can be configured to be upgraded during the running of the OS booted successfully from the second BIOS.

In some implementations, attempting to boot the OS from the first BIOS can include attempting to boot a first bootloader; and the method can further include, in response to the first bootloader boot failing, automatically attempting to boot the OS from the second BIOS, in response to the first bootloader boot succeeding, determining if bootloader booting has been attempted for the communication device more than a predetermined threshold number of times, in response to determining that the bootloader booting has not been attempted for the communication device more than the predetermined threshold number of times, continuing the attempt to boot the OS from the first BIOS, and, in response to determining that the bootloader booting has been attempted for the communication device more than the predetermined threshold number of times, automatically attempting to boot the OS from the second BIOS. Further, the method can further include, after continuing the attempt to boot the OS from the first BIOS, attempting to load a first kernel image of the first BIOS, in response to the first kernel image not successfully loading, triggering a reboot of the OS from the first BIOS, in response to the first kernel image successfully loading, attempting to load a first initrid image of the first BIOS, in response to the first initrid image not successfully loading, triggering a reboot of the OS from the first BIOS, and, in response to the first initrid image successfully loading, continuing the attempt to boot the OS from the first BIOS; and/or attempting to boot the OS from the second BIOS can include attempting to boot a second bootloader, and the method can further include, in response to the second bootloader boot failing, automatically booting the OS from a third BIOS pre-stored in a third partition of the memory of the communication device, in response to the second bootloader boot succeeding, determining if bootloader booting has been attempted more than the predetermined threshold number of times, in response to determining that the bootloader booting has not been attempted more than the predetermined threshold number of times, continuing the attempt to boot the OS from the second BIOS, and, in response to determining that the second bootloader booting has been attempted more than the predetermined threshold number of times, automatically attempting to boot the OS from the third BIOS. Further, the third BIOS can have been pre-stored in the third partition of the memory during manufacturing of the communication device. Further, the first BIOS and the second BIOS can each be configured to be upgraded, and the third BIOS cannot be upgraded.

In some implementations, the communication device can be a distributed unit (DU).

In some implementations, at least one of the attempting and the automatically attempting can be performed by a base station in the wireless communication system. Further, the base station can include at least one of an eNodeB base station, a gNodeB base station, a wireless base station, and any combination thereof.

In some implementations, the wireless communication system can be at least one of a long term evolution communications system, a new radio communications system, and any combination thereof.

As used herein, the term “user” can refer to any entity including a person or a computer.