如何使用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

相关推荐
方便面不加香菜2 小时前
Linux--基础IO(一)
linux·运维·服务器
mounter6256 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
赵渝强老师6 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
Qt程序员7 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
The Sheep 20237 小时前
Vue复习
linux·服务器·数据库
兄台の请冷静7 小时前
Linux 安装es
linux·elasticsearch·jenkins
fengyehongWorld7 小时前
Linux rg命令
linux
pride.li8 小时前
海思视觉Hi3516CV610--开机自动设置ip
linux·网络·网络协议·tcp/ip
我叫张小白。8 小时前
CentOS 7 安装 Docker并配置镜像加速(完整指南)
linux·docker·centos
源图客8 小时前
Minio配置HTTPS服务
服务器·网络协议·https