我来这里是为了问一些花费我很多时间的事情,现在我不知道如何继续,这是一个非常大(而且很棒)的社区。
好吧,问题是我正在尝试为学校和大学做一个分布式Linux系统,它从Apache服务器获取SquashFS,通过TFTP加载initrd和内核,当它启动时,它会将所有系统加载到RAM中。这个想法是尽可能地安全,当计算机关闭时,系统的所有数据都是干净的,但问题出在主文件夹上...
主文件夹位于 NFS 服务器中,我正在尝试为每个用户创建不同的文件夹,使用计算机的 MAC 地址在 NFS 服务器中创建一个文件夹并连接到它,但我不知道如何在启动时传递 MAC 地址以便第一次创建文件夹,如果此 MAC 的主文件夹存在,则使用 fstab 连接到它,就像现在使用用户防护文件夹一样。
提前致谢!
答案1
我已经为 MythTV 系统做了非常类似的事情。每台无盘前端机器都使用 DHCP PXE 和 TFTP 进行网络启动。系统运行的是 Ubuntu 16.04 LTS。(IP 1.1.1.1 是客户端机器,2.2.2.2 是服务器)
在 /etc/dhcp/dhcpd.conf 中,IP 和主机名是根据 MAC 分配的:
group {
use-host-decl-names on; #forces hostname to host
host bedroom {
hardware ethernet 00:00:00:00:00:00;
fixed-address 1.1.1.1;
}
}
TFTP 在启动初始化时调用挂载脚本,该脚本根据主机名挂载 NFS 主目录。浏览文件夹结构时,我使用主机名以提高可读性;您可以解析 MAC 并将其用作文件夹名称。TFTP pxelinux.cfg 默认文件:
LABEL linux
DEFAULT vmlinuz-4.4.0-53-generic root=/dev/nfs initrd=initrd.img-4.4.0-53-generic nfsroot=2.2.2.2:/pxeroot init=/boot/mountscript.sh ip=dhcp rw
安装脚本:
#!/bin/bash
HOSTNAME=`hostname`
MOUNT_OPTS="rw,intr,async,bg,tcp"
mount -t nfs 2.2.2.2:/path/to/homes/home-${HOSTNAME} /home -O MOUNT_OPTS
exec /sbin/init </dev/console >/dev/console 2>&1
此外,/etc/exports 具有 NFS 导出设置,可将所需的主文件夹映射到唯一的静态 IP 地址:
/path/to/homes/home-bedroom 1.1.1.1(rw,async,insecure)
必须手动添加新的主文件夹和每台新机器的 NFS 导出条目。
请注意:此示例适用于一次性、单用户机器,这些机器在主文件夹中存储一些独特的配置信息(主要是它所连接的电视的红外命令)。它实现了您所述的每个 MAC 一个主文件夹的目标,但我怀疑每个用户的主文件夹才是您真正想要的,正如 joeqwerty 提到的那样。此解决方案不会允许用户登录任何机器,并且会要求为每个用户、每台机器创建主文件夹。这也意味着,如果没有混乱的符号链接网络,就无法轻松地访问不同计算机上的相同文件。