AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1292032
Accepted
Marian Rainer-Harbach
Marian Rainer-Harbach
Asked: 2020-11-14 07:20:27 +0800 CST2020-11-14 07:20:27 +0800 CST 2020-11-14 07:20:27 +0800 CST

如何通过 PXE 网络引导和自动安装来安装当前的 Ubuntu 版本?

  • 772

从 Ubuntu 20.10 (Groovy Gorilla) 开始,Canonical 不再提供netboot.tar.gz包和mini.iso镜像。它们以前可用于通过 PXE 引导系统并通过预置配置自动运行 Debian 安装程序。

从 20.10 开始的 Ubuntu 版本如何通过 PXE 引导自动安装?

system-installation boot automation pxe preseed
  • 2 2 个回答
  • 13057 Views

2 个回答

  • Voted
  1. Best Answer
    Marian Rainer-Harbach
    2020-11-14T07:20:27+08:002020-11-14T07:20:27+08:00

    介绍

    现在需要使用常规的完整 ISO 映像,而不是使用特定于任务的小包。只有服务器安装程序 Subiquity 可以自动化,因此即使是桌面安装也需要使用服务器映像。

    以下步骤适用于当前版本 21.04 (Hirsute Hippo)。对于未来版本,将所有出现的 替换为21.04您要安装的版本号。

    先决条件

    将提供 PXE 文件、安装程序映像和自动安装配置的服务器计算机的先决条件:

    • 一个工作的 TFTP 服务器和相应的 DHCP 配置
    • 一个工作的网络服务器
    • 安装了软件包pxelinux_syslinux-efisyslinux-common

    提供 ISO 映像和自动安装配置

    1. 下载完整的实时服务器映像:wget https://releases.ubuntu.com/21.04/ubuntu-21.04-live-server-amd64.iso
    2. 将 ISO 映像复制到您的 Web 服务器
    3. 在 Web 服务器上创建一个目录来保存自动安装配置。创建文件meta-data并user-data在目录中。
    4. user-data使用https://ubuntu.com/server/docs/install/autoinstall-reference作为参考将您的自动安装配置写入文件

    准备和服务 PXE 环境

    1. 默认情况下,转到您的 TFTP 服务器服务的目录/srv/tftp

    2. 将上一节下载的ISO镜像复制到当前目录

    3. 创建一些我们将在以下步骤中使用的目录:mkdir -p iso_mount init boot/uefi boot/bios pxelinux.cfg

    4. 挂载映像并提取内核和 initrd:

       mount -o loop ubuntu-21.04-live-server-amd64.iso iso_mount/
       cp -p iso_mount/casper/vmlinuz init/
       cp -p iso_mount/casper/initrd init/
       umount iso_mount
      
    5. 准备 PXELINUX 文件以通过 UEFI 和 BIOS 引导:

       # UEFI
       cp -p /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi boot/uefi
       cp -p /usr/lib/syslinux/modules/efi64/ldlinux.e64 boot/uefi
       cp -p /usr/lib/syslinux/modules/efi64/libcom32.c32 boot/uefi
       cp -p /usr/lib/syslinux/modules/efi64/libutil.c32 boot/uefi
       cp -p /usr/lib/syslinux/modules/efi64/vesamenu.c32 boot/uefi
      
       # BIOS
       cp -p /usr/lib/PXELINUX/pxelinux.0 boot/bios
       cp -p /usr/lib/syslinux/modules/bios/ldlinux.c32 boot/bios
       cp -p /usr/lib/syslinux/modules/bios/libcom32.c32 boot/bios
       cp -p /usr/lib/syslinux/modules/bios/libutil.c32 boot/bios
       cp -p /usr/lib/syslinux/modules/bios/vesamenu.c32 boot/bios
      
    6. 配置 DHCP 服务器以将引导文件名设置boot/uefi/syslinux.efi为 UEFI 客户端和boot/bios/pxelinux.0BIOS 客户端

    7. pxelinux.cfg/default在类似于以下内容的位置创建 PXELINUX 配置。将尖括号中的 URL 替换为 Web 服务器的 URL:替换<iso url>为 ISO 映像<autoinstall url>的 URL 和包含自动安装配置的目录的 URL(包括尾部斜杠!)。

       DEFAULT vesamenu.c32
       PROMPT 0
       NOESCAPE 1
      
       MENU TITLE PXE System Installation
      
       LABEL Ubuntu 21.04
         MENU LABEL ubuntu_21.04
         KERNEL ../../init/vmlinuz
         INITRD ../../init/initrd
         APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=<iso url> autoinstall ds=nocloud-net;s=<autoinstall url>
      
    8. 将 PXELINUX 配置链接到bootUEFI 和 BIOS 的目录:

       ln -s ../../pxelinux.cfg boot/uefi/pxelinux.cfg
       ln -s ../../pxelinux.cfg boot/bios/pxelinux.cfg
      

    结论

    您现在应该能够通过 PXE 将 UEFI 和 BIOS 客户端引导到 Subiquity 安装程序中,然后它将根据您的自动安装配置自动运行。

    桌面安装

    如果您要安装桌面系统,则必须安装该ubuntu-desktop软件包。

    您还需要修复已安装系统中的网络配置,因为 Subiquity 启用systemd-networkd而不是NetworkManager,这通常用于桌面系统:

    1. 移除 Subiquity 创建的网络配置:rm /etc/netplan/00-installer-config.yaml

    2. 创建一个/etc/netplan/01-network-manager-all.yaml包含以下内容的文件:

       # Let NetworkManager manage all devices on this system
       network:
         version: 2
         renderer: NetworkManager
      
    3. 运行netplan apply或重启

    • 12
  2. LuxZg
    2020-11-14T11:10:34+08:002020-11-14T11:10:34+08:00

    好吧,我也可以对此发表看法……所以就这样吧!

    介绍

    下面是完整的 PXE 指南,从设置服务器和所有必需的服务到首次启动。它还包括Ubuntu 20.04.1 和 20.10的说明,包括Ubuntu 服务器的自动安装、服务器的交互式安装和桌面的实时启动(如“Live CD”的 PXE 版本)。指南已稍作修改,以将所有选项包含在一个具有所有变体的启动菜单中。解释了 BIOS 和 UEFI 方案。

    我正在使用名为“lpxelinux”(第一个小写“L”)的 Syslinux 组件,它也支持从 HTTP 启动内核和初始化。syslinux.efi这个也已经有了。HTTP 可以实现更快的传输,并且使我们能够对文件进行一些不同的组织,以及其他一些小的优势(对于更大的实现)。

    这是完整的分步指南!

    PXE 服务器 - Ubuntu 20.04.1 LTS

    像往常一样安装 Ubuntu Server,从最小安装选项开始,但我通常启用 OpenSSH 服务器来启用远程管理。安装后确保完全更新

    sudo su
    apt-get update && apt-get upgrade -y
    

    工具和要求

    我们需要 TFTP 服务器、HTTP(S) 服务器和 DHCP 服务器。如果您已经拥有其他服务器,则可以使用它们,但为了便于跟踪,我们将在新安装的 Ubuntu 20.04.1 LTS 上安装所有内容

    我选择了最受欢迎的套餐:

    apt-get install tftpd-hpa apache2 isc-dhcp-server
    

    我们还需要获取 syslinux 文件。由于 Marian 的指南已经展示了如何从 apt 包中获取它们,为了完整起见,我将采用其他方式(您可以根据需要混合和匹配方法)。我们从官方获取文件kernel.org

    mkdir /root/pxe
    mkdir /root/pxe/syslinux
    cd /root/pxe/syslinux
    wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
    tar -xf syslinux-6.03.tar.gz
    cd syslinux-6.03/
    ll
    

    我利用这个机会为我们创建了一个临时目录/root/pxe和syslinux它下面的目录。随意将这些文件放置在您希望的任何位置,只需确保在之后修改命令。

    SYSLINUX - LPXELINUX(文件)

    接下来我们复制我们需要的文件。随意复制更多模块,但这些就足够了。

    TFTPD 已经有一个我们将使用的目录,位于:/var/lib/tftpboot/

    将文件复制到不同的目录中(一些文件具有相同的名称但适用于不同的体系结构)

    # files for 64bit uefi
    mkdir /var/lib/tftpboot/efi64
    cp /root/pxe/syslinux/syslinux-6.03/efi64/efi/syslinux.efi /var/lib/tftpboot/efi64
    cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/menu/menu.c32 /var/lib/tftpboot/efi64
    cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/menu/vesamenu.c32 /var/lib/tftpboot/efi64
    cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/libutil/libutil.c32 /var/lib/tftpboot/efi64
    cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/elflink/ldlinux/ldlinux.e64 /var/lib/tftpboot/efi64
    cp /root/pxe/syslinux/syslinux-6.03/efi64/com32/lib/libcom32.c32 /var/lib/tftpboot/efi64
    cd /var/lib/tftpboot/efi64
    ll
    
    # files for 32bit bios
    mkdir /var/lib/tftpboot/bios
    cp /root/pxe/syslinux/syslinux-6.03/bios/core/lpxelinux.0 /var/lib/tftpboot/bios
    cp /root/pxe/syslinux/syslinux-6.03/bios/com32/menu/menu.c32 /var/lib/tftpboot/bios
    cp /root/pxe/syslinux/syslinux-6.03/bios/com32/menu/vesamenu.c32 /var/lib/tftpboot/bios
    cp /root/pxe/syslinux/syslinux-6.03/bios/com32/libutil/libutil.c32 /var/lib/tftpboot/bios
    cp /root/pxe/syslinux/syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 /var/lib/tftpboot/bios
    cp /root/pxe/syslinux/syslinux-6.03/bios/com32/lib/libcom32.c32 /var/lib/tftpboot/bios
    cd /var/lib/tftpboot/bios
    ll
    

    DHCP 服务器

    DHCP 服务器本身应该有一个静态 IP。所以让我们这样做(如果您在安装期间没有这样做)。

    编辑网络配置(YAML 文件):

    nano /etc/netplan/00-installer-config.yaml
    

    内容:

    # This is the network config written by 'subiquity'
    network:
      ethernets:
        eth0:
          addresses: [10.10.2.1/24]
          gateway4: 10.10.2.99
          nameservers:
            addresses: [1.1.1.1, 8.8.8.8]
      version: 2
    

    应用配置:

    netplan apply
    

    接下来,我们需要为 DHCP 服务器的区域和池输入基本配置。我在这里进行了一些额外的配置,以向您展示您未来的 PXE 客户端可以位于与您的 PXE 服务器不同的子网中。就我而言,PXE 服务器(带有所有服务)位于10.10.2.1. 我有两个通过虚拟路由器连接的子网:10.10.1.0/24和10.10.2.0/24

    nano /etc/dhcp/dhcpd.conf
    

    内容(只是一个例子):

    # minimal sample /etc/dhcp/dhcpd.conf
    default-lease-time 600;
    max-lease-time 7200;
    
    subnet 10.10.1.0 netmask 255.255.255.0 {
     range 10.10.1.110 10.10.1.120;
     option routers 10.10.1.99;
     option domain-name-servers 1.1.1.1, 8.8.8.8;
    # option domain-name "mydomain.example";
    }
    
    subnet 10.10.2.0 netmask 255.255.255.0 {
     range 10.10.2.110 10.10.2.120;
     option routers 10.10.2.99;
     option domain-name-servers 1.1.1.1, 8.8.8.8;
    # option domain-name "mydomain.example";
    }
    
    # pxe client, uefi64
    host uefi-client {
      hardware ethernet fa:fa:fa:00:0e:07;
      fixed-address 10.10.1.201;
      next-server 10.10.2.1;
      filename "efi64/syslinux.efi";
    }
    
    # pxe client, bios
    host bios-client {
      hardware ethernet fa:fa:fa:00:0e:17;
      fixed-address 10.10.2.202;
      next-server 10.10.2.1;
      filename "bios/lpxelinux.0";
    }
    

    注意:请根据您的情况修改文件!您必须拥有正确的子网、网关以及客户端的正确 MAC 地址(硬件地址)!

    而且您需要设置 DHCP 守护程序将侦听ip a的接口,用于检查适合您的接口(我在eth0)

    nano /etc/default/isc-dhcp-server
    

    内容:

    INTERFACESv4="eth0"
    INTERFACESv6=""
    

    确保重新启动服务:

    systemctl restart isc-dhcp-server.service
    systemctl status isc-dhcp-server.service
    

    并使其在服务器重新启动时自动启动:

    systemctl enable isc-dhcp-server.service
    

    如果您有拼写错误或其他错误,例如重复的 IP 或客户端名称,则守护程序将失败。如果状态为红色,请检查日志。

    tail -n 100 /var/log/syslog
    

    可选 - 路由器设置

    如果您有不同的子网,请确保添加ip helperDHCP,通常也像DHCP relay大多数路由器一样设置。只需将其指向 PXE 服务器的 IP 地址(如果您的服务分布在多台服务器上,则将其指向一个拥有 DHCP 服务的服务器)。

    TFTP 服务器

    我们需要为 TFTP 服务器设置基本的东西,但只有一个选项真正需要更改/检查 - 到您的 TFTP 根目录的路径/var/lib/tftpboot

    nano /etc/default/tftpd-hpa
    

    内容:

    # /etc/default/tftpd-hpa
    
    TFTP_USERNAME="tftp"
    #TFTP_DIRECTORY="/srv/tftp"
    # /var/lib/tftpboot
    TFTP_DIRECTORY="/var/lib/tftpboot"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure"
    

    确保也重新启动服务。

    systemctl restart tftpd-hpa
    

    并使其在服务器重新启动时自动启动:

    systemctl enable tftpd-hpa
    

    如果您想确保一切正常,您可以使用 TFTP 客户端来测试服务。

    SYSLINUX / (l)pxelinux 配置

    我们需要一些配置来启动!每个架构至少需要一个default文件。我们将它们放在 TFTP 目录中

    mkdir /var/lib/tftpboot/efi64/pxelinux.cfg
    mkdir /var/lib/tftpboot/bios/pxelinux.cfg
    touch /var/lib/tftpboot/efi64/pxelinux.cfg/default
    touch /var/lib/tftpboot/bios/pxelinux.cfg/default
    nano /var/lib/tftpboot/efi64/pxelinux.cfg/default
    

    文件内容:

    DEFAULT menu.c32
     PROMPT 0
     
     MENU TITLE PXE Boot Menu
     MENU COLOR TABMSG    37;40 #80ffffff #00000000
     MENU COLOR HOTSEL    30;47 #40000000 #20ffffff
     MENU COLOR SEL       30;47 #40000000 #20ffffff
     MENU COLOR SCROLLBAR 30;47 #40000000 #20ffffff
     MENU WIDTH 80
     MENU MARGIN 22
     MENU PASSWORDMARGIN 26
     MENU ROWS 6
     MENU TABMSGROW 15
     MENU CMDLINEROW 15
     MENU ENDROW 24
     MENU PASSWORDROW 12
     MENU TIMEOUTROW 13
     MENU VSHIFT 6
     NOESCAPE 1
     ALLOWOPTIONS 0
     MENU AUTOBOOT Starting Local System in # seconds
     
     LABEL bootlocal
      MENU LABEL ^Local Boot
      MENU DEFAULT
      LOCALBOOT 0
     TIMEOUT 300
     TOTALTIMEOUT 3000
     
     LABEL UbuntuServer-20.04.1-auto
      MENU LABEL Ubuntu 20.04.1 Live Auto Installer
      KERNEL http://10.10.2.1/ubuntu-server-20.04.1/vmlinuz
      INITRD http://10.10.2.1/ubuntu-server-20.04.1/initrd
       APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.10.2.1/ubuntu-server-20.04.1/
     
     LABEL UbuntuServer-20.04.1-interactive
      MENU LABEL Ubuntu 20.04.1 Live Interactive Installer
      KERNEL http://10.10.2.1/ubuntu-server-20.04.1/vmlinuz
      INITRD http://10.10.2.1/ubuntu-server-20.04.1/initrd
      APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.04.1-live-server-amd64.iso
     
     LABEL UbuntuDesktop-20.04.1-live
      MENU LABEL Ubuntu 20.04.1 Desktop Live CD
      KERNEL http://10.10.2.1/ubuntu-desktop-20.04.1/vmlinuz
      INITRD http://10.10.2.1/ubuntu-desktop-20.04.1/initrd
      APPEND root=/dev/ram0 ramdisk_size=3000000 boot=casper ip=dhcp netboot=url url=http://10.10.2.1/ubuntu-20.04.1-desktop-amd64.iso
     
     LABEL UbuntuServer-20.10-auto
      MENU LABEL Ubuntu 20.10 Live Auto Installer
      KERNEL http://10.10.2.1/ubuntu-server-20.10/vmlinuz
      INITRD http://10.10.2.1/ubuntu-server-20.10/initrd
       APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.10-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.10.2.1/ubuntu-server-20.10/
     
     LABEL UbuntuServer-20.10-interactive
      MENU LABEL Ubuntu 20.10 Live Interactive Installer
      KERNEL http://10.10.2.1/ubuntu-server-20.10/vmlinuz
      INITRD http://10.10.2.1/ubuntu-server-20.10/initrd
      APPEND root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://10.10.2.1/ubuntu-20.10-live-server-amd64.iso
     
     LABEL UbuntuDesktop-20.10-live
      MENU LABEL Ubuntu 20.10 Desktop Live CD
      KERNEL http://10.10.2.1/ubuntu-desktop-20.10/vmlinuz
      INITRD http://10.10.2.1/ubuntu-desktop-20.10/initrd
      APPEND root=/dev/ram0 ramdisk_size=3000000 boot=casper ip=dhcp netboot=url url=http://10.10.2.1/ubuntu-20.10-desktop-amd64.iso
    

    注意我正在从 HTTP 服务器中提取vmlinuz和提取。initrd同一台服务器托管 ISO 映像和我们的自动安装文件。接下来我们将设置此 Web 服务器,不用担心。

    由于defaultBIOS 和 UEFI 看起来相同,因此只需复制它(或根据需要链接它)。

    cp /var/lib/tftpboot/efi64/pxelinux.cfg/default /var/lib/tftpboot/bios/pxelinux.cfg/default
    

    如果您将它们分开,您可以单独更改它们的选项。菜单也接受通过include选项链接。但是,如果您想要高级菜单,请阅读文档或更多文章。

    网络服务器 - HTTP(S)

    我将描述简单的 HTTP 设置,但您可以稍后将其扩展到 HTTPS。如果您的环境未关闭,并且您在自动安装文件中设置了密码,则建议您这样做。对于基本实验室,我们使用 HTTP。

    我们需要获取 ISO。由于我已经在菜单中同时放入了服务器和桌面,我将为每个 ISO 重复一次。我知道问题是关于服务器的,但额外内容不会伤害你。如果您只想要服务器或桌面,只需跳过另一个。

    这适用于Ubuntu Server LTS 20.04.1

    wget https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-live-server-amd64.iso -O /var/www/html/ubuntu-20.04.1-live-server-amd64.iso
    

    将内核和 initramfs(vmlinuz 和 initrd)提取到该发行版/变体/版本的子文件夹。您可以在多引导 PXE 菜单上拥有更多内容。

    mount /var/www/html/ubuntu-20.04.1-live-server-amd64.iso /mnt/
    mkdir /var/www/html/ubuntu-server-20.04.1
    cp /mnt/casper/vmlinuz /var/www/html/ubuntu-server-20.04.1/
    cp /mnt/casper/initrd /var/www/html/ubuntu-server-20.04.1/
    umount  /mnt
    

    这适用于桌面 LTS 20.04.1

    wget https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso -O /var/www/html/ubuntu-20.04.1-desktop-amd64.iso
    

    再次提取,注意我添加了不同的文件夹名称

    mount /var/www/html/ubuntu-20.04.1-desktop-amd64.iso /mnt/
    mkdir /var/www/html/ubuntu-desktop-20.04.1
    cp /mnt/casper/vmlinuz /var/www/html/ubuntu-desktop-20.04.1/
    cp /mnt/casper/initrd /var/www/html/ubuntu-desktop-20.04.1/
    umount  /mnt
    

    以下是针对Ubuntu Server 20.10

    wget https://releases.ubuntu.com/20.10/ubuntu-20.10-live-server-amd64.iso -O /var/www/html/ubuntu-20.10-live-server-amd64.iso
    

    提取文件,再次到单独的文件夹

    mount /var/www/html/ubuntu-20.10-live-server-amd64.iso /mnt/
    mkdir /var/www/html/ubuntu-server-20.10
    cp /mnt/casper/vmlinuz /var/www/html/ubuntu-server-20.10/
    cp /mnt/casper/initrd /var/www/html/ubuntu-server-20.10/
    umount  /mnt
    

    最后,这是针对Ubuntu Desktop 20.10

    wget https://releases.ubuntu.com/20.10/ubuntu-20.10-desktop-amd64.iso -O /var/www/html/ubuntu-20.10-desktop-amd64.iso
    

    再次提取文件,再次分离文件夹

    mount /var/www/html/ubuntu-20.10-desktop-amd64.iso /mnt/
    mkdir /var/www/html/ubuntu-desktop-20.10
    cp /mnt/casper/vmlinuz /var/www/html/ubuntu-desktop-20.10/
    cp /mnt/casper/initrd /var/www/html/ubuntu-desktop-20.10/
    umount  /mnt
    

    应该是这样的。使用浏览器进行测试,看看您是否可以访问正确位置的文件。我们使用 Ubuntu 上的默认 Apache 目录来托管所有文件,因此不需要额外的步骤。

    服务器 20.04 和 20.10 的自动安装文件

    Ubuntu 文档说您可以简单地安装一台服务器,然后在文件中找到包含您选择的示例/var/log/installer/autoinstall-user-data文件。

    要在实验室进行测试,您可以使用该文件作为模板,但需要进行一些修改。

    要获得最小的配置,您可以使用下面的代码(同样是 YAML 代码,如果进行手动编辑,请注意间距):

    nano /var/www/html/ubuntu-server-20.04.1/user-data
    

    内容:

    #cloud-config
    autoinstall:
      version: 1
      apt:
        geoip: true
        preserve_sources_list: false
        primary:
        - arches: [amd64, i386]
          uri: http://hr.archive.ubuntu.com/ubuntu
        - arches: [default]
          uri: http://ports.ubuntu.com/ubuntu-ports
      identity: {hostname: pxe-client, password: $6$zN/uHJD1rEXD/ETf$q8CoBt3xXmBT37RslyWcpLT1za4RJR3QEtosggRKN5aZAAf6/mYbFEQO66AIPm965glBXB1DGd0Sf.oKi.Rfx/,
        realname: pxe, username: pxe}
      keyboard: {layout: hr, toggle: null, variant: ''}
      locale: en_US
      network:
        network:
          version: 2
          ethernets:
            eth0:
              dhcp4: no
              dhcp6: no
      ssh:
        allow-pw: true
        install-server: true
    

    注意:此配置将使用主机名设置服务器pxe-client,用户名和密码均为pxe. 服务器将没有网络(禁用 DHCP),因此它将在安装过程中跳过自动更新(以便更快地测试)。它将预装 OpenSSH 服务器,并使用密码登录。注意区域内容(hr= 克罗地亚,因此我们为 apt 设置了克罗地亚镜像设置,以及克罗地亚键盘布局),为您的国家/地区调整它们。将您的示例/var/log/installer/autoinstall-user-data视为模板以添加您自己的调整。

    Ubuntumeta-data也需要文件。它必须是空的。因此,只需在您放置user-data文件的同一目录中创建它

    touch /var/www/html/ubuntu-server-20.04.1/meta-data
    

    要查看更多选项,请参阅官方文档: https ://ubuntu.com/server/docs/install/autoinstall-reference

    对于Ubuntu 20.10,一切都是一样的,只需复制代码,或者在正确的路径中创建它:

    nano /var/www/html/ubuntu-server-20.10/user-data
    touch /var/www/html/ubuntu-server-20.10/meta-data
    

    使用相同的用户数据样本,它们在 20.04 和 20.10 之间可以互换。还要注意双重network: network:部分.. 20.04 有一个错误,它需要这样的设置,而 20.10 没有这个错误,但支持这个作为向后兼容功能。

    检查您的文件

    我建议您检查所有变体的所有文件是否到位:

    ll /var/www/html/ubuntu-server-20.04.1/
    ll /var/www/html/ubuntu-desktop-20.04.1/
    ll /var/www/html/ubuntu-server-20.10/
    ll /var/www/html/ubuntu-desktop-20.10/
    

    服务器文件夹应该有 4 个文件:

    initrd
    meta-data
    user-data
    vmlinuz
    

    桌面文件夹应该有 2 个文件:

    initrd
    vmlinuz
    

    如果您在启动时遇到问题,请检查上面列出的文件的权限。如果您正在做实验室,只需做不安全的事情,chmod并且所有这些都具有完整的 rw 权限:

    chmod -R 777 /var/www/html/*
    

    对于生产设置适当的权限,只需在需要的地方进行读取访问。

    测试一切

    在我的实验室环境中,以及在开始新的生产设置时,我首先在 VM 中测试这一切。我使用 Hyper-V 进行测试(我知道,杀了我,这里突然有微软的东西 :))。要测试 UEFI 引导,您需要创建Generation 2机器,而对于 BIOS 引导,您应该使用Generation 1机器。确保向 VM 添加足够的 RAM 以容纳 RAMDISK!因此,如果 VM 使用 1.5GB RAM 磁盘测试服务器,那么 VM 需要 2GB RAM,而对于桌面,我们有 3GB RAM 磁盘,因此最好将 4GB RAM 连接到 VM。此外,请确保将网络接口连接到正确的网络,正如我之前提到的,我保留了一个虚拟路由器和多个子网,因为我需要测试和证明这一切,以便在相当大和复杂的环境中部署。

    无论如何,一旦你有了虚拟机 - 只需启动它!如果您做的一切正确,您应该会看到 PXE 启动、VM 获取 IP,然后启动菜单。30 秒后它将从磁盘启动,但只需使用箭头键选择一个选项。我在测试中发现 UEFI 启动方式更快,所以我通常使用 UEFI 进行测试,然后在 UEFI 到达我想要的位置时测试 BIOS VM。

    把它包起来

    直到现在我才承认我不是 Linux 大师。但在过去的一个半月里,我花了很多时间做 PXE 引导,并为它设置不同的环境。这是本教程中的纯 Ubuntu 堆栈。我打算写一个更面向微软的,但也基于 SYSLINUX 和多启动菜单,并允许我们启动(各种)Linux 发行版(除了 Windows)。所有这些都可以使用任何 DHCP/HTTP/TFTP 工具完成,包括 Microsoft Windows Server 2019,并在其上安装了几个角色(DHCP、IIS、WDS)。同样,您可以使用任何其他发行版作为您的 Ubuntu 安装的 PXE 服务器。如果您更喜欢例如,您也不需要使用 Apache2。nginx 作为你的 HTTP 服务器。

    最后,我使用 Ubuntu 20.04 和 20.10 进行了所有测试。两个版本的整个设置完全相同。只需更改文件和 ISO 下载的名称。如果您只需要其中一个,请跳过不需要的部分。

    狩猎愉快!

    编辑:2020-11-14 - 添加了 Ubuntu 20.10 的所有内容,清理了一些代码,并为文件夹添加了更有意义的名称,因为我们现在正在处理 4 种不同的操作系统启动。

    • 7

相关问题

  • 您对台式机和家庭服务器的驱动器分区方案有什么建议?[关闭]

  • 我如何参与 Ubuntu 的测试和 QA?

  • 如何避免启动时出现“S to Skip”消息?

  • 安装时,我可以选择加密我的主文件夹——这是做什么的?

  • 在不使用标准升级系统的情况下升级有哪些替代方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve