如何使用ubuntu搭建一个无盘PC启动服务器 启动windows,1. 安装tftp服务器sudo apt install tftpd-hpa2. 设置tftp,sudo systemctl restart tftpd-hpasudo nano /etc/default/tftpd-hpa # /etc/default/tftpd-hpa TFTP_USERNAMEtftp TFTP_DIRECTORY/srv/tftp TFTP_ADDRESS:69 TFTP_OPTIONS--secure --create3. 安装dhcp服务器sudo apt install isc-dhcp-server4. 设置dhcp服务器的工作网卡sudo nano /etc/default/isc-dhcp-server # Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) # Path to dhcpds config file (default: /etc/dhcp/dhcpd.conf). #DHCPDv4_CONF/etc/dhcp/dhcpd.conf #DHCPDv6_CONF/etc/dhcp/dhcpd6.conf # Path to dhcpds PID file (default: /var/run/dhcpd.pid). #DHCPDv4_PID/var/run/dhcpd.pid #DHCPDv6_PID/var/run/dhcpd6.pid # Additional options to start dhcpd with. # Dont use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead #OPTIONS # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. eth0 eth1. INTERFACESv4ens34 INTERFACESv65. 设置dhcp的工作网段,sudo systemctl restart isc-dhcp-serversudo vi /etc/dhcp/dhcpd.conf # Global parameter options for the PXE network environment default-lease-time 600; max-lease-time 7200; authoritative; # Log DHCP actions to the system log (/var/log/syslog) log-facility local7; # Subnet profile bound strictly to the 10.10.1.0/24 infrastructure subnet 10.10.1.0 netmask 255.255.255.0 { range 10.10.1.10 10.10.1.50; # IP pool reserved for PXE clients option subnet-mask 255.255.255.0; option broadcast-address 10.10.1.255; # Point clients directly to your Ubuntu TFTP service configuration next-server 10.10.1.100; # Server IP hosting your TFTP files filename undionly.kpxe; # Network boot loader payload filename }6. 安装iscitargetcli-fbsudo apt update sudo apt install -y targetcli-fb7. 创建一个磁盘文件sudo mkdir -p /var/iscsi_disks8. 配置iscsi# 1. Register the image file into the LIO backend allocator /backstores/fileio create namedisk01 file_or_dev/var/iscsi_disks/disk01.img size6G # 2. Create your Unique iSCSI Target Name (IQN) /iscsi create iqn.2026-05.ubuntu.storage:target01 # 3. Create a Logical Unit Number (LUN) mapping the storage block to your IQN cd /iscsi/iqn.2026-05.ubuntu.storage:target01/tpg1/luns create /backstores/fileio/disk01 # 4. Define which client is allowed to connect (ACL) # For testing, map it to the standard iPXE initiator name cd ../acls create iqn.2010-04.org.ipxe:initiator cd /iscsi/iqn.2026-05.ubuntu.storage:target01/tpg1 # Permit any initiator to connect without an explicit ACL entry set attribute generate_node_acls1 # Allow write operations for these dynamically created client nodes set attribute cache_dynamic_acls1 # Turn off explicit CHAP (username/password) validation mechanisms set attribute authentication0 set attribute demo_mode_write_protect0 cd / saveconfig exit9. 打开防火墙,启动服务sudo ufw allow to any port 3260 proto tcp sudo systemctl enable target sudo systemctl restart target sudo systemctl status target10. 编写ipxe脚本,boot.ipxe#!ipxe dhcp sanboot iscsi:10.10.1.100::::iqn.2026-05.ubuntu.storage:target0111. 下载的编译ipxegit clone https://github.com/ipxe/ipxe.git cd ipxe/src sudo apt install gcc sudo apt install make sudo apt install liblzma-dev make bin-x86_64-pcbios/undionly.kpxe EMBEDboot.ipxe cp bin-x86_64-pcbios/undionly.kpxe /srv/tftp11. 在同一个网段启动目标pc 先使用sanhook和winpe进入系统分区DISKPART list disk DISKPART select disk [Your iSCSI Disk Number] DISKPART clean DISKPART convert mbr DISKPART create partition primary DISKPART select partition 1 DISKPART active DISKPART format quick fsntfs labelWinPE_BIOS DISKPART assign letterC DISKPART exit12. 安装系统到 C:dism /Apply-Image /ImageFile:Z:\path\to\boot.wim /Index:1 /ApplyDir:C:\13. 安装bootloaderbcdboot C:\Windows /s C: /f BIOS14. 修改注册表msiscsi的设置reg load HKLM\TARGET_SYSTEM C:\Windows\System32\config\SYSTEM reg add HKLM\TARGET_SYSTEM\ControlSet001\Services\Ndis /v Start /t REG_DWORD /d 0 /f reg add HKLM\TARGET_SYSTEM\ControlSet001\Services\msiscsi /v Start /t REG_DWORD /d 0 /f reg add HKLM\TARGET_SYSTEM\Setup /v SystemSetupInProgress /t REG_DWORD /d 1 /f reg unload HKLM\TARGET_SYSTEM15. 禁用早段网络reg load HKLM\TARGET_SYSTEM C:\Windows\System32\config\SYSTEM :: Add the override parameter to skip standard initialization reg add HKLM\TARGET_SYSTEM\Setup /v DisableWpeinitNetwork /t REG_DWORD /d 1 /f :: Disable the NDIS lightweight filter driver execution path reg add HKLM\TARGET_SYSTEM\ControlSet001\Services\NdisWdf /v Start /t REG_DWORD /d 4 /f reg unload HKLM\TARGET_SYSTEM16. 修改使用ipxe.pxe作为bootfilemake bin-x86_64-pcbios/ipxe.pxe EMBEDboot.ipxe cp bin-x86_64-pcbios/ipxe.pxe /srv/tftp #make bin-x86_64-pcbios/undionly.kpxe EMBEDboot.ipxe #cp bin-x86_64-pcbios/undionly.kpxe /srv/tftp17. 修改boot.ipex#!ipxe dhcp set keep-san 1 set net0.dhcp/gateway 0.0.0.0 sanboot --keep iscsi:10.10.1.100::::iqn.2026-05.ubuntu.storage:target01