如何使用ubuntu搭建一个无盘PC启动服务器

启动windows,

  1. 安装tftp服务器

    sudo apt install tftpd-hpa

  2. 设置tftp,sudo systemctl restart tftpd-hpa

    sudo nano /etc/default/tftpd-hpa

    /etc/default/tftpd-hpa

    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/srv/tftp"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure --create"

  3. 安装dhcp服务器

    sudo apt install isc-dhcp-server

  4. 设置dhcp服务器的工作网卡

    sudo nano /etc/default/isc-dhcp-server

    Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)

    Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).

    #DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
    #DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf

    Path to dhcpd's 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.

    Don't 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".

    INTERFACESv4="ens34"
    INTERFACESv6=""

  5. 设置dhcp的工作网段,sudo systemctl restart isc-dhcp-server

    sudo 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. 安装isci targetcli-fb

    sudo apt update
    sudo apt install -y targetcli-fb

  7. 创建一个磁盘文件

    sudo mkdir -p /var/iscsi_disks

  8. 配置iscsi

    1. Register the image file into the LIO backend allocator

    /backstores/fileio create name=disk01 file_or_dev=/var/iscsi_disks/disk01.img size=6G

    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_acls=1

    Allow write operations for these dynamically created client nodes

    set attribute cache_dynamic_acls=1

    Turn off explicit CHAP (username/password) validation mechanisms

    set attribute authentication=0

    set attribute demo_mode_write_protect=0

    cd /
    saveconfig
    exit

  9. 打开防火墙,启动服务

    sudo ufw allow to any port 3260 proto tcp
    sudo systemctl enable target
    sudo systemctl restart target
    sudo systemctl status target

  10. 编写ipxe脚本,boot.ipxe

    #!ipxe
    dhcp
    sanboot iscsi:10.10.1.100::::iqn.2026-05.ubuntu.storage:target01

  11. 下载的编译ipxe

    git 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 EMBED=boot.ipxe
    cp bin-x86_64-pcbios/undionly.kpxe /srv/tftp

  12. 在同一个网段启动目标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 fs=ntfs label="WinPE_BIOS"
    DISKPART> assign letter=C
    DISKPART> exit

  13. 安装系统到 C:

    dism /Apply-Image /ImageFile:Z:\path\to\boot.wim /Index:1 /ApplyDir:C:\

  14. 安装bootloader

    bcdboot C:\Windows /s C: /f BIOS

  15. 修改注册表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_SYSTEM

  16. 禁用早段网络

    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_SYSTEM

  17. 修改使用ipxe.pxe作为bootfile

    make bin-x86_64-pcbios/ipxe.pxe EMBED=boot.ipxe
    cp bin-x86_64-pcbios/ipxe.pxe /srv/tftp

    #make bin-x86_64-pcbios/undionly.kpxe EMBED=boot.ipxe
    #cp bin-x86_64-pcbios/undionly.kpxe /srv/tftp

  18. 修改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

相关推荐
SWAGGY..1 小时前
Linux系统编程:(五)基础开发工具:vim编辑器的使用及其配置操作
linux·编辑器·vim
lzhdim2 小时前
SQL 入门 14:SQL 触发器与事件:自动化数据处理
linux·前端·数据库·sql·自动化
AC赳赳老秦2 小时前
文案策划提效:OpenClaw批量生成活动文案、宣传海报配文,适配不同渠道调性
java·大数据·服务器·人工智能·python·deepseek·openclaw
脆皮炸鸡7552 小时前
库制作与原理~静态库&静态链接
linux·经验分享·笔记·学习方法
wangjialelele2 小时前
Linux SystemV 消息队列 + 责任链模式:实现客户端消息处理流水线
linux·服务器·c语言·网络·c++·责任链模式
|_⊙3 小时前
Linux 深入理解文件(Ext2文件系统:下)
linux·服务器·数据库
cui_ruicheng3 小时前
Linux网络编程(一):网络基础与协议概念
linux·网络·操作系统
dualven_in_csdn3 小时前
【网络】ip转发
linux·服务器·网络
袁小皮皮不皮3 小时前
HCIP-BFD 学习笔记
运维·服务器·网络·笔记·网络协议·学习·智能路由器