情况
我使用的是 2.0 RC2 isohttp://www.zeroshell.org在 VMware ESXi 5.1 虚拟机中,我尝试调整操作方法:ZeroShell 中的 vmware-tools对于 v2.0,文件布局略有不同。
最初偏离指令
直到取消链接 /cdrom/modules 并重新链接到 /Database/rootfs/modules 为止,这些指令都成功运行。如果您尝试通过对整个 /lib 文件夹执行相同操作来解决此问题,它将无法再运行任何程序。
除此之外,我认为 vmtools 需要修改 /lib/modules 目录的内容,但在 zeroshell 中,默认情况下,该目录存储并从 CD 运行。我暂时无法更改 /lib/modules 的链接,因为整个 /lib 是指向 /cdrom/lib 的符号链接,并且是只读的。因此,我尝试通过运行以下命令将 /lib 移动到硬盘,但在取消链接 /lib 后运行 ln 命令时出现错误。这会破坏一切,我从快照中恢复以重试。
mkdir /Database/rootfs/lib
cp -a /lib/* /Database/rootfs/lib
unlink /lib && ln -s /Database/rootfs/lib /lib
为了让 ln 在最后一行工作,我尝试将其更改为“ln -sfn /Database/rootfs/lib /lib”
关于如何在此虚拟机中安装 vmware-tools 有什么想法吗?我尝试了从其下载页面下载 .img.gz 文件,它只有 /dev/sda1 = /boot 和 /dev/sda2 = iso9660 CD 映像,而 /dev/sda3 有配置文件存储,这导致了必须移动 /lib 的相同问题。
额外的系统信息
提取 vmtools tar.gz 文件后,在运行其余程序之前,系统如下所示
cat /etc/fstab
tmpfs / tmpfs defaults 1 1
/dev/cdrom /cdrom iso9660 ro,remount 0 0
proc /proc proc defaults 0 0
none /sys sysfs remount 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
cat /etc/mtab
tmpfs / tmpfs rw 0 0
proc /proc proc rw 0 0
/dev/sr0 /cdrom iso9660 ro 0 0
none /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=4,mode=620 0 0
shm /dev/shm tmpfs rw 0 0
usbfs /proc/bus/usb usbfs rw 0 0
/dev/sda1 /DB ext4 rw,noatime 0 0
/DB/_DB.001 /Database none rw,bind,noatime 0 0
ls -al / | grep ">"
lrwxrwxrwx 1 root root 10 Nov 21 2012 bin -> /cdrom/bin
lrwxrwxrwx 1 root root 10 Nov 21 2012 lib -> /cdrom/lib
lrwxrwxrwx 1 root root 21 Jul 4 02:57 sbin -> /cdrom/sbin
lrwxrwxrwx 1 root root 20 Jul 4 02:57 usr -> /cdrom/usr
ls -l /lib/modules
lr-xr-xr-x 1 root root 14 Nov 21 2012 /lib/modules -> /cdrom/modules
当前的问题
运行“./vmware-install.pl”时,它会抱怨找不到 gcc 或内核头文件,因此无法编译模块。我特别想要 VMCI 模块,内存模块也很方便。该发行版已经附带 vmxnet3 驱动程序和半虚拟磁盘控制器驱动程序,因此我不需要编译它们。
按照下面的说明,它似乎运行良好,但如果我尝试使用 viClient 关闭或重新启动虚拟机,它会给出错误:“重置此虚拟机的请求失败,因为相应的 VMware Tools 脚本未成功运行。如果您已在此虚拟机中配置了自定义重置脚本,请确保其中不包含任何错误。”
当我进入 shell 并尝试运行我认为是关机的命令时,它说
/etc/vmware-tools/poweroff-vm-default poweroff-vm /etc/vmware-tools
Thu Jul 4 09:29:44 CEST 2013 : Executing '/etc/vmware-tools/poweroff-vm-default'
Thu Jul 4 09:29:44 CEST 2013 : Executing '/etc/vmware-tools/scripts/vmware/network'
Jul 04 09:29:44 network: ifup not in search path.
当前安装 VMtools 的方法
确保 linux.iso 文件已连接到 cd2,然后将以下代码粘贴到控制台中
mkdir /mnt/cd2 chmod 555 /mnt/cd2 安装-t 自动/dev/sr1 /mnt/cd2 cp /mnt/cd2/VMwareTools*.tar.gz /数据库 cd /数据库 tar -xvzf VMwareTools*.tar.gz rm -f VMwareTools*.tar.gz 卸载/dev/sr1 cd /数据库 创建根目录 cd 根文件系统 创建目录 sbin mkdir usr cp -a /sbin/* /数据库/rootfs/sbin cp -a /usr/* /数据库/rootfs/usr 安装-o重新安装,rw / 取消链接 /sbin && ln -s /数据库/rootfs/sbin /sbin 取消链接 /usr && /cdrom/usr/bin/ln -s /Database/rootfs/usr /usr mkdir /数据库/rootfs/lib cp -a /lib/* /数据库/rootfs/lib rm -f /数据库/rootfs/lib/模块 cp -a /cdrom/modules /数据库/rootfs/lib/modules cd /数据库/rootfs/lib ln -sfn /数据库/rootfs/lib /lib mkdir /数据库/vmware-tools cd /数据库/vmware-tools mkdir 等 CD 等 mkdir init.d 创建目录 rc.d cd rc.d 创建目录 rc0.d 创建目录 rc1.d 创建目录 rc2.d 创建目录 rc3.d 创建目录 rc4.d 创建目录 rc5.d 创建目录 rc6.d cd /数据库/vmware-tools-distrib ./vmware-install.pl
确保所有路径都以“/Database/vmware-tools/”开头,手动输入时确保路径以尾随的 / 结尾
然后您就可以配置了。对所有事情都说不,它会抱怨找不到 gcc 或内核头文件,因此无法编译模块(如 vmci 模块)以允许与主机通信以执行关机客户机等命令。 <---- 这是一个问题
cd /数据库/vmware-tools/usr/bin ./vmware-config-tools.pl
VMtools 当前正在运行,但为了确保它随机器一起启动,请粘贴以下内容
cd /Database/vmware-tools
mkdir startup
mkdir startup/etc
mkdir startup/etc/vmware-tools
cp -a /etc/vmware-tools/* /Database/vmware-tools/startup/etc/vmware-tools
cat <<EOF > /Database/vmware-tools/startup/run.sh
#!/bin/bash
mount -o remount,rw /
unlink /usr && /cdrom/usr/bin/ln -s /Database/rootfs/usr /usr
unlink /sbin && ln -s /Database/rootfs/sbin /sbin
ln -sfn /Database/rootfs/lib /lib
cp -a /Database/vmware-tools/startup/etc/* /etc
/Database/vmware-tools/etc/rc.d/vmware-tools start
EOF
chmod 766 /Database/vmware-tools/startup/run.sh
现在通过 WebLogin 进入 ZeroShell。转到“Startup/Cron”面板,选择“post boot”,启用状态,并添加以下行:“/Database/vmware-tools/startup/run.sh”
答案1
我建议尝试绑定挂载(就像/Database 已经是的那样)而不是该页面让您玩的取消链接/重新链接游戏。
尝试类似/lib/modules 的/Database/rootfs/lib/modules /lib/modules none rw,bind 0 0
操作/etc/fstab
。
或者,我假设您在替换 /lib 符号链接时遇到的问题是,在删除 /lib 符号链接后,命令立即开始失败。这可能是因为替换不是原子的。您可能运气更好,ln -sfT /Database/rootfs/lib /lib
因为替换应该更原子,即使实际上不是原子的(我暂时不知道)。