![使用 DHCP 和 TFTP 通过 PXE 服务器进行瘦客户端 Lubuntu](https://linux22.com/image/1100174/%E4%BD%BF%E7%94%A8%20DHCP%20%E5%92%8C%20TFTP%20%E9%80%9A%E8%BF%87%20PXE%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E8%A1%8C%E7%98%A6%E5%AE%A2%E6%88%B7%E7%AB%AF%20Lubuntu.png)
我有 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 映像进行引导。
memdisk
将ISO 映像复制并复制到 TFTP 根目录将菜单项添加到 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”。
服务器组织示例:
载船服务器IP: 192.168.0.99
工作文件夹:/pxe_home/
镜像存储位置:/pxe_home/img/lubuntu-22.04.1-desktop-amd64.iso
该图像安装在/pxe_home/lubuntu/
tftp 主目录:/pxe_home/
Nfs服务器配置:
/pxe_home/lubuntu/*(ro,不安全,root_squash,subtree_check,crossmnt)
如果正在安装图像,则需要“crossmnt”标志。
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 实时光盘?