{"id":25017,"date":"2026-10-19T10:29:05","date_gmt":"2026-10-19T10:29:05","guid":{"rendered":"https:\/\/atalnetworks.com\/?p=25017"},"modified":"2026-10-19T10:29:57","modified_gmt":"2026-10-19T10:29:57","slug":"pxe-boot-bare-metal-os-installation","status":"publish","type":"post","link":"https:\/\/atalnetworks.com\/ar\/pxe-boot-bare-metal-os-installation\/","title":{"rendered":"PXE Boot Explained: Automating Bare Metal OS Installs"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">PXE boot lets a server load boot software over a network before an operating system starts. To automate a bare metal OS installation, that boot environment must also start an installer and supply its configuration. PXE provides the starting point. The installer performs the disk changes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This distinction explains why a server can reach a network boot menu but still require manual input. It also explains why a successful installation can start again after a reboot if the deployment system still treats the machine as an installation target.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We need to control the whole path: identify the server, load the correct boot files, apply the intended OS configuration, and return the machine to normal local boot.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What Is PXE Boot, and Where Does Installation Begin?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">PXE stands for <\/span><b>Preboot Execution Environment<\/b><span style=\"font-weight: 400;\">, commonly pronounced \u201cpixie.\u201d It provides a standard way for compatible firmware to start software obtained from a network.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The target does not need a working OS on its local disks. It does need compatible firmware, a supported network interface, and access to the required boot services.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Network boot, OS installation, and first-boot configuration<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">These stages have different jobs:<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Stage<\/b><\/th>\n<th><b>Main task<\/b><\/th>\n<th><b>Result<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">Network boot<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Obtain and run boot software<\/span><\/td>\n<td><span style=\"font-weight: 400;\">An installer or live environment starts<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">OS installation<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Apply the storage layout and install system files<\/span><\/td>\n<td><span style=\"font-weight: 400;\">An OS exists on the intended disk<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">First-boot configuration<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Apply supported initialization settings<\/span><\/td>\n<td><span style=\"font-weight: 400;\">The installed system has its required initial configuration<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Handoff checks<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Check access, networking, and system state<\/span><\/td>\n<td><span style=\"font-weight: 400;\">The server is ready for its agreed next task<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">A PXE boot can also start diagnostics or a rescue environment without installing anything. Network boot alone does not mean that a disk will be erased.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">When PXE fits a bare metal workload<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">PXE is useful when we repeatedly install servers with known configurations. Examples include cluster nodes, development labs, replacement machines, and approved OS rebuilds.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The initial work includes network design, boot-file maintenance, and installer configuration. That investment becomes useful when it replaces repeated manual work across multiple deployments.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For one remote server, virtual media through a management controller may require less setup. For the wider deployment process, see our <\/span><a href=\"https:\/\/atalnetworks.com\/ar\/bare-metal-provisioning\/\"><span style=\"font-weight: 400;\">bare metal provisioning guide<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What Does a PXE Boot Environment Need?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A working environment needs compatible boot software, reachable services, and a clear installation target. Several services can run on one host in a small lab.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Server firmware, network access, and boot files<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Record the target&#8217;s firmware mode and CPU architecture before selecting a boot program. A file intended for legacy BIOS cannot simply replace a UEFI application. An x86-64 EFI application is not an ARM64 boot program.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Also identify the physical NIC and switch network used for installation. A server with several interfaces may attempt network boot through a port that has no access to the boot services.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The main components are:<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Component<\/b><\/th>\n<th><b>Purpose<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">DHCP service<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Supplies network settings to the client<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Boot information service<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Tells the client which boot program to request<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Network boot program<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Starts the next boot stage<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Installer files<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Provide the environment that installs the OS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Installation source<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Supplies the OS content or packages<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Answer file<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Defines supported unattended installation choices<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Deployment record<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Tracks the intended machine, profile, and outcome<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">The deployment record is an operating control. It is not a requirement built into the PXE protocol.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">TFTP, HTTP, and HTTPS<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Traditional PXE commonly uses TFTP to retrieve the initial boot program. Later stages can use other transports, including HTTP or HTTPS, depending on the boot software and installer.<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Service<\/b><\/th>\n<th><b>Typical traffic<\/b><\/th>\n<th><b>Detail to check<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">DHCP over IPv4<\/span><\/td>\n<td><span style=\"font-weight: 400;\">UDP 67 and 68<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Client access and any relay path<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">TFTP<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Initial request to UDP 69<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Transfer uses negotiated UDP ports afterward<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">HTTP<\/span><\/td>\n<td><span style=\"font-weight: 400;\">TCP 80<\/span><\/td>\n<td><span style=\"font-weight: 400;\">File paths and reachability<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">HTTPS<\/span><\/td>\n<td><span style=\"font-weight: 400;\">TCP 443<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Certificate trust in the client that fetches the files<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Deployment-specific PXE service<\/span><\/td>\n<td><span style=\"font-weight: 400;\">May use UDP 4011<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required only for applicable implementations<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">This is a starting point for an IPv4 design, not a universal firewall ruleset. IPv6 boot has separate requirements. Check the selected platform&#8217;s network documentation before applying access rules.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">How Does PXE Boot Work, Step by Step?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The first stages establish network access and load a boot program. Installation begins only after the selected software takes control.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. The server starts network boot<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Firmware selects the network interface and starts its network boot process. We can select it through a boot menu or use a supported one-time boot setting through remote management.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">At this point, check that the intended port has a link and reaches the installation network.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. The client receives network settings and boot information<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The client requests network configuration. It also identifies information relevant to network boot, including its architecture.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The address allocation and boot information can come from the same service or separate services. A proxyDHCP design can provide boot information while an existing DHCP server continues to assign addresses.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. The client loads a compatible boot program<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The boot service directs the machine to an appropriate file. The client downloads it and transfers control to it.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This program may load another bootloader, display a menu, or start an installation environment. A DHCP lease alone does not prove that the correct program was selected.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. The boot program starts the installation environment<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">For a Linux installer, this commonly involves a kernel and an initial RAM filesystem, often named <\/span><span style=\"font-weight: 400;\">initrd<\/span><span style=\"font-weight: 400;\">. The installer may then retrieve more files from a repository or installation image.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Network settings can change at this handoff. Firmware network access does not prove that the installer has a working NIC driver, route, or DNS configuration.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. The installer applies its instructions<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">An unattended configuration supplies choices such as disk layout, packages, hostname, and authorized access. Without the appropriate configuration, the installer may stop for input or use defaults.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This is the stage where storage can be changed. The selected disks must match the approved installation profile.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">6. The system returns to normal boot<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">After installation, the workflow must remove the machine&#8217;s permission to receive another destructive install. The server then starts its installed OS and completes its handoff checks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Treat a second successful local reboot as part of the acceptance check. A working first login does not prove that the next boot will preserve the installation.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">DHCP options, proxyDHCP, and relays<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Options 66 and 67 commonly describe a boot server and boot filename. They are not the only way to deliver boot information. DHCP configuration directives such as <\/span><span style=\"font-weight: 400;\">next-server<\/span><span style=\"font-weight: 400;\"> also have meanings that should be checked against the selected server software.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Across routed networks, broadcasts need suitable relay handling. Microsoft&#8217;s Configuration Manager guidance recommends IP helpers for its supported cross-subnet PXE design. That product guidance should not be treated as the only possible design for every PXE implementation. <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/troubleshoot\/mem\/configmgr\/os-deployment\/boot-from-pxe-server\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Microsoft&#8217;s routed PXE documentation<\/span><\/a><span style=\"font-weight: 400;\"> explains its requirements.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">PXE vs iPXE vs UEFI HTTP Boot<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">These names describe related boot paths and software. They are not three complete OS deployment systems.<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Approach<\/b><\/th>\n<th><b>How it starts<\/b><\/th>\n<th><b>Useful capability<\/b><\/th>\n<th><b>Main check<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">Traditional PXE path<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Firmware obtains and runs a network boot program, commonly through TFTP<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Starts an installer without local media<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Boot-file and firmware compatibility<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">iPXE<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Runs as network boot firmware or a loaded boot program<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Adds scripts, menus, and supported network transports<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Build features, drivers, and trust configuration<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">UEFI HTTP Boot<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Compatible UEFI firmware retrieves a boot application through HTTP Boot support<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Can start a network boot chain without a TFTP first stage<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Firmware support and application compatibility<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span style=\"font-weight: 400;\">What iPXE adds<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">iPXE lets us express boot decisions in scripts. A script can select files, pass installer arguments, offer a menu, and handle a failed request.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">An existing PXE implementation can load iPXE as its next program. This is called <\/span><b>chainloading<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That path needs a clear second stage. If iPXE requests boot information and receives its own binary again, the machine can keep reloading iPXE. The <\/span><a href=\"https:\/\/ipxe.org\/howto\/chainloading\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">iPXE project&#8217;s chainloading guide<\/span><\/a><span style=\"font-weight: 400;\"> describes ways to avoid this behavior, including different responses for iPXE clients and embedded scripts.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">UEFI and Secure Boot<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">UEFI support does not automatically mean that a boot file will run with Secure Boot enabled. The executable and later boot components must fit the machine&#8217;s trust policy.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The iPXE project provides a <\/span><a href=\"https:\/\/ipxe.org\/secboot\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">documented Secure Boot path<\/span><\/a><span style=\"font-weight: 400;\"> with signed release components. Check the relevant architecture and downstream OS requirements. Do not assume that any locally compiled EFI file will work with the same settings.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Also separate transport security from boot-code trust. Plain HTTP does not encrypt downloads. HTTPS protects supported network transfers when certificate checks work. Secure Boot applies trust checks to executable stages in the boot chain.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">How Do You Automate the OS Installer?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The answer file belongs to the installer. A boot script can point to that file, but it does not replace the installer&#8217;s storage and configuration logic.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Select the correct configuration format<\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th><b>System or task<\/b><\/th>\n<th><b>Common method<\/b><\/th>\n<th><b>Boundary<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">Ubuntu Server with Subiquity<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Autoinstall YAML<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Match the format and delivery method to the release<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">RHEL and compatible Anaconda installers<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Kickstart<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Check distribution and release support<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Debian Installer<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Preseed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Do not substitute it for current Ubuntu Server autoinstall<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Windows deployment<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Windows PE plus the selected installation or image workflow<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Starting WinPE alone does not install Windows<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Supported system initialization<\/span><\/td>\n<td><span style=\"font-weight: 400;\">cloud-init<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Its role depends on the image and deployment workflow<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Ongoing configuration<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Ansible or another configuration tool<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Requires the access and software needed by that tool<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/canonical-subiquity.readthedocs-hosted.com\/en\/latest\/intro-to-autoinstall.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Canonical&#8217;s documentation<\/span><\/a><span style=\"font-weight: 400;\"> identifies autoinstall as Ubuntu&#8217;s automated installation format. <\/span><a href=\"https:\/\/docs.redhat.com\/en\/documentation\/red_hat_enterprise_linux\/9\/html-single\/automatically_installing_rhel\/index\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Red Hat&#8217;s installation documentation<\/span><\/a><span style=\"font-weight: 400;\"> covers Kickstart and its installer options.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Define the server profile before changing storage<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A useful profile answers six questions:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Which physical machine may run this installation?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Which OS release and boot mode should it use?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Which disks may the installer change?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Which network settings should the installed system receive?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Which users and keys may access it?<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">What proves that the installation is complete?<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Use a stable disk identifier supported by the installer where possible. Do not assume that the first listed disk is always the intended OS disk.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A MAC address can help select a profile, but it is not strong proof of identity. Network access controls and deployment authorization still matter.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Example Workflow: An Unattended Ubuntu Server Installation<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The following is a reference workflow for planning a controlled lab installation. It is not a report of an Atal hardware test or a universal configuration recipe.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Record the environment<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Start with one disposable x86-64 UEFI target on an isolated IPv4 installation network. Record the selected Ubuntu Server LTS release, firmware version, Secure Boot state, DHCP owner, and intended disk.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Keep the OS image, kernel, and initramfs aligned with the selected release. Record their origins and checksums so the same inputs can be used again.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The lab should have remote console access. This lets us inspect a failure before SSH or another OS-level service exists.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Prepare the files and boot path<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Host the required installation files at known paths. Check permissions and access from the installation network.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Configure the first-stage boot program for the target&#8217;s firmware and architecture. If using iPXE, give the client a second-stage script that leads to the installer rather than back to the iPXE binary.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Supply the autoinstall configuration using a method supported by the chosen release. Define storage, networking, and authorized access deliberately. Keep credentials out of publicly accessible files and logs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A boot menu that loads the installer is one completed checkpoint. Successful retrieval of its configuration is another. Check both before treating the workflow as unattended.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Run one controlled installation<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Confirm that the target contains no data that must be retained. If it does, complete and check the required backup before proceeding.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Trigger a one-time network boot and observe the console. Check that the machine selects the expected profile and installation source. During initial development, inspect the proposed storage behavior before permitting unattended disk changes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Keep the first run visible. It should establish whether the installer completes with the intended inputs, not merely whether it can start.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Check the result and reboot again<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Use a written acceptance record:<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Check<\/b><\/th>\n<th><b>Expected result<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">OS release<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Matches the selected image<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">\u0627\u0644\u062a\u062e\u0632\u064a\u0646<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Uses the intended disk and partition layout<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Network<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Has the expected address, routes, and DNS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Access<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Accepts the approved administrative access<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Initialization<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Required first-boot tasks have finished<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Deployment state<\/span><\/td>\n<td><span style=\"font-weight: 400;\">No longer eligible for automatic installation<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Second reboot<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Starts the installed OS without reinstalling<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">Retain redacted console output and relevant logs. Record any manual corrections so they can become explicit configuration or checks before the next run.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Secure the Boot Path and Prevent Accidental Reinstalls<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">An installation service can change a machine before its normal OS protections are active. Control who can reach that service and what it is allowed to install.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Protect network access and files<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Use a controlled installation network with a documented DHCP owner. Avoid introducing a competing DHCP server onto a shared production network.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Restrict access to answer files and boot configuration. These files can expose account information, internal addresses, or instructions that change storage.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Use supported HTTPS transfers with a working certificate trust chain where appropriate. The <\/span><a href=\"https:\/\/ipxe.org\/crypto\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">iPXE cryptography documentation<\/span><\/a><span style=\"font-weight: 400;\"> explains its trust and cryptographic capabilities. Do not assume that the preboot client trusts the same certificates as an administrator&#8217;s browser.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Check the origin of installation artifacts as well as their integrity. A checksum from the same untrusted location as a modified image does not establish that the image is authentic.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Make installation permission temporary<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Treat installation as a job with a beginning and an end. An approved machine receives a specific profile. A completed machine loses its eligibility for another automatic install.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Use both one-time boot controls, where supported, and server-side job state. Boot order alone is a weak safeguard if an operator later selects network boot again.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Unknown machines should receive a non-destructive response. Failed jobs should retain logs and wait for a controlled retry rather than repeatedly erase and reinstall.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Troubleshoot PXE Boot by the Last Successful Stage<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The most useful first question is: <\/span><b>What was the last stage that worked?<\/b><span style=\"font-weight: 400;\"> A DHCP failure and an installer storage failure need different evidence.<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Symptom<\/b><\/th>\n<th><b>Stage to inspect<\/b><\/th>\n<th><b>First checks<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">No network lease<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Network settings<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Link, VLAN, DHCP scope, relay path<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Address received, no boot program<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Boot selection<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Boot filename, service response, architecture policy<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">TFTP timeout<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Initial file transfer<\/span><\/td>\n<td><span style=\"font-weight: 400;\">File path, permissions, negotiated UDP traffic<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">iPXE repeatedly reloads<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Chainloading<\/span><\/td>\n<td><span style=\"font-weight: 400;\">iPXE client handling and second-stage script<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Signature or unsupported-image error<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Firmware handoff<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Architecture, firmware mode, trusted signing chain<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Kernel starts, source download fails<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Installer networking<\/span><\/td>\n<td><span style=\"font-weight: 400;\">NIC driver, route, DNS, URL, certificate trust<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Installer asks for input<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Answer-file handling<\/span><\/td>\n<td><span style=\"font-weight: 400;\">File delivery, format, boot arguments, interactive settings<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Installed system does not boot<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Local boot<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Disk layout, bootloader, firmware entry<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Installation runs again<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Deployment state<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Install eligibility, completion record, boot order<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span style=\"font-weight: 400;\">Match the logs to the failure<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">DHCP logs help explain address and boot-information responses. TFTP or web-server logs show which files were requested. Installer logs explain configuration and storage errors. The remote console shows the transition between these stages.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A successful download from your laptop does not prove that firmware or the installer can fetch the same file. The client may use a different network, lack a route, or have a different certificate trust store.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Keep retries controlled. Restarting every service at once can remove evidence and leave the original fault unexplained.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Plan Capacity for Multiple Server Installs<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Total installation time includes firmware startup, file transfer, disk operations, package installation, and post-install tasks. Network speed alone cannot predict the finish time.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, if ten targets each fetch 4 GB through one shared 1 Gbps link, the aggregate payload is 40 GB. At the full nominal rate, transfer alone takes about 320 seconds, before protocol overhead or other work. This is an illustrative lower bound, not a deployment benchmark.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Measure one installation before increasing the batch size. Then check shared uplinks, file-server storage, repository access, DHCP capacity, and job tracking under a small batch.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Local mirrors or caches may reduce repeated downloads. They also need version control so a new package or image does not silently change the next build.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For larger fleets, a provisioning platform can manage machine state, boot actions, and deployment jobs. Keep platform selection tied to the wider <\/span><a href=\"https:\/\/atalnetworks.com\/ar\/bare-metal-provisioning\/\"><span style=\"font-weight: 400;\">bare metal provisioning process<\/span><\/a><span style=\"font-weight: 400;\">, rather than treating a PXE service as the whole system.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">PXE or IPMI Virtual Media: Which Fits the Job?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">PXE supplies a network boot path. IPMI is a remote-management interface implemented by a server&#8217;s management controller; virtual media depends on the controller&#8217;s features and access rights. These capabilities can work in the same deployment.<\/span><\/p>\n<table>\n<thead>\n<tr>\n<th><b>Method<\/b><\/th>\n<th><b>Suitable task<\/b><\/th>\n<th><b>Dependency to check<\/b><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400;\">PXE or iPXE<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Repeated installs across approved machines<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Boot services and installation-network access<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Remote virtual media<\/span><\/td>\n<td><span style=\"font-weight: 400;\">One-off installation or recovery<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Management-controller support, permissions, and any license requirement<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Local USB media<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Local installation or recovery<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Physical access and suitable installation media<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">A remote-management system may select a one-time PXE boot, while a network service supplies the installer. It may also mount an ISO when network boot is unavailable.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Check these options before renting hardware. Access to the server OS does not imply permission to run DHCP or attach a private installation network. Our <\/span><a href=\"https:\/\/atalnetworks.com\/ar\/how-to-use-ipmi-out-of-band-server-management\/\"><span style=\"font-weight: 400;\">IPMI management guide<\/span><\/a><span style=\"font-weight: 400;\"> explains the remote-access side.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">PXE Boot Questions<\/span><\/h2>\n<h3><span style=\"font-weight: 400;\">Can a server use PXE without an installed OS?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Yes. Compatible firmware can start network boot before a local OS exists. The server still needs working hardware, a supported network interface, and access to the boot services. A missing local OS is different from missing network boot support.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Does PXE boot need internet access?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">No. An installation can use local boot services, media, and repositories. Internet access becomes necessary only when the chosen workflow depends on external files or services. Check package sources, configuration URLs, and certificate-related dependencies before planning an offline build.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Does PXE boot erase the hard drive?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">PXE itself does not erase storage. The software started through PXE may do so. An unattended installer can repartition disks according to its configuration. Check the selected profile and target disks before allowing installation to proceed.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Can PXE work across VLANs?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Yes, with a suitable design. The client needs access to network configuration and boot information across the routed boundary. It must also reach the file services used by later stages. The required relays and access rules depend on the deployment platform.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Does iPXE work with Secure Boot?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">It can, using a supported signed boot path and compatible later components. Check the iPXE release, CPU architecture, firmware trust settings, and OS requirements. An EFI filename alone does not prove that the complete boot chain will be accepted.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Can PXE install Linux and Windows?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">PXE can start suitable boot environments for either. Each OS still needs its own supported installation files, drivers, and automation workflow. A shared boot menu does not make one answer file suitable for every operating system.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Check These Items Before Your First Install<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Before enabling unattended installation, confirm that:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The physical target is identified and approved.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The firmware mode and boot program match.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">DHCP ownership and relay behavior are clear.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Installation files come from trusted sources.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The installer can change only the intended storage.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The answer file matches the selected OS release.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Console access and logs are available.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Completion removes installation eligibility and permits normal local boot.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Planning network-based OS installs? Share your server count, OS, region, storage layout, and recovery needs with Atal Networks. Review our <\/span><a href=\"https:\/\/atalnetworks.com\/ar\/bare-metal-servers\/\"><span style=\"font-weight: 400;\">bare metal server configurations<\/span><\/a><span style=\"font-weight: 400;\"> and ask which boot methods and network access options are available for your deployment.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>PXE boot lets a server load boot software over a network before an operating system starts. To automate a bare [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":25019,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-25017","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-grade-server"],"acf":[],"_links":{"self":[{"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/posts\/25017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/comments?post=25017"}],"version-history":[{"count":1,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/posts\/25017\/revisions"}],"predecessor-version":[{"id":25018,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/posts\/25017\/revisions\/25018"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/media\/25019"}],"wp:attachment":[{"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/media?parent=25017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/categories?post=25017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atalnetworks.com\/ar\/wp-json\/wp\/v2\/tags?post=25017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}