使用 DHCP 和 TFTP 通过 PXE 服务器进行瘦客户端 Lubuntu

使用 DHCP 和 TFTP 通过 PXE 服务器进行瘦客户端 Lubuntu

我有 10 台没有硬盘的旧电脑(如瘦客户端)。所以我决定使用 Lubuntu 作为操作系统。在我的工作中,我们有一个带有 DHCP 和 TFTP 的 PXE 服务器,他们之前构建了一个 debian 发行版,对于 menu.cfg,他们使用了 boot=live,但在 lubuntu 中他们使用 nfs,并且 boot 必须是 boot=casper,所以我的问题就在这里,我试图更改 vmlinuz 和 initrd,但随后我收到内核崩溃错误。是否有一个脚本可以合并 squashfs 和 initrd.gz,这样瘦客户端将直接通过 initrd.gz 启动。或者还有其他解决方案吗?

答案1

一种方法是使用memdisk软件包syslinux-common通过 TFTP 直接使用 ISO 映像进行引导。

  1. memdisk将ISO 映像复制并复制到 TFTP 根目录
  2. 将菜单项添加到 PXE 配置文件,例如:

    LABEL slitaz
        MENU LABEL ^Slitaz.iso
        TEXT HELP
    Testing boot from iso.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=slitaz-cooking.iso
    
    LABEL mini_ubutnu
        MENU LABEL Mini-Ubuntu
        KERNEL memdisk
        APPEND initrd=ubuntu_mini.iso
    

答案2

通过网络运行 Lubuntu 是完全有可能的。我不得不深入研究 initrd,但设法通过网络运行了 lubuntu-22.04.1-desktop-amd64。要运行,您需要解压映像并通过 tftp 和 nfs 打开对它的访问。启动时需要以下密钥:

append initrd=.../casper/initrd netboot=nfs nfsroot=... ip=dhcp file=/cdrom/preseed/lubuntu.seed
  • …——你的道路。
  • netboot—指定应通过 nfs 安装 cd 映像。
  • ip-通过 dhcp 配置网络接口。
  • 文件——我不知道为什么,我只是把它留下了。

您可以在“pretty boot”中添加“quiet”和“splash”。


服务器组织示例:

  1. 载船服务器IP: 192.168.0.99

  2. 工作文件夹:/pxe_home/

  3. 镜像存储位置:/pxe_home/img/lubuntu-22.04.1-desktop-amd64.iso

  4. 该图像安装在/pxe_home/lubuntu/

  5. tftp 主目录:/pxe_home/

  6. Nfs服务器配置:

    /pxe_home/lubuntu/*(ro,不安全,root_squash,subtree_check,crossmnt)

    如果正在安装图像,则需要“crossmnt”标志。

  7. pxelinux.0 的配置:

    标签 lubuntu
    菜单标签 lubuntu
    内核 lubuntu/casper/vmlinuz
    附加 initrd=lubuntu/casper/initrd netboot=nfs nfsroot=192.168.0.99:/pxe_home/lubuntu ip=dhcp file=/cdrom/preseed/lubuntu.seed

一个问题。出于某种原因,通过网络启动不会设置 DNS,尽管 DHCP 会传输此信息。因此,Lubuntu 无法访问 Internet。但是,手动设置 DNS 地址可以解决这个问题。

原因及出处:

接下来,我将介绍 initrd 启动顺序并展示启动选项的来源。

  • /init
    87:通过包含“conf/conf.d/default-boot-to-casper.conf”设置“BOOT=casper”。可以省略单独的启动参数“boot=casper”。加载conf/uuid.conf,以便将来验证已安装的磁盘。279
    :文件“/scripts/nfs”只是一个虚拟文件。然后调用其函数:mount_top、mount_premount,这些函数没有任何用处。285
    :mountroot(/scripts/casper:898)从/scripts/${BOOT}(/scripts/casper)导入。
  • /scripts/casper
    7:mountpoint=/cdrom
    8:LIVE_MEDIA_PATH=casper
    923:脚本 /scripts/casper-premount 正在运行。如果您设置了启动标志“debian-installer/driver-update=”,则可以添加驱动程序 (scripts/casper-premount/10driver_updates:94)。935
    :实际安装发生在 do_netmount (/scripts/casper:204) 中。213
    :要通过 nfs 启动,NETBOOT 变量 (key netboot、/scripts/casper:69) 必须设置为“nfs”或任何意外值。这将运行 do_nfsmount (/scripts/casper:229)。242
    在 $mountpoint=/cdrom (scripts/casper:7) 中安装 cd。
    243:使用 is_casper_path(/scripts/casper:85) 和 matches_uuid(/scripts/casper:97) 函数检查已挂载目录:
    • is_casper_path:检查 /cdrom/casper 是否为现有目录,以及是否包含根系统映像 (*.squashfs 文件)
    • matches_uuid:检查 /init:87 中加载的 conf/uuid.conf 文件是否与 /cdrom/.disk/casper-uuid-* 文件匹配。要忽略检查,您需要设置启动键“ignore_uuid”。我需要这个,因为我在解压时丢失了 .disk 文件夹。在我弄清楚安装后,这个检查就不再有问题了。

然后一切都会自行加载。

答案3

调查https://help.ubuntu.com/community/PXEInstallMultiDistro

我曾经能够轻松地通过网络成功启动 lubuntu(作为 live cd)。我不知道您是在寻找 live cd 选项,还是想要真正的瘦客户端解决方案。但是,我最近在弄清楚如何让 NFS 正常工作方面遇到了麻烦。请参阅我的帖子.....我需要哪些 nfs 导出设置来通过网络启动 Ubuntu 实时光盘?

相关内容