现在很多主板(网卡)都支持从网络启动,或者说PXE(Preboot eXecution Environment)。其实质就是将OS及Bootloader相关的东西放在服务器上,然后客户机通过网络启动系统。

网络启动是由网卡内固化的ROM中的一个程序实现的。该程序的执行过程其实很简单:

  • 客户端向局域网发出一个特殊的DHCP请求(比普通DHCP请求要多出一些网络启动的信息),局域网内的DHCP服务器获取这个请求后,为客户端分配网络配置信息(IP地址、网络掩码、网管)和网络启动的信息(网络启动文件名、网络启动服务器地址等)。

  • 客户端通过DHCP服务器分配的网络配置配置网卡。然后向网络启动服务器发起TFTP读取请求,以下载启动文件。

  • 完成下载后,自动运行该文件。

对于网络启动Linux而言,启动文件通常就是(带网络启动支持的)Grub。Grub运行起来后会通过网络去寻找内核(和INITRD镜像)等,然后下载到RAM中并启动。

对于网络启动Windows而言,启动文件通常是一个预加载环境,这个预加载环境的作用和Grub差不多。

参考资料: