A power-on self-test (POST) is a set of routines performed by firmware or software immediately after a computer is powered on, to determine if the hardware is working as expected. The process would proceed further only if the required hardware is working correctly, else the BIOS(Basic Input Output Software) would issue an error message. POST sequence is executed irrespective of the Operating System and is handled by the system BIOS. Once the tests are passed the POST would generally notify the OS with beeps while the number of beeps can vary from system to system. When POST is successfully finalized, bootstrapping is enabled. Bootstrapping starts the initialization of the OS.
The Role of POST in the Boot Sequence
The boot sequence is the process of starting a computer/system. The boot process is initiated when the power button is pressed, it sends power to the boot-loader in the cache memory. The Boot loader performs POST as a preboot sequence and if everything is working well without any errors the BIOS(Basic Input Output System) is activated which finds and loads the operating system.
Finally the software has to interact with the hardware units to complete the process. To avoid any hardware errors while executing a software program, the pre-boot sequence would test the hardware and initiate the OS if and only if the basic hardware units are functioning as expected. he principal duties of the main BIOS during POST are as follows:
- Find, size, and verify the system main memory.
- Initialize BIOS.
- Identify, organize, and select which devices are available for booting.
- Verify CPU registers.
- Verify the integrity of the BIOS code itself.
- Verify some basic components like DMA, timer, interrupt controller.
- Pass control to other specialized extensions BIOS (if installed).
The checks are performed majorly on:
- Hardware elements like processor, storage devices and memory.
- Basic System Devices like keyboard, and other peripheral devices.
- CPU Registers
- DMA (Direct Memory Access)
- Interrupt controller
Types of Errors encountered during POST
If there are any errors in the POST the system would fail to proceed towards the next steps(boot process) as it would throw a fatal error. The POST sequence is executed irrespective of the Operating System. However, how the POST is handled and the types of errors thrown can be modified by the Vendor as per the system requirements.
The error message could consist of text messages on the console or audio in the form of beeps. Irrespective of the vendor there would be a manual describing the types of errors and the error message mappings to help us troubleshoot. The error messages can vary from a parity error to a faulty motherboard.
Example beep codes for MAC are:
|1||No RAM installed/detected|
|2||Incompatible RAM types|
|3||No good banks|
|4||No good boot images in the boot ROM, or bad sys config block, or both|
|5||Processor is not usable|
Troubleshooting steps to resolve errors
The issues can be seen in different ways based on the hardware that is causing the issue. The system might turn on but could be struck before initiating the boot process without any hint/error message or an error message is being displayed on the screen. Follow the steps below to troubleshoot the issue:
- Analyze when the issue began.
- Check if any hardware was changed from the last time the system functioned properly.
- If there was any new hardware try to remove and check to isolate the issue.
- Remove/Disconnect any disks, USB’s and restart the system to check if anything changes.
- Connect a known working power cable to see if the system is powering on successfully.
- If you observe any overheating, check if all the fans are functioning well.
- If you observe any error codes(beep codes, LED indication, Error message on screen) Follow the manual to resolve the issue.
- PPP Full Form
- Node.js URLsearchParams API
- Difference between process.nextTick() and setImmediate() Methods
- Node.js Child Process
- How to get the value in an input text box using jQuery ?
- Strict Aliasing Rule in C with Examples
- Deadline scheduler in Operating System
- How to set the offset property for ScrollSpy in Bootstrap ?
- How to use bootstrap-select for dropdown ?
- How to use grid-breakpoint class in Bootstrap ?
- Conditional Inference Trees in R Programming
- ISCII Encoding
- How to merge arrays and preserve the keys in PHP ?
- Multi Layered Neural Networks in R Programming